parent
538c759fef
commit
564211aceb
|
@ -40,6 +40,7 @@ jobs:
|
||||||
gstreamer-plugins-base-devel
|
gstreamer-plugins-base-devel
|
||||||
vlc-devel
|
vlc-devel
|
||||||
taglib-devel
|
taglib-devel
|
||||||
|
libicu-devel
|
||||||
libQt5Core-devel
|
libQt5Core-devel
|
||||||
libQt5Gui-devel
|
libQt5Gui-devel
|
||||||
libQt5Gui-private-headers-devel
|
libQt5Gui-private-headers-devel
|
||||||
|
@ -116,6 +117,7 @@ jobs:
|
||||||
vlc-devel
|
vlc-devel
|
||||||
taglib-devel
|
taglib-devel
|
||||||
tagparser-devel
|
tagparser-devel
|
||||||
|
libicu-devel
|
||||||
libQt5Core-devel
|
libQt5Core-devel
|
||||||
libQt5Gui-devel
|
libQt5Gui-devel
|
||||||
libQt5Gui-private-headers-devel
|
libQt5Gui-private-headers-devel
|
||||||
|
@ -202,6 +204,7 @@ jobs:
|
||||||
vlc-devel
|
vlc-devel
|
||||||
taglib-devel
|
taglib-devel
|
||||||
tagparser-devel
|
tagparser-devel
|
||||||
|
libicu-devel
|
||||||
qt6-core-devel
|
qt6-core-devel
|
||||||
qt6-gui-devel
|
qt6-gui-devel
|
||||||
qt6-gui-private-devel
|
qt6-gui-private-devel
|
||||||
|
@ -284,6 +287,7 @@ jobs:
|
||||||
gstreamer-plugins-base-devel
|
gstreamer-plugins-base-devel
|
||||||
vlc-devel
|
vlc-devel
|
||||||
taglib-devel
|
taglib-devel
|
||||||
|
libicu-devel
|
||||||
libQt5Core-devel
|
libQt5Core-devel
|
||||||
libQt5Gui-devel
|
libQt5Gui-devel
|
||||||
libQt5Gui-private-headers-devel
|
libQt5Gui-private-headers-devel
|
||||||
|
@ -365,6 +369,7 @@ jobs:
|
||||||
gstreamer-plugins-base-devel
|
gstreamer-plugins-base-devel
|
||||||
vlc-devel
|
vlc-devel
|
||||||
taglib-devel
|
taglib-devel
|
||||||
|
libicu-devel
|
||||||
qt6-core-devel
|
qt6-core-devel
|
||||||
qt6-gui-devel
|
qt6-gui-devel
|
||||||
qt6-gui-private-devel
|
qt6-gui-private-devel
|
||||||
|
@ -452,6 +457,7 @@ jobs:
|
||||||
vlc-devel
|
vlc-devel
|
||||||
taglib-devel
|
taglib-devel
|
||||||
tagparser-devel
|
tagparser-devel
|
||||||
|
libicu-devel
|
||||||
libQt5Core-devel
|
libQt5Core-devel
|
||||||
libQt5Gui-devel
|
libQt5Gui-devel
|
||||||
libQt5Gui-private-headers-devel
|
libQt5Gui-private-headers-devel
|
||||||
|
@ -538,6 +544,7 @@ jobs:
|
||||||
vlc-devel
|
vlc-devel
|
||||||
taglib-devel
|
taglib-devel
|
||||||
tagparser-devel
|
tagparser-devel
|
||||||
|
libicu-devel
|
||||||
qt6-core-devel
|
qt6-core-devel
|
||||||
qt6-gui-devel
|
qt6-gui-devel
|
||||||
qt6-gui-private-devel
|
qt6-gui-private-devel
|
||||||
|
@ -624,6 +631,7 @@ jobs:
|
||||||
pulseaudio-libs-devel
|
pulseaudio-libs-devel
|
||||||
libnotify-devel
|
libnotify-devel
|
||||||
gnutls-devel
|
gnutls-devel
|
||||||
|
libicu-devel
|
||||||
qt6-qtbase-devel
|
qt6-qtbase-devel
|
||||||
qt6-qtbase-private-devel
|
qt6-qtbase-private-devel
|
||||||
qt6-qttools-devel
|
qt6-qttools-devel
|
||||||
|
@ -704,6 +712,7 @@ jobs:
|
||||||
pulseaudio-libs-devel
|
pulseaudio-libs-devel
|
||||||
libnotify-devel
|
libnotify-devel
|
||||||
gnutls-devel
|
gnutls-devel
|
||||||
|
libicu-devel
|
||||||
qt6-qtbase-devel
|
qt6-qtbase-devel
|
||||||
qt6-qtbase-private-devel
|
qt6-qtbase-private-devel
|
||||||
qt6-qttools-devel
|
qt6-qttools-devel
|
||||||
|
@ -786,6 +795,7 @@ jobs:
|
||||||
taglib-devel
|
taglib-devel
|
||||||
chromaprint-devel
|
chromaprint-devel
|
||||||
fftw-devel
|
fftw-devel
|
||||||
|
icu-devel
|
||||||
libcdio-devel
|
libcdio-devel
|
||||||
libgpod-devel
|
libgpod-devel
|
||||||
libmtp-devel
|
libmtp-devel
|
||||||
|
@ -862,6 +872,7 @@ jobs:
|
||||||
libasound2-dev
|
libasound2-dev
|
||||||
libpulse-dev
|
libpulse-dev
|
||||||
libtag1-dev
|
libtag1-dev
|
||||||
|
libicu-dev
|
||||||
qtbase5-dev
|
qtbase5-dev
|
||||||
qtbase5-dev-tools
|
qtbase5-dev-tools
|
||||||
qttools5-dev
|
qttools5-dev
|
||||||
|
@ -924,6 +935,7 @@ jobs:
|
||||||
libasound2-dev
|
libasound2-dev
|
||||||
libpulse-dev
|
libpulse-dev
|
||||||
libtag1-dev
|
libtag1-dev
|
||||||
|
libicu-dev
|
||||||
qtbase5-dev
|
qtbase5-dev
|
||||||
qtbase5-dev-tools
|
qtbase5-dev-tools
|
||||||
qttools5-dev
|
qttools5-dev
|
||||||
|
@ -985,6 +997,7 @@ jobs:
|
||||||
libasound2-dev
|
libasound2-dev
|
||||||
libpulse-dev
|
libpulse-dev
|
||||||
libtag1-dev
|
libtag1-dev
|
||||||
|
libicu-dev
|
||||||
qt6-base-dev
|
qt6-base-dev
|
||||||
qt6-base-dev-tools
|
qt6-base-dev-tools
|
||||||
qt6-tools-dev
|
qt6-tools-dev
|
||||||
|
@ -1051,6 +1064,7 @@ jobs:
|
||||||
libasound2-dev
|
libasound2-dev
|
||||||
libpulse-dev
|
libpulse-dev
|
||||||
libtag1-dev
|
libtag1-dev
|
||||||
|
libicu-dev
|
||||||
qtbase5-dev
|
qtbase5-dev
|
||||||
qtbase5-dev-tools
|
qtbase5-dev-tools
|
||||||
qttools5-dev
|
qttools5-dev
|
||||||
|
@ -1118,6 +1132,7 @@ jobs:
|
||||||
libasound2-dev
|
libasound2-dev
|
||||||
libpulse-dev
|
libpulse-dev
|
||||||
libtag1-dev
|
libtag1-dev
|
||||||
|
libicu-dev
|
||||||
qtbase5-dev
|
qtbase5-dev
|
||||||
qtbase5-dev-tools
|
qtbase5-dev-tools
|
||||||
qttools5-dev
|
qttools5-dev
|
||||||
|
@ -1184,6 +1199,7 @@ jobs:
|
||||||
libasound2-dev
|
libasound2-dev
|
||||||
libpulse-dev
|
libpulse-dev
|
||||||
libtag1-dev
|
libtag1-dev
|
||||||
|
libicu-dev
|
||||||
qt6-base-dev
|
qt6-base-dev
|
||||||
qt6-base-dev-tools
|
qt6-base-dev-tools
|
||||||
qt6-tools-dev
|
qt6-tools-dev
|
||||||
|
@ -1250,6 +1266,7 @@ jobs:
|
||||||
libasound2-dev
|
libasound2-dev
|
||||||
libpulse-dev
|
libpulse-dev
|
||||||
libtag1-dev
|
libtag1-dev
|
||||||
|
libicu-dev
|
||||||
qt6-base-dev
|
qt6-base-dev
|
||||||
qt6-base-dev-tools
|
qt6-base-dev-tools
|
||||||
qt6-tools-dev
|
qt6-tools-dev
|
||||||
|
@ -1355,7 +1372,8 @@ jobs:
|
||||||
-DProtobuf_INCLUDE_DIRS=${{github.workspace}}/../../strawberry-macos-dependencies/strawberry-macos-dependencies/usr/include \
|
-DProtobuf_INCLUDE_DIRS=${{github.workspace}}/../../strawberry-macos-dependencies/strawberry-macos-dependencies/usr/include \
|
||||||
-DProtobuf_LIBRARY=${{github.workspace}}/../../strawberry-macos-dependencies/strawberry-macos-dependencies/usr/lib/libprotobuf.dylib \
|
-DProtobuf_LIBRARY=${{github.workspace}}/../../strawberry-macos-dependencies/strawberry-macos-dependencies/usr/lib/libprotobuf.dylib \
|
||||||
-DProtobuf_PROTOC_EXECUTABLE=${{github.workspace}}/../../strawberry-macos-dependencies/strawberry-macos-dependencies/usr/bin/protoc \
|
-DProtobuf_PROTOC_EXECUTABLE=${{github.workspace}}/../../strawberry-macos-dependencies/strawberry-macos-dependencies/usr/bin/protoc \
|
||||||
-DFFTW3_DIR=${{github.workspace}}/../../strawberry-macos-dependencies/strawberry-macos-dependencies/usr
|
-DFFTW3_DIR=${{github.workspace}}/../../strawberry-macos-dependencies/strawberry-macos-dependencies/usr \
|
||||||
|
-DICU_ROOT=${{github.workspace}}/../../strawberry-macos-dependencies/strawberry-macos-dependencies/usr
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
working-directory: build
|
working-directory: build
|
||||||
|
@ -2169,7 +2187,7 @@ jobs:
|
||||||
with:
|
with:
|
||||||
usesh: true
|
usesh: true
|
||||||
mem: 4096
|
mem: 4096
|
||||||
prepare: pkg install -y git cmake pkgconf gettext-tools boost-libs glib gnutls qt5-core qt5-concurrent qt5-network qt5-sql qt5-dbus qt5-gui qt5-widgets qt5-buildtools qt5-linguisttools qt5-qmake qt5-sqldrivers-sqlite3 qt5-testlib sqlite gstreamer1 gstreamer1-plugins chromaprint protobuf protobuf-c taglib libcdio libmtp gdk-pixbuf2 libgpod fftw3 googletest iconv
|
prepare: pkg install -y git cmake pkgconf gettext-tools boost-libs glib gnutls qt5-core qt5-concurrent qt5-network qt5-sql qt5-dbus qt5-gui qt5-widgets qt5-buildtools qt5-linguisttools qt5-qmake qt5-sqldrivers-sqlite3 qt5-testlib sqlite gstreamer1 gstreamer1-plugins chromaprint protobuf protobuf-c taglib libcdio libmtp gdk-pixbuf2 libgpod fftw3 googletest iconv icu
|
||||||
run: |
|
run: |
|
||||||
git config --global --add safe.directory /__w/strawberry/strawberry
|
git config --global --add safe.directory /__w/strawberry/strawberry
|
||||||
cmake -E make_directory build
|
cmake -E make_directory build
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
cmake_minimum_required(VERSION 3.0)
|
cmake_minimum_required(VERSION 3.7)
|
||||||
|
|
||||||
include(CheckIncludeFiles)
|
include(CheckIncludeFiles)
|
||||||
include(CheckFunctionExists)
|
include(CheckFunctionExists)
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
project(strawberry)
|
project(strawberry)
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.0)
|
cmake_minimum_required(VERSION 3.7)
|
||||||
cmake_policy(SET CMP0054 NEW)
|
cmake_policy(SET CMP0054 NEW)
|
||||||
|
if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12)
|
||||||
|
cmake_policy(SET CMP0074 NEW)
|
||||||
|
endif()
|
||||||
|
|
||||||
include(CheckCXXCompilerFlag)
|
include(CheckCXXCompilerFlag)
|
||||||
include(CheckCXXSourceRuns)
|
include(CheckCXXSourceRuns)
|
||||||
|
@ -102,6 +105,10 @@ if(Backtrace_FOUND)
|
||||||
set(HAVE_BACKTRACE ON)
|
set(HAVE_BACKTRACE ON)
|
||||||
endif()
|
endif()
|
||||||
find_package(Iconv)
|
find_package(Iconv)
|
||||||
|
find_package(ICU COMPONENTS uc i18n)
|
||||||
|
if(ICU_FOUND)
|
||||||
|
set(HAVE_ICU ON)
|
||||||
|
endif()
|
||||||
find_package(GnuTLS REQUIRED)
|
find_package(GnuTLS REQUIRED)
|
||||||
find_package(Protobuf REQUIRED)
|
find_package(Protobuf REQUIRED)
|
||||||
if(NOT Protobuf_PROTOC_EXECUTABLE)
|
if(NOT Protobuf_PROTOC_EXECUTABLE)
|
||||||
|
|
|
@ -17,6 +17,7 @@ Build-Depends: debhelper (>= 11),
|
||||||
libasound2-dev,
|
libasound2-dev,
|
||||||
libpulse-dev,
|
libpulse-dev,
|
||||||
libtag1-dev,
|
libtag1-dev,
|
||||||
|
libicu-devel,
|
||||||
@DEBIAN_BUILD_DEPENDS_QT_PACKAGES@,
|
@DEBIAN_BUILD_DEPENDS_QT_PACKAGES@,
|
||||||
libgstreamer1.0-dev,
|
libgstreamer1.0-dev,
|
||||||
libgstreamer-plugins-base1.0-dev,
|
libgstreamer-plugins-base1.0-dev,
|
||||||
|
|
|
@ -49,6 +49,8 @@ BuildRequires: pkgconfig(sqlite3) >= 3.9
|
||||||
BuildRequires: pkgconfig(taglib)
|
BuildRequires: pkgconfig(taglib)
|
||||||
%endif
|
%endif
|
||||||
BuildRequires: pkgconfig(fftw3)
|
BuildRequires: pkgconfig(fftw3)
|
||||||
|
BuildRequires: pkgconfig(icu-uc)
|
||||||
|
BuildRequires: pkgconfig(icu-i18n)
|
||||||
%if "@QT_VERSION_MAJOR@" == "5" && ( 0%{?fedora} || 0%{?rhel_version} || 0%{?centos} )
|
%if "@QT_VERSION_MAJOR@" == "5" && ( 0%{?fedora} || 0%{?rhel_version} || 0%{?centos} )
|
||||||
BuildRequires: pkgconfig(Qt@QT_VERSION_MAJOR@Core)
|
BuildRequires: pkgconfig(Qt@QT_VERSION_MAJOR@Core)
|
||||||
BuildRequires: pkgconfig(Qt@QT_VERSION_MAJOR@Gui)
|
BuildRequires: pkgconfig(Qt@QT_VERSION_MAJOR@Gui)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
cmake_minimum_required(VERSION 3.0)
|
cmake_minimum_required(VERSION 3.7)
|
||||||
|
|
||||||
set(SOURCES gstfastspectrum.cpp gstmoodbarplugin.cpp)
|
set(SOURCES gstfastspectrum.cpp gstmoodbarplugin.cpp)
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
cmake_minimum_required(VERSION 3.0)
|
cmake_minimum_required(VERSION 3.7)
|
||||||
|
|
||||||
set(SOURCES
|
set(SOURCES
|
||||||
core/logging.cpp
|
core/logging.cpp
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
cmake_minimum_required(VERSION 3.0)
|
cmake_minimum_required(VERSION 3.7)
|
||||||
|
|
||||||
set(MESSAGES tagreadermessages.proto)
|
set(MESSAGES tagreadermessages.proto)
|
||||||
set(SOURCES tagreaderbase.cpp)
|
set(SOURCES tagreaderbase.cpp)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
cmake_minimum_required(VERSION 3.0)
|
cmake_minimum_required(VERSION 3.7)
|
||||||
|
|
||||||
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
|
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
cmake_minimum_required(VERSION 3.0)
|
cmake_minimum_required(VERSION 3.7)
|
||||||
|
|
||||||
if(HAVE_TRANSLATIONS)
|
if(HAVE_TRANSLATIONS)
|
||||||
include(../cmake/Translations.cmake)
|
include(../cmake/Translations.cmake)
|
||||||
|
@ -1145,6 +1145,11 @@ if(FREEBSD)
|
||||||
target_link_libraries(strawberry_lib PRIVATE iconv)
|
target_link_libraries(strawberry_lib PRIVATE iconv)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(HAVE_ICU)
|
||||||
|
target_include_directories(strawberry_lib SYSTEM PRIVATE ${ICU_INCLUDE_DIRS})
|
||||||
|
target_link_libraries(strawberry_lib PRIVATE ${ICU_LIBRARIES})
|
||||||
|
endif()
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
target_link_libraries(strawberry_lib PRIVATE
|
target_link_libraries(strawberry_lib PRIVATE
|
||||||
"-framework AppKit"
|
"-framework AppKit"
|
||||||
|
|
|
@ -21,6 +21,8 @@
|
||||||
#cmakedefine HAVE_MUSICBRAINZ
|
#cmakedefine HAVE_MUSICBRAINZ
|
||||||
#cmakedefine HAVE_GLOBALSHORTCUTS
|
#cmakedefine HAVE_GLOBALSHORTCUTS
|
||||||
#cmakedefine HAVE_X11_GLOBALSHORTCUTS
|
#cmakedefine HAVE_X11_GLOBALSHORTCUTS
|
||||||
|
#cmakedefine HAVE_ICU
|
||||||
|
|
||||||
#cmakedefine USE_INSTALL_PREFIX
|
#cmakedefine USE_INSTALL_PREFIX
|
||||||
|
|
||||||
#cmakedefine HAVE_GSTREAMER
|
#cmakedefine HAVE_GSTREAMER
|
||||||
|
|
|
@ -23,7 +23,12 @@
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <iconv.h>
|
|
||||||
|
#ifdef HAVE_ICU
|
||||||
|
# include <unicode/translit.h>
|
||||||
|
#else
|
||||||
|
# include <iconv.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <QtGlobal>
|
#include <QtGlobal>
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
@ -786,16 +791,39 @@ QString DesktopEnvironment() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString UnicodeToAscii(const QString &unicode) {
|
#ifdef HAVE_ICU
|
||||||
|
|
||||||
|
QString Transliterate(const QString &accented_str) {
|
||||||
|
|
||||||
|
UErrorCode errorcode = U_ZERO_ERROR;
|
||||||
|
std::unique_ptr<icu::Transliterator> transliterator;
|
||||||
|
transliterator.reset(icu::Transliterator::createInstance("Any-Latin; Latin-ASCII;", UTRANS_FORWARD, errorcode));
|
||||||
|
|
||||||
|
if (!transliterator) return accented_str;
|
||||||
|
|
||||||
|
QByteArray accented_data = accented_str.toUtf8();
|
||||||
|
icu::UnicodeString ustring = icu::UnicodeString(accented_data.constData());
|
||||||
|
transliterator->transliterate(ustring);
|
||||||
|
|
||||||
|
std::string unaccented_str;
|
||||||
|
ustring.toUTF8String(unaccented_str);
|
||||||
|
|
||||||
|
return QString::fromStdString(unaccented_str);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
QString Transliterate(const QString &accented_str) {
|
||||||
|
|
||||||
#ifdef LC_ALL
|
#ifdef LC_ALL
|
||||||
setlocale(LC_ALL, "");
|
setlocale(LC_ALL, "");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
iconv_t conv = iconv_open("ASCII//TRANSLIT", "UTF-8");
|
iconv_t conv = iconv_open("ASCII//TRANSLIT", "UTF-8");
|
||||||
if (conv == reinterpret_cast<iconv_t>(-1)) return unicode;
|
if (conv == reinterpret_cast<iconv_t>(-1)) return accented_str;
|
||||||
|
|
||||||
QByteArray utf8 = unicode.toUtf8();
|
QByteArray utf8 = accented_str.toUtf8();
|
||||||
|
|
||||||
size_t input_len = utf8.length() + 1;
|
size_t input_len = utf8.length() + 1;
|
||||||
char *input_ptr = new char[input_len];
|
char *input_ptr = new char[input_len];
|
||||||
|
@ -817,8 +845,11 @@ QString UnicodeToAscii(const QString &unicode) {
|
||||||
delete[] output_ptr;
|
delete[] output_ptr;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
QString MacAddress() {
|
QString MacAddress() {
|
||||||
|
|
||||||
QString ret;
|
QString ret;
|
||||||
|
|
|
@ -132,7 +132,7 @@ QString GetRandomString(const int len, const QString &UseCharacters);
|
||||||
|
|
||||||
QString DesktopEnvironment();
|
QString DesktopEnvironment();
|
||||||
|
|
||||||
QString UnicodeToAscii(const QString &unicode);
|
QString Transliterate(const QString &accented_str);
|
||||||
|
|
||||||
QString MacAddress();
|
QString MacAddress();
|
||||||
|
|
||||||
|
|
|
@ -110,7 +110,7 @@ QString AlbumCoverLoader::AlbumCoverFilename(QString artist, QString album, cons
|
||||||
album.remove('/').remove('\\');
|
album.remove('/').remove('\\');
|
||||||
|
|
||||||
QString filename = artist + "-" + album;
|
QString filename = artist + "-" + album;
|
||||||
filename = Utilities::UnicodeToAscii(filename.toLower());
|
filename = Utilities::Transliterate(filename.toLower());
|
||||||
filename = filename.replace(' ', '-')
|
filename = filename.replace(' ', '-')
|
||||||
.replace("--", "-")
|
.replace("--", "-")
|
||||||
.remove(OrganizeFormat::kInvalidFatCharacters)
|
.remove(OrganizeFormat::kInvalidFatCharacters)
|
||||||
|
|
|
@ -128,7 +128,7 @@ QString OrganizeFormat::GetFilenameForSong(const Song &song, QString extension)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (remove_problematic_) filename = filename.remove(kProblematicCharacters);
|
if (remove_problematic_) filename = filename.remove(kProblematicCharacters);
|
||||||
if (remove_non_fat_ || (remove_non_ascii_ && !allow_ascii_ext_)) filename = Utilities::UnicodeToAscii(filename);
|
if (remove_non_fat_ || (remove_non_ascii_ && !allow_ascii_ext_)) filename = Utilities::Transliterate(filename);
|
||||||
if (remove_non_fat_) filename = filename.remove(kInvalidFatCharacters);
|
if (remove_non_fat_) filename = filename.remove(kInvalidFatCharacters);
|
||||||
|
|
||||||
if (remove_non_ascii_) {
|
if (remove_non_ascii_) {
|
||||||
|
|
|
@ -176,8 +176,18 @@ TEST_F(OrganizeFormatTest, ReplaceNonAscii) {
|
||||||
format_.set_remove_non_ascii(true);
|
format_.set_remove_non_ascii(true);
|
||||||
EXPECT_EQ("Royksopp", format_.GetFilenameForSong(song_));
|
EXPECT_EQ("Royksopp", format_.GetFilenameForSong(song_));
|
||||||
|
|
||||||
|
song_.set_artist("");
|
||||||
|
EXPECT_EQ("", format_.GetFilenameForSong(song_));
|
||||||
|
|
||||||
|
#ifdef HAVE_ICU
|
||||||
|
|
||||||
song_.set_artist(QString::fromUtf8("Владимир Высоцкий"));
|
song_.set_artist(QString::fromUtf8("Владимир Высоцкий"));
|
||||||
EXPECT_EQ("_________________", format_.GetFilenameForSong(song_));
|
EXPECT_EQ("Vladimir_Vysockij", format_.GetFilenameForSong(song_));
|
||||||
|
|
||||||
|
song_.set_artist(QString::fromUtf8("エックス・ジャパン"));
|
||||||
|
EXPECT_EQ("ekkusujapan", format_.GetFilenameForSong(song_));
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -166,9 +166,9 @@ TEST(UtilitiesTest, Random) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(UtilitiesTest, UnicodeToAscii) {
|
TEST(UtilitiesTest, Transliterate) {
|
||||||
|
|
||||||
ASSERT_EQ(Utilities::UnicodeToAscii("ÆØÅ"), "AEOA");
|
ASSERT_EQ(Utilities::Transliterate("ÆØÅ"), "AEOA");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue