mirror of
https://github.com/altlinux/ALTMediaWriter.git
synced 2024-10-26 08:55:03 +03:00
make separate source for image type
rename to image type
This commit is contained in:
parent
b4f25d06a0
commit
37a0ee2ba9
@ -22,7 +22,8 @@ HEADERS += \
|
||||
network.h \
|
||||
notifications.h \
|
||||
image_download.h \
|
||||
progress.h
|
||||
progress.h \
|
||||
image_type.h
|
||||
|
||||
SOURCES += main.cpp \
|
||||
drivemanager.cpp \
|
||||
@ -30,7 +31,8 @@ SOURCES += main.cpp \
|
||||
network.cpp \
|
||||
notifications.cpp \
|
||||
image_download.cpp \
|
||||
progress.cpp
|
||||
progress.cpp \
|
||||
image_type.cpp
|
||||
|
||||
RESOURCES += qml.qrc \
|
||||
assets.qrc \
|
||||
|
@ -18,6 +18,7 @@
|
||||
*/
|
||||
|
||||
#include "releasemanager.h"
|
||||
#include "image_type.h"
|
||||
#include "drivemanager.h"
|
||||
#include "network.h"
|
||||
#include "image_download.h"
|
||||
@ -91,7 +92,7 @@ ReleaseManager::ReleaseManager(QObject *parent)
|
||||
qmlRegisterUncreatableType<ReleaseVersion>("MediaWriter", 1, 0, "Version", "");
|
||||
qmlRegisterUncreatableType<ReleaseVariant>("MediaWriter", 1, 0, "Variant", "");
|
||||
qmlRegisterUncreatableType<ReleaseArchitecture>("MediaWriter", 1, 0, "Architecture", "");
|
||||
qmlRegisterUncreatableType<ReleaseImageType>("MediaWriter", 1, 0, "ImageType", "");
|
||||
qmlRegisterUncreatableType<ImageType>("MediaWriter", 1, 0, "ImageType", "");
|
||||
qmlRegisterUncreatableType<Progress>("MediaWriter", 1, 0, "Progress", "");
|
||||
|
||||
const QList<QString> releaseImagesList = getReleaseImagesFiles();
|
||||
@ -260,12 +261,12 @@ void ReleaseManager::setFilterText(const QString &o) {
|
||||
}
|
||||
}
|
||||
|
||||
bool ReleaseManager::updateUrl(const QString &name, const QString &version, const QString &status, const QString &architecture, ReleaseImageType *imageType, const QString &board, const QString &url) {
|
||||
bool ReleaseManager::updateUrl(const QString &name, const QString &version, const QString &status, const QString &architecture, ImageType *imageType, const QString &board, const QString &url) {
|
||||
if (!ReleaseArchitecture::isKnown(architecture)) {
|
||||
qDebug() << "Architecture" << architecture << "is not known!";
|
||||
return false;
|
||||
}
|
||||
if (imageType->id() == ReleaseImageType::UNKNOWN) {
|
||||
if (imageType->isValid()) {
|
||||
qDebug() << "Image type for " << url << "is not known!";
|
||||
return false;
|
||||
}
|
||||
@ -360,7 +361,7 @@ void ReleaseManager::loadReleaseFile(const QString &fileContents) {
|
||||
QString version = "9";
|
||||
QString status = "0";
|
||||
|
||||
ReleaseImageType *imageType = ReleaseImageType::fromFilename(url);
|
||||
ImageType *imageType = ImageType::fromFilename(url);
|
||||
|
||||
qDebug() << this->metaObject()->className() << "Adding" << name << arch;
|
||||
|
||||
@ -374,20 +375,20 @@ QStringList ReleaseManager::architectures() const {
|
||||
}
|
||||
|
||||
QStringList ReleaseManager::fileNameFilters() const {
|
||||
const QList<ReleaseImageType *> imageTypes = ReleaseImageType::all();
|
||||
const QList<ImageType *> imageTypes = ImageType::all();
|
||||
|
||||
QStringList filters;
|
||||
for (const auto type : imageTypes) {
|
||||
if (type->id() == ReleaseImageType::UNKNOWN) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const QString extensions =
|
||||
[type]() {
|
||||
const QStringList abbreviation = type->abbreviation();
|
||||
if (abbreviation.isEmpty()) {
|
||||
return QString();
|
||||
}
|
||||
|
||||
QString out;
|
||||
out += "(";
|
||||
|
||||
const QStringList abbreviation = type->abbreviation();
|
||||
for (const auto e : abbreviation) {
|
||||
if (abbreviation.indexOf(e) > 0) {
|
||||
out += " ";
|
||||
@ -401,6 +402,10 @@ QStringList ReleaseManager::fileNameFilters() const {
|
||||
return out;
|
||||
}();
|
||||
|
||||
if (extensions.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const QString name = type->name();
|
||||
|
||||
const QString filter = name + " " + extensions;
|
||||
@ -513,7 +518,7 @@ ReleaseListModel::ReleaseListModel(ReleaseManager *parent)
|
||||
const auto customVersion = new ReleaseVersion(customRelease, QString(), ReleaseVersion::FINAL);
|
||||
customRelease->addVersion(customVersion);
|
||||
|
||||
const auto customVariant = new ReleaseVariant(customVersion, QString(), ReleaseArchitecture::fromId(ReleaseArchitecture::UNKNOWN), ReleaseImageType::all()[ReleaseImageType::ISO], "UNKNOWN BOARD");
|
||||
const auto customVariant = new ReleaseVariant(customVersion, QString(), ReleaseArchitecture::fromId(ReleaseArchitecture::UNKNOWN), ImageType::all()[ImageType::ISO], "UNKNOWN BOARD");
|
||||
customVersion->addVariant(customVariant);
|
||||
}
|
||||
|
||||
@ -550,7 +555,7 @@ void Release::setLocalFile(const QString &path) {
|
||||
emit selectedVersionChanged();
|
||||
}
|
||||
|
||||
bool Release::updateUrl(const QString &version, const QString &status, const QString &architecture, ReleaseImageType *imageType, const QString &board, const QString &url) {
|
||||
bool Release::updateUrl(const QString &version, const QString &status, const QString &architecture, ImageType *imageType, const QString &board, const QString &url) {
|
||||
int finalVersions = 0;
|
||||
for (auto i : m_versions) {
|
||||
if (i->number() == version)
|
||||
@ -704,7 +709,7 @@ const Release *ReleaseVersion::release() const {
|
||||
return qobject_cast<const Release*>(parent());
|
||||
}
|
||||
|
||||
bool ReleaseVersion::updateUrl(const QString &status, const QString &architecture, ReleaseImageType *imageType, const QString &board, const QString &url) {
|
||||
bool ReleaseVersion::updateUrl(const QString &status, const QString &architecture, ImageType *imageType, const QString &board, const QString &url) {
|
||||
// first determine and eventually update the current alpha/beta/final level of this version
|
||||
Status s = status == "alpha" ? ALPHA : status == "beta" ? BETA : FINAL;
|
||||
if (s <= m_status) {
|
||||
@ -788,7 +793,7 @@ QList<ReleaseVariant *> ReleaseVersion::variantList() const {
|
||||
}
|
||||
|
||||
|
||||
ReleaseVariant::ReleaseVariant(ReleaseVersion *parent, QString url, ReleaseArchitecture *arch, ReleaseImageType *imageType, QString board)
|
||||
ReleaseVariant::ReleaseVariant(ReleaseVersion *parent, QString url, ReleaseArchitecture *arch, ImageType *imageType, QString board)
|
||||
: QObject(parent)
|
||||
, m_arch(arch)
|
||||
, m_image_type(imageType)
|
||||
@ -803,7 +808,7 @@ ReleaseVariant::ReleaseVariant(ReleaseVersion *parent, const QString &file)
|
||||
: QObject(parent)
|
||||
, m_image(file)
|
||||
, m_arch(ReleaseArchitecture::fromId(ReleaseArchitecture::X86_64))
|
||||
, m_image_type(ReleaseImageType::fromFilename(file))
|
||||
, m_image_type(ImageType::fromFilename(file))
|
||||
, m_board("UNKNOWN BOARD")
|
||||
, m_progress(new Progress(this))
|
||||
{
|
||||
@ -841,7 +846,7 @@ ReleaseArchitecture *ReleaseVariant::arch() const {
|
||||
return m_arch;
|
||||
}
|
||||
|
||||
ReleaseImageType *ReleaseVariant::imageType() const {
|
||||
ImageType *ReleaseVariant::imageType() const {
|
||||
return m_image_type;
|
||||
}
|
||||
|
||||
@ -1136,105 +1141,3 @@ QString ReleaseArchitecture::description() const {
|
||||
int ReleaseArchitecture::index() const {
|
||||
return this - m_all;
|
||||
}
|
||||
|
||||
// ReleaseImageType ReleaseImageType::m_all[] = {
|
||||
// {{"iso", "dvd"}, QT_TR_NOOP("ISO DVD"), QT_TR_NOOP("ISO format image")},
|
||||
// {{"tar"}, QT_TR_NOOP("TAR Archive"), QT_TR_NOOP("tar archive of rootfs")},
|
||||
// {{"tgz", "tar.gz"}, QT_TR_NOOP("GZip TAR Archive"), QT_TR_NOOP("GNU Zip compressed tar archive of rootfs")},
|
||||
// {{"txz", "tar.xz"}, QT_TR_NOOP("LZMA TAR Archive"), QT_TR_NOOP("LZMA-compressed tar archive of rootfs")},
|
||||
// {{"img"}, QT_TR_NOOP("TAR Archive"), QT_TR_NOOP("raw image")},
|
||||
// {{"igz", "img.gz"}, QT_TR_NOOP("GZip TAR Archive"), QT_TR_NOOP("GNU Zip compressed raw image")},
|
||||
// {{"ixz", "img.xz"}, QT_TR_NOOP("LZMA TAR Archive"), QT_TR_NOOP("LZMA-compressed raw image")},
|
||||
// {{"trc", "recovery.tar"}, QT_TR_NOOP("Recovery TAR Archive"), QT_TR_NOOP("Special recovery archive for Tavolga Terminal")},
|
||||
// };
|
||||
|
||||
QList<ReleaseImageType *> ReleaseImageType::all() {
|
||||
static const QList<ReleaseImageType *> m_all =
|
||||
[]() {
|
||||
QList<ReleaseImageType *> out;
|
||||
|
||||
for (int i = 0; i < COUNT; i++) {
|
||||
const ReleaseImageType::Id id = (ReleaseImageType::Id) i;
|
||||
out.append(new ReleaseImageType(id));
|
||||
}
|
||||
|
||||
return out;
|
||||
}();
|
||||
|
||||
return m_all;
|
||||
}
|
||||
|
||||
ReleaseImageType::ReleaseImageType(const ReleaseImageType::Id id_arg)
|
||||
: m_id(id_arg) {
|
||||
|
||||
}
|
||||
|
||||
ReleaseImageType *ReleaseImageType::fromFilename(const QString &filename) {
|
||||
for (int i = 0; i < COUNT; i++) {
|
||||
ReleaseImageType *type = all()[i];
|
||||
|
||||
const QStringList abbreviations = type->abbreviation();
|
||||
for (const QString abbreviation : abbreviations) {
|
||||
if (filename.endsWith(abbreviation, Qt::CaseInsensitive)) {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
}
|
||||
return all()[UNKNOWN];
|
||||
}
|
||||
|
||||
ReleaseImageType::Id ReleaseImageType::id() const {
|
||||
return m_id;
|
||||
}
|
||||
|
||||
QStringList ReleaseImageType::abbreviation() const {
|
||||
switch (m_id) {
|
||||
case ISO: return {"iso", "dvd"};
|
||||
case TAR: return {"tar"};
|
||||
case TAR_GZ: return {"tgz", "tar.gz"};
|
||||
case TAR_XZ: return {"archive", "tar.xz"};
|
||||
case IMG: return {"img"};
|
||||
case IMG_GZ: return {"igz", "img.gz"};
|
||||
case IMG_XZ: return {"ixz", "img.xz"};
|
||||
case RECOVERY_TAR: return {"trc", "recovery.tar"};
|
||||
case UNKNOWN: return {};
|
||||
case COUNT: return {};
|
||||
}
|
||||
return QStringList();
|
||||
}
|
||||
|
||||
QString ReleaseImageType::name() const {
|
||||
switch (m_id) {
|
||||
case ISO: return tr("ISO DVD");
|
||||
case TAR: return {"TAR Archive"};
|
||||
case TAR_GZ: return tr("GZIP TAR Archive");
|
||||
case TAR_XZ: return tr("LZMA TAR Archive");
|
||||
case IMG: return tr("IMG");
|
||||
case IMG_GZ: return tr("GZIP IMG");
|
||||
case IMG_XZ: return tr("LZMA IMG");
|
||||
case RECOVERY_TAR: return tr("Recovery TAR Archive");
|
||||
case UNKNOWN: return tr("Unknown");
|
||||
case COUNT: return QString();
|
||||
}
|
||||
return QString();
|
||||
}
|
||||
|
||||
bool ReleaseImageType::supportedForWriting() const {
|
||||
static const QList<ReleaseImageType::Id> unsupported = {
|
||||
TAR_GZ, TAR_XZ, IMG_GZ, RECOVERY_TAR, UNKNOWN, COUNT
|
||||
};
|
||||
|
||||
return !unsupported.contains(m_id);
|
||||
}
|
||||
|
||||
bool ReleaseImageType::canWriteWithRootfs() const {
|
||||
#if defined(_WIN32)
|
||||
return false;
|
||||
#else
|
||||
if (m_id == TAR_XZ) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ class Release;
|
||||
class ReleaseVersion;
|
||||
class ReleaseVariant;
|
||||
class ReleaseArchitecture;
|
||||
class ReleaseImageType;
|
||||
class ImageType;
|
||||
class Progress;
|
||||
|
||||
/*
|
||||
@ -99,7 +99,7 @@ public:
|
||||
QString filterText() const;
|
||||
void setFilterText(const QString &o);
|
||||
|
||||
bool updateUrl(const QString &name, const QString &version, const QString &status, const QString &architecture, ReleaseImageType *imageType, const QString &board, const QString &url);
|
||||
bool updateUrl(const QString &name, const QString &version, const QString &status, const QString &architecture, ImageType *imageType, const QString &board, const QString &url);
|
||||
|
||||
QStringList architectures() const;
|
||||
QStringList fileNameFilters() const;
|
||||
@ -201,7 +201,7 @@ class Release : public QObject {
|
||||
public:
|
||||
Release(ReleaseManager *parent, const QString &name, const QString &displayName, const QString &summary, const QString &description, const QString &icon, const QStringList &screenshots);
|
||||
Q_INVOKABLE void setLocalFile(const QString &path);
|
||||
bool updateUrl(const QString &version, const QString &status, const QString &architecture, ReleaseImageType *imageType, const QString &board, const QString &url);
|
||||
bool updateUrl(const QString &version, const QString &status, const QString &architecture, ImageType *imageType, const QString &board, const QString &url);
|
||||
ReleaseManager *manager();
|
||||
|
||||
QString name() const;
|
||||
@ -276,7 +276,7 @@ public:
|
||||
Release *release();
|
||||
const Release *release() const;
|
||||
|
||||
bool updateUrl(const QString &status, const QString &architecture, ReleaseImageType *imageType, const QString &board, const QString &url);
|
||||
bool updateUrl(const QString &status, const QString &architecture, ImageType *imageType, const QString &board, const QString &url);
|
||||
|
||||
QString number() const;
|
||||
QString name() const;
|
||||
@ -327,7 +327,7 @@ class ReleaseVariant : public QObject {
|
||||
|
||||
Q_PROPERTY(QString url READ url NOTIFY urlChanged)
|
||||
Q_PROPERTY(QString image READ image NOTIFY imageChanged)
|
||||
Q_PROPERTY(ReleaseImageType *imageType READ imageType CONSTANT)
|
||||
Q_PROPERTY(ImageType *imageType READ imageType CONSTANT)
|
||||
Q_PROPERTY(qreal size READ size NOTIFY sizeChanged)
|
||||
Q_PROPERTY(Progress* progress READ progress CONSTANT)
|
||||
|
||||
@ -366,7 +366,7 @@ public:
|
||||
tr("Error")
|
||||
};
|
||||
|
||||
ReleaseVariant(ReleaseVersion *parent, QString url, ReleaseArchitecture *arch, ReleaseImageType *imageType, QString board);
|
||||
ReleaseVariant(ReleaseVersion *parent, QString url, ReleaseArchitecture *arch, ImageType *imageType, QString board);
|
||||
ReleaseVariant(ReleaseVersion *parent, const QString &file);
|
||||
|
||||
bool updateUrl(const QString &url);
|
||||
@ -383,7 +383,7 @@ public:
|
||||
|
||||
QString url() const;
|
||||
QString image() const;
|
||||
ReleaseImageType *imageType() const;
|
||||
ImageType *imageType() const;
|
||||
qreal size() const;
|
||||
Progress *progress();
|
||||
|
||||
@ -414,7 +414,7 @@ public slots:
|
||||
private:
|
||||
QString m_image {};
|
||||
ReleaseArchitecture *m_arch { nullptr };
|
||||
ReleaseImageType *m_image_type { nullptr };
|
||||
ImageType *m_image_type { nullptr };
|
||||
QString m_board {};
|
||||
QString m_url {};
|
||||
qreal m_size = 0.0;
|
||||
@ -475,51 +475,4 @@ private:
|
||||
const char *m_details {};
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief The ReleaseImageType class
|
||||
*
|
||||
* Class representing the possible image types of the releases
|
||||
*
|
||||
* @property abbreviation short names for the type, like iso
|
||||
* @property name a common name what the short stands for, like "ISO DVD"
|
||||
* @property supportedForWriting whether this image type can be written to media
|
||||
* @property canWriteWithRootfs whether this image type can be written with rootfs
|
||||
*/
|
||||
class ReleaseImageType : public QObject {
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QStringList abbreviation READ abbreviation CONSTANT)
|
||||
Q_PROPERTY(QString name READ name CONSTANT)
|
||||
Q_PROPERTY(bool supportedForWriting READ supportedForWriting CONSTANT)
|
||||
Q_PROPERTY(bool canWriteWithRootfs READ canWriteWithRootfs CONSTANT)
|
||||
public:
|
||||
enum Id {
|
||||
ISO,
|
||||
TAR,
|
||||
TAR_GZ,
|
||||
TAR_XZ,
|
||||
IMG,
|
||||
IMG_GZ,
|
||||
IMG_XZ,
|
||||
RECOVERY_TAR,
|
||||
UNKNOWN,
|
||||
COUNT,
|
||||
};
|
||||
Q_ENUMS(Id);
|
||||
|
||||
static QList<ReleaseImageType *> all();
|
||||
static ReleaseImageType *fromFilename(const QString &filename);
|
||||
|
||||
Id id() const;
|
||||
QStringList abbreviation() const;
|
||||
QString name() const;
|
||||
QString description() const;
|
||||
bool supportedForWriting() const;
|
||||
bool canWriteWithRootfs() const;
|
||||
|
||||
private:
|
||||
ReleaseImageType(const ReleaseImageType::Id id_arg);
|
||||
|
||||
ReleaseImageType::Id m_id;
|
||||
};
|
||||
|
||||
#endif // RELEASEMANAGER_H
|
||||
|
@ -344,7 +344,7 @@ sudo alt-rootfs-installer --rootfs=%1 --media=%2 --target=%3</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ReleaseImageType</name>
|
||||
<name>ImageType</name>
|
||||
<message>
|
||||
<source>ISO DVD</source>
|
||||
<translation></translation>
|
||||
|
Loading…
Reference in New Issue
Block a user