diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-09-23 20:45:55 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-09-23 20:45:55 +0000 |
| commit | 822e613ba535aedfe1220b5b9689c55b68050057 (patch) | |
| tree | ee4b87c74b08400d93a5e8d967a64faa838fa46f /src | |
| parent | cbf576255826458224eb9788ac88e72ba6f77b20 (diff) | |
| download | qmmp-822e613ba535aedfe1220b5b9689c55b68050057.tar.gz qmmp-822e613ba535aedfe1220b5b9689c55b68050057.tar.bz2 qmmp-822e613ba535aedfe1220b5b9689c55b68050057.zip | |
added history plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@8360 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
47 files changed, 6556 insertions, 0 deletions
diff --git a/src/plugins/General/CMakeLists.txt b/src/plugins/General/CMakeLists.txt index 80acaf8b2..180020bbb 100644 --- a/src/plugins/General/CMakeLists.txt +++ b/src/plugins/General/CMakeLists.txt @@ -15,6 +15,7 @@ SET(USE_RGSCAN TRUE CACHE BOOL "enable/disable replaygain scanner plugin") SET(USE_SB TRUE CACHE BOOL "enable/disable stream browser plugin") SET(USE_TRACKCHANGE TRUE CACHE BOOL "enable/disable track change plugin") SET(USE_COPYPASTE TRUE CACHE BOOL "enable/disable copy/paste change plugin") +SET(USE_HISTORY TRUE CACHE BOOL "enable/disable history plugin") IF(USE_MPRIS AND Qt5DBus_FOUND) add_subdirectory(mpris) @@ -83,3 +84,7 @@ ENDIF(USE_COPYPASTE) IF(USE_GNOMEHOTKEY AND Qt5DBus_FOUND) add_subdirectory(gnomehotkey) ENDIF(USE_GNOMEHOTKEY AND Qt5DBus_FOUND) + +IF(USE_HISTORY AND Qt5Sql_FOUND) +add_subdirectory(history) +ENDIF(USE_HISTORY AND Qt5Sql_FOUND) diff --git a/src/plugins/General/history/CMakeLists.txt b/src/plugins/General/history/CMakeLists.txt new file mode 100644 index 000000000..a38b65afc --- /dev/null +++ b/src/plugins/General/history/CMakeLists.txt @@ -0,0 +1,37 @@ +project(libhistory) + +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + +# libqmmpui & libqmmp +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../../) +link_directories(${CMAKE_CURRENT_BINARY_DIR}/../../../qmmpui) +link_directories(${CMAKE_CURRENT_BINARY_DIR}/../../../qmmp) + +SET(libhistory_SRCS + dateinputdialog.cpp + history.cpp + historyfactory.cpp + historysettingsdialog.cpp + historywindow.cpp + progressbaritemdelegate.cpp +) + +SET(libhistory_RCCS translations/translations.qrc) + +QT5_ADD_RESOURCES(libhistory_RCC_SRCS ${libhistory_RCCS}) + +# user interface +SET(libhistory_UIS + historysettingsdialog.ui + dateinputdialog.ui + historywindow.ui +) + +QT5_WRAP_UI(libhistory_UIS_H ${libhistory_UIS}) +# Don't forget to include output directory, otherwise +# the UI file won't be wrapped! +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + +ADD_LIBRARY(history MODULE ${libhistory_SRCS} ${libhistory_UIS_H} ${libhistory_RCC_SRCS}) +target_link_libraries(history Qt5::Widgets Qt5::Sql libqmmpui libqmmp) +install(TARGETS history DESTINATION ${PLUGIN_DIR}/General) diff --git a/src/plugins/General/history/dateinputdialog.cpp b/src/plugins/General/history/dateinputdialog.cpp new file mode 100644 index 000000000..81d23133f --- /dev/null +++ b/src/plugins/General/history/dateinputdialog.cpp @@ -0,0 +1,44 @@ +/*************************************************************************** + * Copyright (C) 2017 by Ilya Kotov * + * forkotov02@ya.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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "dateinputdialog.h" +#include "ui_dateinputdialog.h" + +DateInputDialog::DateInputDialog(QWidget *parent) : + QDialog(parent), + m_ui(new Ui::DateInputDialog) +{ + m_ui->setupUi(this); +} + +DateInputDialog::~DateInputDialog() +{ + delete m_ui; +} + +QDate DateInputDialog::selectedDate() const +{ + return m_ui->calendarWidget->selectedDate(); +} + +void DateInputDialog::setSelectedDate(const QDate &date) +{ + m_ui->calendarWidget->setSelectedDate(date); +} diff --git a/src/plugins/General/history/dateinputdialog.h b/src/plugins/General/history/dateinputdialog.h new file mode 100644 index 000000000..2259de255 --- /dev/null +++ b/src/plugins/General/history/dateinputdialog.h @@ -0,0 +1,46 @@ +/*************************************************************************** + * Copyright (C) 2017 by Ilya Kotov * + * forkotov02@ya.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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef DATEINPUTDIALOG_H +#define DATEINPUTDIALOG_H + +#include <QDialog> +#include <QDate> + +namespace Ui { +class DateInputDialog; +} + +class DateInputDialog : public QDialog +{ + Q_OBJECT + +public: + explicit DateInputDialog(QWidget *parent = 0); + ~DateInputDialog(); + + QDate selectedDate() const; + void setSelectedDate(const QDate &date); + +private: + Ui::DateInputDialog *m_ui; +}; + +#endif // DATEINPUTDIALOG_H diff --git a/src/plugins/General/history/dateinputdialog.ui b/src/plugins/General/history/dateinputdialog.ui new file mode 100644 index 000000000..504d24d39 --- /dev/null +++ b/src/plugins/General/history/dateinputdialog.ui @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>DateInputDialog</class> + <widget class="QDialog" name="DateInputDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>474</width> + <height>233</height> + </rect> + </property> + <property name="windowTitle"> + <string>Select Date</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <property name="leftMargin"> + <number>6</number> + </property> + <property name="rightMargin"> + <number>6</number> + </property> + <property name="bottomMargin"> + <number>6</number> + </property> + <item> + <widget class="QCalendarWidget" name="calendarWidget"/> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>DateInputDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>DateInputDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/src/plugins/General/history/history.cpp b/src/plugins/General/history/history.cpp new file mode 100644 index 000000000..25b4bf8fe --- /dev/null +++ b/src/plugins/General/history/history.cpp @@ -0,0 +1,163 @@ +/*************************************************************************** + * Copyright (C) 2017-2018 by Ilya Kotov * + * forkotov02@ya.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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include <QSqlDatabase> +#include <QSqlQuery> +#include <QSqlError> +#include <QVariant> +#include <QAction> +#include <QApplication> +#include <qmmpui/uihelper.h> +#include <qmmp/soundcore.h> +#include "historywindow.h" +#include "history.h" + +History::History(QObject *parent) : QObject(parent) +{ + m_core = SoundCore::instance(); + m_previousState = Qmmp::Stopped; + m_elapsed = 0; + connect(m_core, SIGNAL(trackInfoChanged()), SLOT(onTrackInfoChanged())); + connect(m_core, SIGNAL(stateChanged(Qmmp::State)), SLOT(onStateChanged(Qmmp::State))); + + QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", CONNECTION_NAME); + if(db.isValid() && !db.isOpen()) + { + db.setDatabaseName(Qmmp::configDir() + "/" + "history.sqlite"); + db.open(); + if(createTables()) + { + QSqlQuery query(db); + query.exec("PRAGMA journal_mode = WAL"); + query.exec("PRAGMA synchronous = NORMAL"); + qDebug("History: database initialization finished"); + } + else + { + db.close(); + qWarning("History: plugin is disabled"); + } + } + + QAction *action = new QAction(tr("History"), this); + action->setIcon(QIcon::fromTheme("text-x-generic")); + UiHelper::instance()->addAction(action, UiHelper::TOOLS_MENU); + connect(action, SIGNAL(triggered()), SLOT(showHistoryWindow())); +} + +History::~History() +{ + if(QSqlDatabase::contains(CONNECTION_NAME)) + { + QSqlDatabase::database(CONNECTION_NAME).close(); + QSqlDatabase::removeDatabase(CONNECTION_NAME); + } +} + +void History::onTrackInfoChanged() +{ + if(m_elapsed + m_time.elapsed() > 20000) + saveTrack(); + + m_trackInfo = m_core->trackInfo(); + m_time.restart(); + m_elapsed = 0; +} + +void History::onStateChanged(Qmmp::State state) +{ + if(state == Qmmp::Playing && m_previousState == Qmmp::Stopped) + { + m_time.restart(); + } + else if(state == Qmmp::Paused) + { + m_elapsed += m_time.elapsed(); + } + else if(state == Qmmp::Stopped) + { + if(m_previousState == Qmmp::Playing) + m_elapsed += m_time.elapsed(); + + if(m_elapsed > 20000) + saveTrack(); + m_elapsed = 0; + } + + m_previousState = state; +} + +void History::showHistoryWindow() +{ + if(!m_historyWindow) + m_historyWindow = new HistoryWindow(QSqlDatabase::database(CONNECTION_NAME), qApp->activeWindow()); + m_historyWindow->show(); + m_historyWindow->activateWindow(); +} + +bool History::createTables() +{ + QSqlDatabase db = QSqlDatabase::database(CONNECTION_NAME); + if(!db.isOpen()) + return false; + + QSqlQuery query(db); + bool ok = query.exec("CREATE TABLE IF NOT EXISTS track_history(ID INTEGER PRIMARY KEY AUTOINCREMENT," + "Timestamp TIMESTAMP NOT NULL," + "Title TEXT, Artist TEXT, AlbumArtist TEXT, Album TEXT, Comment TEXT, Genre TEXT, Composer TEXT," + "Year INTEGER, Track INTEGER, DiscNumer INTEGER, Duration INTEGER, URL BLOB)"); + + if(!ok) + qWarning("History: unable to create table, error: %s", qPrintable(query.lastError().text())); + + return ok; +} + +void History::saveTrack() +{ + QSqlDatabase db = QSqlDatabase::database(CONNECTION_NAME); + if(!db.isOpen() || m_trackInfo.isEmpty()) + return; + + QSqlQuery query(db); + query.prepare("INSERT INTO track_history VALUES(NULL, CURRENT_TIMESTAMP, :title, :artist, :albumartist, :album, :comment," + ":genre, :composer, :year, :track, :discnumber, :duration, :url);"); + query.bindValue(":title", m_trackInfo.value(Qmmp::TITLE)); + query.bindValue(":artist", m_trackInfo.value(Qmmp::ARTIST)); + query.bindValue(":albumartist", m_trackInfo.value(Qmmp::ALBUMARTIST)); + query.bindValue(":album", m_trackInfo.value(Qmmp::ALBUM)); + query.bindValue(":comment", m_trackInfo.value(Qmmp::COMMENT)); + query.bindValue(":genre", m_trackInfo.value(Qmmp::GENRE)); + query.bindValue(":composer", m_trackInfo.value(Qmmp::COMPOSER)); + query.bindValue(":year", m_trackInfo.value(Qmmp::YEAR)); + query.bindValue(":track", m_trackInfo.value(Qmmp::TRACK)); + query.bindValue(":discnumber", m_trackInfo.value(Qmmp::DISCNUMBER)); + query.bindValue(":duration", m_trackInfo.duration()); + query.bindValue(":url", m_trackInfo.path()); + bool ok = query.exec(); + + if(!ok) + qWarning("History: unable to save track, error: %s", qPrintable(query.lastError().text())); + else + qDebug("History: track '%s' has been added to history", + qPrintable(m_trackInfo.value(Qmmp::ARTIST) + " - " + m_trackInfo.value(Qmmp::TITLE))); + + m_trackInfo.clear(); +} diff --git a/src/plugins/General/history/history.h b/src/plugins/General/history/history.h new file mode 100644 index 000000000..07d65be0c --- /dev/null +++ b/src/plugins/General/history/history.h @@ -0,0 +1,60 @@ +/*************************************************************************** + * Copyright (C) 2017-2018 by Ilya Kotov * + * forkotov02@ya.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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef HISTORY_H +#define HISTORY_H + +#include <QObject> +#include <QTime> +#include <QPointer> +#include <qmmp/trackinfo.h> +#include <qmmp/qmmp.h> + +#define CONNECTION_NAME "qmmp_history" + +class SoundCore; +class HistoryWindow; + +class History : public QObject +{ + Q_OBJECT +public: + explicit History(QObject *parent = 0); + ~History(); + +private slots: + void onTrackInfoChanged(); + void onStateChanged(Qmmp::State state); + void showHistoryWindow(); + +private: + bool createTables(); + void saveTrack(); + + SoundCore *m_core; + TrackInfo m_trackInfo; + QTime m_time; + Qmmp::State m_previousState; + quint64 m_elapsed; + QPointer<HistoryWindow> m_historyWindow; + +}; + +#endif // HISTORY_H diff --git a/src/plugins/General/history/history.pro b/src/plugins/General/history/history.pro new file mode 100644 index 000000000..1de764ee4 --- /dev/null +++ b/src/plugins/General/history/history.pro @@ -0,0 +1,33 @@ +include(../../plugins.pri) + +TARGET = $$PLUGINS_PREFIX/General/history + +QT += sql + +HEADERS += historyfactory.h \ + history.h \ + historywindow.h \ + dateinputdialog.h \ + historysettingsdialog.h \ + progressbaritemdelegate.h + +SOURCES += historyfactory.cpp \ + history.cpp \ + historywindow.cpp \ + dateinputdialog.cpp \ + historysettingsdialog.cpp \ + progressbaritemdelegate.cpp + +FORMS += \ + historywindow.ui \ + dateinputdialog.ui \ + historysettingsdialog.ui + +RESOURCES = translations/translations.qrc + +LIBS += $$QMMPUI_LIB + +unix { + target.path = $$PLUGIN_DIR/General + INSTALLS += target +} diff --git a/src/plugins/General/history/historyfactory.cpp b/src/plugins/General/history/historyfactory.cpp new file mode 100644 index 000000000..ddd572de1 --- /dev/null +++ b/src/plugins/General/history/historyfactory.cpp @@ -0,0 +1,60 @@ +/*************************************************************************** + * Copyright (C) 2017 by Ilya Kotov * + * forkotov02@ya.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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include <QMessageBox> +#include <QtPlugin> +#include <qmmp/qmmp.h> +#include "history.h" +#include "historysettingsdialog.h" +#include "historyfactory.h" + +GeneralProperties HistoryFactory::properties() const +{ + GeneralProperties properties; + properties.name = tr("Listening History Plugin"); + properties.shortName = "history"; + properties.hasAbout = true; + properties.hasSettings = true; + properties.visibilityControl = false; + return properties; +} + +QObject *HistoryFactory::create(QObject *parent) +{ + return new History(parent); +} + +QDialog *HistoryFactory::createConfigDialog(QWidget *parent) +{ + return new HistorySettingsDialog(parent) ; +} + +void HistoryFactory::showAbout(QWidget *parent) +{ + QMessageBox::about (parent, tr("About Listening History Plugin"), + tr("Qmmp Listening History Plugin")+"\n"+ + tr("This plugin collects information about listened tracks")+"\n"+ + tr("Written by: Ilya Kotov <forkotov02@ya.ru>")); +} + +QString HistoryFactory::translation() const +{ + return QString(":/history_plugin_"); +} diff --git a/src/plugins/General/history/historyfactory.h b/src/plugins/General/history/historyfactory.h new file mode 100644 index 000000000..5a5e9ed77 --- /dev/null +++ b/src/plugins/General/history/historyfactory.h @@ -0,0 +1,44 @@ +/*************************************************************************** + * Copyright (C) 2017 by Ilya Kotov * + * forkotov02@ya.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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef HISTORYFACTORY_H +#define HISTORYFACTORY_H + +#include <QObject> +#include <QDialog> +#include <qmmpui/general.h> +#include <qmmpui/generalfactory.h> + +/** + @author Ilya Kotov <forkotov02@ya.ru> +*/ +class HistoryFactory : public QObject, public GeneralFactory +{ +Q_OBJECT +Q_PLUGIN_METADATA(IID "org.qmmp.qmmp.GeneralFactoryInterface.1.0") +Q_INTERFACES(GeneralFactory) +public: + GeneralProperties properties() const; + QObject *create(QObject *parent); + QDialog *createConfigDialog(QWidget *parent); + void showAbout(QWidget *parent); + QString translation() const; +}; + +#endif // HISTORYFACTORY_H diff --git a/src/plugins/General/history/historysettingsdialog.cpp b/src/plugins/General/history/historysettingsdialog.cpp new file mode 100644 index 000000000..3a4956c7d --- /dev/null +++ b/src/plugins/General/history/historysettingsdialog.cpp @@ -0,0 +1,56 @@ +/*************************************************************************** + * Copyright (C) 2017 by Ilya Kotov * + * forkotov02@ya.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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include <QSettings> +#include <qmmp/qmmp.h> +#include <qmmpui/metadataformattermenu.h> +#include "historysettingsdialog.h" +#include "ui_historysettingsdialog.h" + +HistorySettingsDialog::HistorySettingsDialog(QWidget *parent) : + QDialog(parent), + m_ui(new Ui::HistorySettingsDialog) +{ + m_ui->setupUi(this); + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + m_ui->titleLineEdit->setText(settings.value("History/title_format", "%if(%p,%p - %t,%t)").toString()); + + MetaDataFormatterMenu *menu = new MetaDataFormatterMenu(MetaDataFormatterMenu::TITLE_MENU, this); + m_ui->titleButton->setMenu(menu); + m_ui->titleButton->setPopupMode(QToolButton::InstantPopup); + connect(menu, SIGNAL(patternSelected(QString)), SLOT(addTitleString(QString))); +} + +HistorySettingsDialog::~HistorySettingsDialog() +{ + delete m_ui; +} + +void HistorySettingsDialog::accept() +{ + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.setValue("History/title_format", m_ui->titleLineEdit->text()); + QDialog::accept(); +} + +void HistorySettingsDialog::addTitleString(const QString &str) +{ + m_ui->titleLineEdit->insert(str); +} diff --git a/src/plugins/General/history/historysettingsdialog.h b/src/plugins/General/history/historysettingsdialog.h new file mode 100644 index 000000000..b21e03cd7 --- /dev/null +++ b/src/plugins/General/history/historysettingsdialog.h @@ -0,0 +1,48 @@ +/*************************************************************************** + * Copyright (C) 2017 by Ilya Kotov * + * forkotov02@ya.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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef HISTORYSETTINGSDIALOG_H +#define HISTORYSETTINGSDIALOG_H + +#include <QDialog> + +namespace Ui { +class HistorySettingsDialog; +} + +class HistorySettingsDialog : public QDialog +{ + Q_OBJECT + +public: + explicit HistorySettingsDialog(QWidget *parent = 0); + ~HistorySettingsDialog(); + +public slots: + void accept(); + +private slots: + void addTitleString(const QString &str); + +private: + Ui::HistorySettingsDialog *m_ui; +}; + +#endif // HISTORYSETTINGSDIALOG_H diff --git a/src/plugins/General/history/historysettingsdialog.ui b/src/plugins/General/history/historysettingsdialog.ui new file mode 100644 index 000000000..2c48b8d5e --- /dev/null +++ b/src/plugins/General/history/historysettingsdialog.ui @@ -0,0 +1,107 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>HistorySettingsDialog</class> + <widget class="QDialog" name="HistorySettingsDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>402</width> + <height>89</height> + </rect> + </property> + <property name="windowTitle"> + <string>Listening History Plugin Settings</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <property name="leftMargin"> + <number>6</number> + </property> + <property name="rightMargin"> + <number>6</number> + </property> + <property name="bottomMargin"> + <number>6</number> + </property> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>Title format:</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="titleLineEdit"/> + </item> + <item> + <widget class="QToolButton" name="titleButton"> + <property name="text"> + <string notr="true">...</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>HistorySettingsDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>HistorySettingsDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/src/plugins/General/history/historywindow.cpp b/src/plugins/General/history/historywindow.cpp new file mode 100644 index 000000000..e586da74d --- /dev/null +++ b/src/plugins/General/history/historywindow.cpp @@ -0,0 +1,416 @@ +/*************************************************************************** + * Copyright (C) 2017 by Ilya Kotov * + * forkotov02@ya.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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include <QStringList> +#include <QSqlQuery> +#include <QSqlError> +#include <QDateTime> +#include <QSettings> +#include <QProgressBar> +#include <QTreeWidgetItem> +#include <qmmp/qmmp.h> +#include "historywindow.h" +#include "dateinputdialog.h" +#include "progressbaritemdelegate.h" +#include "ui_historywindow.h" + +HistoryWindow::HistoryWindow(QSqlDatabase db, QWidget *parent) : + QWidget(parent), + m_ui(new Ui::HistoryWindow) +{ + m_ui->setupUi(this); + setWindowFlags(Qt::Window); + setAttribute(Qt::WA_DeleteOnClose); + setAttribute(Qt::WA_QuitOnClose, false); + m_db = db; + readSettings(); + + QDateTime t = QDateTime::currentDateTime(); + t.setTime(QTime(23, 59, 0 ,0)); + m_ui->toDateEdit->setDateTime(t); + t.setTime(QTime(0, 0, 0, 0)); + t = t.addDays(-7); + m_ui->fromDateEdit->setDateTime(t); + m_ui->distributionTreeWidget->setItemDelegate(new ProgressBarItemDelegate(this)); + m_ui->topArtistsTreeWidget->setItemDelegate(new ProgressBarItemDelegate(this)); + m_ui->topSongsTreeWidget->setItemDelegate(new ProgressBarItemDelegate(this)); + m_ui->topGenresTreeWidget->setItemDelegate(new ProgressBarItemDelegate(this)); + + on_executeButton_clicked(); +} + +HistoryWindow::~HistoryWindow() +{ + delete m_ui; +} + +void HistoryWindow::loadHistory() +{ + m_ui->historyTreeWidget->clear(); + + if(!m_db.isOpen()) + return; + + QSqlQuery query(m_db); + + query.prepare("SELECT Timestamp,Title,Artist,AlbumArtist,Album,Comment,Genre,Composer,Track,Year,Duration,URL " + "FROM track_history WHERE Timestamp BETWEEN :from and :to"); + query.bindValue(":from", m_ui->fromDateEdit->dateTime().toUTC().toString("yyyy-MM-dd hh:mm:ss")); + query.bindValue(":to", m_ui->toDateEdit->dateTime().toUTC().toString("yyyy-MM-dd hh:mm:ss")); + + if(!query.exec()) + { + qWarning("HistoryWindow: query error: %s", qPrintable(query.lastError().text())); + return; + } + + QColor bgColor = palette().color(QPalette::Highlight); + QColor textColor = palette().color(QPalette::HighlightedText); + + while (query.next()) + { + TrackInfo info; + info.setValue(Qmmp::TITLE, query.value(1).toString()); + info.setValue(Qmmp::ARTIST, query.value(2).toString()); + info.setValue(Qmmp::ALBUMARTIST, query.value(3).toString()); + info.setValue(Qmmp::ALBUM, query.value(4).toString()); + info.setValue(Qmmp::COMMENT, query.value(5).toString()); + info.setValue(Qmmp::GENRE, query.value(6).toString()); + info.setValue(Qmmp::COMPOSER, query.value(7).toString()); + info.setValue(Qmmp::TRACK, query.value(8).toString()); + info.setValue(Qmmp::YEAR, query.value(9).toString()); + info.setDuration(query.value(10).toInt()); + info.setPath(query.value(11).toString()); + + QDateTime dateTime = QDateTime::fromString(query.value(0).toString(), "yyyy-MM-dd hh:mm:ss"); + dateTime.setTimeSpec(Qt::UTC); + QString dateStr = dateTime.toLocalTime().toString(tr("dd MMMM yyyy")); + QString timeStr = dateTime.toLocalTime().toString(tr("hh:mm:ss")); + int topLevelCount = m_ui->historyTreeWidget->topLevelItemCount(); + + if(!topLevelCount) + { + m_ui->historyTreeWidget->addTopLevelItem(new QTreeWidgetItem()); + m_ui->historyTreeWidget->topLevelItem(topLevelCount++)->setText(0, dateStr); + m_ui->historyTreeWidget->topLevelItem(topLevelCount - 1)->setFirstColumnSpanned(true); + m_ui->historyTreeWidget->topLevelItem(topLevelCount - 1)->setTextAlignment(0, Qt::AlignCenter); + m_ui->historyTreeWidget->topLevelItem(topLevelCount - 1)->setBackgroundColor(0, bgColor); + m_ui->historyTreeWidget->topLevelItem(topLevelCount - 1)->setTextColor(0, textColor); + } + else if(m_ui->historyTreeWidget->topLevelItem(topLevelCount - 1)->text(0) != dateStr) + { + m_ui->historyTreeWidget->addTopLevelItem(new QTreeWidgetItem()); + m_ui->historyTreeWidget->topLevelItem(topLevelCount++)->setText(0, dateStr); + m_ui->historyTreeWidget->topLevelItem(topLevelCount - 1)->setFirstColumnSpanned(true); + m_ui->historyTreeWidget->topLevelItem(topLevelCount - 1)->setTextAlignment(0, Qt::AlignCenter); + m_ui->historyTreeWidget->topLevelItem(topLevelCount - 1)->setBackgroundColor(0, bgColor); + m_ui->historyTreeWidget->topLevelItem(topLevelCount - 1)->setTextColor(0, textColor); + } + + QTreeWidgetItem *topLevelItem = m_ui->historyTreeWidget->topLevelItem(topLevelCount - 1); + QTreeWidgetItem *item = new QTreeWidgetItem(); + item->setText(0, timeStr); + item->setText(1, m_formatter.format(info)); + topLevelItem->addChild(item); + } + + m_ui->historyTreeWidget->expandAll(); +} + +void HistoryWindow::loadDistribution() +{ + m_ui->distributionTreeWidget->clear(); + + if(!m_db.isOpen()) + return; + + QSqlQuery query(m_db); + + query.prepare("SELECT max(c) FROM( SELECT count(*) as c FROM track_history WHERE Timestamp BETWEEN :from and :to " + "GROUP BY date(Timestamp, 'localtime'))"); + query.bindValue(":from", m_ui->fromDateEdit->dateTime().toUTC().toString("yyyy-MM-dd hh:mm:ss")); + query.bindValue(":to", m_ui->toDateEdit->dateTime().toUTC().toString("yyyy-MM-dd hh:mm:ss")); + if(!query.exec()) + { + qWarning("HistoryWindow: query error: %s", qPrintable(query.lastError().text())); + return; + } + if(!query.next()) + { + qWarning("HistoryWindow: empty result"); + return; + } + int maxCount = query.value(0).toInt(); + query.finish(); + + query.prepare("SELECT count(*), date(Timestamp, 'localtime') FROM track_history WHERE Timestamp BETWEEN :from and :to " + "GROUP BY date(Timestamp, 'localtime')"); + query.bindValue(":from", m_ui->fromDateEdit->dateTime().toUTC().toString("yyyy-MM-dd hh:mm:ss")); + query.bindValue(":to", m_ui->toDateEdit->dateTime().toUTC().toString("yyyy-MM-dd hh:mm:ss")); + if(!query.exec()) + { + qWarning("HistoryWindow: query error: %s", qPrintable(query.lastError().text())); + return; + } + + QColor bgColor = palette().color(QPalette::Highlight); + QColor textColor = palette().color(QPalette::HighlightedText); + + while (query.next()) + { + QDate date = QDate::fromString(query.value(1).toString(), "yyyy-MM-dd"); + QString monthStr = date.toString(tr("MM-yyyy")); + QString dayStr = date.toString(tr("dd MMMM")); + int topLevelCount = m_ui->distributionTreeWidget->topLevelItemCount(); + + if(!topLevelCount) + { + m_ui->distributionTreeWidget->addTopLevelItem(new QTreeWidgetItem()); + m_ui->distributionTreeWidget->topLevelItem(topLevelCount++)->setText(0, monthStr); + m_ui->distributionTreeWidget->topLevelItem(topLevelCount - 1)->setFirstColumnSpanned(true); + m_ui->distributionTreeWidget->topLevelItem(topLevelCount - 1)->setTextAlignment(0, Qt::AlignCenter); + m_ui->distributionTreeWidget->topLevelItem(topLevelCount - 1)->setBackgroundColor(0, bgColor); + m_ui->distributionTreeWidget->topLevelItem(topLevelCount - 1)->setTextColor(0, textColor); + } + else if(m_ui->distributionTreeWidget->topLevelItem(topLevelCount - 1)->text(0) != monthStr) + { + m_ui->distributionTreeWidget->addTopLevelItem(new QTreeWidgetItem()); + m_ui->distributionTreeWidget->topLevelItem(topLevelCount++)->setText(0, monthStr); + m_ui->distributionTreeWidget->topLevelItem(topLevelCount - 1)->setFirstColumnSpanned(true); + m_ui->distributionTreeWidget->topLevelItem(topLevelCount - 1)->setTextAlignment(0, Qt::AlignCenter); + m_ui->distributionTreeWidget->topLevelItem(topLevelCount - 1)->setBackgroundColor(0, bgColor); + m_ui->distributionTreeWidget->topLevelItem(topLevelCount - 1)->setTextColor(0, textColor); + } + + QTreeWidgetItem *topLevelItem = m_ui->distributionTreeWidget->topLevelItem(topLevelCount - 1); + QTreeWidgetItem *item = new QTreeWidgetItem(); + item->setText(0, dayStr); + topLevelItem->addChild(item); + item->setData(1, ProgressBarRole, true); + item->setData(1, ProgressBarMaxRole, maxCount); + item->setData(1, ProgressBarValueRole, query.value(0).toInt()); + } + + m_ui->distributionTreeWidget->expandAll(); +} + +void HistoryWindow::loadTopSongs() +{ + m_ui->topSongsTreeWidget->clear(); + + if(!m_db.isOpen()) + return; + + QSqlQuery query(m_db); + + query.prepare("SELECT count(*) as c,Timestamp,Title,Artist,AlbumArtist,Album,Comment,Genre,Composer,Track,Year,Duration,URL " + "FROM track_history WHERE Timestamp BETWEEN :from and :to " + "GROUP BY Artist,Title ORDER BY c DESC LIMIT 100"); + query.bindValue(":from", m_ui->fromDateEdit->dateTime().toUTC().toString("yyyy-MM-dd hh:mm:ss")); + query.bindValue(":to", m_ui->toDateEdit->dateTime().toUTC().toString("yyyy-MM-dd hh:mm:ss")); + + if(!query.exec()) + { + qWarning("HistoryWindow: query error: %s", qPrintable(query.lastError().text())); + return; + } + + int maxCount = 0; + + while (query.next()) + { + TrackInfo info; + info.setValue(Qmmp::TITLE, query.value(2).toString()); + info.setValue(Qmmp::ARTIST, query.value(3).toString()); + info.setValue(Qmmp::ALBUMARTIST, query.value(4).toString()); + info.setValue(Qmmp::ALBUM, query.value(5).toString()); + info.setValue(Qmmp::COMMENT, query.value(6).toString()); + info.setValue(Qmmp::GENRE, query.value(7).toString()); + info.setValue(Qmmp::COMPOSER, query.value(8).toString()); + info.setValue(Qmmp::TRACK, query.value(9).toString()); + info.setValue(Qmmp::YEAR, query.value(10).toString()); + info.setDuration(query.value(11).toInt()); + info.setPath(query.value(12).toString()); + + QTreeWidgetItem *item = new QTreeWidgetItem(); + item->setText(0, m_formatter.format(info)); + + m_ui->topSongsTreeWidget->addTopLevelItem(item); + + if(!maxCount) + maxCount = query.value(0).toInt(); + + item->setData(1, ProgressBarRole, true); + item->setData(1, ProgressBarMaxRole, maxCount); + item->setData(1, ProgressBarValueRole, query.value(0).toInt()); + } +} + +void HistoryWindow::loadTopArtists() +{ + m_ui->topArtistsTreeWidget->clear(); + + if(!m_db.isOpen()) + return; + + QSqlQuery query(m_db); + + query.prepare("SELECT count(*) as c,Artist " + "FROM track_history WHERE (Timestamp BETWEEN :from and :to) AND Artist NOT NULL " + "GROUP BY Artist ORDER BY c DESC LIMIT 100"); + query.bindValue(":from", m_ui->fromDateEdit->dateTime().toUTC().toString("yyyy-MM-dd hh:mm:ss")); + query.bindValue(":to", m_ui->toDateEdit->dateTime().toUTC().toString("yyyy-MM-dd hh:mm:ss")); + + if(!query.exec()) + { + qWarning("HistoryWindow: query error: %s", qPrintable(query.lastError().text())); + return; + } + + int maxCount = 0; + + while (query.next()) + { + QTreeWidgetItem *item = new QTreeWidgetItem(); + item->setText(0, query.value(1).toString()); + + m_ui->topArtistsTreeWidget->addTopLevelItem(item); + + if(!maxCount) + maxCount = query.value(0).toInt(); + + item->setData(1, ProgressBarRole, true); + item->setData(1, ProgressBarMaxRole, maxCount); + item->setData(1, ProgressBarValueRole, query.value(0).toInt()); + } +} + +void HistoryWindow::loadTopGenres() +{ + m_ui->topGenresTreeWidget->clear(); + + if(!m_db.isOpen()) + return; + + QSqlQuery query(m_db); + + query.prepare("SELECT count(*) as c,Genre " + "FROM track_history WHERE (Timestamp BETWEEN :from and :to) AND Genre NOT NULL " + "GROUP BY Genre ORDER BY c DESC LIMIT 100"); + query.bindValue(":from", m_ui->fromDateEdit->dateTime().toUTC().toString("yyyy-MM-dd hh:mm:ss")); + query.bindValue(":to", m_ui->toDateEdit->dateTime().toUTC().toString("yyyy-MM-dd hh:mm:ss")); + + if(!query.exec()) + { + qWarning("HistoryWindow: query error: %s", qPrintable(query.lastError().text())); + return; + } + + int maxCount = 0; + + while (query.next()) + { + QTreeWidgetItem *item = new QTreeWidgetItem(); + item->setText(0, query.value(1).toString()); + + m_ui->topGenresTreeWidget->addTopLevelItem(item); + + if(!maxCount) + maxCount = query.value(0).toInt(); + + item->setData(1, ProgressBarRole, true); + item->setData(1, ProgressBarMaxRole, maxCount); + item->setData(1, ProgressBarValueRole, query.value(0).toInt()); + } +} + +void HistoryWindow::readSettings() +{ + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("History"); + restoreGeometry(settings.value("geometry").toByteArray()); + m_ui->historyTreeWidget->header()->restoreState(settings.value("history_state").toByteArray()); + m_ui->distributionTreeWidget->header()->restoreState(settings.value("distribution_state").toByteArray()); + m_ui->topSongsTreeWidget->header()->restoreState(settings.value("top_songs_state").toByteArray()); + m_ui->topArtistsTreeWidget->header()->restoreState(settings.value("top_artists_state").toByteArray()); + m_ui->topGenresTreeWidget->header()->restoreState(settings.value("top_genres_state").toByteArray()); + m_formatter.setPattern(settings.value("title_format", "%if(%p,%p - %t,%t)").toString()); + settings.endGroup(); +} + +void HistoryWindow::closeEvent(QCloseEvent *) +{ + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("History"); + settings.setValue("geometry", saveGeometry()); + settings.setValue("history_state", m_ui->historyTreeWidget->header()->saveState()); + settings.setValue("distribution_state", m_ui->distributionTreeWidget->header()->saveState()); + settings.setValue("top_songs_state", m_ui->topSongsTreeWidget->header()->saveState()); + settings.setValue("top_artists_state", m_ui->topArtistsTreeWidget->header()->saveState()); + settings.setValue("top_genres_state", m_ui->topGenresTreeWidget->header()->saveState()); + settings.endGroup(); +} + +void HistoryWindow::on_executeButton_clicked() +{ + loadHistory(); + loadDistribution(); + loadTopSongs(); + loadTopArtists(); + loadTopGenres(); +} + +void HistoryWindow::on_lastWeekButton_clicked() +{ + QDateTime t = QDateTime::currentDateTime(); + t.setTime(QTime(23, 59, 0 ,0)); + m_ui->toDateEdit->setDateTime(t); + t.setTime(QTime(0, 0, 0, 0)); + t = t.addDays(-t.date().dayOfWeek() + 1); + m_ui->fromDateEdit->setDateTime(t); + on_executeButton_clicked(); +} + +void HistoryWindow::on_lastMonthButton_clicked() +{ + QDateTime t = QDateTime::currentDateTime(); + t.setTime(QTime(23, 59, 0 ,0)); + m_ui->toDateEdit->setDateTime(t); + t.setTime(QTime(0, 0, 0, 0)); + t.setDate(QDate(t.date().year(), t.date().month(), 1)); ; + m_ui->fromDateEdit->setDateTime(t); + on_executeButton_clicked(); +} + +void HistoryWindow::on_fromButton_clicked() +{ + DateInputDialog d(this); + d.setSelectedDate(m_ui->fromDateEdit->date()); + if(d.exec() == QDialog::Accepted) + m_ui->fromDateEdit->setDate(d.selectedDate()); +} + +void HistoryWindow::on_toButton_clicked() +{ + DateInputDialog d(this); + d.setSelectedDate(m_ui->toDateEdit->date()); + if(d.exec() == QDialog::Accepted) + m_ui->toDateEdit->setDate(d.selectedDate()); +} diff --git a/src/plugins/General/history/historywindow.h b/src/plugins/General/history/historywindow.h new file mode 100644 index 000000000..754cbef8e --- /dev/null +++ b/src/plugins/General/history/historywindow.h @@ -0,0 +1,62 @@ +/*************************************************************************** + * Copyright (C) 2017 by Ilya Kotov * + * forkotov02@ya.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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef HISTORYWINDOW_H +#define HISTORYWINDOW_H + +#include <QWidget> +#include <QSqlDatabase> +#include <QListWidgetItem> +#include <QMap> +#include <qmmpui/metadataformatter.h> + +namespace Ui { +class HistoryWindow; +} + +class HistoryWindow : public QWidget +{ + Q_OBJECT +public: + explicit HistoryWindow(QSqlDatabase db, QWidget *parent = 0); + ~HistoryWindow(); + +private slots: + void on_executeButton_clicked(); + void on_lastWeekButton_clicked(); + void on_lastMonthButton_clicked(); + void on_fromButton_clicked(); + void on_toButton_clicked(); + +private: + void loadHistory(); + void loadDistribution(); + void loadTopSongs(); + void loadTopArtists(); + void loadTopGenres(); + void readSettings(); + void closeEvent(QCloseEvent *); + + Ui::HistoryWindow *m_ui; + QSqlDatabase m_db; + MetaDataFormatter m_formatter; +}; + +#endif // HISTORYWINDOW_H diff --git a/src/plugins/General/history/historywindow.ui b/src/plugins/General/history/historywindow.ui new file mode 100644 index 000000000..91e50ea36 --- /dev/null +++ b/src/plugins/General/history/historywindow.ui @@ -0,0 +1,279 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>HistoryWindow</class> + <widget class="QWidget" name="HistoryWindow"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>773</width> + <height>569</height> + </rect> + </property> + <property name="windowTitle"> + <string>History</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <property name="leftMargin"> + <number>6</number> + </property> + <property name="rightMargin"> + <number>6</number> + </property> + <property name="bottomMargin"> + <number>6</number> + </property> + <item row="0" column="0"> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>Time Range</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>From:</string> + </property> + </widget> + </item> + <item> + <widget class="QDateEdit" name="fromDateEdit"/> + </item> + <item> + <widget class="QToolButton" name="fromButton"> + <property name="text"> + <string notr="true">...</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>To:</string> + </property> + </widget> + </item> + <item> + <widget class="QDateEdit" name="toDateEdit"/> + </item> + <item> + <widget class="QToolButton" name="toButton"> + <property name="text"> + <string notr="true">...</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="lastWeekButton"> + <property name="text"> + <string>Last week</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="lastMonthButton"> + <property name="text"> + <string>Last month</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="executeButton"> + <property name="text"> + <string>Execute</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="0" column="1"> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>234</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="0" colspan="2"> + <widget class="QTabWidget" name="tabWidget"> + <property name="currentIndex"> + <number>0</number> + </property> + <widget class="QWidget" name="tab"> + <attribute name="title"> + <string>History</string> + </attribute> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QTreeWidget" name="historyTreeWidget"> + <property name="editTriggers"> + <set>QAbstractItemView::NoEditTriggers</set> + </property> + <property name="showDropIndicator" stdset="0"> + <bool>false</bool> + </property> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <property name="uniformRowHeights"> + <bool>true</bool> + </property> + <column> + <property name="text"> + <string>Time</string> + </property> + </column> + <column> + <property name="text"> + <string>Song</string> + </property> + </column> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="tab_2"> + <attribute name="title"> + <string>Distribution</string> + </attribute> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QTreeWidget" name="distributionTreeWidget"> + <property name="editTriggers"> + <set>QAbstractItemView::NoEditTriggers</set> + </property> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <column> + <property name="text"> + <string>Day</string> + </property> + </column> + <column> + <property name="text"> + <string>Play counts</string> + </property> + </column> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="tab_3"> + <attribute name="title"> + <string>Top Songs</string> + </attribute> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <widget class="QTreeWidget" name="topSongsTreeWidget"> + <property name="editTriggers"> + <set>QAbstractItemView::NoEditTriggers</set> + </property> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <column> + <property name="text"> + <string>Song</string> + </property> + </column> + <column> + <property name="text"> + <string>Play counts</string> + </property> + </column> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="tab_4"> + <attribute name="title"> + <string>Top Artists</string> + </attribute> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <item> + <widget class="QTreeWidget" name="topArtistsTreeWidget"> + <property name="editTriggers"> + <set>QAbstractItemView::NoEditTriggers</set> + </property> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <column> + <property name="text"> + <string>Artist</string> + </property> + </column> + <column> + <property name="text"> + <string>Play counts</string> + </property> + </column> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="tab_5"> + <attribute name="title"> + <string>Top Genres</string> + </attribute> + <layout class="QVBoxLayout" name="verticalLayout_5"> + <item> + <widget class="QTreeWidget" name="topGenresTreeWidget"> + <property name="editTriggers"> + <set>QAbstractItemView::NoEditTriggers</set> + </property> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <column> + <property name="text"> + <string>Genre</string> + </property> + </column> + <column> + <property name="text"> + <string>Play counts</string> + </property> + </column> + </widget> + </item> + </layout> + </widget> + </widget> + </item> + <item row="2" column="0" colspan="2"> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="standardButtons"> + <set>QDialogButtonBox::Close</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>HistoryWindow</receiver> + <slot>close()</slot> + <hints> + <hint type="sourcelabel"> + <x>691</x> + <y>496</y> + </hint> + <hint type="destinationlabel"> + <x>750</x> + <y>516</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/src/plugins/General/history/progressbaritemdelegate.cpp b/src/plugins/General/history/progressbaritemdelegate.cpp new file mode 100644 index 000000000..51841bcd9 --- /dev/null +++ b/src/plugins/General/history/progressbaritemdelegate.cpp @@ -0,0 +1,71 @@ +/*************************************************************************** + * Copyright (C) 2017 by Ilya Kotov * + * forkotov02@ya.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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include <QApplication> +#include <QMouseEvent> +#include "progressbaritemdelegate.h" + +ProgressBarItemDelegate::ProgressBarItemDelegate(QObject *parent) : QStyledItemDelegate(parent) +{ +} + +void ProgressBarItemDelegate::paint(QPainter *painter, + const QStyleOptionViewItem &option, + const QModelIndex &index) const +{ + if (hasProgressBar(index)) + { + QStyleOptionViewItem opt = option; + + initStyleOption(&opt, index); + + QStyleOptionProgressBar progressBarOption; + progressBarOption.rect = option.rect; + progressBarOption.invertedAppearance = false; + progressBarOption.bottomToTop = false; + progressBarOption.text = index.data(ProgressBarValueRole).toString(); + progressBarOption.minimum = 0; + progressBarOption.maximum = index.data(ProgressBarMaxRole).toInt(); + progressBarOption.progress = index.data(ProgressBarValueRole).toInt(); + progressBarOption.textVisible = true; + progressBarOption.palette = opt.palette; + qApp->style()->drawControl(QStyle::CE_ProgressBar, &progressBarOption, painter); + } + else + { + QStyledItemDelegate::paint(painter, option, index); + } +} + +QSize ProgressBarItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const +{ + QSize size = QStyledItemDelegate::sizeHint(option, index); + if (hasProgressBar(index)) + { + int buttonHeight = qApp->style()->pixelMetric(QStyle::PM_ExclusiveIndicatorHeight, &option); + size.setHeight(qMax(size.height(), buttonHeight)); + } + return size; +} + +bool ProgressBarItemDelegate::hasProgressBar(const QModelIndex &index) const +{ + return index.data(ProgressBarRole).toBool(); +} diff --git a/src/plugins/General/history/progressbaritemdelegate.h b/src/plugins/General/history/progressbaritemdelegate.h new file mode 100644 index 000000000..9e8cf8e50 --- /dev/null +++ b/src/plugins/General/history/progressbaritemdelegate.h @@ -0,0 +1,45 @@ +/*************************************************************************** + * Copyright (C) 2017 by Ilya Kotov * + * forkotov02@ya.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., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef PROGRESSBARITEMDELEGATE_H +#define PROGRESSBARITEMDELEGATE_H + +#include <QStyledItemDelegate> +#include <QSize> + +#define ProgressBarRole (Qt::UserRole + 1) +#define ProgressBarValueRole (Qt::UserRole + 2) +#define ProgressBarMaxRole (Qt::UserRole + 3) + +/*! + * @author Ilya Kotov <forkotov02@ya.ru> + */ +class ProgressBarItemDelegate : public QStyledItemDelegate +{ + Q_OBJECT +public: + explicit ProgressBarItemDelegate(QObject *parent = 0); + + void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; + QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; + bool hasProgressBar(const QModelIndex &index) const; +}; + +#endif // PROGRESSBARITEMDELEGATE_H diff --git a/src/plugins/General/history/translations/history_plugin_bg.ts b/src/plugins/General/history/translations/history_plugin_bg.ts new file mode 100644 index 000000000..51dd59b77 --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_bg.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="bg_BG"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_cs.ts b/src/plugins/General/history/translations/history_plugin_cs.ts new file mode 100644 index 000000000..fd475d6e0 --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_cs.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="cs"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation>Formát titulku:</translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation>Umělec</translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation>Žánr</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_de.ts b/src/plugins/General/history/translations/history_plugin_de.ts new file mode 100644 index 000000000..7d5a78c27 --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_de.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="de"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation>Datum auswählen</translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation>Chronik</translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation>Geschrieben von: Ilya Kotov <forkotov02@ya.ru></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation>Titelformat:</translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation>Chronik</translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation>Zeitspanne</translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation>Von:</translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation>Bis:</translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation>Letzte Woche</translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation>Letzter Monat</translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation>Ausführen</translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation>Zeit</translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation>Song</translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation>Distribution</translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation>Tag</translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation>Interpret</translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation>Genre</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation>tt MMMM jjjj</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation>hh:mm:ss</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation>MM-jjjj</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation>tt MMMM</translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_el.ts b/src/plugins/General/history/translations/history_plugin_el.ts new file mode 100644 index 000000000..d026207fe --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_el.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="el"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation>Επιλογή ημερομηνίας</translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation>Ιστορικό</translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation>Πρόσθετο ιστορικού ακρόασης</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation>Περί του πρόσθετου ιστορικού ακρόασης</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation>Qmmp πρόσθετο ιστορικού ακρόασης</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation>Αυτό το πρόσθετο συλλέγει πληροφορίες σχετικά με τα εκτελεσμένα κομμάτια</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation>Γράφτηκε από τον: Ilya Kotov <forkotov02@ya.ru></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation>Ρυθμίσεις πρόσθετου ιστορικού ακρόασης</translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation>Μορφή τίτλου:</translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation>Ιστορικό</translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation>Χρονικό διάστημα</translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation>Από:</translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation>Προς:</translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation>Περασμένη εβδομάδα</translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation>Προηγούμενος μήνας</translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation>Εκτέλεση</translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation>Ώρα</translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation>Τραγούδι</translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation>Διανομή</translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation>Ημέρα</translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation>Πλήθος εκτελέσεων</translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation>Κορυφαία τραγούδια</translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation>Κορυφαίοι καλλιτέχνες</translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation>Καλλιτέχνης</translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation>Κορυφαία είδη</translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation>Είδος</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation>dd MMMM yyyy</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation>hh:mm:ss</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation>MM-yyyy</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation>dd MMMM</translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_en.ts b/src/plugins/General/history/translations/history_plugin_en.ts new file mode 100644 index 000000000..57eb45767 --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_en.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="en_US"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_es.ts b/src/plugins/General/history/translations/history_plugin_es.ts new file mode 100644 index 000000000..91b315a1e --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_es.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="es"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation>Fecha selecionada</translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation>Historial</translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation>Módulo de Historia de Escucha</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation>Acerca del Módulo de Historia de Escucha</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation>Módulo de Historia de Escucha de Qmmp</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation>Este módulo colecta información acerca de las pistas escuchadas</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation>Escrito por: Ilya Kotov <forkotov02@ya.ru></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation>Configuración del Módulo de Historia de Escucha</translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation>Formato del título: </translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation>Historial</translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation>Rango de Tiempo</translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation>De:</translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation>Hasta:</translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation>Semana pasada</translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation>Mes pasado</translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation>Ejecutar</translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation>Tiempo</translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation>Canción</translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation>Distribución</translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation>Día</translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation>Conteo de reproducciones</translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation>Canciones más escuchadas</translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation>Intérpretes más escuchados</translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation>Intérprete</translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation>Géneros más escuchados</translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation>Género</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation>dd MMMM yyyy</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation>hh:mm:ss</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation>MM-aaaa</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation>dd MMMM</translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_fi.ts b/src/plugins/General/history/translations/history_plugin_fi.ts new file mode 100644 index 000000000..007eb6f66 --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_fi.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="fi"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation>Valitse päivä</translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation>Historia</translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation>Kuunteluhistorialiitännäinen</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation>Tämä liitännäinen kerää tietoja kuunnelluista kappaleista</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation>Toteuttanut: Ilya Kotov <forkotov02@ya.ru></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation>Kuunteluhistorialiitännäisen asetukset</translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation>Historia</translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation>Aikajana</translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation>Alkaa:</translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation>Päättyy:</translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation>Viime viikko</translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation>Viime kuukausi</translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation>Päivä</translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation>Toistokerrat</translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation>Suosituimmat kappaleet</translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation>Suosituimmat artistit</translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation>Artisti</translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation>Suosituimmat tyylilajit</translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation>Tyylilaji</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation>hh:mm:ss</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_fr.ts b/src/plugins/General/history/translations/history_plugin_fr.ts new file mode 100644 index 000000000..58e363f81 --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_fr.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="fr"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation>Sélectionner une date</translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation>Historique</translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation>Greffon d'Historique d'écoute</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation>À propos du greffon Historique d'écoute</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation>Greffon d'Historique d'écoute Qmmp</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation>Ce greffon collecte des données concernant les pistes écoutées</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation>Écrit par : Ilya Kotov <forkotov02@ya.ru></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation>Paramètres du greffon d'Historique d'écoute</translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation>Format du titre:</translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation>Historique</translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation>Intervalle de temps</translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation>Provient:</translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation>Vers:</translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation>Le mois dernier</translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation>Exécuter </translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation>Temps</translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation>Musique</translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation>DIstribution</translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation>Jour</translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation>Nombre d'écoutes</translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation>Musique les plus écoutées</translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation>Artistes les plus écoutés</translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation>Artiste</translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation>Genres les plus écoutés</translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation>Genre</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation>jj MMMM aaaa</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation>hh:mm:ss</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation>MM-aaaa</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation>jj MMMM</translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_gl_ES.ts b/src/plugins/General/history/translations/history_plugin_gl_ES.ts new file mode 100644 index 000000000..f98a99160 --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_gl_ES.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="gl_ES"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation>Data seleccionada</translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation>Historial</translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation>Plugin Listening History</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation>Acerca do plugin Listening History</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation>Plugin Qmmp Listening History</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation>Este plugin recopila información sobre as cancións escoitadas</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation>Configuracións do plugin Listening History</translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation>Formato de título:</translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation>Historial</translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation>Rango de tempo</translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation>Dende:</translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation>Ata:</translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation>Última semán</translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation>Último mes</translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation>Executar</translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation>Tempo</translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation>Canción</translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation>Distribución</translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation>Día</translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation>Contador de reproduccións</translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation>Cancións populares</translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation>Artistas populares</translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation>Artista</translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation>Xéneros populares</translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation>Xénero</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation>dd MMMM yyyy</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation>hh:mm:ss</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation>MM-yyyy</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation>dd MMMM</translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_he.ts b/src/plugins/General/history/translations/history_plugin_he.ts new file mode 100644 index 000000000..62c2e9b4c --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_he.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="he"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation>בחר תאריך</translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation>היסטוריה</translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation>פורמט כותרת:</translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation>היסטוריה</translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation>אמן</translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation>ז׳אנר</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_hu.ts b/src/plugins/General/history/translations/history_plugin_hu.ts new file mode 100644 index 000000000..dd8c65c17 --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_hu.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="hu_HU"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_id.ts b/src/plugins/General/history/translations/history_plugin_id.ts new file mode 100644 index 000000000..aabac4df6 --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_id.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="id_ID"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_it.ts b/src/plugins/General/history/translations/history_plugin_it.ts new file mode 100644 index 000000000..ec26c6d20 --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_it.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="it_IT"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_ja.ts b/src/plugins/General/history/translations/history_plugin_ja.ts new file mode 100644 index 000000000..255b02aa2 --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_ja.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="ja_JP"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation>日時選択</translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation>履歴</translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation>視聴履歴プラグイン</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation>視聴履歴プラグインについて</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation>QMMP 視聴履歴プラグイン</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation>このプラグインは視聴したトラックの情報を収集します</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation>制作: Илья Котов (Ilya Kotov) <forkotov02@ya.ru></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation>視聴プラグインの設定</translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation>表題の書式:</translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation>履歴</translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation>期間</translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation>自:</translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation>至:</translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation>先週</translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation>先月</translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation>抽出</translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation>時刻</translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation>演目</translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation>普及</translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation>日付</translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation>配信回数</translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation>上位の演目</translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation>上位のアーティスト</translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation>アーティスト</translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation>上位のジャンル</translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation>ジャンル</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation>yyyy年MM月dd日</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation>hh:mm:ss</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation>yyyy年MM月</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation>MM月dd日</translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_kk.ts b/src/plugins/General/history/translations/history_plugin_kk.ts new file mode 100644 index 000000000..4741908e5 --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_kk.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="kk_KZ"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_lt.ts b/src/plugins/General/history/translations/history_plugin_lt.ts new file mode 100644 index 000000000..54ceb119a --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_lt.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="lt_LT"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_nl.ts b/src/plugins/General/history/translations/history_plugin_nl.ts new file mode 100644 index 000000000..29f2c251b --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_nl.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="nl_NL"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_pl_PL.ts b/src/plugins/General/history/translations/history_plugin_pl_PL.ts new file mode 100644 index 000000000..3505f834f --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_pl_PL.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="pl_PL"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation>Format tytułu:</translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation>Artysta</translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation>Gatunek</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_pt.ts b/src/plugins/General/history/translations/history_plugin_pt.ts new file mode 100644 index 000000000..92531495a --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_pt.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="pt"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation>Selecionar data</translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation>Histórico</translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation>Suplemento Listening History</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation>Sobre o suplemento Listening History</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation>Suplemento Listening History</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation>Este suplemento recolhe informações sobre as faixas reproduzidas</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation>Desenvolvido por: Ilya Kotov <forkotov02@ya.ru></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation>Definições</translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation>Formato do título:</translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation>Histórico</translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation>Intervalo de tempo</translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation>Desde:</translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation>Até:</translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation>Última semana</translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation>Último mês</translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation>Executar</translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation>Tempo</translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation>Faixa</translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation>Distribuição</translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation>Dia</translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation>Reproduções</translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation>Faixas mais ouvidas</translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation>Artistas mais ouvidos</translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation>Artista</translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation>Géneros mais ouvidos</translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation>Género</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation>dd MMMM yyyy</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation>hh:mm:ss</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation>MM-yyyy</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation>dd MMMM</translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_pt_BR.ts b/src/plugins/General/history/translations/history_plugin_pt_BR.ts new file mode 100644 index 000000000..e60fdf9cf --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_pt_BR.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="pt_BR"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation>Formato dos títulos:</translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation>Artista</translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation>Gênero</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_ru.ts b/src/plugins/General/history/translations/history_plugin_ru.ts new file mode 100644 index 000000000..6ddadf2c5 --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_ru.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="ru"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation>Выберите дату</translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation>Журнал</translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation>Модуль журнала</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation>О модуле журнала прослушиваний</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation>Модуль журнала прослушиваний для Qmmp</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation>Данный модуль собирает информацию о прослушенных треках</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation>Разработчик: Илья Котов <forkotov02@ya.ru></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation>Настройки модуля журнала</translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation>Формат названия:</translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation>Журнал</translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation>Диапазон времени</translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation>От:</translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation>До:</translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation>Последняя неделя</translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation>Последний месяц</translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation>Выполнить</translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation>Время</translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation>Композиция</translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation>Распределение</translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation>День</translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation>Число проигрываний</translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation>Лучшие композиции</translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation>Лучшие исполнители</translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation>Исполнитель</translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation>Лучшие жанры</translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation>Жанр</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation>dd MMMM yyyy</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation>hh:mm:ss</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation>MM-yyyy</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation>dd MMMM</translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_sk.ts b/src/plugins/General/history/translations/history_plugin_sk.ts new file mode 100644 index 000000000..a47a71991 --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_sk.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="sk_SK"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_sr_BA.ts b/src/plugins/General/history/translations/history_plugin_sr_BA.ts new file mode 100644 index 000000000..89e89940c --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_sr_BA.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="sr_BA"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_sr_RS.ts b/src/plugins/General/history/translations/history_plugin_sr_RS.ts new file mode 100644 index 000000000..2af239747 --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_sr_RS.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="sr_RS"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_tr.ts b/src/plugins/General/history/translations/history_plugin_tr.ts new file mode 100644 index 000000000..4f6771fc5 --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_tr.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="tr_TR"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_uk_UA.ts b/src/plugins/General/history/translations/history_plugin_uk_UA.ts new file mode 100644 index 000000000..8432dca54 --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_uk_UA.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="uk"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation>Виберіть дату</translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation>Журнал</translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation>Модуль журнала</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation>Про модуль журнала прослуховування</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation>Модуль журнала прослуховування для Qmmp</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation>Цей модуль збирає інформацію про прослухані треки</translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation>Розробник: Ілля Котов <forkotov02@ya.ru></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation>Налаштування модуля журнала</translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation>Формат назви:</translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation>Журнал</translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation>Проміжок часу</translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation>Від:</translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation>До:</translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation>Крайній тиждень</translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation>Крайній місяць</translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation>Виконати</translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation>Час</translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation>Композиція</translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation>Видавництво</translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation>День</translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation>Число відтворень</translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation>Кращі композиції</translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation>Кращі виконавці</translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation>Виконавець</translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation>Кращі жанри</translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation>Жанр</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation></translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_zh_CN.ts b/src/plugins/General/history/translations/history_plugin_zh_CN.ts new file mode 100644 index 000000000..aff71d714 --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_zh_CN.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="zh_CN"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation>标题格式:</translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation>艺术家</translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation>风格</translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/history_plugin_zh_TW.ts b/src/plugins/General/history/translations/history_plugin_zh_TW.ts new file mode 100644 index 000000000..e208105d3 --- /dev/null +++ b/src/plugins/General/history/translations/history_plugin_zh_TW.ts @@ -0,0 +1,174 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="zh_TW"> +<context> + <name>DateInputDialog</name> + <message> + <location filename="../dateinputdialog.ui" line="14"/> + <source>Select Date</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>History</name> + <message> + <location filename="../history.cpp" line="59"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryFactory</name> + <message> + <location filename="../historyfactory.cpp" line="31"/> + <source>Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="51"/> + <source>About Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="52"/> + <source>Qmmp Listening History Plugin</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="53"/> + <source>This plugin collects information about listened tracks</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historyfactory.cpp" line="54"/> + <source>Written by: Ilya Kotov <forkotov02@ya.ru></source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistorySettingsDialog</name> + <message> + <location filename="../historysettingsdialog.ui" line="14"/> + <source>Listening History Plugin Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historysettingsdialog.ui" line="31"/> + <source>Title format:</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>HistoryWindow</name> + <message> + <location filename="../historywindow.ui" line="14"/> + <location filename="../historywindow.ui" line="110"/> + <source>History</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="29"/> + <source>Time Range</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="35"/> + <source>From:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="52"/> + <source>To:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="69"/> + <source>Last week</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="76"/> + <source>Last month</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="83"/> + <source>Execute</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="129"/> + <source>Time</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="134"/> + <location filename="../historywindow.ui" line="183"/> + <source>Song</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="143"/> + <source>Distribution</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="156"/> + <source>Day</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="161"/> + <location filename="../historywindow.ui" line="188"/> + <location filename="../historywindow.ui" line="215"/> + <location filename="../historywindow.ui" line="242"/> + <source>Play counts</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="170"/> + <source>Top Songs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="197"/> + <source>Top Artists</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="210"/> + <source>Artist</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="224"/> + <source>Top Genres</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.ui" line="237"/> + <source>Genre</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="104"/> + <source>dd MMMM yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="105"/> + <source>hh:mm:ss</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="179"/> + <source>MM-yyyy</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../historywindow.cpp" line="180"/> + <source>dd MMMM</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/src/plugins/General/history/translations/translations.qrc b/src/plugins/General/history/translations/translations.qrc new file mode 100644 index 000000000..4dc7ffdb9 --- /dev/null +++ b/src/plugins/General/history/translations/translations.qrc @@ -0,0 +1,32 @@ +<!DOCTYPE RCC> +<RCC version="1.0"> + <qresource> + <file>history_plugin_ru.qm</file> + <file>history_plugin_uk_UA.qm</file> + <file>history_plugin_zh_CN.qm</file> + <file>history_plugin_zh_TW.qm</file> + <file>history_plugin_tr.qm</file> + <file>history_plugin_cs.qm</file> + <file>history_plugin_pt_BR.qm</file> + <file>history_plugin_pt.qm</file> + <file>history_plugin_de.qm</file> + <file>history_plugin_pl_PL.qm</file> + <file>history_plugin_fr.qm</file> + <file>history_plugin_it.qm</file> + <file>history_plugin_kk.qm</file> + <file>history_plugin_lt.qm</file> + <file>history_plugin_hu.qm</file> + <file>history_plugin_nl.qm</file> + <file>history_plugin_ja.qm</file> + <file>history_plugin_sk.qm</file> + <file>history_plugin_es.qm</file> + <file>history_plugin_he.qm</file> + <file>history_plugin_gl_ES.qm</file> + <file>history_plugin_sr_BA.qm</file> + <file>history_plugin_sr_RS.qm</file> + <file>history_plugin_bg.qm</file> + <file>history_plugin_el.qm</file> + <file>history_plugin_id.qm</file> + <file>history_plugin_fi.qm</file> + </qresource> +</RCC> |
