From 8ce80faef0e327a3e0efe1e0677c912babc96870 Mon Sep 17 00:00:00 2001 From: Ivan Pelipenko Date: Sat, 25 Apr 2020 12:40:56 +0300 Subject: [PATCH] Git AUTHORS.txt support --- AUTHORS.txt | 1 + pip | 2 +- qad/application/aboutwindow.cpp | 59 +++++++++++++++++++++++++-------- 3 files changed, 47 insertions(+), 15 deletions(-) diff --git a/AUTHORS.txt b/AUTHORS.txt index 7dd5dfb..7c122fa 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -1,2 +1,3 @@ peri4 = Пелипенко Иван andrey = Бычков Андрей +gavrikov = Гавриков Михаил <> diff --git a/pip b/pip index 430483c..eccf1d2 160000 --- a/pip +++ b/pip @@ -1 +1 @@ -Subproject commit 430483cb559e96e4d258f48de7cdfef7c3177588 +Subproject commit eccf1d2c7bdbb91a6749674d4f218562a3c18d87 diff --git a/qad/application/aboutwindow.cpp b/qad/application/aboutwindow.cpp index b5366a4..5e644be 100644 --- a/qad/application/aboutwindow.cpp +++ b/qad/application/aboutwindow.cpp @@ -1,6 +1,7 @@ #include "aboutwindow.h" #include "ui_aboutwindow.h" #include "qad_types.h" +#include "qpiconfig.h" #include #include #if QT_VERSION < 0x050000 @@ -164,21 +165,51 @@ void AboutWindow::changeEvent(QEvent *e) { } +void addAuthor(QString & ret, const QString & name, const QString & mail) { + ret += QString("

%1 (%2)

").arg(name, mail, QApplication::applicationName()); +} QString AboutWindow::authors() { - QFile f(":/authors.txt"); - if (!f.open(QIODevice::ReadOnly)) return QString(); - QString ret; - QTextStream ts(&f); - ts.readLine(); - QStringList sl; - while (!ts.atEnd()) { - QString l = ts.readLine(); - if (l.isEmpty()) continue; - QString name, mail; - sl = l.split(";"); - if (sl.size() > 0) name = sl[0].trimmed(); - if (sl.size() > 1) mail = sl[1].trimmed(); - ret += QString("

%1 (%2)

").arg(name, mail, QApplication::applicationName()); + QString ret, fc; + if (QFile::exists(":/authors.txt")) { + QFile f(":/authors.txt"); + f.open(QIODevice::ReadOnly); + fc = QString::fromUtf8(f.readAll()); + } else { + if (QFile::exists(":/AUTHORS.txt")) { + QFile f(":/AUTHORS.txt"); + f.open(QIODevice::ReadOnly); + fc = QString::fromUtf8(f.readAll()); + } + } + QTextStream ts(&fc, QIODevice::ReadOnly); + QString l = ts.readLine(); + if (l.contains(";")) { + QStringList sl; + while (!ts.atEnd()) { + l = ts.readLine(); + if (l.isEmpty()) continue; + QString name, mail; + sl = l.split(";"); + if (sl.size() > 0) name = sl[0].trimmed(); + if (sl.size() > 1) mail = sl[1].trimmed(); + addAuthor(ret, name, mail); + } + return ret; + } else { + QPIConfig conf(&fc); + QPIConfig::Branch br = conf.allLeaves(); + foreach (QPIConfig::Entry * e, br) { + l = e->toString().trimmed(); + if (!l.contains("<")) continue; + QString name, mail; + name = l.left(l.indexOf("<")); + mail = l.mid(name.size() + 1); + if (mail.endsWith(">")) + mail.chop(1); + name = name.trimmed(); + mail = mail.trimmed(); + addAuthor(ret, name, mail); + } } return ret; }