From 7586a65427862831590a963b5f8f9d2712271ca0 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Thu, 10 Sep 2009 12:04:51 +0000 Subject: added new details dialog, disabled input plugins due api changes git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1194 90c681e8-e032-0410-971d-27865f9a5e38 --- src/plugins/General/covermanager/coverwidget.cpp | 45 +++ src/plugins/General/covermanager/coverwidget.h | 50 +++ src/plugins/Input/CMakeLists.txt | 22 +- src/plugins/Input/Input.pro | 18 +- src/plugins/Input/mad/CMakeLists.txt | 7 +- src/plugins/Input/mad/coverwidget.cpp | 45 --- src/plugins/Input/mad/coverwidget.h | 50 --- src/plugins/Input/mad/decodermadfactory.cpp | 8 +- src/plugins/Input/mad/decodermadfactory.h | 4 +- src/plugins/Input/mad/detailsdialog.cpp | 391 ------------------ src/plugins/Input/mad/detailsdialog.h | 64 --- src/plugins/Input/mad/detailsdialog.ui | 450 --------------------- src/plugins/Input/mad/mad.pro | 83 ++-- src/plugins/Input/mad/mpegmetadatamodel.cpp | 325 +++++++++++++++ src/plugins/Input/mad/mpegmetadatamodel.h | 63 +++ .../Input/mad/translations/mad_plugin_cs.ts | 220 +++------- .../Input/mad/translations/mad_plugin_de.ts | 213 +++------- .../Input/mad/translations/mad_plugin_it.ts | 195 ++------- .../Input/mad/translations/mad_plugin_lt.ts | 199 ++------- .../Input/mad/translations/mad_plugin_pl.ts | 209 +++------- .../Input/mad/translations/mad_plugin_ru.ts | 215 +++------- .../Input/mad/translations/mad_plugin_tr.ts | 183 ++------- .../Input/mad/translations/mad_plugin_uk_UA.ts | 215 +++------- .../Input/mad/translations/mad_plugin_zh_CN.ts | 201 ++------- .../Input/mad/translations/mad_plugin_zh_TW.ts | 201 ++------- src/plugins/Input/modplug/decoder_modplug.cpp | 4 +- src/qmmp/CMakeLists.txt | 20 +- src/qmmp/abstractdetailsdialog.cpp | 163 -------- src/qmmp/abstractdetailsdialog.h | 65 --- src/qmmp/decoderfactory.h | 9 +- src/qmmp/forms/abstractdetailsdialog.ui | 372 ----------------- src/qmmp/metadatamodel.cpp | 40 ++ src/qmmp/metadatamodel.h | 40 ++ src/qmmp/qmmp.pro | 28 +- src/qmmp/soundcore.cpp | 5 - src/qmmp/tagmodel.cpp | 45 +++ src/qmmp/tagmodel.h | 44 ++ src/qmmp/translations/libqmmp_cs.ts | 92 ----- src/qmmp/translations/libqmmp_de.ts | 88 ---- src/qmmp/translations/libqmmp_it.ts | 100 ----- src/qmmp/translations/libqmmp_locales.qrc | 15 - src/qmmp/translations/libqmmp_lt.ts | 88 ---- src/qmmp/translations/libqmmp_pl.ts | 88 ---- src/qmmp/translations/libqmmp_pl_PL.ts | 88 ---- src/qmmp/translations/libqmmp_pt_BR.ts | 88 ---- src/qmmp/translations/libqmmp_ru.ts | 88 ---- src/qmmp/translations/libqmmp_tr.ts | 88 ---- src/qmmp/translations/libqmmp_uk_UA.ts | 86 ---- src/qmmp/translations/libqmmp_zh_CN.ts | 88 ---- src/qmmp/translations/libqmmp_zh_TW.ts | 88 ---- src/qmmpui/CMakeLists.txt | 15 +- src/qmmpui/detailsdialog.cpp | 128 ++++++ src/qmmpui/detailsdialog.h | 58 +++ src/qmmpui/detailsdialog.ui | 85 ++++ src/qmmpui/playlistmodel.cpp | 18 +- src/qmmpui/qmmpui.pro | 148 ++++--- src/qmmpui/tageditor.cpp | 83 ++++ src/qmmpui/tageditor.h | 48 +++ src/qmmpui/tageditor.ui | 313 ++++++++++++++ src/qmmpui/translations/libqmmpui_cs.ts | 157 ++++++- src/qmmpui/translations/libqmmpui_de.ts | 160 +++++++- src/qmmpui/translations/libqmmpui_it.ts | 160 +++++++- src/qmmpui/translations/libqmmpui_lt.ts | 160 +++++++- src/qmmpui/translations/libqmmpui_pl.ts | 160 +++++++- src/qmmpui/translations/libqmmpui_pt_BR.ts | 160 +++++++- src/qmmpui/translations/libqmmpui_ru.ts | 161 +++++++- src/qmmpui/translations/libqmmpui_tr.ts | 160 +++++++- src/qmmpui/translations/libqmmpui_uk_UA.ts | 160 +++++++- src/qmmpui/translations/libqmmpui_zh_CN.ts | 160 +++++++- src/qmmpui/translations/libqmmpui_zh_TW.ts | 160 +++++++- 70 files changed, 3657 insertions(+), 4593 deletions(-) create mode 100644 src/plugins/General/covermanager/coverwidget.cpp create mode 100644 src/plugins/General/covermanager/coverwidget.h delete mode 100644 src/plugins/Input/mad/coverwidget.cpp delete mode 100644 src/plugins/Input/mad/coverwidget.h delete mode 100644 src/plugins/Input/mad/detailsdialog.cpp delete mode 100644 src/plugins/Input/mad/detailsdialog.h delete mode 100644 src/plugins/Input/mad/detailsdialog.ui create mode 100644 src/plugins/Input/mad/mpegmetadatamodel.cpp create mode 100644 src/plugins/Input/mad/mpegmetadatamodel.h delete mode 100644 src/qmmp/abstractdetailsdialog.cpp delete mode 100644 src/qmmp/abstractdetailsdialog.h delete mode 100644 src/qmmp/forms/abstractdetailsdialog.ui create mode 100644 src/qmmp/metadatamodel.cpp create mode 100644 src/qmmp/metadatamodel.h create mode 100644 src/qmmp/tagmodel.cpp create mode 100644 src/qmmp/tagmodel.h delete mode 100644 src/qmmp/translations/libqmmp_cs.ts delete mode 100644 src/qmmp/translations/libqmmp_de.ts delete mode 100644 src/qmmp/translations/libqmmp_it.ts delete mode 100644 src/qmmp/translations/libqmmp_locales.qrc delete mode 100644 src/qmmp/translations/libqmmp_lt.ts delete mode 100644 src/qmmp/translations/libqmmp_pl.ts delete mode 100644 src/qmmp/translations/libqmmp_pl_PL.ts delete mode 100644 src/qmmp/translations/libqmmp_pt_BR.ts delete mode 100644 src/qmmp/translations/libqmmp_ru.ts delete mode 100644 src/qmmp/translations/libqmmp_tr.ts delete mode 100644 src/qmmp/translations/libqmmp_uk_UA.ts delete mode 100644 src/qmmp/translations/libqmmp_zh_CN.ts delete mode 100644 src/qmmp/translations/libqmmp_zh_TW.ts create mode 100644 src/qmmpui/detailsdialog.cpp create mode 100644 src/qmmpui/detailsdialog.h create mode 100644 src/qmmpui/detailsdialog.ui create mode 100644 src/qmmpui/tageditor.cpp create mode 100644 src/qmmpui/tageditor.h create mode 100644 src/qmmpui/tageditor.ui (limited to 'src') diff --git a/src/plugins/General/covermanager/coverwidget.cpp b/src/plugins/General/covermanager/coverwidget.cpp new file mode 100644 index 000000000..6ce4eebc1 --- /dev/null +++ b/src/plugins/General/covermanager/coverwidget.cpp @@ -0,0 +1,45 @@ +/*************************************************************************** + * Copyright (C) 2009 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program 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 2 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 General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#include +#include +#include + +#include "coverwidget.h" + +CoverWidget::CoverWidget(QWidget *parent) + : QWidget(parent) +{} + +CoverWidget::~CoverWidget() +{} + +void CoverWidget::setPixmap(const QPixmap &pixmap) +{ + m_pixmap = pixmap; + update(); +} + +void CoverWidget::paintEvent (QPaintEvent *p) +{ + QPainter paint(this); + if(!m_pixmap.isNull()) + paint.drawPixmap(0,0, m_pixmap.scaled(p->rect().size())); +} + diff --git a/src/plugins/General/covermanager/coverwidget.h b/src/plugins/General/covermanager/coverwidget.h new file mode 100644 index 000000000..b06e66f7e --- /dev/null +++ b/src/plugins/General/covermanager/coverwidget.h @@ -0,0 +1,50 @@ +/*************************************************************************** + * Copyright (C) 2009 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program 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 2 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 General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#ifndef PIXMAPWIDGET_H +#define PIXMAPWIDGET_H + +#include +#include + +/** + @author Ilya Kotov +*/ + +class CoverWidget : public QWidget +{ +Q_OBJECT +public: + CoverWidget(QWidget *parent = 0); + + ~CoverWidget(); + + virtual void setPixmap(const QPixmap&); + +protected: + void paintEvent (QPaintEvent *event); + +private: + QPixmap m_pixmap; + + + +}; + +#endif diff --git a/src/plugins/Input/CMakeLists.txt b/src/plugins/Input/CMakeLists.txt index a62066aea..3a98630c6 100644 --- a/src/plugins/Input/CMakeLists.txt +++ b/src/plugins/Input/CMakeLists.txt @@ -2,17 +2,17 @@ INCLUDE(FindPkgConfig) SET(USE_MAD TRUE CACHE BOOL "enable/disable mad plugin") -SET(USE_FLAC TRUE CACHE BOOL "enable/disable flac plugin") -SET(USE_VORBIS TRUE CACHE BOOL "enable/disable ogg vorbis plugin") -SET(USE_FFMPEG TRUE CACHE BOOL "enable/disable ffmpeg plugin") -SET(USE_MPC TRUE CACHE BOOL "enable/disable mpc plugin") -SET(USE_SNDFILE TRUE CACHE BOOL "enable/disable sndfile plugin") -SET(USE_WAVPACK TRUE CACHE BOOL "enable/disable wavpack plugin") -SET(USE_MODPLUG TRUE CACHE BOOL "enable/disable modplug plugin") -SET(USE_AAC TRUE CACHE BOOL "enable/disable aac plugin") -SET(USE_CUE TRUE CACHE BOOL "enable/disable cue plugin") -SET(USE_MPLAYER TRUE CACHE BOOL "enable/disable mplayer support") -SET(USE_CDA TRUE CACHE BOOL "enable/disable cd audio support") +#SET(USE_FLAC TRUE CACHE BOOL "enable/disable flac plugin") +#SET(USE_VORBIS TRUE CACHE BOOL "enable/disable ogg vorbis plugin") +#SET(USE_FFMPEG TRUE CACHE BOOL "enable/disable ffmpeg plugin") +#SET(USE_MPC TRUE CACHE BOOL "enable/disable mpc plugin") +#SET(USE_SNDFILE TRUE CACHE BOOL "enable/disable sndfile plugin") +#SET(USE_WAVPACK TRUE CACHE BOOL "enable/disable wavpack plugin") +#SET(USE_MODPLUG TRUE CACHE BOOL "enable/disable modplug plugin") +#SET(USE_AAC TRUE CACHE BOOL "enable/disable aac plugin") +#SET(USE_CUE TRUE CACHE BOOL "enable/disable cue plugin") +#SET(USE_MPLAYER TRUE CACHE BOOL "enable/disable mplayer support") +#SET(USE_CDA TRUE CACHE BOOL "enable/disable cd audio support") pkg_check_modules(TAGLIB taglib) diff --git a/src/plugins/Input/Input.pro b/src/plugins/Input/Input.pro index ad543d13e..63f5dc4b3 100644 --- a/src/plugins/Input/Input.pro +++ b/src/plugins/Input/Input.pro @@ -1,54 +1,54 @@ include(../../../qmmp.pri) -SUBDIRS += mad cue +SUBDIRS += mad #cue TEMPLATE = subdirs unix{ -SUBDIRS += vorbis sndfile wavpack +#SUBDIRS += vorbis sndfile wavpack contains(CONFIG, MODPLUG_PLUGIN){ - SUBDIRS += modplug +# SUBDIRS += modplug message(***************************) message(* Modplug plugin enabled *) message(***************************) } contains(CONFIG, MUSEPACK_PLUGIN){ - SUBDIRS += mpc +# SUBDIRS += mpc message(***************************) message(* Musepack plugin enabled *) message(***************************) } contains(CONFIG, FLAC_PLUGIN){ - SUBDIRS += flac +# SUBDIRS += flac message(***********************) message(* FLAC plugin enabled *) message(***********************) } contains(CONFIG, FFMPEG_PLUGIN){ - SUBDIRS += ffmpeg +# SUBDIRS += ffmpeg message(*************************) message(* FFMPEG plugin enabled *) message(*************************) } contains(CONFIG, AAC_PLUGIN){ - SUBDIRS += aac +# SUBDIRS += aac message(**********************) message(* AAC plugin enabled *) message(**********************) } contains(CONFIG, MPLAYER_PLUGIN){ - SUBDIRS += mplayer +# SUBDIRS += mplayer message(**************************) message(* Mplayer plugin enabled *) message(**************************) } contains(CONFIG, CDAUDIO_PLUGIN){ - SUBDIRS += cdaudio +# SUBDIRS += cdaudio message(***************************) message(* CD Audio plugin enabled *) message(***************************) diff --git a/src/plugins/Input/mad/CMakeLists.txt b/src/plugins/Input/mad/CMakeLists.txt index bc08f3c74..174f4f696 100644 --- a/src/plugins/Input/mad/CMakeLists.txt +++ b/src/plugins/Input/mad/CMakeLists.txt @@ -35,19 +35,17 @@ link_directories(${MAD_LIBRARY_DIRS} ${TAGLIB_LIBRARY_DIRS}) SET(libmad_SRCS decoder_mad.cpp decodermadfactory.cpp - detailsdialog.cpp settingsdialog.cpp tagextractor.cpp - coverwidget.cpp + mpegmetadatamodel.cpp ) SET(libmad_MOC_HDRS settingsdialog.h decodermadfactory.h decoder_mad.h - detailsdialog.h tagextractor.h - coverwidget.h + mpegmetadatamodel.h ) SET(libmad_RCCS translations/translations.qrc) @@ -60,7 +58,6 @@ QT4_WRAP_CPP(libmad_MOC_SRCS ${libmad_MOC_HDRS}) SET(libmad_UIS - detailsdialog.ui settingsdialog.ui ) diff --git a/src/plugins/Input/mad/coverwidget.cpp b/src/plugins/Input/mad/coverwidget.cpp deleted file mode 100644 index 6ce4eebc1..000000000 --- a/src/plugins/Input/mad/coverwidget.cpp +++ /dev/null @@ -1,45 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2009 by Ilya Kotov * - * forkotov02@hotmail.ru * - * * - * This program 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 2 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 General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#include -#include -#include - -#include "coverwidget.h" - -CoverWidget::CoverWidget(QWidget *parent) - : QWidget(parent) -{} - -CoverWidget::~CoverWidget() -{} - -void CoverWidget::setPixmap(const QPixmap &pixmap) -{ - m_pixmap = pixmap; - update(); -} - -void CoverWidget::paintEvent (QPaintEvent *p) -{ - QPainter paint(this); - if(!m_pixmap.isNull()) - paint.drawPixmap(0,0, m_pixmap.scaled(p->rect().size())); -} - diff --git a/src/plugins/Input/mad/coverwidget.h b/src/plugins/Input/mad/coverwidget.h deleted file mode 100644 index b06e66f7e..000000000 --- a/src/plugins/Input/mad/coverwidget.h +++ /dev/null @@ -1,50 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2009 by Ilya Kotov * - * forkotov02@hotmail.ru * - * * - * This program 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 2 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 General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef PIXMAPWIDGET_H -#define PIXMAPWIDGET_H - -#include -#include - -/** - @author Ilya Kotov -*/ - -class CoverWidget : public QWidget -{ -Q_OBJECT -public: - CoverWidget(QWidget *parent = 0); - - ~CoverWidget(); - - virtual void setPixmap(const QPixmap&); - -protected: - void paintEvent (QPaintEvent *event); - -private: - QPixmap m_pixmap; - - - -}; - -#endif diff --git a/src/plugins/Input/mad/decodermadfactory.cpp b/src/plugins/Input/mad/decodermadfactory.cpp index fd45987c7..d4d881cd8 100644 --- a/src/plugins/Input/mad/decodermadfactory.cpp +++ b/src/plugins/Input/mad/decodermadfactory.cpp @@ -31,7 +31,7 @@ #include #include -#include "detailsdialog.h" +#include "mpegmetadatamodel.h" #include "settingsdialog.h" #include "decoder_mad.h" #include "decodermadfactory.h" @@ -207,11 +207,9 @@ QList DecoderMADFactory::createPlayList(const QString &fileName, boo return list; } -QObject* DecoderMADFactory::showDetails(QWidget *parent, const QString &path) +MetaDataModel* DecoderMADFactory::createMetaDataModel(const QString &path, QObject *parent) { - DetailsDialog *d = new DetailsDialog(parent, path); - d -> show(); - return d; + return new MPEGMetaDataModel(path, parent); } void DecoderMADFactory::showSettings(QWidget *parent) diff --git a/src/plugins/Input/mad/decodermadfactory.h b/src/plugins/Input/mad/decodermadfactory.h index c749cd86d..bd657514c 100644 --- a/src/plugins/Input/mad/decodermadfactory.h +++ b/src/plugins/Input/mad/decodermadfactory.h @@ -28,6 +28,7 @@ #include #include #include +#include @@ -43,9 +44,8 @@ public: bool canDecode(QIODevice *input) const; const DecoderProperties properties() const; Decoder *create(QObject *, QIODevice *, Output *, const QString &); - //FileInfo *createFileInfo(const QString &source); QList createPlayList(const QString &fileName, bool useMetaData); - QObject* showDetails(QWidget *parent, const QString &path); + MetaDataModel* createMetaDataModel(const QString &path, QObject *parent = 0); void showSettings(QWidget *parent); void showAbout(QWidget *parent); QTranslator *createTranslator(QObject *parent); diff --git a/src/plugins/Input/mad/detailsdialog.cpp b/src/plugins/Input/mad/detailsdialog.cpp deleted file mode 100644 index b103b5c78..000000000 --- a/src/plugins/Input/mad/detailsdialog.cpp +++ /dev/null @@ -1,391 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006-2009 by Ilya Kotov * - * forkotov02@hotmail.ru * - * * - * This program 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 2 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 General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "detailsdialog.h" - -DetailsDialog::DetailsDialog(QWidget *parent, const QString &path) - : QDialog(parent) -{ - ui.setupUi(this); - setAttribute(Qt::WA_DeleteOnClose); - m_path = path; - setWindowTitle (path.section('/',-1)); - ui.pathLineEdit->setText(m_path); - - if (!QFile::exists(m_path)) - return; - - QSettings settings(Qmmp::configFile(), QSettings::IniFormat); - settings.beginGroup("MAD"); - m_codec_v1 = - QTextCodec::codecForName(settings.value("ID3v1_encoding", "ISO-8859-1") - .toByteArray ()); - m_codec_v2 = - QTextCodec::codecForName(settings.value("ID3v2_encoding","UTF-8") - .toByteArray ()); - if (!m_codec_v1) - m_codec_v1 = QTextCodec::codecForName ("ISO-8859-1"); - if (!m_codec_v2) - m_codec_v2 = QTextCodec::codecForName ("UTF-8"); - - QString tag_name = settings.value("current_tag","ID3v2").toString (); - - if (tag_name == "ID3v1") - ui.id3v1RadioButton->setChecked(TRUE); - else if (tag_name == "ID3v2") - ui.id3v2RadioButton->setChecked(TRUE); - else if (tag_name == "APE") - ui.apeRadioButton->setChecked(TRUE); - else - ui.id3v2RadioButton->setChecked(TRUE); - - settings.endGroup(); - - loadMPEGInfo(); - QFileInfo info(m_path); - m_rw = info.isWritable(); - loadTag(); - connect(ui.saveButton, SIGNAL(clicked()), SLOT(save())); - connect(ui.createButton, SIGNAL(clicked()), SLOT(create())); - connect(ui.deleteButton, SIGNAL(clicked()), SLOT(deleteTag())); - connect(ui.id3v1RadioButton, SIGNAL(clicked()), SLOT(loadTag())); - connect(ui.id3v2RadioButton, SIGNAL(clicked()), SLOT(loadTag())); - connect(ui.apeRadioButton, SIGNAL(clicked()), SLOT(loadTag())); - QPixmap pix = Decoder::findCover(m_path); - if(pix.isNull()) - { - ui.coverWidget->hide(); - qobject_cast (ui.groupBox->layout ())->setDirection(QBoxLayout::LeftToRight); - } - else - ui.coverWidget->setPixmap(pix); -} - - -DetailsDialog::~DetailsDialog() -{} - -void DetailsDialog::loadMPEGInfo() -{ - TagLib::MPEG::File f (m_path.toLocal8Bit().constData()); - QString text; - QString v; - switch((int)f.audioProperties()->version()) - { - case TagLib::MPEG::Header::Version1: - v = "1"; - break; - case TagLib::MPEG::Header::Version2: - v = "2"; - break; - case TagLib::MPEG::Header::Version2_5: - v = "2.5"; - } - QMap ap; - text = QString("MPEG-%1 layer %2").arg(v).arg(f.audioProperties()->layer()); - ap.insert(tr("Format"), text); - text = QString("%1").arg(f.audioProperties()->bitrate()); - ap.insert(tr("Bitrate"), text+" "+tr("kbps")); - text = QString("%1").arg(f.audioProperties()->sampleRate()); - ap.insert(tr("Samplerate"), text+" "+tr("Hz")); - switch (f.audioProperties()->channelMode()) - { - case TagLib::MPEG::Header::Stereo: - ap.insert(tr("Mode"), "Stereo"); - break; - case TagLib::MPEG::Header::JointStereo: - ap.insert(tr("Mode"), "Joint stereo"); - break; - case TagLib::MPEG::Header::DualChannel: - ap.insert(tr("Mode"), "Dual channel"); - break; - case TagLib::MPEG::Header::SingleChannel: - ap.insert(tr("Mode"), "Single channel"); - break; - } - text = QString("%1 "+tr("KB")).arg(f.length()/1024); - ap.insert(tr("File size"), text); - if (f.audioProperties()->protectionEnabled()) - ap.insert(tr("Protection"), tr("Yes")); - else - ap.insert(tr("Protection"), tr("No")); - if (f.audioProperties()->isCopyrighted()) - ap.insert(tr("Copyright"), tr("Yes")); - else - ap.insert(tr("Copyright"), tr("No")); - if (f.audioProperties()->isOriginal()) - ap.insert(tr("Original"), tr("Yes")); - else - ap.insert(tr("Original"), tr("No")); - showAudioProperties(ap); -} - -void DetailsDialog::loadTag() -{ - TagLib::MPEG::File f (m_path.toLocal8Bit().constData()); - QTextCodec *codec = QTextCodec::codecForName ("UTF-8"); - TagLib::Tag *tag = 0; - TagLib::ID3v2::FrameListMap flm; - - if (selectedTag() == TagLib::MPEG::File::ID3v1) - { - tag = f.ID3v1Tag(); - codec = m_codec_v1; - ui.tagGroupBox->setTitle(tr("ID3v1")); - } - else if (selectedTag() == TagLib::MPEG::File::ID3v2) - { - tag = f.ID3v2Tag(); - codec = m_codec_v2; - ui.tagGroupBox->setTitle(tr("ID3v2")); - if(tag) - flm = f.ID3v2Tag()->frameListMap(); - } - else if (selectedTag() == TagLib::MPEG::File::APE) - { - ui.tagGroupBox->setTitle(tr("APE")); - tag = f.APETag(); - } - ui.saveButton->setEnabled(tag && m_rw); - ui.createButton->setEnabled(!tag && m_rw); - ui.deleteButton->setEnabled(tag && m_rw); - ui.tagGroupBox->setEnabled(tag); - //clear old values - ui.titleLineEdit->clear(); - ui.artistLineEdit->clear(); - ui.albumLineEdit->clear(); - ui.commentBrowser->clear(); - ui.yearSpinBox->clear(); - ui.trackSpinBox->setValue(0); - ui.genreLineEdit->clear(); - ui.composerLineEdit->clear(); - ui.discSpinBox->setValue(0); - - if (tag) - { - bool utf = codec->name().contains("UTF"); - if (utf) - codec = QTextCodec::codecForName ("UTF-8"); - TagLib::String title = tag->title(); - TagLib::String artist = tag->artist(); - TagLib::String album = tag->album(); - TagLib::String comment = tag->comment(); - TagLib::String genre = tag->genre(); - QString string = codec->toUnicode(title.toCString(utf)).trimmed(); - ui.titleLineEdit->setText(string); - string = codec->toUnicode(artist.toCString(utf)).trimmed(); - ui.artistLineEdit->setText(string); - string = codec->toUnicode(album.toCString(utf)).trimmed(); - ui.albumLineEdit->setText(string); - string = codec->toUnicode(comment.toCString(utf)).trimmed(); - ui.commentBrowser->setText(string); - ui.yearSpinBox->setValue(tag->year()); - ui.trackSpinBox->setValue(tag->track()); - string = codec->toUnicode(genre.toCString(utf)).trimmed(); - ui.genreLineEdit->setText(string); - if(selectedTag() == TagLib::MPEG::File::ID3v2) - { - if(!flm["TCOM"].isEmpty()) - { - string = codec->toUnicode(flm["TCOM"].front()->toString().toCString(utf)).trimmed(); - ui.composerLineEdit->setText(string); - } - if(!flm["TPOS"].isEmpty()) - { - string = QString(flm["TPOS"].front()->toString().toCString(utf)).trimmed(); - ui.discSpinBox->setValue(string.toInt()); - } - } - } -} - -void DetailsDialog::save() -{ - TagLib::MPEG::File* f = new TagLib::MPEG::File(m_path.toLocal8Bit().constData()); - TagLib::String::Type type = TagLib::String::Latin1; - - QTextCodec *codec = 0; - TagLib::Tag *tag = 0; - - if (selectedTag() == TagLib::MPEG::File::ID3v1) - { - codec = m_codec_v1; - tag = f->ID3v1Tag(TRUE); - if (codec->name().contains("UTF")) - { - delete f; - loadTag(); - } - } - if (selectedTag() == TagLib::MPEG::File::ID3v2) - { - codec = m_codec_v2; - tag = f->ID3v2Tag(TRUE); - - if (codec->name().contains("UTF")) - { - type = TagLib::String::UTF8; - if (codec->name().contains("UTF-16")) - type = TagLib::String::UTF16; - else if (codec->name().contains("UTF-16LE")) - type = TagLib::String::UTF16LE; - else if (codec->name().contains("UTF-16BE")) - type = TagLib::String::UTF16BE; - - codec = QTextCodec::codecForName ("UTF-8"); - TagLib::ID3v2::FrameFactory *factory = TagLib::ID3v2::FrameFactory::instance(); - factory->setDefaultTextEncoding(type); - f->setID3v2FrameFactory(factory); - type = TagLib::String::UTF8; - } - //set composer tag - TagLib::String composer = - TagLib::String(codec->fromUnicode(ui.composerLineEdit->text()).constData(), type); - TagLib::ID3v2::Tag *id3v2_tag = dynamic_cast(tag); - if(ui.composerLineEdit->text().isEmpty()) - id3v2_tag->removeFrames("TCOM"); - else if(!id3v2_tag->frameListMap()["TCOM"].isEmpty()) - id3v2_tag->frameListMap()["TCOM"].front()->setText(composer); - else - { - TagLib::ID3v2::TextIdentificationFrame *frame; - frame = new TagLib::ID3v2::TextIdentificationFrame("TCOM", TagLib::String::Latin1); - frame->setText(composer); - id3v2_tag->addFrame(frame); - } - //set disc number - TagLib::String discnumber = - TagLib::String(QString("%1").arg(ui.discSpinBox->value()).toAscii().constData()); - if(ui.discSpinBox->value() == 0) - id3v2_tag->removeFrames("TPOS"); - else if(!id3v2_tag->frameListMap()["TPOS"].isEmpty()) - id3v2_tag->frameListMap()["TPOS"].front()->setText(discnumber); - else - { - TagLib::ID3v2::TextIdentificationFrame *frame; - frame = new TagLib::ID3v2::TextIdentificationFrame("TPOS", TagLib::String::Latin1); - frame->setText(discnumber); - id3v2_tag->addFrame(frame); - } - } - if (selectedTag() == TagLib::MPEG::File::APE) - { - codec = QTextCodec::codecForName ("UTF-8"); - tag = f->APETag(TRUE); - type = TagLib::String::UTF8; - } - - tag->setTitle(TagLib::String(codec->fromUnicode(ui.titleLineEdit->text()).constData(), type)); - tag->setArtist(TagLib::String(codec->fromUnicode(ui.artistLineEdit->text()).constData(), type)); - tag->setAlbum(TagLib::String(codec->fromUnicode(ui.albumLineEdit->text()).constData(), type)); - tag->setComment(TagLib::String(codec->fromUnicode(ui.commentBrowser->toPlainText ()) - .constData(), type)); - tag->setGenre(TagLib::String(codec->fromUnicode(ui.genreLineEdit->text()).constData(), type)); - tag->setYear(ui.yearSpinBox->value()); - tag->setTrack(ui.trackSpinBox->value()); - - f->save(selectedTag(), FALSE); - delete f; - loadTag(); -} - -void DetailsDialog::create() -{ - TagLib::MPEG::File *f = new TagLib::MPEG::File (m_path.toLocal8Bit().constData()); - TagLib::Tag *tag = 0; - if (selectedTag() == TagLib::MPEG::File::ID3v1) - tag = f->ID3v1Tag(TRUE); - else if (selectedTag() == TagLib::MPEG::File::ID3v2) - tag = f->ID3v2Tag(TRUE); - else if (selectedTag() == TagLib::MPEG::File::APE) - tag = f->APETag(TRUE); - - f->save(selectedTag(), FALSE); - delete f; - loadTag(); - ui.tagGroupBox->setEnabled(TRUE); - ui.saveButton->setEnabled(m_rw); -} - -void DetailsDialog::deleteTag() -{ - TagLib::MPEG::File *f = new TagLib::MPEG::File (m_path.toLocal8Bit().constData()); - f->strip(selectedTag()); - delete f; - loadTag(); -} - -uint DetailsDialog::selectedTag() -{ - if (ui.id3v1RadioButton->isChecked()) - return TagLib::MPEG::File::ID3v1; - else if (ui.id3v2RadioButton->isChecked()) - return TagLib::MPEG::File::ID3v2; - else if (ui.apeRadioButton->isChecked()) - return TagLib::MPEG::File::APE; - return TagLib::MPEG::File::ID3v2; -} - -void DetailsDialog::closeEvent (QCloseEvent *) -{ - QSettings settings(Qmmp::configFile(), QSettings::IniFormat); - settings.beginGroup("MAD"); - if (ui.id3v1RadioButton->isChecked()) - settings.setValue("current_tag","ID3v1"); - else if (ui.id3v2RadioButton->isChecked()) - settings.setValue("current_tag","ID3v2"); - else if (ui.apeRadioButton->isChecked()) - settings.setValue("current_tag","APE"); - settings.endGroup(); -} - -void DetailsDialog::showAudioProperties(QMap p) -{ - QString formattedText; - formattedText.append(""); - foreach(QString key, p.keys()) - { - formattedText.append(""); - formattedText.append(""); - formattedText.append(""); - } - formattedText.append("
" + key + ": " - + p.value(key) + "
"); - ui.propertiesLabel->setText(formattedText); -} diff --git a/src/plugins/Input/mad/detailsdialog.h b/src/plugins/Input/mad/detailsdialog.h deleted file mode 100644 index 7367cbf67..000000000 --- a/src/plugins/Input/mad/detailsdialog.h +++ /dev/null @@ -1,64 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2006-2008 by Ilya Kotov * - * forkotov02@hotmail.ru * - * * - * This program 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 2 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 General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef DETAILSDIALOG_H -#define DETAILSDIALOG_H - -#include -#include -#include - -#include "ui_detailsdialog.h" - -/** - @author Ilya Kotov -*/ - -class QTextCodec; - -class DetailsDialog : public QDialog -{ - Q_OBJECT -public: - DetailsDialog(QWidget *parent = 0, const QString &path = 0); - - ~DetailsDialog(); - -protected: - virtual void closeEvent (QCloseEvent *); - -private slots: - void save(); - void create(); - void deleteTag(); - void loadTag(); - -private: - void loadMPEGInfo(); - uint selectedTag(); - void showAudioProperties(QMap p); - Ui::DetailsDialog ui; - QString m_path; - QTextCodec *m_codec_v1; - QTextCodec *m_codec_v2; - bool m_rw; - -}; - -#endif diff --git a/src/plugins/Input/mad/detailsdialog.ui b/src/plugins/Input/mad/detailsdialog.ui deleted file mode 100644 index 9d5775dd2..000000000 --- a/src/plugins/Input/mad/detailsdialog.ui +++ /dev/null @@ -1,450 +0,0 @@ - - DetailsDialog - - - - 0 - 0 - 630 - 383 - - - - Details - - - - 6 - - - 6 - - - 6 - - - - - true - - - - - - - - - QLayout::SetMinAndMaxSize - - - - - - 0 - 0 - - - - - 110 - 110 - - - - - 110 - 110 - - - - - - - - - 0 - 0 - - - - Tags - - - - - - ID3v1 - - - - - - - ID3v2 - - - - - - - APE - - - - - - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - Audio Properties - - - - - - - - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - - - - - - - ID3v1 - - - - - - - 0 - 0 - - - - Title: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - Artist: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - Album: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - - - - Composer: - - - - - - - - - - - 0 - 0 - - - - Genre: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - Disc number: - - - - - - - ? - - - - - - - - - - 0 - 0 - - - - Track: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - - - 0 - 0 - - - - ? - - - - - - - - 0 - 0 - - - - Year: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - ? - - - - - - 2012 - - - - - - - - - - 0 - 0 - - - - Comment: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - false - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p></body></html> - - - - - - - - - - Qt::Horizontal - - - - 192 - 23 - - - - - - - - Create - - - - - - - Delete - - - - - - - Save - - - - - - - Close - - - - - - - - CoverWidget - QWidget -
coverwidget.h
- 1 -
-
- - - - closeButton - clicked() - DetailsDialog - close() - - - 546 - 356 - - - 422 - 357 - - - - -
diff --git a/src/plugins/Input/mad/mad.pro b/src/plugins/Input/mad/mad.pro index b29f0c090..c77c0be5c 100644 --- a/src/plugins/Input/mad/mad.pro +++ b/src/plugins/Input/mad/mad.pro @@ -1,56 +1,49 @@ include(../../plugins.pri) - - -FORMS += detailsdialog.ui \ - settingsdialog.ui +FORMS += settingsdialog.ui HEADERS += decodermadfactory.h \ - decoder_mad.h \ - detailsdialog.h \ - settingsdialog.h \ - tagextractor.h \ - coverwidget.h + decoder_mad.h \ + settingsdialog.h \ + tagextractor.h \ + mpegmetadatamodel.h SOURCES += decoder_mad.cpp \ - decodermadfactory.cpp \ - detailsdialog.cpp \ - settingsdialog.cpp \ - tagextractor.cpp \ - coverwidget.cpp - -TARGET =$$PLUGINS_PREFIX/Input/mad -unix:QMAKE_CLEAN =$$PLUGINS_PREFIX/Input/libmad.so - - -INCLUDEPATH += ../../../ ./ + decodermadfactory.cpp \ + settingsdialog.cpp \ + tagextractor.cpp \ + mpegmetadatamodel.cpp +TARGET = $$PLUGINS_PREFIX/Input/mad +unix:QMAKE_CLEAN = $$PLUGINS_PREFIX/Input/libmad.so +INCLUDEPATH += ../../../ \ + ./ win32:INCLUDEPATH += D:\MINGW\include\taglib CONFIG += release \ -warn_on \ -plugin \ -link_pkgconfig + warn_on \ + plugin \ + link_pkgconfig TEMPLATE = lib unix:QMAKE_LIBDIR += ../../../../lib win32:QMAKE_LIBDIR += ../../../../bin -unix:LIBS += -lqmmp -lmad -unix:PKGCONFIG += taglib mad - -win32:LIBS += -lqmmp0 -lmad -ltag.dll -ltag_c.dll - +unix:LIBS += -lqmmp \ + -lmad +unix:PKGCONFIG += taglib \ + mad +win32:LIBS += -lqmmp0 \ + -lmad \ + -ltag.dll \ + -ltag_c.dll TRANSLATIONS = translations/mad_plugin_ru.ts \ - translations/mad_plugin_uk_UA.ts \ - translations/mad_plugin_zh_CN.ts \ - translations/mad_plugin_zh_TW.ts \ - translations/mad_plugin_cs.ts \ - translations/mad_plugin_pl.ts \ - translations/mad_plugin_de.ts \ - translations/mad_plugin_it.ts \ - translations/mad_plugin_tr.ts \ - translations/mad_plugin_tr.ts \ - translations/mad_plugin_lt.ts + translations/mad_plugin_uk_UA.ts \ + translations/mad_plugin_zh_CN.ts \ + translations/mad_plugin_zh_TW.ts \ + translations/mad_plugin_cs.ts \ + translations/mad_plugin_pl.ts \ + translations/mad_plugin_de.ts \ + translations/mad_plugin_it.ts \ + translations/mad_plugin_tr.ts \ + translations/mad_plugin_tr.ts \ + translations/mad_plugin_lt.ts RESOURCES = translations/translations.qrc - -unix{ -isEmpty(LIB_DIR){ - LIB_DIR = /lib -} -target.path = $$LIB_DIR/qmmp/Input -INSTALLS += target +unix { + isEmpty(LIB_DIR):LIB_DIR = /lib + target.path = $$LIB_DIR/qmmp/Input + INSTALLS += target } diff --git a/src/plugins/Input/mad/mpegmetadatamodel.cpp b/src/plugins/Input/mad/mpegmetadatamodel.cpp new file mode 100644 index 000000000..7880f64fb --- /dev/null +++ b/src/plugins/Input/mad/mpegmetadatamodel.cpp @@ -0,0 +1,325 @@ +/*************************************************************************** + * Copyright (C) 2009 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program 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 2 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 General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "mpegmetadatamodel.h" + +MPEGMetaDataModel::MPEGMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(parent) +{ + m_path = path; + m_tags << new MpegFileTagModel(path, TagLib::MPEG::File::ID3v1); + m_tags << new MpegFileTagModel(path, TagLib::MPEG::File::ID3v2); + m_tags << new MpegFileTagModel(path, TagLib::MPEG::File::APE); +} + +MPEGMetaDataModel::~MPEGMetaDataModel() +{ + while(!m_tags.isEmpty()) + delete m_tags.takeFirst(); +} + +QHash MPEGMetaDataModel::audioProperties() +{ + QHash ap; + TagLib::MPEG::File f (m_path.toLocal8Bit().constData()); + QString text; + QString v; + switch((int)f.audioProperties()->version()) + { + case TagLib::MPEG::Header::Version1: + v = "1"; + break; + case TagLib::MPEG::Header::Version2: + v = "2"; + break; + case TagLib::MPEG::Header::Version2_5: + v = "2.5"; + } + text = QString("MPEG-%1 layer %2").arg(v).arg(f.audioProperties()->layer()); + ap.insert(tr("Format"), text); + text = QString("%1").arg(f.audioProperties()->bitrate()); + ap.insert(tr("Bitrate"), text+" "+tr("kbps")); + text = QString("%1").arg(f.audioProperties()->sampleRate()); + ap.insert(tr("Samplerate"), text+" "+tr("Hz")); + switch (f.audioProperties()->channelMode()) + { + case TagLib::MPEG::Header::Stereo: + ap.insert(tr("Mode"), "Stereo"); + break; + case TagLib::MPEG::Header::JointStereo: + ap.insert(tr("Mode"), "Joint stereo"); + break; + case TagLib::MPEG::Header::DualChannel: + ap.insert(tr("Mode"), "Dual channel"); + break; + case TagLib::MPEG::Header::SingleChannel: + ap.insert(tr("Mode"), "Single channel"); + break; + } + text = QString("%1 "+tr("KB")).arg(f.length()/1024); + ap.insert(tr("File size"), text); + if (f.audioProperties()->protectionEnabled()) + ap.insert(tr("Protection"), tr("Yes")); + else + ap.insert(tr("Protection"), tr("No")); + if (f.audioProperties()->isCopyrighted()) + ap.insert(tr("Copyright"), tr("Yes")); + else + ap.insert(tr("Copyright"), tr("No")); + if (f.audioProperties()->isOriginal()) + ap.insert(tr("Original"), tr("Yes")); + else + ap.insert(tr("Original"), tr("No")); + return ap; +} + +QList MPEGMetaDataModel::tags() +{ + return m_tags; +} + +MpegFileTagModel::MpegFileTagModel(const QString &path, TagLib::MPEG::File::TagTypes tagType) : TagModel() +{ + m_tagType = tagType; + m_file = new TagLib::MPEG::File (path.toLocal8Bit().constData()); + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("MAD"); + if (m_tagType == TagLib::MPEG::File::ID3v1) + { + m_tag = m_file->ID3v1Tag(); + m_codec = QTextCodec::codecForName(settings.value("ID3v1_encoding", "ISO-8859-1").toByteArray ()); + if (!m_codec) + QTextCodec::codecForName ("ISO-8859-1"); + } + else if (m_tagType == TagLib::MPEG::File::ID3v2) + { + m_tag = m_file->ID3v2Tag(); + m_codec = QTextCodec::codecForName(settings.value("ID3v1_encoding", "UTF-8").toByteArray ()); + if (!m_codec) + QTextCodec::codecForName ("UTF-8"); + } + else + { + m_tag = m_file->APETag(); + m_codec = QTextCodec::codecForName ("UTF-8"); + } + settings.endGroup(); +} + +MpegFileTagModel::~MpegFileTagModel() +{ + delete m_file; +} + +const QString MpegFileTagModel::name() +{ + if (m_tagType == TagLib::MPEG::File::ID3v1) + return "ID3v1"; + else if (m_tagType == TagLib::MPEG::File::ID3v2) + return "ID3v2"; + return "APE"; +} + +QList MpegFileTagModel::keys() +{ + QList list = TagModel::keys(); + if (m_tagType == TagLib::MPEG::File::ID3v2) + return list; + list.removeAll(Qmmp::COMPOSER); + list.removeAll(Qmmp::DISCNUMBER); + return list; +} + +const QString MpegFileTagModel::value(Qmmp::MetaData key) +{ + QTextCodec *codec = m_codec; + + if (m_tag) + { + bool utf = codec->name().contains("UTF"); + if (utf) + codec = QTextCodec::codecForName ("UTF-8"); + + TagLib::String str; + switch((int) key) + { + case Qmmp::TITLE: + str = m_tag->title(); + break; + case Qmmp::ARTIST: + str = m_tag->artist(); + break; + case Qmmp::ALBUM: + str = m_tag->album(); + break; + case Qmmp::COMMENT: + str = m_tag->comment(); + break; + case Qmmp::GENRE: + str = m_tag->genre(); + break; + case Qmmp::COMPOSER: + if(m_tagType == TagLib::MPEG::File::ID3v2 + && !m_file->ID3v2Tag()->frameListMap()["TCOM"].isEmpty()) + str = m_file->ID3v2Tag()->frameListMap()["TCOM"].front()->toString(); + break; + case Qmmp::YEAR: + return QString::number(m_tag->year()); + case Qmmp::TRACK: + return QString::number(m_tag->track()); + case Qmmp::DISCNUMBER: + if(m_tagType == TagLib::MPEG::File::ID3v2 + && !m_file->ID3v2Tag()->frameListMap()["TPOS"].isEmpty()) + str = m_file->ID3v2Tag()->frameListMap()["TPOS"].front()->toString(); + } + return codec->toUnicode(str.toCString(utf)).trimmed(); + } + return QString(); +} + +void MpegFileTagModel::setValue(Qmmp::MetaData key, const QString &value) +{ + if(!m_tag) + return; + TagLib::String::Type type = TagLib::String::Latin1; + + if (m_tagType == TagLib::MPEG::File::ID3v1) + { + if(m_codec->name().contains("UTF")) //utf is unsupported + return; + } + else if (m_tagType == TagLib::MPEG::File::ID3v2) + { + if (m_codec->name().contains("UTF")) + { + type = TagLib::String::UTF8; + if (m_codec->name().contains("UTF-16")) + type = TagLib::String::UTF16; + else if (m_codec->name().contains("UTF-16LE")) + type = TagLib::String::UTF16LE; + else if (m_codec->name().contains("UTF-16BE")) + type = TagLib::String::UTF16BE; + + m_codec = QTextCodec::codecForName ("UTF-8"); + TagLib::ID3v2::FrameFactory *factory = TagLib::ID3v2::FrameFactory::instance(); + factory->setDefaultTextEncoding(type); + m_file->setID3v2FrameFactory(factory); + type = TagLib::String::UTF8; + } + //save additional tags + TagLib::ByteVector id3v2_key; + if (key == Qmmp::COMPOSER) + id3v2_key = "TCOM"; //composer + else if (key == Qmmp::DISCNUMBER) + id3v2_key = "TPOS"; //disc number + + if (!id3v2_key.isEmpty()) + { + TagLib::String composer = TagLib::String(m_codec->fromUnicode(value).constData(), type); + TagLib::ID3v2::Tag *id3v2_tag = dynamic_cast(m_tag); + if(value.isEmpty()) + id3v2_tag->removeFrames(id3v2_key); + else if(!id3v2_tag->frameListMap()[id3v2_key].isEmpty()) + id3v2_tag->frameListMap()[id3v2_key].front()->setText(composer); + else + { + TagLib::ID3v2::TextIdentificationFrame *frame; + frame = new TagLib::ID3v2::TextIdentificationFrame(id3v2_key, type); + frame->setText(composer); + id3v2_tag->addFrame(frame); + } + return; + } + } + else if(m_tagType == TagLib::MPEG::File::APE) + type = TagLib::String::UTF8; + + TagLib::String str = TagLib::String(m_codec->fromUnicode(value).constData(), type); + + switch((int) key) + { + case Qmmp::TITLE: + m_tag->setTitle(str); + break; + case Qmmp::ARTIST: + m_tag->setArtist(str); + break; + case Qmmp::ALBUM: + m_tag->setAlbum(str); + break; + case Qmmp::COMMENT: + m_tag->setComment(str); + break; + case Qmmp::GENRE: + m_tag->setGenre(str); + break; + case Qmmp::YEAR: + m_tag->setYear(value.toInt()); + break; + case Qmmp::TRACK: + m_tag->setTrack(value.toInt()); + } +} + +bool MpegFileTagModel::exists() +{ + return (m_tag != 0); +} + +void MpegFileTagModel::create() +{ + if (m_tag) + return; + if (m_tagType == TagLib::MPEG::File::ID3v1) + m_tag = m_file->ID3v1Tag(TRUE); + else if (m_tagType == TagLib::MPEG::File::ID3v2) + m_tag = m_file->ID3v2Tag(TRUE); + else if (m_tagType == TagLib::MPEG::File::APE) + m_tag = m_file->APETag(TRUE); +} + +void MpegFileTagModel::remove() +{ + m_tag = 0; +} + +void MpegFileTagModel::save() +{ + if(m_tag) + { + m_file->save(m_tagType, FALSE); //?? + m_file->save(m_tagType, FALSE); + } + else + m_file->strip(m_tagType); +} diff --git a/src/plugins/Input/mad/mpegmetadatamodel.h b/src/plugins/Input/mad/mpegmetadatamodel.h new file mode 100644 index 000000000..0b134fd3f --- /dev/null +++ b/src/plugins/Input/mad/mpegmetadatamodel.h @@ -0,0 +1,63 @@ +/*************************************************************************** + * Copyright (C) 2009 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program 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 2 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 General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef MPEGMETADATAMODEL_H +#define MPEGMETADATAMODEL_H + +#include +#include + +class QTextCodec; + +class MPEGMetaDataModel : public MetaDataModel +{ +public: + MPEGMetaDataModel(const QString &path, QObject *parent); + ~MPEGMetaDataModel(); + QHash audioProperties(); + QList tags(); + +private: + QString m_path; + QList m_tags; +}; + +class MpegFileTagModel : public TagModel +{ +public: + MpegFileTagModel(const QString &path, TagLib::MPEG::File::TagTypes tagType); + ~MpegFileTagModel(); + const QString name(); + QList keys(); + const QString value(Qmmp::MetaData key); + void setValue(Qmmp::MetaData key, const QString &value); + bool exists(); + void create(); + void remove(); + void save(); + +private: + QTextCodec *m_codec; + TagLib::MPEG::File *m_file; + TagLib::Tag *m_tag; + TagLib::MPEG::File::TagTypes m_tagType; +}; + +#endif // MPEGMETADATAMODEL_H diff --git a/src/plugins/Input/mad/translations/mad_plugin_cs.ts b/src/plugins/Input/mad/translations/mad_plugin_cs.ts index f2279648e..be0ed634a 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_cs.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_cs.ts @@ -14,231 +14,107 @@ Soubory MPEG - + About MPEG Audio Plugin O modulu MPEG - + Qmmp MPEG Audio Plugin Vstupní modul Qmmp MPEG - + Compiled against libmad version: Zkompilováno s libmad verze: - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Autor: Ilja Kotov <forkotov02@hotmail.ru> - + Source code based on mq3 progect Zdrojový kód je založen na projektu mq3 - DetailsDialog + MPEGMetaDataModel - + Format - Formát - - - - kbps - kbps + Formát - + Bitrate - Datový tok + Datový tok - - Hz - Hz + + kbps + kbps - + Samplerate - Vzorkovací frekvence + Vzorkovací frekvence + + + + Hz + Hz - - - - + + + + Mode - Režim + Režim - + KB - KB + KB - + File size - Velikost souboru + Velikost souboru - - - - Yes - Ano + + + Protection + Ochrana - - - Protection - Ochrana + + + + Yes + Ano - - - + + + No - Ne + Ne - - + + Copyright - Copyright + Copyright - - + + Original - Originál - - - - Details - Podrobnosti - - - - - - - - - - - Save - Uložit - - - - Year: - Rok: - - - - Genre: - Žánr: - - - - Tags - Tagy - - - - Audio Properties - Vlastnosti - - - - Composer: - Skladatel: - - - - Disc number: - Číslo disku: - - - - - - ? - ? - - - - Track: - Stopa: - - - - Comment: - Komentář: - - - - Album: - Album: - - - - Artist: - Umělec: - - - - Title: - Název: - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p></body></html> - - - - Close - Zavřít - - - - - - ID3v1 - ID3v1 - - - - - ID3v2 - ID3v2 - - - - - APE - APE - - - - Create - Vytvořit - - - - Delete - Odstranit + Originál diff --git a/src/plugins/Input/mad/translations/mad_plugin_de.ts b/src/plugins/Input/mad/translations/mad_plugin_de.ts index c4b39054a..49b3ac77d 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_de.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_de.ts @@ -14,224 +14,107 @@ MPEG-Dateien - + About MPEG Audio Plugin Über MPEG-Audio-Modul - + Qmmp MPEG Audio Plugin Qmmp MPEG-Audio-Modul - + Compiled against libmad version: Kompiliert gegen libmad-Version: - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Autor: Ilya Kotov <forkotov02@hotmail.ru> - + Source code based on mq3 progect Quellcode basiert auf dem mq3-Projekt - DetailsDialog + MPEGMetaDataModel - + Format - Format - - - - kbps - kbps + Format - + Bitrate - Bitrate + Bitrate - - Hz - Hz + + kbps + kbps - + Samplerate - Abtastrate + Abtastrate + + + + Hz + Hz - - - - + + + + Mode - Modus + Modus - + KB - KB + KB - + File size - Dateigröße + Dateigröße - - - - Yes - Ja + + + Protection + Geschützt - - - Protection - Geschützt + + + + Yes + Ja - - - + + + No - Nein + Nein - - + + Copyright - Copyright + Copyright - - + + Original - - - - - - - - - - - - Save - Speichern - - - - Year: - Jahr: - - - - Genre: - Genre: - - - - Tags - Tags - - - - Disc number: - CD-Nummer: - - - - Composer: - Komponist: - - - - Track: - Stück: - - - - Comment: - Kommentar: - - - - Album: - Album: - - - - Artist: - Interpret: - - - - Title: - Titel: - - - - Details - Details - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - Audio Properties - Audio-Eigenschaften - - - - Close - Schließen - - - - - - ID3v1 - ID3v1 - - - - - ID3v2 - ID3v2 - - - - - APE - APE - - - - Create - Erstellen - - - - Delete - Löschen + diff --git a/src/plugins/Input/mad/translations/mad_plugin_it.ts b/src/plugins/Input/mad/translations/mad_plugin_it.ts index f5dbd9405..db8dfb39f 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_it.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_it.ts @@ -14,221 +14,108 @@ Brani MPEG - + About MPEG Audio Plugin Info sul modulo audio MPEG - + Qmmp MPEG Audio Plugin Modulo audio MPEG per Qmmp - + Compiled against libmad version: Compilato con libmad-Version: - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Autore: Ilya Kotov <forkotov02@hotmail.ru> - + Source code based on mq3 progect Codice sorgente basato sul progetto mq3 - DetailsDialog + MPEGMetaDataModel - + Format - - kbps - kbps - - - + Bitrate - - Hz - Hz + + kbps + kbps - + Samplerate - - - - + + Hz + Hz + + + + + + Mode - + KB - KB + KB - + File size - - - - Yes - - - - - + + Protection - - - + + + + Yes + + + + + + No - No + No - - + + Copyright - - + + Original - - - - - - - - - - Save - Salva - - - - Year: - Anno: - - - - Genre: - Genere: - - - - Tags - - - - - Disc number: - - - - - Composer: - - - - - Track: - - - - - Comment: - Commento: - - - - Album: - Album: - - - - Artist: - Interprete: - - - - Title: - Titolo: - - - - Details - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - Audio Properties - - - - - Close - Chiudi - - - - - - ID3v1 - ID3v1 - - - - - ID3v2 - ID3v2 - - - - - APE - APE - - - - Create - Crea - - - - Delete - Elimina - SettingsDialog diff --git a/src/plugins/Input/mad/translations/mad_plugin_lt.ts b/src/plugins/Input/mad/translations/mad_plugin_lt.ts index e6b8b7db8..13de2c57b 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_lt.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_lt.ts @@ -14,221 +14,108 @@ MPEG bylos - + About MPEG Audio Plugin Apie MPEG audio įskiepį - + Qmmp MPEG Audio Plugin Qmmp MPEG įskiepis - + Compiled against libmad version: Sukurta libmad pagrindu: - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Sukūrė: Ilya Kotov <forkotov02@hotmail.ru> - + Source code based on mq3 progect Išvesties kodas sukurtas mq3 pagrindu - DetailsDialog + MPEGMetaDataModel - + Format - + Bitrate - - Hz - Hz + + kbps + kbps - + Samplerate - - - - - Mode - - - - - File size - - - - - - - Yes - Taip - - - - - Protection - - - - - - - No - Ne - - - - - Copyright - - - - - - Original - - - - - Save - Išsaugoti - - - - Year: - Metai: - - - - Details - - - - - Genre: - Žanras: + + Hz + Hz - - Tags + + + + + Mode - - Comment: - Komentaras: - - - - Album: - Albumas: - - - - Artist: - Atlikėjas: - - - - Title: - Pavadinimas: - - - - Close - Užverti - - - - - - - - - + KB - КB - - - - kbps - kbps - - - - - - ID3v1 - ID3v1 - - - - - ID3v2 - ID3v2 + КB - - - APE + + File size - - Disc number: + + + Protection - - Composer: - + + + + Yes + Taip - - Track: - + + + + No + Ne - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + Copyright - - Audio Properties + + + Original - - - Create - sukurti - - - - Delete - Ištrinti - SettingsDialog diff --git a/src/plugins/Input/mad/translations/mad_plugin_pl.ts b/src/plugins/Input/mad/translations/mad_plugin_pl.ts index 24369cb28..8cddd1647 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_pl.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_pl.ts @@ -14,220 +14,107 @@ Pliki MPEG - + About MPEG Audio Plugin O wtyczce Audio MPEG - + Qmmp MPEG Audio Plugin Wtyczka MPEG Audio dla Qmmp - + Compiled against libmad version: Skompilowane przy użyciu biblioteki libmad w wersji: - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Autor: Ilja Kotov <forkotov02@hotmail.ru> - + Source code based on mq3 progect Kod źródłowy oparty na projekcie mq3 - DetailsDialog + MPEGMetaDataModel - + Format - Format + Format - - kbps - - - - + Bitrate - Szybkość transmisji + Szybkość transmisji - - Hz - + + kbps + - + Samplerate - Próbkowanie + Próbkowanie - - - - + + Hz + + + + + + + Mode - Tryb + Tryb - + KB - + - + File size - Wielkość pliku + Wielkość pliku - - - - Yes - Tak + + + Protection + Zabezpieczenie - - - Protection - Zabezpieczenie + + + + Yes + Tak - - - + + + No - Nie + Nie - - + + Copyright - Prawa autorskie + Prawa autorskie - - + + Original - Oryginał - - - - - - ID3v1 - - - - - - ID3v2 - - - - - - APE - - - - - - - - - - - Title: - Tytuł: - - - - Details - Informacje o pliku - - - - Artist: - Artysta: - - - - Album: - Album: - - - - Comment: - Komentarz: - - - - Year: - Rok: - - - - Tags - Tagi - - - - Disc number: - Numer albumu: - - - - Composer: - Kompozytor: - - - - Genre: - Gatunek: - - - - Track: - Numer utworu: - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - Audio Properties - Właściwości Audio - - - - Create - Utwórz - - - - Delete - Usuń - - - - Save - Zapisz - - - - Close - Zamknij + Oryginał diff --git a/src/plugins/Input/mad/translations/mad_plugin_ru.ts b/src/plugins/Input/mad/translations/mad_plugin_ru.ts index 39976d1e8..6f337c558 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_ru.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_ru.ts @@ -14,220 +14,107 @@ Файлы MPEG - + About MPEG Audio Plugin Об аудио-модуле MPEG - + Qmmp MPEG Audio Plugin Аудио-модуль MPEG для Qmmp - + Compiled against libmad version: Собрано с версией libmad: - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Разработчик: Илья Котов <forkotov02@hotmail.ru> - + Source code based on mq3 progect Исходный код основан на проекте mq3 - DetailsDialog + MPEGMetaDataModel - + Format - Формат + Формат - + Bitrate - Битовая частота + Битовая частота - - Hz - Гц + + kbps + Кб/с - + Samplerate - Дискретизация - - - - - - - Mode - Режим - - - - File size - Размер файла - - - - - - Yes - Есть - - - - - Protection - Защита - - - - - - No - Нет - - - - - Copyright - Авторские права + Дискретизация - - - Original - Оригинальный - - - - Save - Сохранить - - - - Year: - Год: - - - - Genre: - Жанр: - - - - Tags - Теги - - - - Disc number: - Номер диска: - - - - Composer: - Композитор: - - - - Track: - Трек: - - - - Comment: - Комментарий: - - - - Album: - Альбом: - - - - Artist: - Исполнитель: - - - - Title: - Название: - - - - Details - Иформация - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - Audio Properties - Свойства аудио - - - - Close - Закрыть + + Hz + Гц - - - - + + + + + Mode + Режим - + KB - Кб + Кб - - kbps - Кб/с + + File size + Размер файла - - - - ID3v1 - ID3v1 + + + Protection + Защита - - - ID3v2 - ID3v2 + + + + Yes + Есть - - - APE - APE + + + + No + Нет - - Create - Создать + + + Copyright + Авторские права - - Delete - Удалить + + + Original + Оригинальный diff --git a/src/plugins/Input/mad/translations/mad_plugin_tr.ts b/src/plugins/Input/mad/translations/mad_plugin_tr.ts index b6cb95e35..6678b4675 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_tr.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_tr.ts @@ -14,221 +14,108 @@ MPEG Dosyaları - + About MPEG Audio Plugin MPEG Ses Eklentisi Hakkında - + Qmmp MPEG Audio Plugin Qmmp MPEG Ses Eklentisi - + Compiled against libmad version: Derlendiği libmad sürümü: - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Yazan: Ilya Kotov <forkotov02@hotmail.ru> - + Source code based on mq3 progect Kaynak kodu mq3 projesi temellidir - DetailsDialog + MPEGMetaDataModel - + Format - - kbps + + Bitrate - - Bitrate + + kbps - - Hz + + Samplerate - - Samplerate + + Hz - - - - + + + + Mode - + KB - + File size - - - - Yes + + + Protection - - - Protection + + + + Yes - - - + + + No - - + + Copyright - - + + Original - - - - - ID3v1 - ID3v1 - - - - - ID3v2 - ID3v2 - - - - - APE - APE - - - - - - - - - - Title: - - - - - Details - - - - - Artist: - - - - - Album: - - - - - Comment: - - - - - Year: - - - - - Tags - - - - - Disc number: - - - - - Composer: - - - - - Genre: - - - - - Track: - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - Audio Properties - - - - - Create - - - - - Delete - - - - - Save - - - - - Close - - SettingsDialog diff --git a/src/plugins/Input/mad/translations/mad_plugin_uk_UA.ts b/src/plugins/Input/mad/translations/mad_plugin_uk_UA.ts index a0cbbc579..de32bc3e3 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_uk_UA.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_uk_UA.ts @@ -14,220 +14,107 @@ Файли MPEG - + About MPEG Audio Plugin Про аудіо-модуль MPEG - + Qmmp MPEG Audio Plugin Аудіо-модуль MPEG для Qmmp - + Compiled against libmad version: Зібрано з версією libmad: - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> Розробник: Ілля Котов <forkotov02@hotmail.ru> - + Source code based on mq3 progect Вихідний код базується на проекті mq3 - DetailsDialog + MPEGMetaDataModel - + Format - Формат + Формат - + Bitrate - Бітрейт + Бітрейт - - Hz - Гц + + kbps + Кб/с - + Samplerate - Частота - - - - - - - Mode - Режим - - - - File size - Розмір файла - - - - - - Yes - Так - - - - - Protection - Захищено - - - - - - No - Ні - - - - - Copyright - Авторське право + Частота - - - Original - Оригінал - - - - Save - Зберегти - - - - Year: - Рік: - - - - Genre: - Жанр: - - - - Tags - Теги - - - - Disc number: - Номер диска: - - - - Composer: - Композитор: - - - - Track: - Доріжка: - - - - Comment: - Коментар: - - - - Album: - Альбом: - - - - Artist: - Виконавець: - - - - Title: - Назва: - - - - Details - Інформація - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - Audio Properties - Властивості аудіо - - - - Close - Закрити + + Hz + Гц - - - - - + + + + + Mode + Режим - + KB - Кб + Кб - - kbps - Кб/с + + File size + Розмір файла - - - - ID3v1 - ID3v1 + + + Protection + Захищено - - - ID3v2 - ID3v2 + + + + Yes + Так - - - APE - APE + + + + No + Ні - - Create - Створити + + + Copyright + Авторське право - - Delete - Видалити + + + Original + Оригінал diff --git a/src/plugins/Input/mad/translations/mad_plugin_zh_CN.ts b/src/plugins/Input/mad/translations/mad_plugin_zh_CN.ts index 0115b47f4..f25bbaf63 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_zh_CN.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_zh_CN.ts @@ -14,221 +14,108 @@ MPEG 文件 - + About MPEG Audio Plugin 关于 MPEG 音频插件 - + Qmmp MPEG Audio Plugin Qmmp MPEG 音频插件 - + Compiled against libmad version: 编译基于 libmad 的版本: - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> 作者:Ilya Kotov <forkotov02@hotmail.ru> - + Source code based on mq3 progect 源代码基于 mq3 项目 - DetailsDialog + MPEGMetaDataModel - + Format - + Bitrate - - Hz - Hz + + kbps + kbps - + Samplerate - - - - - Mode - - - - - File size - - - - - - - Yes - - - - - - Protection - - - - - - - No - - - - - - Copyright - - - - - - Original - - - - - Save - 保存 - - - - Year: - 年代: - - - - Genre: - 流派: + + Hz + Hz - - Tags + + + + + Mode - - Disc number: - + + KB + KB - - Composer: + + File size - - Track: + + + Protection - - Comment: - 备注: - - - - Album: - 专辑: - - - - Artist: - 艺术家: - - - - Title: - 标题: + + + + Yes + - - Details - + + + + No + - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + Copyright - - Audio Properties + + + Original - - - Close - 关闭 - - - - - - - - - - - KB - KB - - - - kbps - kbps - - - - - - ID3v1 - ID3v1 - - - - - ID3v2 - ID3v2 - - - - - APE - APE - - - - Create - 创建 - - - - Delete - 删除 - SettingsDialog diff --git a/src/plugins/Input/mad/translations/mad_plugin_zh_TW.ts b/src/plugins/Input/mad/translations/mad_plugin_zh_TW.ts index fcb947694..67f9691f0 100644 --- a/src/plugins/Input/mad/translations/mad_plugin_zh_TW.ts +++ b/src/plugins/Input/mad/translations/mad_plugin_zh_TW.ts @@ -14,221 +14,108 @@ MPEG 檔案 - + About MPEG Audio Plugin 關於 MPEG 聲訊插件 - + Qmmp MPEG Audio Plugin Qmmp MPEG 聲訊插件 - + Compiled against libmad version: 編譯基於 libmad 的版本: - + Writen by: Ilya Kotov <forkotov02@hotmail.ru> 作者:Ilya Kotov <forkotov02@hotmail.ru> - + Source code based on mq3 progect 源碼基於 mq3 項目 - DetailsDialog + MPEGMetaDataModel - + Format - + Bitrate - - Hz - Hz + + kbps + kbps - + Samplerate - - - - - Mode - - - - - File size - - - - - - - Yes - - - - - - Protection - - - - - - - No - - - - - - Copyright - - - - - - Original - - - - - Save - 儲存 - - - - Year: - 年代: - - - - Genre: - 流派: + + Hz + Hz - - Tags + + + + + Mode - - Disc number: - + + KB + KB - - Composer: + + File size - - Track: + + + Protection - - Comment: - 備註: - - - - Album: - 專輯: - - - - Artist: - 藝術家: - - - - Title: - 標題: + + + + Yes + - - Details - + + + + No + - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + Copyright - - Audio Properties + + + Original - - - Close - 關閉 - - - - - - - - - - - KB - KB - - - - kbps - kbps - - - - - - ID3v1 - ID3v1 - - - - - ID3v2 - ID3v2 - - - - - APE - APE - - - - Create - 建立 - - - - Delete - 移除 - SettingsDialog diff --git a/src/plugins/Input/modplug/decoder_modplug.cpp b/src/plugins/Input/modplug/decoder_modplug.cpp index c33716f28..bee4feed4 100644 --- a/src/plugins/Input/modplug/decoder_modplug.cpp +++ b/src/plugins/Input/modplug/decoder_modplug.cpp @@ -113,7 +113,7 @@ int DecoderModPlug::bitrate() qint64 DecoderModPlug::readAudio(char *audio, qint64 maxSize) { long len = m_soundFile->Read (audio, qMin((qint64)Buffer::size(), maxSize)) * m_sampleSize; - if (m_usePreamp) + /*if (m_usePreamp) { { //apply preamp @@ -143,7 +143,7 @@ qint64 DecoderModPlug::readAudio(char *audio, qint64 maxSize) } } } - } + }*/ return len; } diff --git a/src/qmmp/CMakeLists.txt b/src/qmmp/CMakeLists.txt index e6a7823b0..6cee8ee22 100644 --- a/src/qmmp/CMakeLists.txt +++ b/src/qmmp/CMakeLists.txt @@ -52,8 +52,8 @@ SET(libqmmp_SRCS qmmp.cpp statehandler.cpp volumecontrol.cpp - abstractdetailsdialog.cpp - coverwidget.cpp + metadatamodel.cpp + tagmodel.cpp ) SET(libqmmp_MOC_HDRS @@ -76,8 +76,8 @@ SET(libqmmp_MOC_HDRS qmmp.h statehandler.h volumecontrol.h - abstractdetailsdialog.h - coverwidget.h + metadatamodel.h + tagmodel.h ) SET(libqmmp_DEVEL_HDRS @@ -96,23 +96,17 @@ SET(libqmmp_DEVEL_HDRS visualfactory.h visual.h volumecontrol.h - abstractdetailsdialog.h -) - -SET(qmmp_UIS - forms/abstractdetailsdialog.ui + metadatamodel.h + tagmodel.h ) QT4_WRAP_CPP(libqmmp_MOC_SRCS ${libqmmp_MOC_HDRS}) -QT4_WRAP_UI(qmmp_UIS_H ${qmmp_UIS}) # Don't forget to include output directory, otherwise # the UI file won't be wrapped! include_directories(${CMAKE_CURRENT_BINARY_DIR}) -QT4_ADD_RESOURCES(libqmmpui_RCC_SRCS translations/libqmmp_locales.qrc) - -ADD_LIBRARY(libqmmp SHARED ${libqmmp_SRCS} ${libqmmp_MOC_SRCS} ${qmmp_UIS_H} ${libqmmpui_RCC_SRCS}) +ADD_LIBRARY(libqmmp SHARED ${libqmmp_SRCS} ${libqmmp_MOC_SRCS}) target_link_libraries(libqmmp ${QT_LIBRARIES} ${CURL_LDFLAGS} ${CURL_CFLAGS}) SET_TARGET_PROPERTIES(libqmmp PROPERTIES VERSION ${QMMP_VERSION} SOVERSION ${QMMP_SOVERSION} OUTPUT_NAME qmmp) install(TARGETS libqmmp LIBRARY DESTINATION ${LIB_DIR} diff --git a/src/qmmp/abstractdetailsdialog.cpp b/src/qmmp/abstractdetailsdialog.cpp deleted file mode 100644 index 70bf07de3..000000000 --- a/src/qmmp/abstractdetailsdialog.cpp +++ /dev/null @@ -1,163 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2009 by Ilya Kotov * - * forkotov02@hotmail.ru * - * * - * This program 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 2 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 General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ - -#include -#include -#include -#include "decoder.h" -#include "ui_abstractdetailsdialog.h" -#include "abstractdetailsdialog.h" - -AbstractDetailsDialog::AbstractDetailsDialog(QWidget *parent) - : QDialog(parent) -{ - ui = new Ui::AbstractDetailsDialog(); - ui->setupUi(this); - setAttribute(Qt::WA_DeleteOnClose); - connect(ui->buttonBox, SIGNAL(clicked (QAbstractButton *)),SLOT(processButton(QAbstractButton *))); -} - -AbstractDetailsDialog::~AbstractDetailsDialog() -{ - delete ui; -} - -void AbstractDetailsDialog::hideSaveButton(bool hide) -{ - ui->buttonBox->button(QDialogButtonBox::Save)->setHidden(hide); -} - -void AbstractDetailsDialog::blockSaveButton(bool block) -{ - ui->buttonBox->button(QDialogButtonBox::Save)->setDisabled(block); -} - -void AbstractDetailsDialog::setMetaData(Qmmp::MetaData key, const QString &value) -{ - switch((int) key) - { - case Qmmp::TITLE: - ui->titleLineEdit->setText(value); - break; - case Qmmp::ARTIST: - ui->artistLineEdit->setText(value); - break; - case Qmmp::ALBUM: - ui->albumLineEdit->setText(value); - break; - case Qmmp::COMMENT: - ui->commentBrowser->setPlainText(value); - break; - case Qmmp::GENRE: - ui->genreLineEdit->setText(value); - break; - case Qmmp::COMPOSER: - return ui->composerLineEdit->setText(value); - break; - case Qmmp::YEAR: - ui->yearSpinBox->setValue(value.toInt()); - break; - case Qmmp::TRACK: - ui->trackSpinBox->setValue(value.toInt()); - break; - case Qmmp::DISCNUMBER: - ui->discSpinBox->setValue(value.toInt()); - break; - case Qmmp::URL: - ui->pathLineEdit->setText(value); - setWindowTitle (value.section('/',-1)); - QPixmap pix = Decoder::findCover(value); - if(pix.isNull()) - ui->coverWidget->hide(); - else - ui->coverWidget->setPixmap(pix); - } -} - -void AbstractDetailsDialog::writeTags() -{ - -} - -void AbstractDetailsDialog::setMetaData(Qmmp::MetaData key, int value) -{ - setMetaData(key, QString("%1").arg(value)); -} - -void AbstractDetailsDialog::setAudioProperties(QMap p) -{ - QString formattedText; - formattedText.append(""); - foreach(QString key, p.keys()) - { - formattedText.append(""); - formattedText.append(""); - formattedText.append(""); - } - formattedText.append("
" + key + ": " - + p.value(key) + "
"); - ui->propertiesLabel->setText(formattedText); -} - -void AbstractDetailsDialog::processButton(QAbstractButton *button) -{ - switch((int) ui->buttonBox->standardButton(button)) - { - case QDialogButtonBox::Close: - close(); - break; - case QDialogButtonBox::Save: - writeTags(); - break; - } -} - -const QString AbstractDetailsDialog::strMetaData(Qmmp::MetaData key) -{ - switch((int) key) - { - case Qmmp::TITLE: - return ui->titleLineEdit->text(); - case Qmmp::ARTIST: - return ui->artistLineEdit->text(); - case Qmmp::ALBUM: - return ui->albumLineEdit->text(); - case Qmmp::COMMENT: - return ui->commentBrowser->toPlainText(); - case Qmmp::GENRE: - return ui->genreLineEdit->text(); - case Qmmp::COMPOSER: - return ui->composerLineEdit->text(); - case Qmmp::YEAR: - return QString("%1").arg(ui->yearSpinBox->value()); - case Qmmp::TRACK: - return QString("%1").arg(ui->trackSpinBox->value()); - case Qmmp::DISCNUMBER: - return QString("%1").arg(ui->discSpinBox->value()); - case Qmmp::URL: - return ui->pathLineEdit->text(); - } - return QString(); -} - -int AbstractDetailsDialog::intMetaData(Qmmp::MetaData key) -{ - return strMetaData(key).toInt(); -} diff --git a/src/qmmp/abstractdetailsdialog.h b/src/qmmp/abstractdetailsdialog.h deleted file mode 100644 index 77b3375f3..000000000 --- a/src/qmmp/abstractdetailsdialog.h +++ /dev/null @@ -1,65 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2009 by Ilya Kotov * - * forkotov02@hotmail.ru * - * * - * This program 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 2 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 General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - ***************************************************************************/ -#ifndef ABSTRACTDETAILSDIALOG_H -#define ABSTRACTDETAILSDIALOG_H - -#include -#include - -#include "qmmp.h" - -/** - @author Ilya Kotov -*/ - -namespace Ui -{ - class AbstractDetailsDialog; -} -class QAbstractButton; - -class AbstractDetailsDialog : public QDialog -{ - Q_OBJECT -public: - AbstractDetailsDialog(QWidget *parent = 0); - - ~AbstractDetailsDialog(); - - void hideSaveButton(bool hide = TRUE); - void blockSaveButton(bool block = TRUE); - -protected: - virtual void writeTags(); - - void setMetaData(Qmmp::MetaData key, const QString &value); - void setMetaData(Qmmp::MetaData key, int value); - void setAudioProperties(QMap p); - const QString strMetaData(Qmmp::MetaData key); - int intMetaData(Qmmp::MetaData key); - -private slots: - void processButton(QAbstractButton *); - -private: - Ui::AbstractDetailsDialog *ui; -}; - -#endif diff --git a/src/qmmp/decoderfactory.h b/src/qmmp/decoderfactory.h index f96057e97..155c1f6fb 100644 --- a/src/qmmp/decoderfactory.h +++ b/src/qmmp/decoderfactory.h @@ -30,6 +30,7 @@ class QTranslator; class Decoder; class Output; class FileInfo; +class MetaDataModel; /*! @brief Helper class to store input plugin properies. * @author Ilya Kotov @@ -98,12 +99,12 @@ public: */ virtual QList createPlayList(const QString &fileName, bool useMetaData) = 0; /*! - * Shows details dialog. - * @param parent Parent widget. + * Creats metadata object, which provides full access to file tags. * @param path File path. - * @return Dialog pointer. + * @param parent Parent object. + * @return MetaDataModel pointer. */ - virtual QObject* showDetails(QWidget *parent, const QString &path) = 0; + virtual MetaDataModel* createMetaDataModel(const QString &path, QObject *parent = 0) = 0; /*! * Shows settings dialog. * @param parent Parent widget. diff --git a/src/qmmp/forms/abstractdetailsdialog.ui b/src/qmmp/forms/abstractdetailsdialog.ui deleted file mode 100644 index 39bf65528..000000000 --- a/src/qmmp/forms/abstractdetailsdialog.ui +++ /dev/null @@ -1,372 +0,0 @@ - - AbstractDetailsDialog - - - - 0 - 0 - 630 - 383 - - - - Details - - - - 6 - - - 6 - - - 6 - - - - - true - - - - - - - - - - 0 - 0 - - - - - 110 - 110 - - - - - 110 - 110 - - - - false - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - Audio Properties - - - - - - - - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - - - - - - - Metadata - - - - - - - 0 - 0 - - - - Title: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - Artist: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - Album: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - - - - - - - Composer: - - - - - - - - - - - 0 - 0 - - - - Genre: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - Disc number: - - - - - - - ? - - - - - - - - - - 0 - 0 - - - - Track: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - - - 0 - 0 - - - - ? - - - - - - - - 0 - 0 - - - - Year: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - ? - - - - - - 2012 - - - - - - - - - - 0 - 0 - - - - Comment: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - false - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p></body></html> - - - - - - - - - - Qt::Horizontal - - - - 192 - 23 - - - - - - - - QDialogButtonBox::Close|QDialogButtonBox::Save - - - - - - - - CoverWidget - QWidget -
coverwidget.h
- 1 -
-
- - -
diff --git a/src/qmmp/metadatamodel.cpp b/src/qmmp/metadatamodel.cpp new file mode 100644 index 000000000..799928baa --- /dev/null +++ b/src/qmmp/metadatamodel.cpp @@ -0,0 +1,40 @@ +/*************************************************************************** + * Copyright (C) 2009 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program 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 2 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 General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "metadatamodel.h" + +MetaDataModel::MetaDataModel(QObject *parent) : QObject(parent) +{ +} + +MetaDataModel::~MetaDataModel() +{ + +} + +QHash MetaDataModel::audioProperties() +{ + return QHash (); +} + +QList MetaDataModel::tags() +{ + return QList (); +} diff --git a/src/qmmp/metadatamodel.h b/src/qmmp/metadatamodel.h new file mode 100644 index 000000000..f758c8ba3 --- /dev/null +++ b/src/qmmp/metadatamodel.h @@ -0,0 +1,40 @@ +/*************************************************************************** + * Copyright (C) 2009 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program 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 2 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 General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef METADATAMODEL_H +#define METADATAMODEL_H + +#include +#include +#include +#include +#include "tagmodel.h" + +class MetaDataModel : public QObject +{ +Q_OBJECT +public: + MetaDataModel(QObject *parent = 0); + virtual ~MetaDataModel(); + virtual QHash audioProperties(); + virtual QList tags(); +}; + +#endif // METADATAMODEL_H diff --git a/src/qmmp/qmmp.pro b/src/qmmp/qmmp.pro index efaa6ce43..1c80f602f 100644 --- a/src/qmmp/qmmp.pro +++ b/src/qmmp/qmmp.pro @@ -21,7 +21,8 @@ HEADERS += recycler.h \ fileinfo.h \ volumecontrol.h \ coverwidget.h \ - abstractdetailsdialog.h + metadatamodel.h \ + tagmodel.h SOURCES += recycler.cpp \ decoder.cpp \ output.cpp \ @@ -38,8 +39,9 @@ SOURCES += recycler.cpp \ fileinfo.cpp \ volumecontrol.cpp \ coverwidget.cpp \ - abstractdetailsdialog.cpp -FORMS += forms/abstractdetailsdialog.ui + metadatamodel.cpp \ + tagmodel.cpp +FORMS += unix:TARGET = ../../lib/qmmp win32:TARGET = ../../../bin/qmmp CONFIG += release \ @@ -56,27 +58,12 @@ unix:isEmpty(LIB_DIR):LIB_DIR = /lib unix:DEFINES += LIB_DIR=\\\"$$LIB_DIR\\\" DEFINES += QMMP_VERSION=$$QMMP_VERSION DEFINES += QMMP_STR_VERSION=\\\"$$QMMP_VERSION\\\" -contains(CONFIG, SVN_VERSION) { +contains(CONFIG, SVN_VERSION) { unix:DEFINES += SVN_REVISION=\\\"$$system(./svn_revision.sh)\\\" win32:DEFINES += SVN_REVISION=\\\"svn\\\" } -TRANSLATIONS = translations/libqmmp_ru.ts \ - translations/libqmmp_tr.ts \ - translations/libqmmp_zh_CN.ts \ - translations/libqmmp_cs.ts \ - translations/libqmmp_pt_BR.ts \ - translations/libqmmp_uk_UA.ts \ - translations/libqmmp_zh_TW.ts \ - translations/libqmmp_de.ts \ - translations/libqmmp_pl_PL.ts \ - translations/libqmmp_it.ts \ - translations/libqmmp_lt.ts \ - translations/libqmmp_pl.ts - -RESOURCES += translations/libqmmp_locales.qrc - -unix { +unix { target.path = $$LIB_DIR devel.files += buffer.h \ decoderfactory.h \ @@ -99,5 +86,4 @@ unix { devel DESTDIR = . } - INCLUDEPATH += ./ diff --git a/src/qmmp/soundcore.cpp b/src/qmmp/soundcore.cpp index 3c7ce7e79..44dbac11f 100644 --- a/src/qmmp/soundcore.cpp +++ b/src/qmmp/soundcore.cpp @@ -23,7 +23,6 @@ #include #include #include -#include #include "decoderfactory.h" #include "streamreader.h" @@ -64,10 +63,6 @@ SoundCore::SoundCore(QObject *parent) connect(m_handler, SIGNAL(aboutToFinish()), SIGNAL(aboutToFinish())); m_volumeControl = VolumeControl::create(this); connect(m_volumeControl, SIGNAL(volumeChanged(int, int)), SIGNAL(volumeChanged(int, int))); - //install translation - QTranslator *translator = new QTranslator(parent); - translator->load(QString(":/libqmmp_") + Qmmp::systemLanguageID()); - qApp->installTranslator(translator); } diff --git a/src/qmmp/tagmodel.cpp b/src/qmmp/tagmodel.cpp new file mode 100644 index 000000000..d789d21e7 --- /dev/null +++ b/src/qmmp/tagmodel.cpp @@ -0,0 +1,45 @@ +/*************************************************************************** + * Copyright (C) 2009 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program 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 2 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 General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include "tagmodel.h" + +TagModel::TagModel() +{ +} + +void TagModel::setValue(Qmmp::MetaData key, int value) +{ + setValue(key, QString::number(value)); +} + +QList TagModel::keys() +{ + QList list; + list << Qmmp::TITLE; + list << Qmmp::ARTIST; + list << Qmmp::ALBUM; + list << Qmmp::COMMENT; + list << Qmmp::GENRE; + list << Qmmp::COMPOSER; + list << Qmmp::YEAR; + list << Qmmp::TRACK; + list << Qmmp::DISCNUMBER; + return list; +} diff --git a/src/qmmp/tagmodel.h b/src/qmmp/tagmodel.h new file mode 100644 index 000000000..d3b513877 --- /dev/null +++ b/src/qmmp/tagmodel.h @@ -0,0 +1,44 @@ +/*************************************************************************** + * Copyright (C) 2009 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program 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 2 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 General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef TAGMODEL_H +#define TAGMODEL_H + +#include +#include +#include "qmmp.h" + +class TagModel +{ +public: + TagModel(); + + virtual const QString name() = 0; + virtual QList keys(); + virtual const QString value(Qmmp::MetaData key) = 0; + virtual void setValue(Qmmp::MetaData key, const QString &value) = 0; + virtual void setValue(Qmmp::MetaData key, int value); + virtual bool exists() = 0; + virtual void create() = 0; + virtual void remove() = 0; + virtual void save() = 0; +}; + +#endif // TAGMODEL_H diff --git a/src/qmmp/translations/libqmmp_cs.ts b/src/qmmp/translations/libqmmp_cs.ts deleted file mode 100644 index 99710dca4..000000000 --- a/src/qmmp/translations/libqmmp_cs.ts +++ /dev/null @@ -1,92 +0,0 @@ - - - - - AbstractDetailsDialog - - - Details - Podrobnosti - - - - Metadata - Metadata - - - - Title: - Název: - - - - Artist: - Umělec: - - - - Album: - Album: - - - - Disc number: - Číslo disku: - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p></body></html> - - - - Composer: - Skladatel: - - - - Genre: - Žánr: - - - - - - ? - ? - - - - Track: - Stopa: - - - - Year: - Rok: - - - - Comment: - Komentář: - - - - Audio Properties - Vlastnosti - - - - - - - - - - diff --git a/src/qmmp/translations/libqmmp_de.ts b/src/qmmp/translations/libqmmp_de.ts deleted file mode 100644 index 537554453..000000000 --- a/src/qmmp/translations/libqmmp_de.ts +++ /dev/null @@ -1,88 +0,0 @@ - - - - - AbstractDetailsDialog - - - Details - Details - - - - Metadata - Metadaten - - - - Title: - Titel: - - - - Artist: - Interpret: - - - - Album: - Album: - - - - Disc number: - CD-Nummer: - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p></body></html> - - - - - Composer: - Komponist: - - - - Genre: - Genre: - - - - - - ? - - - - - Track: - Stück: - - - - Year: - Jahr: - - - - Comment: - Kommentar: - - - - Audio Properties - Audio-Eigenschaften - - - - - - - - - - diff --git a/src/qmmp/translations/libqmmp_it.ts b/src/qmmp/translations/libqmmp_it.ts deleted file mode 100644 index d3c3706fd..000000000 --- a/src/qmmp/translations/libqmmp_it.ts +++ /dev/null @@ -1,100 +0,0 @@ - - - - - AbstractDetailsDialog - - - Details - Dettagli - - - - Audio Properties - - - - - Metadata - Metadata - - - - Title: - Titolo: - - - - Artist: - Interprete: - - - - Album: - Album: - - - - Disc number: - Disco numero - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p></body></html> - - - - - Composer: - Compositore - - - - Genre: - Genere: - - - - - - ? - - - - - Track: - Traccia - - - - Year: - Anno: - - - - Comment: - Commento: - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - - - - - - diff --git a/src/qmmp/translations/libqmmp_locales.qrc b/src/qmmp/translations/libqmmp_locales.qrc deleted file mode 100644 index 51e96efc1..000000000 --- a/src/qmmp/translations/libqmmp_locales.qrc +++ /dev/null @@ -1,15 +0,0 @@ - - - - libqmmp_it.qm - libqmmp_ru.qm - libqmmp_uk_UA.qm - libqmmp_zh_CN.qm - libqmmp_zh_TW.qm - libqmmp_cs.qm - libqmmp_pl.qm - libqmmp_de.qm - libqmmp_tr.qm - libqmmp_lt.qm - - diff --git a/src/qmmp/translations/libqmmp_lt.ts b/src/qmmp/translations/libqmmp_lt.ts deleted file mode 100644 index 8b1f6bf7c..000000000 --- a/src/qmmp/translations/libqmmp_lt.ts +++ /dev/null @@ -1,88 +0,0 @@ - - - - - AbstractDetailsDialog - - - Details - - - - - Metadata - - - - - Title: - Pavadinimas: - - - - Artist: - Atlikėjas: - - - - Album: - Albumas: - - - - Disc number: - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p></body></html> - - - - - Composer: - - - - - Genre: - Žanras: - - - - - - ? - - - - - Track: - - - - - Year: - Metai: - - - - Comment: - Komentaras: - - - - Audio Properties - - - - - - - - - - diff --git a/src/qmmp/translations/libqmmp_pl.ts b/src/qmmp/translations/libqmmp_pl.ts deleted file mode 100644 index 4af57c1fe..000000000 --- a/src/qmmp/translations/libqmmp_pl.ts +++ /dev/null @@ -1,88 +0,0 @@ - - - - - AbstractDetailsDialog - - - Details - Informacje o pliku - - - - Metadata - Metadane - - - - Title: - Tytuł: - - - - Artist: - Artysta: - - - - Album: - Album: - - - - Disc number: - Numer płyty: - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p></body></html> - - - - - Composer: - Kompozytor: - - - - Genre: - Gatunek: - - - - - - ? - - - - - Track: - Ścieżka: - - - - Year: - Rok: - - - - Comment: - Komentarz: - - - - Audio Properties - Dane Audio - - - - - - - - - diff --git a/src/qmmp/translations/libqmmp_pl_PL.ts b/src/qmmp/translations/libqmmp_pl_PL.ts deleted file mode 100644 index 149d2f10a..000000000 --- a/src/qmmp/translations/libqmmp_pl_PL.ts +++ /dev/null @@ -1,88 +0,0 @@ - - - - - AbstractDetailsDialog - - - Details - - - - - Metadata - - - - - Title: - - - - - Artist: - - - - - Album: - - - - - Disc number: - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p></body></html> - - - - - Composer: - - - - - Genre: - - - - - - - ? - - - - - Track: - - - - - Year: - - - - - Comment: - - - - - Audio Properties - - - - - - - - - - diff --git a/src/qmmp/translations/libqmmp_pt_BR.ts b/src/qmmp/translations/libqmmp_pt_BR.ts deleted file mode 100644 index 149d2f10a..000000000 --- a/src/qmmp/translations/libqmmp_pt_BR.ts +++ /dev/null @@ -1,88 +0,0 @@ - - - - - AbstractDetailsDialog - - - Details - - - - - Metadata - - - - - Title: - - - - - Artist: - - - - - Album: - - - - - Disc number: - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p></body></html> - - - - - Composer: - - - - - Genre: - - - - - - - ? - - - - - Track: - - - - - Year: - - - - - Comment: - - - - - Audio Properties - - - - - - - - - - diff --git a/src/qmmp/translations/libqmmp_ru.ts b/src/qmmp/translations/libqmmp_ru.ts deleted file mode 100644 index 74c454c54..000000000 --- a/src/qmmp/translations/libqmmp_ru.ts +++ /dev/null @@ -1,88 +0,0 @@ - - - - - AbstractDetailsDialog - - - Details - Информация - - - - Metadata - Метаинформация - - - - Title: - Название: - - - - Artist: - Исполнитель: - - - - Album: - Альбом: - - - - Disc number: - Номер диска: - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p></body></html> - - - - - Composer: - Композитор: - - - - Genre: - Жанр: - - - - - - ? - - - - - Track: - Трек: - - - - Year: - Год: - - - - Comment: - Комментарий: - - - - Audio Properties - Свойства аудио - - - - - - - - - diff --git a/src/qmmp/translations/libqmmp_tr.ts b/src/qmmp/translations/libqmmp_tr.ts deleted file mode 100644 index f8e6f8bdd..000000000 --- a/src/qmmp/translations/libqmmp_tr.ts +++ /dev/null @@ -1,88 +0,0 @@ - - - - - AbstractDetailsDialog - - - Details - - - - - Metadata - - - - - Title: - Başlık: - - - - Artist: - Artist: - - - - Album: - Albüm: - - - - Disc number: - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p></body></html> - - - - - Composer: - - - - - Genre: - Tür: - - - - - - ? - - - - - Track: - - - - - Year: - Yıl: - - - - Comment: - Yorum: - - - - Audio Properties - - - - - - - - - - - diff --git a/src/qmmp/translations/libqmmp_uk_UA.ts b/src/qmmp/translations/libqmmp_uk_UA.ts deleted file mode 100644 index 3f00cf8b7..000000000 --- a/src/qmmp/translations/libqmmp_uk_UA.ts +++ /dev/null @@ -1,86 +0,0 @@ - - - - - AbstractDetailsDialog - - - Details - Інформація - - - - Metadata - Метадані - - - - Title: - Назва: - - - - Artist: - Виконавець: - - - - Album: - Альбом: - - - - Disc number: - Номер диску: - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p></body></html> - - - - - Composer: - Композитор: - - - - Genre: - Жанр: - - - - ? - - - - - Track: - Трек: - - - - Year: - Рік: - - - - Comment: - Коментар: - - - - Audio Properties - Властивості аудіо - - - - - - - - - diff --git a/src/qmmp/translations/libqmmp_zh_CN.ts b/src/qmmp/translations/libqmmp_zh_CN.ts deleted file mode 100644 index 1e40b7db8..000000000 --- a/src/qmmp/translations/libqmmp_zh_CN.ts +++ /dev/null @@ -1,88 +0,0 @@ - - - - - AbstractDetailsDialog - - - Details - - - - - Metadata - - - - - Title: - 标题: - - - - Artist: - 艺术家: - - - - Album: - 专辑: - - - - Disc number: - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p></body></html> - - - - - Composer: - - - - - Genre: - 流派: - - - - - - ? - - - - - Track: - - - - - Year: - 年代: - - - - Comment: - 备注: - - - - Audio Properties - - - - - - - - - - - diff --git a/src/qmmp/translations/libqmmp_zh_TW.ts b/src/qmmp/translations/libqmmp_zh_TW.ts deleted file mode 100644 index db150ca71..000000000 --- a/src/qmmp/translations/libqmmp_zh_TW.ts +++ /dev/null @@ -1,88 +0,0 @@ - - - - - AbstractDetailsDialog - - - Details - - - - - Metadata - - - - - Title: - 標題: - - - - Artist: - 藝術家: - - - - Album: - 專輯: - - - - Disc number: - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Arial'; font-size:8pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"></p></body></html> - - - - - Composer: - - - - - Genre: - 流派: - - - - - - ? - - - - - Track: - - - - - Year: - 年代: - - - - Comment: - 備註: - - - - Audio Properties - - - - - - - - - - - diff --git a/src/qmmpui/CMakeLists.txt b/src/qmmpui/CMakeLists.txt index 5ff90bbcc..af54b4145 100644 --- a/src/qmmpui/CMakeLists.txt +++ b/src/qmmpui/CMakeLists.txt @@ -36,6 +36,8 @@ SET(libqmmpui_SRCS playlistitem.cpp mediaplayer.cpp playlistsettings.cpp + detailsdialog.cpp + tageditor.cpp ) SET(libqmmpui_MOC_HDRS @@ -56,6 +58,8 @@ SET(libqmmpui_MOC_HDRS playlistitem.h mediaplayer.h playlistsettings.h + detailsdialog.h + tageditor.h ) SET(libqmmpui_DEVEL_HDRS @@ -72,16 +76,25 @@ SET(libqmmpui_DEVEL_HDRS playlistitem.h playlistmodel.h playlistparser.h + detailsdialog.h + tageditor.h ) +SET(libqmmpui_UIS + detailsdialog.ui + tageditor.ui +) + +QT4_WRAP_UI(libqmmpui_UIS_H ${libqmmpui_UIS}) + QT4_ADD_RESOURCES(libqmmpui_RCC_SRCS translations/libqmmpui_locales.qrc) QT4_WRAP_CPP(libqmmpui_MOC_SRCS ${libqmmpui_MOC_HDRS}) include_directories(${CMAKE_CURRENT_BINARY_DIR}) -ADD_LIBRARY(qmmpui SHARED ${libqmmpui_SRCS} ${libqmmpui_MOC_SRCS} ${libqmmpui_RCC_SRCS}) +ADD_LIBRARY(qmmpui SHARED ${libqmmpui_SRCS} ${libqmmpui_MOC_SRCS} ${libqmmpui_RCC_SRCS} ${libqmmpui_UIS_H}) target_link_libraries(qmmpui ${QT_LIBRARIES} -lqmmp) add_dependencies(qmmpui libqmmp) SET_TARGET_PROPERTIES(qmmpui PROPERTIES VERSION ${QMMP_VERSION} SOVERSION ${QMMP_SOVERSION}) diff --git a/src/qmmpui/detailsdialog.cpp b/src/qmmpui/detailsdialog.cpp new file mode 100644 index 000000000..11d4a49a6 --- /dev/null +++ b/src/qmmpui/detailsdialog.cpp @@ -0,0 +1,128 @@ +/*************************************************************************** + * Copyright (C) 2009 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program 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 2 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 General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include "abstractplaylistitem.h" +#include "tageditor.h" +#include "detailsdialog.h" + +DetailsDialog::DetailsDialog(AbstractPlaylistItem *item, QWidget *parent) + : QDialog(parent) +{ + setAttribute(Qt::WA_QuitOnClose, FALSE); + setAttribute(Qt::WA_DeleteOnClose, FALSE); + m_metaDataModel = 0; + ui.setupUi(this); + setAttribute(Qt::WA_DeleteOnClose); + m_path = item->url(); + setWindowTitle (m_path.section('/',-1)); + ui.pathEdit->setText(m_path); + + DecoderFactory *fact = Decoder::findByPath(item->url()); + if(fact) + m_metaDataModel = fact->createMetaDataModel(item->url(), this); + else + return; + + printInfo(); + + foreach(TagModel *tagModel, m_metaDataModel->tags()) + { + ui.tabWidget->addTab(new TagEditor(tagModel, this), tagModel->name()); + } +} + +DetailsDialog::~DetailsDialog() +{} + +void DetailsDialog::printInfo() +{ + QList flist = Decoder::createPlayList(m_path, TRUE); + QMap metaData; + if(!flist.isEmpty()) + metaData = flist.at(0)->metaData(); + /*else + TODO use metadata from playlist item*/ + QString formattedText; + formattedText.append(""); + //tags + formattedText += formatRow(tr("Title"), metaData[Qmmp::TITLE]); + formattedText += formatRow(tr("Artist"), metaData[Qmmp::ARTIST]); + formattedText += formatRow(tr("Album"), metaData[Qmmp::ALBUM]); + formattedText += formatRow(tr("Comment"), metaData[Qmmp::COMMENT]); + formattedText += formatRow(tr("Genre"), metaData[Qmmp::GENRE]); + formattedText += formatRow(tr("Composer"), metaData[Qmmp::COMPOSER]); + if(metaData[Qmmp::YEAR] != "0") + formattedText += formatRow(tr("Year"), metaData[Qmmp::YEAR]); + if(metaData[Qmmp::TRACK] != "0") + formattedText += formatRow(tr("Track"), metaData[Qmmp::TRACK]); + if(metaData[Qmmp::DISCNUMBER] != "0") + formattedText += formatRow(tr("Disc number"), metaData[Qmmp::DISCNUMBER]); + //audio info + if(!m_metaDataModel) + { + formattedText.append("
"); + ui.textEdit->setHtml(formattedText); + return; + } + QHash ap = m_metaDataModel->audioProperties(); + //line + formattedText.append(""); + formattedText.append(""); + formattedText.append("
"); + formattedText.append(""); + formattedText.append(""); + + foreach(QString key, ap.keys()) + formattedText += formatRow(key, ap.value(key)); + + formattedText.append(""); + ui.textEdit->setHtml(formattedText); +} + +QString DetailsDialog::formatRow(const QString key, const QString value) +{ + if(value.isEmpty()) + return QString(); + QString str(""); + str.append("" + key + " " + value + ""); + str.append(""); + return str; +} + +void DetailsDialog::on_buttonBox_clicked(QAbstractButton *button) +{ + if(ui.buttonBox->standardButton(button) == QDialogButtonBox::Save) + { + TagEditor *tab = qobject_cast (ui.tabWidget->currentWidget()); + if(tab) + tab->save(); + } + else + reject(); +} diff --git a/src/qmmpui/detailsdialog.h b/src/qmmpui/detailsdialog.h new file mode 100644 index 000000000..ce3dd7bff --- /dev/null +++ b/src/qmmpui/detailsdialog.h @@ -0,0 +1,58 @@ +/*************************************************************************** + * Copyright (C) 2009 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program 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 2 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 General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ +#ifndef DETAILSDIALOG_H +#define DETAILSDIALOG_H + +#include +#include +#include +#include + +#include "ui_detailsdialog.h" + +/** + @author Ilya Kotov +*/ + +class QTextCodec; +class AbstractPlaylistItem; +class MetaDataModel; + +class DetailsDialog : public QDialog +{ + Q_OBJECT +public: + DetailsDialog(AbstractPlaylistItem *item, QWidget *parent = 0); + + ~DetailsDialog(); + +private slots: + void on_buttonBox_clicked(QAbstractButton *button); + +private: + Ui::DetailsDialog ui; + void printInfo(); + QString m_path; + QString formatRow(const QString key, const QString value); + MetaDataModel *m_metaDataModel; + +}; + +#endif diff --git a/src/qmmpui/detailsdialog.ui b/src/qmmpui/detailsdialog.ui new file mode 100644 index 000000000..77261a1e6 --- /dev/null +++ b/src/qmmpui/detailsdialog.ui @@ -0,0 +1,85 @@ + + + DetailsDialog + + + + 0 + 0 + 456 + 385 + + + + Details + + + + 6 + + + 6 + + + 6 + + + + + Qt::Horizontal + + + + 192 + 23 + + + + + + + + 0 + + + + Summary + + + + + + true + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + + + + + + + true + + + + + + + QDialogButtonBox::Close|QDialogButtonBox::Save + + + + + + + + diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp index ddaa2ce23..893850e51 100644 --- a/src/qmmpui/playlistmodel.cpp +++ b/src/qmmpui/playlistmodel.cpp @@ -41,6 +41,7 @@ #include "playlistmodel.h" #include "playlistitem.h" #include "playstate.h" +#include "detailsdialog.h" #include "playlistsettings.h" #include @@ -380,18 +381,11 @@ void PlayListModel::showDetails() QMessageBox::information(0, m_items.at(i)->url(), str); return; } - - DecoderFactory *fact = Decoder::findByPath(m_items.at(i)->url()); - if (fact) - { - QObject* o = fact->showDetails(0, m_items.at(i)->url()); - if (o) - { - TagUpdater *updater = new TagUpdater(o,m_items.at(i)); - m_editing_items.append(m_items.at(i)); - connect(updater, SIGNAL(destroyed(QObject *)),SIGNAL(listChanged())); - } - } + QDialog *d = new DetailsDialog(m_items.at(i)); //TODO set parent widget + TagUpdater *updater = new TagUpdater(d, m_items.at(i)); + m_editing_items.append(m_items.at(i)); + connect(updater, SIGNAL(destroyed(QObject *)),SIGNAL(listChanged())); + d->show(); return; } } diff --git a/src/qmmpui/qmmpui.pro b/src/qmmpui/qmmpui.pro index 17147e341..ea0cb623b 100644 --- a/src/qmmpui/qmmpui.pro +++ b/src/qmmpui/qmmpui.pro @@ -1,91 +1,87 @@ include(../../qmmp.pri) - unix:TARGET = ../../lib/qmmpui win32:TARGET = ../../../bin/qmmpui CONFIG += release \ -warn_on \ -shared \ -qt \ -thread - -QMAKE_LIBDIR += ../../lib qmmpui + warn_on \ + shared \ + qt \ + thread +QMAKE_LIBDIR += ../../lib \ + qmmpui LIBS += -Wl,-rpath,./ -unix:LIBS += -L../../lib -lqmmp -win32:LIBS += -L../../bin -lqmmp0 +unix:LIBS += -L../../lib \ + -lqmmp +win32:LIBS += -L../../bin \ + -lqmmp0 INCLUDEPATH += ../ - TEMPLATE = lib - -unix : isEmpty(LIB_DIR){ - LIB_DIR = /lib - } - +unix:isEmpty(LIB_DIR):LIB_DIR = /lib VERSION = $$QMMP_VERSION - unix:target.path = $$LIB_DIR - HEADERS += general.h \ - generalfactory.h \ - generalhandler.h \ - playlistformat.h \ - playlistparser.h \ - commandlinemanager.h \ - commandlineoption.h \ - filedialog.h \ - filedialogfactory.h \ - qtfiledialog.h \ - abstractplaylistitem.h \ - playlistitem.h \ - playlistmodel.h \ - playstate.h \ - fileloader.h \ - mediaplayer.h \ - playlistsettings.h + generalfactory.h \ + generalhandler.h \ + playlistformat.h \ + playlistparser.h \ + commandlinemanager.h \ + commandlineoption.h \ + filedialog.h \ + filedialogfactory.h \ + qtfiledialog.h \ + abstractplaylistitem.h \ + playlistitem.h \ + playlistmodel.h \ + playstate.h \ + fileloader.h \ + mediaplayer.h \ + playlistsettings.h \ + detailsdialog.h \ + tageditor.h SOURCES += general.cpp \ - generalhandler.cpp \ - playlistparser.cpp \ - commandlinemanager.cpp \ - filedialog.cpp \ - qtfiledialog.cpp \ - abstractplaylistitem.cpp \ - playlistmodel.cpp \ - playstate.cpp \ - playlistitem.cpp \ - fileloader.cpp \ - mediaplayer.cpp \ - playlistsettings.cpp - + generalhandler.cpp \ + playlistparser.cpp \ + commandlinemanager.cpp \ + filedialog.cpp \ + qtfiledialog.cpp \ + abstractplaylistitem.cpp \ + playlistmodel.cpp \ + playstate.cpp \ + playlistitem.cpp \ + fileloader.cpp \ + mediaplayer.cpp \ + playlistsettings.cpp \ + detailsdialog.cpp \ + tageditor.cpp +FORMS += detailsdialog.ui \ + tageditor.ui unix:DESTDIR = . - RESOURCES += translations/libqmmpui_locales.qrc - TRANSLATIONS = translations/libqmmpui_ru.ts \ - translations/libqmmpui_tr.ts \ - translations/libqmmpui_zh_CN.ts \ - translations/libqmmpui_cs.ts \ - translations/libqmmpui_pt_BR.ts \ - translations/libqmmpui_uk_UA.ts \ - translations/libqmmpui_zh_TW.ts \ - translations/libqmmpui_de.ts \ - translations/libqmmpui_it.ts \ - translations/libqmmpui_lt.ts \ - translations/libqmmpui_pl.ts -unix { -devel.files += abstractplaylistitem.h \ - commandlinemanager.h \ - commandlineoption.h \ - filedialogfactory.h \ - filedialog.h \ - generalfactory.h \ - general.h \ - generalhandler.h \ - mediaplayer.h \ - playlistformat.h \ - playlistitem.h \ - playlistmodel.h \ - playlistparser.h - -devel.path = /include/qmmpui - -INSTALLS += target devel + translations/libqmmpui_tr.ts \ + translations/libqmmpui_zh_CN.ts \ + translations/libqmmpui_cs.ts \ + translations/libqmmpui_pt_BR.ts \ + translations/libqmmpui_uk_UA.ts \ + translations/libqmmpui_zh_TW.ts \ + translations/libqmmpui_de.ts \ + translations/libqmmpui_it.ts \ + translations/libqmmpui_lt.ts \ + translations/libqmmpui_pl.ts +unix { + devel.files += abstractplaylistitem.h \ + commandlinemanager.h \ + commandlineoption.h \ + filedialogfactory.h \ + filedialog.h \ + generalfactory.h \ + general.h \ + generalhandler.h \ + mediaplayer.h \ + playlistformat.h \ + playlistitem.h \ + playlistmodel.h \ + playlistparser.h + devel.path = /include/qmmpui + INSTALLS += target \ + devel } diff --git a/src/qmmpui/tageditor.cpp b/src/qmmpui/tageditor.cpp new file mode 100644 index 000000000..5af62220c --- /dev/null +++ b/src/qmmpui/tageditor.cpp @@ -0,0 +1,83 @@ +/*************************************************************************** + * Copyright (C) 2009 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program 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 2 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 General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#include +#include "tageditor.h" +#include "ui_tageditor.h" + +TagEditor::TagEditor(TagModel *tagModel, QWidget *parent) : QWidget(parent), m_ui(new Ui::TagEditor) +{ + m_ui->setupUi(this); + m_tagModel = tagModel; + //check available keys + m_ui->titleLineEdit->setEnabled(m_tagModel->keys().contains(Qmmp::TITLE)); + m_ui->artistLineEdit->setEnabled(m_tagModel->keys().contains(Qmmp::ARTIST)); + m_ui->albumLineEdit->setEnabled(m_tagModel->keys().contains(Qmmp::ALBUM)); + m_ui->composerLineEdit->setEnabled(m_tagModel->keys().contains(Qmmp::COMPOSER)); + m_ui->genreLineEdit->setEnabled(m_tagModel->keys().contains(Qmmp::GENRE)); + m_ui->commentBrowser->setEnabled(m_tagModel->keys().contains(Qmmp::COMMENT)); + m_ui->discSpinBox->setEnabled(m_tagModel->keys().contains(Qmmp::DISCNUMBER)); + m_ui->yearSpinBox->setEnabled(m_tagModel->keys().contains(Qmmp::YEAR)); + m_ui->trackSpinBox->setEnabled(m_tagModel->keys().contains(Qmmp::TRACK)); + + readTag(); +} + +TagEditor::~TagEditor() +{ + delete m_ui; +} + +void TagEditor::save() +{ + if(m_ui->useCheckBox->isChecked()) + { + if(!m_tagModel->exists()) + m_tagModel->create(); + m_tagModel->setValue(Qmmp::TITLE, m_ui->titleLineEdit->text()); + m_tagModel->setValue(Qmmp::ARTIST, m_ui->artistLineEdit->text()); + m_tagModel->setValue(Qmmp::ALBUM, m_ui->albumLineEdit->text()); + m_tagModel->setValue(Qmmp::COMPOSER, m_ui->composerLineEdit->text()); + m_tagModel->setValue(Qmmp::GENRE, m_ui->genreLineEdit->text()); + m_tagModel->setValue(Qmmp::COMMENT, m_ui->commentBrowser->toPlainText ()); + m_tagModel->setValue(Qmmp::DISCNUMBER, m_ui->discSpinBox->value()); + m_tagModel->setValue(Qmmp::YEAR, m_ui->yearSpinBox->value()); + m_tagModel->setValue(Qmmp::TRACK, m_ui->trackSpinBox->value()); + } + else + m_tagModel->remove(); + m_tagModel->save(); + readTag(); +} + +void TagEditor::readTag() +{ + m_ui->tagWidget->setEnabled(m_tagModel->exists()); + m_ui->useCheckBox->setChecked(m_tagModel->exists()); + m_ui->titleLineEdit->setText(m_tagModel->value(Qmmp::TITLE)); + m_ui->artistLineEdit->setText(m_tagModel->value(Qmmp::ARTIST)); + m_ui->albumLineEdit->setText(m_tagModel->value(Qmmp::ALBUM)); + m_ui->composerLineEdit->setText(m_tagModel->value(Qmmp::COMPOSER)); + m_ui->genreLineEdit->setText(m_tagModel->value(Qmmp::GENRE)); + m_ui->commentBrowser->setText(m_tagModel->value(Qmmp::COMMENT)); + m_ui->discSpinBox->setValue(m_tagModel->value(Qmmp::DISCNUMBER).toInt()); + m_ui->yearSpinBox->setValue(m_tagModel->value(Qmmp::YEAR).toInt()); + m_ui->trackSpinBox->setValue(m_tagModel->value(Qmmp::TRACK).toInt()); +} diff --git a/src/qmmpui/tageditor.h b/src/qmmpui/tageditor.h new file mode 100644 index 000000000..584a26589 --- /dev/null +++ b/src/qmmpui/tageditor.h @@ -0,0 +1,48 @@ +/*************************************************************************** + * Copyright (C) 2009 by Ilya Kotov * + * forkotov02@hotmail.ru * + * * + * This program 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 2 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 General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef TAGEDITOR_H +#define TAGEDITOR_H + +#include + +namespace Ui { + class TagEditor; +} + +class TagModel; + +class TagEditor : public QWidget +{ +Q_OBJECT +public: + TagEditor(TagModel *tagModel, QWidget *parent = 0); + ~TagEditor(); + + void save(); + +private: + void readTag(); + Ui::TagEditor *m_ui; + TagModel *m_tagModel; + +}; + +#endif // TAGEDITOR_H diff --git a/src/qmmpui/tageditor.ui b/src/qmmpui/tageditor.ui new file mode 100644 index 000000000..e3717414f --- /dev/null +++ b/src/qmmpui/tageditor.ui @@ -0,0 +1,313 @@ + + + TagEditor + + + + 0 + 0 + 444 + 312 + + + + Form + + + + 3 + + + 3 + + + 3 + + + + + + + + + 0 + 0 + + + + Title: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + Artist: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + Album: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + + + + + Composer: + + + + + + + false + + + + + + + + 0 + 0 + + + + Genre: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + Disc number: + + + + + + + false + + + ? + + + + + + + + 0 + 0 + + + + Track: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + true + + + + 0 + 0 + + + + ? + + + + + + 2012 + + + + + + + + 0 + 0 + + + + Year: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + true + + + + 0 + 0 + + + + ? + + + + + + + + 0 + 0 + + + + Comment: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + true + + + + 0 + 0 + + + + false + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + + + + + + Include selected tag in file + + + + + + + + + useCheckBox + clicked(bool) + tagWidget + setEnabled(bool) + + + 56 + 296 + + + 8 + 277 + + + + + diff --git a/src/qmmpui/translations/libqmmpui_cs.ts b/src/qmmpui/translations/libqmmpui_cs.ts index ecf41a6b0..aa5ceb7b2 100644 --- a/src/qmmpui/translations/libqmmpui_cs.ts +++ b/src/qmmpui/translations/libqmmpui_cs.ts @@ -1,45 +1,112 @@ + + DetailsDialog + + + Title + + + + + Artist + + + + + Album + + + + + Comment + + + + + Genre + + + + + Composer + + + + + Year + + + + + Track + + + + + Disc number + + + + + Details + + + + + Summary + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + PlayListModel - + Title: Název: - + Artist: Umělec: - + Album: - + Genre: Žánr: - + Comment: Poznámka: - + Composer: Skladatel: - + Disc number: Číslo disku: - + URL: URL: @@ -52,4 +119,78 @@ Souborový dialog Qt + + TagEditor + + + Form + + + + + Title: + Název: + + + + Artist: + Umělec: + + + + Album: + + + + + Composer: + Skladatel: + + + + Genre: + Žánr: + + + + Disc number: + Číslo disku: + + + + + + ? + + + + + Track: + + + + + Year: + + + + + Comment: + Poznámka: + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + Include selected tag in file + + + diff --git a/src/qmmpui/translations/libqmmpui_de.ts b/src/qmmpui/translations/libqmmpui_de.ts index f4d8c84cb..15a7df4e7 100644 --- a/src/qmmpui/translations/libqmmpui_de.ts +++ b/src/qmmpui/translations/libqmmpui_de.ts @@ -1,44 +1,112 @@ - + + + + DetailsDialog + + + Title + + + + + Artist + + + + + Album + + + + + Comment + + + + + Genre + + + + + Composer + + + + + Year + + + + + Track + + + + + Disc number + + + + + Details + + + + + Summary + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + PlayListModel - + Title: Titel: - + Artist: Interpret: - + Album: Album: - + Genre: Genre: - + Comment: Kommentar: - + Composer: Komponist: - + Disc number: CD-Nummer: - + URL: @@ -51,4 +119,78 @@ Qt Datei-Dialog + + TagEditor + + + Form + + + + + Title: + Titel: + + + + Artist: + Interpret: + + + + Album: + Album: + + + + Composer: + Komponist: + + + + Genre: + Genre: + + + + Disc number: + CD-Nummer: + + + + + + ? + + + + + Track: + + + + + Year: + + + + + Comment: + Kommentar: + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + Include selected tag in file + + + diff --git a/src/qmmpui/translations/libqmmpui_it.ts b/src/qmmpui/translations/libqmmpui_it.ts index b8381fd2c..9064555cd 100644 --- a/src/qmmpui/translations/libqmmpui_it.ts +++ b/src/qmmpui/translations/libqmmpui_it.ts @@ -1,44 +1,112 @@ - + + + + DetailsDialog + + + Title + + + + + Artist + + + + + Album + + + + + Comment + + + + + Genre + + + + + Composer + + + + + Year + + + + + Track + + + + + Disc number + + + + + Details + + + + + Summary + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + PlayListModel - + Title: Titolo: - + Artist: Interprete: - + Album: Album: - + Genre: Genere: - + Comment: Commento: - + Composer: Compositore - + Disc number: Disco numero: - + URL: URL: @@ -51,4 +119,78 @@ Menu brani Qt + + TagEditor + + + Form + + + + + Title: + Titolo: + + + + Artist: + Interprete: + + + + Album: + Album: + + + + Composer: + Compositore + + + + Genre: + Genere: + + + + Disc number: + Disco numero: + + + + + + ? + + + + + Track: + + + + + Year: + + + + + Comment: + Commento: + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + Include selected tag in file + + + diff --git a/src/qmmpui/translations/libqmmpui_lt.ts b/src/qmmpui/translations/libqmmpui_lt.ts index 55cb00e72..6ae2eadfb 100644 --- a/src/qmmpui/translations/libqmmpui_lt.ts +++ b/src/qmmpui/translations/libqmmpui_lt.ts @@ -1,44 +1,112 @@ - + + + + DetailsDialog + + + Title + + + + + Artist + + + + + Album + + + + + Comment + + + + + Genre + + + + + Composer + + + + + Year + + + + + Track + + + + + Disc number + + + + + Details + + + + + Summary + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + PlayListModel - + Title: Pavadinimas: - + Artist: Atlikėjas: - + Album: Albumas: - + Genre: Žanras: - + Comment: Komantaras: - + Composer: - + Disc number: - + URL: @@ -51,4 +119,78 @@ Qt bylų langas + + TagEditor + + + Form + + + + + Title: + Pavadinimas: + + + + Artist: + Atlikėjas: + + + + Album: + Albumas: + + + + Composer: + + + + + Genre: + Žanras: + + + + Disc number: + + + + + + + ? + + + + + Track: + + + + + Year: + + + + + Comment: + Komantaras: + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + Include selected tag in file + + + diff --git a/src/qmmpui/translations/libqmmpui_pl.ts b/src/qmmpui/translations/libqmmpui_pl.ts index 5ddb87b84..8c9336d8e 100644 --- a/src/qmmpui/translations/libqmmpui_pl.ts +++ b/src/qmmpui/translations/libqmmpui_pl.ts @@ -1,44 +1,112 @@ - + + + + DetailsDialog + + + Title + + + + + Artist + + + + + Album + + + + + Comment + + + + + Genre + + + + + Composer + + + + + Year + + + + + Track + + + + + Disc number + + + + + Details + + + + + Summary + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + PlayListModel - + Title: Tytuł: - + Artist: Artysta: - + Album: Album: - + Genre: Gatunek: - + Comment: Komentarz: - + Composer: Kompozytor: - + Disc number: Numer albumu: - + URL: @@ -51,4 +119,78 @@ Okno dialogowe QT + + TagEditor + + + Form + + + + + Title: + Tytuł: + + + + Artist: + Artysta: + + + + Album: + Album: + + + + Composer: + Kompozytor: + + + + Genre: + Gatunek: + + + + Disc number: + Numer albumu: + + + + + + ? + + + + + Track: + + + + + Year: + + + + + Comment: + Komentarz: + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + Include selected tag in file + + + diff --git a/src/qmmpui/translations/libqmmpui_pt_BR.ts b/src/qmmpui/translations/libqmmpui_pt_BR.ts index d9a023d7b..e366d82c0 100644 --- a/src/qmmpui/translations/libqmmpui_pt_BR.ts +++ b/src/qmmpui/translations/libqmmpui_pt_BR.ts @@ -1,44 +1,112 @@ - + + + + DetailsDialog + + + Title + + + + + Artist + + + + + Album + + + + + Comment + + + + + Genre + + + + + Composer + + + + + Year + + + + + Track + + + + + Disc number + + + + + Details + + + + + Summary + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + PlayListModel - + Title: - + Artist: - + Album: - + Genre: - + Comment: - + Composer: - + Disc number: - + URL: @@ -51,4 +119,78 @@ + + TagEditor + + + Form + + + + + Title: + + + + + Artist: + + + + + Album: + + + + + Composer: + + + + + Genre: + + + + + Disc number: + + + + + + + ? + + + + + Track: + + + + + Year: + + + + + Comment: + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + Include selected tag in file + + + diff --git a/src/qmmpui/translations/libqmmpui_ru.ts b/src/qmmpui/translations/libqmmpui_ru.ts index c5f658f7e..f43c9650e 100644 --- a/src/qmmpui/translations/libqmmpui_ru.ts +++ b/src/qmmpui/translations/libqmmpui_ru.ts @@ -1,45 +1,112 @@ - - + + + + DetailsDialog + + + Title + + + + + Artist + + + + + Album + + + + + Comment + + + + + Genre + + + + + Composer + + + + + Year + + + + + Track + + + + + Disc number + + + + + Details + + + + + Summary + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + PlayListModel - + Title: Название: - + Artist: Исполнитель: - + Album: Альбом: - + Genre: Жанр: - + Comment: Комментарий: - + Composer: Композитор: - + Disc number: Номер диска: - + URL: URL: @@ -52,4 +119,78 @@ Файловый диалог Qt + + TagEditor + + + Form + + + + + Title: + Название: + + + + Artist: + Исполнитель: + + + + Album: + Альбом: + + + + Composer: + Композитор: + + + + Genre: + Жанр: + + + + Disc number: + Номер диска: + + + + + + ? + + + + + Track: + + + + + Year: + + + + + Comment: + Комментарий: + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + Include selected tag in file + + + diff --git a/src/qmmpui/translations/libqmmpui_tr.ts b/src/qmmpui/translations/libqmmpui_tr.ts index 35e973354..0ed86a295 100644 --- a/src/qmmpui/translations/libqmmpui_tr.ts +++ b/src/qmmpui/translations/libqmmpui_tr.ts @@ -1,44 +1,112 @@ - + + + + DetailsDialog + + + Title + + + + + Artist + + + + + Album + + + + + Comment + + + + + Genre + + + + + Composer + + + + + Year + + + + + Track + + + + + Disc number + + + + + Details + + + + + Summary + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + PlayListModel - + Title: Başlık: - + Artist: Artist: - + Album: Albüm: - + Genre: Tür: - + Comment: Yorum: - + Composer: - + Disc number: - + URL: @@ -51,4 +119,78 @@ Qt Dosya Diyaloğu + + TagEditor + + + Form + + + + + Title: + Başlık: + + + + Artist: + Artist: + + + + Album: + Albüm: + + + + Composer: + + + + + Genre: + Tür: + + + + Disc number: + + + + + + + ? + + + + + Track: + + + + + Year: + + + + + Comment: + Yorum: + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + Include selected tag in file + + + diff --git a/src/qmmpui/translations/libqmmpui_uk_UA.ts b/src/qmmpui/translations/libqmmpui_uk_UA.ts index fbd9d62d9..6451e9635 100644 --- a/src/qmmpui/translations/libqmmpui_uk_UA.ts +++ b/src/qmmpui/translations/libqmmpui_uk_UA.ts @@ -1,44 +1,112 @@ - + + + + DetailsDialog + + + Title + + + + + Artist + + + + + Album + + + + + Comment + + + + + Genre + + + + + Composer + + + + + Year + + + + + Track + + + + + Disc number + + + + + Details + + + + + Summary + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + PlayListModel - + Title: Заголовок: - + Artist: Виконавець: - + Album: Альбом: - + Genre: Жанр: - + Comment: Коментар: - + Composer: Композитор: - + Disc number: Номер диску: - + URL: @@ -51,4 +119,78 @@ Файловий діалог Qt + + TagEditor + + + Form + + + + + Title: + Заголовок: + + + + Artist: + Виконавець: + + + + Album: + Альбом: + + + + Composer: + Композитор: + + + + Genre: + Жанр: + + + + Disc number: + Номер диску: + + + + + + ? + + + + + Track: + + + + + Year: + + + + + Comment: + Коментар: + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + Include selected tag in file + + + diff --git a/src/qmmpui/translations/libqmmpui_zh_CN.ts b/src/qmmpui/translations/libqmmpui_zh_CN.ts index 1cbec832b..c0a68feaf 100644 --- a/src/qmmpui/translations/libqmmpui_zh_CN.ts +++ b/src/qmmpui/translations/libqmmpui_zh_CN.ts @@ -1,44 +1,112 @@ - + + + + DetailsDialog + + + Title + + + + + Artist + + + + + Album + + + + + Comment + + + + + Genre + + + + + Composer + + + + + Year + + + + + Track + + + + + Disc number + + + + + Details + + + + + Summary + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + PlayListModel - + Title: 标题: - + Artist: 艺术家: - + Album: 专辑: - + Genre: 流派: - + Comment: 备注: - + Composer: - + Disc number: - + URL: @@ -51,4 +119,78 @@ Qmmp 文件会话 + + TagEditor + + + Form + + + + + Title: + 标题: + + + + Artist: + 艺术家: + + + + Album: + 专辑: + + + + Composer: + + + + + Genre: + 流派: + + + + Disc number: + + + + + + + ? + + + + + Track: + + + + + Year: + + + + + Comment: + 备注: + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + Include selected tag in file + + + diff --git a/src/qmmpui/translations/libqmmpui_zh_TW.ts b/src/qmmpui/translations/libqmmpui_zh_TW.ts index 8138e9043..5e573313f 100644 --- a/src/qmmpui/translations/libqmmpui_zh_TW.ts +++ b/src/qmmpui/translations/libqmmpui_zh_TW.ts @@ -1,44 +1,112 @@ - + + + + DetailsDialog + + + Title + + + + + Artist + + + + + Album + + + + + Comment + + + + + Genre + + + + + Composer + + + + + Year + + + + + Track + + + + + Disc number + + + + + Details + + + + + Summary + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + PlayListModel - + Title: 標題: - + Artist: 藝術家: - + Album: 專輯: - + Genre: 流派: - + Comment: 備註: - + Composer: - + Disc number: - + URL: @@ -51,4 +119,78 @@ Qmmp 檔案會話 + + TagEditor + + + Form + + + + + Title: + 標題: + + + + Artist: + 藝術家: + + + + Album: + 專輯: + + + + Composer: + + + + + Genre: + 流派: + + + + Disc number: + + + + + + + ? + + + + + Track: + + + + + Year: + + + + + Comment: + 備註: + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Arial'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + Include selected tag in file + + + -- cgit v1.2.3-13-gbd6f