From c9cb0def793dcd34aa4d516d9e50c1f0b81e1dc3 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Fri, 10 Feb 2012 12:21:54 +0000 Subject: added directory filters git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2589 90c681e8-e032-0410-971d-27865f9a5e38 --- src/qmmpui/configdialog.cpp | 5 ++++ src/qmmpui/fileloader.cpp | 35 +++++++++++++++++++++++++-- src/qmmpui/fileloader_p.h | 5 ++++ src/qmmpui/forms/configdialog.ui | 4 ++-- src/qmmpui/qmmpuisettings.cpp | 28 ++++++++++++++++++---- src/qmmpui/qmmpuisettings.h | 19 +++++++++++++++ src/qmmpui/translations/libqmmpui_cs.ts | 38 +++++++++++++++--------------- src/qmmpui/translations/libqmmpui_de.ts | 38 +++++++++++++++--------------- src/qmmpui/translations/libqmmpui_es.ts | 38 +++++++++++++++--------------- src/qmmpui/translations/libqmmpui_it.ts | 38 +++++++++++++++--------------- src/qmmpui/translations/libqmmpui_ja.ts | 38 +++++++++++++++--------------- src/qmmpui/translations/libqmmpui_lt.ts | 38 +++++++++++++++--------------- src/qmmpui/translations/libqmmpui_nl.ts | 38 +++++++++++++++--------------- src/qmmpui/translations/libqmmpui_pl_PL.ts | 38 +++++++++++++++--------------- src/qmmpui/translations/libqmmpui_pt_BR.ts | 38 +++++++++++++++--------------- src/qmmpui/translations/libqmmpui_ru.ts | 38 +++++++++++++++--------------- src/qmmpui/translations/libqmmpui_sk.ts | 38 +++++++++++++++--------------- src/qmmpui/translations/libqmmpui_tr.ts | 38 +++++++++++++++--------------- src/qmmpui/translations/libqmmpui_uk_UA.ts | 38 +++++++++++++++--------------- src/qmmpui/translations/libqmmpui_zh_CN.ts | 38 +++++++++++++++--------------- src/qmmpui/translations/libqmmpui_zh_TW.ts | 38 +++++++++++++++--------------- 21 files changed, 373 insertions(+), 293 deletions(-) (limited to 'src/qmmpui') diff --git a/src/qmmpui/configdialog.cpp b/src/qmmpui/configdialog.cpp index b9f426b19..61740f09b 100644 --- a/src/qmmpui/configdialog.cpp +++ b/src/qmmpui/configdialog.cpp @@ -104,6 +104,9 @@ void ConfigDialog::readSettings() m_ui->per20CheckBox->setChecked(guis->convertTwenty()); //resume playback on startup m_ui->continuePlaybackCheckBox->setChecked(guis->resumeOnStartup()); + //directory filters + m_ui->dirRestrictLineEdit->setText(guis->restrictFilters().join(";").trimmed()); + m_ui->dirExcludeLineEdit->setText(guis->excludeFilters().join(";").trimmed()); } //proxy settings QmmpSettings *gs = QmmpSettings::instance(); @@ -318,6 +321,8 @@ void ConfigDialog::saveSettings() guis->setConvertUnderscore(m_ui->underscoresCheckBox->isChecked()); guis->setConvertTwenty(m_ui->per20CheckBox->isChecked()); guis->setResumeOnStartup(m_ui->continuePlaybackCheckBox->isChecked()); + guis->setRestrictFilters(m_ui->dirRestrictLineEdit->text()); + guis->setExcludeFilters(m_ui->dirExcludeLineEdit->text()); guis->sync(); } diff --git a/src/qmmpui/fileloader.cpp b/src/qmmpui/fileloader.cpp index 502b38401..6cb0a90c9 100644 --- a/src/qmmpui/fileloader.cpp +++ b/src/qmmpui/fileloader.cpp @@ -19,12 +19,14 @@ ***************************************************************************/ #include +#include #include "fileloader_p.h" #include "qmmpuisettings.h" #include "playlistitem.h" FileLoader::FileLoader(QObject *parent) : QThread(parent) { + m_settings = QmmpUiSettings::instance(); m_finished = false; } @@ -33,7 +35,7 @@ FileLoader::~FileLoader() void FileLoader::addFile(const QString &path) { - bool use_meta = QmmpUiSettings::instance()->useMetadata(); + bool use_meta = m_settings->useMetadata(); QList playList = MetaDataManager::instance()->createPlayList(path, use_meta); foreach(FileInfo *info, playList) emit newPlayListItem(new PlayListItem(info)); @@ -47,7 +49,8 @@ void FileLoader::addDirectory(const QString& s) QFileInfoList l = dir.entryInfoList(m_filters); foreach(QFileInfo info, l) { - addFile(info.absoluteFilePath ()); + if(checkRestrictFilters(info) && checkExcludeFilters(info)) + addFile(info.absoluteFilePath ()); if (m_finished) return; } dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot); @@ -112,3 +115,31 @@ void FileLoader::finish() m_directories.clear(); wait(); } + +bool FileLoader::checkRestrictFilters(const QFileInfo &info) +{ + if(m_settings->restrictFilters().isEmpty()) + return true; + + foreach(QString filter, m_settings->restrictFilters()) + { + QRegExp regexp (filter, Qt::CaseInsensitive, QRegExp::Wildcard); + if(regexp.exactMatch(info.absoluteFilePath())) + return true; + } + return false; +} + +bool FileLoader::checkExcludeFilters(const QFileInfo &info) +{ + if(m_settings->excludeFilters().isEmpty()) + return true; + + foreach(QString filter, m_settings->excludeFilters()) + { + QRegExp regexp (filter, Qt::CaseInsensitive, QRegExp::Wildcard); + if(regexp.exactMatch(info.absoluteFilePath())) + return false; + } + return true; +} diff --git a/src/qmmpui/fileloader_p.h b/src/qmmpui/fileloader_p.h index 3a6841e6d..278b4695d 100644 --- a/src/qmmpui/fileloader_p.h +++ b/src/qmmpui/fileloader_p.h @@ -23,9 +23,11 @@ #include #include #include +#include #include class PlayListItem; +class QmmpUiSettings; /*! @internal * @brief File loader class. @@ -79,9 +81,12 @@ protected: void addDirectory(const QString &s); private: + bool checkRestrictFilters(const QFileInfo &info); + bool checkExcludeFilters(const QFileInfo &info); QQueue m_files; QQueue m_directories; QStringList m_filters; + QmmpUiSettings *m_settings; bool m_finished; }; diff --git a/src/qmmpui/forms/configdialog.ui b/src/qmmpui/forms/configdialog.ui index 5a1712d57..391bc4dde 100644 --- a/src/qmmpui/forms/configdialog.ui +++ b/src/qmmpui/forms/configdialog.ui @@ -184,7 +184,7 @@ - + @@ -194,7 +194,7 @@ - + diff --git a/src/qmmpui/qmmpuisettings.cpp b/src/qmmpui/qmmpuisettings.cpp index 15d0b774b..a6a3945c3 100644 --- a/src/qmmpui/qmmpuisettings.cpp +++ b/src/qmmpui/qmmpuisettings.cpp @@ -35,6 +35,8 @@ QmmpUiSettings::QmmpUiSettings(QObject *parent) : QObject(parent) m_convertTwenty = s.value ("PlayList/convert_twenty", true).toBool(); m_useMetadata = s.value ("PlayList/load_metadata", true).toBool(); m_resume_on_startup = s.value("General/resume_on_startup", false).toBool(); + m_restrict_filters = s.value("General/restrict_filters").toStringList(); + m_exclude_filters = s.value("General/exclude_filters", QStringList() << "*.cue").toStringList(); } QmmpUiSettings::~QmmpUiSettings() @@ -112,15 +114,33 @@ void QmmpUiSettings::sync() s.setValue("PlayList/convert_twenty", m_convertTwenty); s.setValue("PlayList/load_metadata", m_useMetadata); s.setValue("General/resume_on_startup", m_resume_on_startup); + s.setValue("General/restrict_filters", m_restrict_filters); + s.setValue("General/exclude_filters", m_exclude_filters); } -QmmpUiSettings * QmmpUiSettings::instance() +QStringList QmmpUiSettings::restrictFilters() const { - if(!m_instance) - return new QmmpUiSettings(qApp); - return m_instance; + return m_restrict_filters; } +void QmmpUiSettings::setRestrictFilters(const QString &filters) +{ + m_restrict_filters = filters.trimmed().split(";", QString::SkipEmptyParts); +} +QStringList QmmpUiSettings::excludeFilters() const +{ + return m_exclude_filters; +} +void QmmpUiSettings::setExcludeFilters(const QString &filters) +{ + m_exclude_filters = filters.trimmed().split(";", QString::SkipEmptyParts); +} +QmmpUiSettings * QmmpUiSettings::instance() +{ + if(!m_instance) + return new QmmpUiSettings(qApp); + return m_instance; +} diff --git a/src/qmmpui/qmmpuisettings.h b/src/qmmpui/qmmpuisettings.h index f7cf65de2..ca517c7a9 100644 --- a/src/qmmpui/qmmpuisettings.h +++ b/src/qmmpui/qmmpuisettings.h @@ -22,6 +22,7 @@ #define QMMPUISETTINGS_H #include +#include /*! @brief The QmmpUiSettings class provides access to global libqmmpui library settings. * @author Ilya Kotov @@ -85,6 +86,23 @@ public: * @param enabled Option state (\b true - enabled, \b false - disabled) */ void setResumeOnStartup(bool enabled); + /*! + * Returns a list of filters which should be used for directory scanning. + */ + QStringList restrictFilters() const; + /*! + * Disables all builtin directory scanning filters and sets them to \b filters (Example: *.mp3;*.ogg). + */ + void setRestrictFilters(const QString &filters); + /*! + * Returns a list of filters which should be excluded from incoming files while directory scanning. + */ + QStringList excludeFilters() const; + /*! + * Sets a list of filters which should be excluded from incoming files while directory scanning. + * @param filters A set of filters separated by semicolon (Example: *.cue;*.ogg). + */ + void setExcludeFilters(const QString &filters); /*! * Returns a pointer to the QmmpUiSettings instance. */ @@ -111,6 +129,7 @@ private: QString m_format; //general bool m_resume_on_startup; + QStringList m_exclude_filters, m_restrict_filters; }; diff --git a/src/qmmpui/translations/libqmmpui_cs.ts b/src/qmmpui/translations/libqmmpui_cs.ts index 5d189dd85..a4744fdf7 100644 --- a/src/qmmpui/translations/libqmmpui_cs.ts +++ b/src/qmmpui/translations/libqmmpui_cs.ts @@ -87,13 +87,13 @@ Soubor - + Artist Umělec - + Album Album @@ -108,72 +108,72 @@ Vypnuto - + Transports Protokoly - + Decoders Dekodéry - + Engines Přehrávače - + Title Název - + Track number Číslo stopy - + Two-digit track number Dvoumístné číslo stopy - + Disc number Číslo disku - + Condition Stav - + Composer Skladatel - + File name Název souboru - + File path Cesta k souboru - + Genre Žánr - + Year Rok - + Comment Poznámka @@ -389,17 +389,17 @@ Heslo: - + Visualization Vizualizace - + Effects Efekty - + General Obecné diff --git a/src/qmmpui/translations/libqmmpui_de.ts b/src/qmmpui/translations/libqmmpui_de.ts index fe50fc46f..450710ab2 100644 --- a/src/qmmpui/translations/libqmmpui_de.ts +++ b/src/qmmpui/translations/libqmmpui_de.ts @@ -87,13 +87,13 @@ Dateiname - + Artist Interpret - + Album Album @@ -108,72 +108,72 @@ Deaktiviert - + Transports Transporte - + Decoders Dekoder - + Engines - + Title Titel - + Track number Stücknummer - + Two-digit track number Zweistellige Stücknummer - + Disc number CD-Nummer - + Condition Zustand - + Genre Genre - + Composer Komponist - + File name Dateiname - + File path Dateipfad - + Year Jahr - + Comment Kommentar @@ -389,17 +389,17 @@ Passwort: - + Visualization Visualisierung - + Effects Effekte - + General Sonstige diff --git a/src/qmmpui/translations/libqmmpui_es.ts b/src/qmmpui/translations/libqmmpui_es.ts index 5be6788a1..3072d50a5 100644 --- a/src/qmmpui/translations/libqmmpui_es.ts +++ b/src/qmmpui/translations/libqmmpui_es.ts @@ -87,13 +87,13 @@ Nombre del archivo - + Artist Intérprete - + Album Album @@ -108,72 +108,72 @@ Deshabilitado - + Transports Transportes - + Decoders Decodificadores - + Engines Motores - + Title Título - + Track number Número de pista - + Two-digit track number Número de pista con dos cifras - + Disc number Número de disco - + Condition Condición - + Genre Género - + Composer Compositor - + File name Nombre del archivo - + File path Ruta del archivo - + Year Año - + Comment Comentario @@ -242,17 +242,17 @@ Conectividad - + Visualization Visualización - + Effects Efectos - + General General diff --git a/src/qmmpui/translations/libqmmpui_it.ts b/src/qmmpui/translations/libqmmpui_it.ts index b67aeebe3..9eefbabf8 100644 --- a/src/qmmpui/translations/libqmmpui_it.ts +++ b/src/qmmpui/translations/libqmmpui_it.ts @@ -87,13 +87,13 @@ File - + Artist Interprete - + Album Album @@ -108,72 +108,72 @@ Disabilitato - + Transports Protocolli di trasporto - + Decoders Decodificatori - + Engines Meccanismi - + Title Titolo - + Track number Traccia n° - + Two-digit track number Traccia n° a due cifre - + Disc number Disco n° - + Condition Condizione - + Genre Genere - + Composer Compositore - + File name Nome file - + File path Percorso file - + Year Anno - + Comment Commento @@ -242,17 +242,17 @@ Connettività - + Visualization Visualizzazione - + Effects Effetti - + General Generale diff --git a/src/qmmpui/translations/libqmmpui_ja.ts b/src/qmmpui/translations/libqmmpui_ja.ts index 5c32d3b85..e10765027 100644 --- a/src/qmmpui/translations/libqmmpui_ja.ts +++ b/src/qmmpui/translations/libqmmpui_ja.ts @@ -325,7 +325,7 @@ - + Album アルバム @@ -335,92 +335,92 @@ 無効 - + Transports 転送 - + Decoders デコーダー - + Engines エンジン - + Effects 音響効果 - + Visualization 視覚効果 - + General 一般 - + Artist アーティスト - + Title タイトル - + Track number トラック番号 - + Two-digit track number トラック番号 数字2桁 - + Genre ジャンル - + Comment コメント - + Composer 作曲者 - + Disc number ディスク番号 - + File name ファイル名 - + File path ファイルパス - + Year - + Condition 定番 diff --git a/src/qmmpui/translations/libqmmpui_lt.ts b/src/qmmpui/translations/libqmmpui_lt.ts index 5ed04b867..00edfd107 100644 --- a/src/qmmpui/translations/libqmmpui_lt.ts +++ b/src/qmmpui/translations/libqmmpui_lt.ts @@ -87,13 +87,13 @@ Bylos pavadinimas - + Artist Atlikėjas - + Album Albumas @@ -108,72 +108,72 @@ Išjungta - + Transports Transportas - + Decoders Dekoderiai - + Engines Varikliai - + Title Pavadinimas - + Track number Takelio numeris - + Two-digit track number Dviejų skaičių takelio numeris - + Disc number Disko numeris - + Condition Būklė - + Composer Autorius - + File name Bylos pavadinimas - + File path Bylos kelias - + Genre Žanras - + Year Metai - + Comment Komentaras @@ -242,17 +242,17 @@ Tinklas - + Visualization Vizualizacija - + Effects Efektai - + General Bendri diff --git a/src/qmmpui/translations/libqmmpui_nl.ts b/src/qmmpui/translations/libqmmpui_nl.ts index 831a307b5..e0d56f739 100644 --- a/src/qmmpui/translations/libqmmpui_nl.ts +++ b/src/qmmpui/translations/libqmmpui_nl.ts @@ -87,13 +87,13 @@ Bestandsnaam - + Artist Artiest - + Album Album @@ -108,72 +108,72 @@ Uitgeschakeld - + Transports Protocols - + Decoders Decoders - + Engines Engines - + Title Naam - + Track number Liednummer - + Two-digit track number Twee-getal liednummer - + Disc number CD nummer - + Condition Staat - + Composer Componist - + File name Bestandsnaam - + File path Pad - + Genre Genre - + Year Jaar - + Comment Commentaar @@ -389,17 +389,17 @@ Proxy wachtwoord: - + Visualization Visualisatie - + Effects Effecten - + General Algemeen diff --git a/src/qmmpui/translations/libqmmpui_pl_PL.ts b/src/qmmpui/translations/libqmmpui_pl_PL.ts index a7a468365..6f0ab5c0a 100644 --- a/src/qmmpui/translations/libqmmpui_pl_PL.ts +++ b/src/qmmpui/translations/libqmmpui_pl_PL.ts @@ -87,13 +87,13 @@ Nazwa pliku - + Artist Artysta - + Album Album @@ -108,72 +108,72 @@ Wyłączone - + Transports Transporty - + Decoders Dekodery - + Engines Silniki - + Title Tytuł - + Track number Numer utworu - + Two-digit track number Dwuznakowy numer utworu - + Disc number Numer albumu - + Condition Warunek - + Genre Gatunek - + Composer Kompozytor - + File name Nazwa pliku - + File path Lokalizacja - + Year Rok - + Comment Komentarz @@ -242,17 +242,17 @@ Sieć - + Visualization Wizualizacje - + Effects Efekty - + General Ogólne diff --git a/src/qmmpui/translations/libqmmpui_pt_BR.ts b/src/qmmpui/translations/libqmmpui_pt_BR.ts index b90281ace..1a58e349e 100644 --- a/src/qmmpui/translations/libqmmpui_pt_BR.ts +++ b/src/qmmpui/translations/libqmmpui_pt_BR.ts @@ -87,13 +87,13 @@ Nome do Arquivo - + Artist Artista - + Album Álbum @@ -108,72 +108,72 @@ - + Transports - + Decoders - + Engines - + Title Título - + Track number - + Two-digit track number - + Disc number - + Condition - + Genre Gênero - + Composer - + File name - + File path - + Year Ano - + Comment Comentário @@ -242,17 +242,17 @@ - + Visualization - + Effects - + General diff --git a/src/qmmpui/translations/libqmmpui_ru.ts b/src/qmmpui/translations/libqmmpui_ru.ts index f58524a86..bca15818c 100644 --- a/src/qmmpui/translations/libqmmpui_ru.ts +++ b/src/qmmpui/translations/libqmmpui_ru.ts @@ -87,13 +87,13 @@ Имя файла - + Artist Исполнитель - + Album Альбом @@ -108,72 +108,72 @@ Отключено - + Transports Транспорты - + Decoders Декодеры - + Engines Внешние проигрыватели - + Title Название - + Track number Номер трека - + Two-digit track number 2-x разрядный номер трека - + Disc number Номер диска - + Condition Условие - + Genre Жанр - + Composer Композитор - + File name Имя файла - + File path Путь к файлу - + Year Год - + Comment Комментарий @@ -242,17 +242,17 @@ Сеть - + Visualization Визуализация - + Effects Эффекты - + General Общие diff --git a/src/qmmpui/translations/libqmmpui_sk.ts b/src/qmmpui/translations/libqmmpui_sk.ts index bfcd253a2..788b11d6a 100644 --- a/src/qmmpui/translations/libqmmpui_sk.ts +++ b/src/qmmpui/translations/libqmmpui_sk.ts @@ -87,13 +87,13 @@ Názov súboru - + Artist Interprét - + Album Album @@ -108,72 +108,72 @@ Zakázané - + Transports Protokoly - + Decoders Dekodéry - + Engines Prehrávače - + Title Názov - + Track number Číslo skladby - + Two-digit track number Dvojmiestne číslo skladby - + Disc number Číslo disku - + Condition Stav - + Composer Skladateľ - + File name Názov súboru - + File path Cesta k súboru - + Genre Žáner - + Year Rok - + Comment Poznámka @@ -389,17 +389,17 @@ Proxy heslo: - + Visualization Vizualizácie - + Effects Efekty - + General Všeobecné diff --git a/src/qmmpui/translations/libqmmpui_tr.ts b/src/qmmpui/translations/libqmmpui_tr.ts index b94868f2d..619579c6e 100644 --- a/src/qmmpui/translations/libqmmpui_tr.ts +++ b/src/qmmpui/translations/libqmmpui_tr.ts @@ -87,13 +87,13 @@ Dosya adı - + Artist Sanatçı - + Album Albüm @@ -108,72 +108,72 @@ - + Transports - + Decoders - + Engines - + Title Başlık - + Track number - + Two-digit track number - + Disc number - + Condition - + Genre Tarz - + Composer - + File name - + File path - + Year Yıl - + Comment Yorum @@ -242,17 +242,17 @@ Bağlanırlık - + Visualization Görsellik - + Effects Efektler - + General Genel diff --git a/src/qmmpui/translations/libqmmpui_uk_UA.ts b/src/qmmpui/translations/libqmmpui_uk_UA.ts index a350888fe..5d18ddfaf 100644 --- a/src/qmmpui/translations/libqmmpui_uk_UA.ts +++ b/src/qmmpui/translations/libqmmpui_uk_UA.ts @@ -87,13 +87,13 @@ Ім'я файлу - + Artist Виконавець - + Album Альбом @@ -108,72 +108,72 @@ Вимкнено - + Transports Транспорти - + Decoders Декодери - + Engines Зовнішні програвачі - + Title Назва - + Track number Номер треку - + Two-digit track number 2- розрядний номер трека - + Disc number Номер диску - + Condition Умова - + Genre Жанр - + Composer Композитор - + File name Ім'я файлу - + File path Шлях файлу - + Year Рік - + Comment Коментар @@ -242,17 +242,17 @@ Мережа - + Visualization Візуалізація - + Effects Ефекти - + General Загальне diff --git a/src/qmmpui/translations/libqmmpui_zh_CN.ts b/src/qmmpui/translations/libqmmpui_zh_CN.ts index 3aeafe3d2..a0c54881f 100644 --- a/src/qmmpui/translations/libqmmpui_zh_CN.ts +++ b/src/qmmpui/translations/libqmmpui_zh_CN.ts @@ -87,13 +87,13 @@ 文件名 - + Artist 艺术家 - + Album 专辑 @@ -108,72 +108,72 @@ - + Transports - + Decoders - + Engines - + Title 标题 - + Track number 音轨编号 - + Two-digit track number 两位数音轨编号 - + Disc number 光盘编号 - + Condition 条件 - + Genre 流派 - + Composer 作曲 - + File name 文件名 - + File path 文件路径 - + Year 年代 - + Comment 备注 @@ -242,17 +242,17 @@ 连接 - + Visualization 可视化 - + Effects 特效 - + General 常规 diff --git a/src/qmmpui/translations/libqmmpui_zh_TW.ts b/src/qmmpui/translations/libqmmpui_zh_TW.ts index 91e589b6d..0619463ef 100644 --- a/src/qmmpui/translations/libqmmpui_zh_TW.ts +++ b/src/qmmpui/translations/libqmmpui_zh_TW.ts @@ -87,13 +87,13 @@ 檔名 - + Artist 藝術家 - + Album 專輯 @@ -108,72 +108,72 @@ - + Transports - + Decoders - + Engines - + Title 標題 - + Track number 音軌編號 - + Two-digit track number 兩位數音軌編號 - + Disc number 光槃編號 - + Condition 條件 - + Genre 流派 - + Composer 作曲 - + File name 文件名 - + File path 文件路徑 - + Year 年代 - + Comment 備註 @@ -242,17 +242,17 @@ 連線 - + Visualization 可視化 - + Effects 特效 - + General 常規 -- cgit v1.2.3-13-gbd6f