/************************************************************************** * Copyright (C) 2006-2021 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 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "general.h" #include "generalfactory.h" #include "aboutdialog_p.h" AboutDialog::AboutDialog(QWidget* parent) : QDialog(parent) { setupUi(this); setAttribute(Qt::WA_QuitOnClose, false); licenseTextBrowser->setPlainText(getStringFromResource(":COPYING")); aboutTextBrowser->setHtml(loadAbout()); authorsTextBrowser->setPlainText(getStringFromResource(":authors")); thanksToTextBrowser->setPlainText(getStringFromResource(":thanks")); translatorsTextBrowser->setPlainText(getStringFromResource(":translators")); } AboutDialog::~AboutDialog() {} /*$SPECIALIZATION$*/ QString AboutDialog::loadAbout() { QString text; text.append(""); text.append(""); text.append(""); if(layoutDirection() == Qt::RightToLeft) text.append("
"); else text.append("
"); text.append("

"+tr("Qt-based Multimedia Player (Qmmp)")+"

"); text.append("

"+getStringFromResource(":description")+"

"); text.append("

"+tr("Version: %1").arg(Qmmp::strVersion()) + "
"); text.append(tr("Using Qt %1 (compiled with Qt %2)" ).arg(qVersion()).arg(QT_VERSION_STR) + "

"); text.append("

"); text.append(tr("(c) %1-%2 Qmmp Development Team").arg(2006).arg(2021)+"
"); text.append("https://qmmp.ylsoftware.com/
"); text.append("https://sourceforge.net/projects/qmmp-dev/"); text.append("

"); text.append("
"+tr("Transports:")+"
"); text.append("
    "); for(const InputSourceFactory *fact : InputSource::factories()) { text.append("
  • "); text.append(fact->properties().name); text.append("
  • "); } text.append("
"); text.append("
"+tr("Decoders:")+"
"); text.append("
    "); for(const DecoderFactory *fact : Decoder::factories()) { text.append("
  • "); text.append(fact->properties().name); text.append("
  • "); } text.append("
"); if(!AbstractEngine::factories().isEmpty()) { text.append("
"+tr("Engines:")+"
"); text.append("
    "); for(const EngineFactory *fact : AbstractEngine::factories()) { text.append("
  • "); text.append(fact->properties().name); text.append("
  • "); } text.append("
"); } text.append("
"+tr("Effects:")+"
"); text.append("
    "); for(const EffectFactory *fact : Effect::factories()) { text.append("
  • "); text.append(fact->properties().name); text.append("
  • "); } text.append("
"); text.append("
"+tr("Visual plugins:")+"
"); text.append("
    "); for(const VisualFactory *fact : Visual::factories()) { text.append("
  • "); text.append(fact->properties().name); text.append("
  • "); } text.append("
"); text.append("
"+tr("General plugins:")+"
"); text.append("
    "); for(const GeneralFactory *fact : General::factories()) { text.append("
  • "); text.append(fact->properties().name); text.append("
  • "); } text.append("
"); text.append("
"+tr("Output plugins:")+"
"); text.append("
    "); for(const OutputFactory *fact : Output::factories()) { text.append("
  • "); text.append(fact->properties().name); text.append("
  • "); } text.append("
"); if(!FileDialog::factories().isEmpty()) { text.append("
"+tr("File dialogs:")+"
"); text.append("
    "); for(const FileDialogFactory *fact : FileDialog::factories()) { text.append("
  • "); text.append(fact->properties().name); text.append("
  • "); } text.append("
"); } if(!UiLoader::factories().isEmpty()) { text.append("
"+tr("User interfaces:")+"
"); text.append("
    "); for(const UiFactory *fact :UiLoader::factories()) { text.append("
  • "); text.append(fact->properties().name); text.append("
  • "); } text.append("
"); } text.append("
"); return text; } QString AboutDialog::getStringFromResource(const QString &res_file) { QString ret_string; QStringList paths; paths << res_file + "_" + Qmmp::systemLanguageID() + ".txt"; if(Qmmp::systemLanguageID().contains(".")) paths << res_file + "_" + Qmmp::systemLanguageID().split(".").at(0) + ".txt"; if(Qmmp::systemLanguageID().contains("_")) paths << res_file + "_" + Qmmp::systemLanguageID().split("_").at(0) + ".txt"; paths << res_file + ".txt"; paths << res_file; for(const QString &path : qAsConst(paths)) { QFile file(path); if (file.open(QIODevice::ReadOnly)) { QTextStream ts(&file); ts.setCodec("UTF-8"); ret_string = ts.readAll(); file.close(); return ret_string; } } return ret_string; }