[libcalamaresui] Use InstanceKey instead of strings

- Replace return type of Module::instanceKey() by the structured
   ModuleSystem::InstanceKey type
 - Chase API breakage
This commit is contained in:
Adriaan de Groot 2020-01-24 17:47:06 +01:00
parent b5d0acdf81
commit 00deeec8c8
7 changed files with 26 additions and 23 deletions

View File

@ -67,7 +67,7 @@ ViewStepItem::data( int role ) const
toolTip.append( QString( "<br/>Status:\t%1" ).arg( m_step->prettyStatus() ) ); toolTip.append( QString( "<br/>Status:\t%1" ).arg( m_step->prettyStatus() ) );
toolTip.append( toolTip.append(
QString( "<br/>Source:\t%1" ) QString( "<br/>Source:\t%1" )
.arg( m_step->moduleInstanceKey().isEmpty() ? "built-in" : m_step->moduleInstanceKey() ) ); .arg( m_step->moduleInstanceKey().isValid() ? m_step->moduleInstanceKey().toString() : QStringLiteral("built-in") ) );
} }
else else
{ {

View File

@ -32,7 +32,7 @@ CppJob::~CppJob() {}
void void
CppJob::setModuleInstanceKey( const QString& instanceKey ) CppJob::setModuleInstanceKey( const Calamares::ModuleSystem::InstanceKey& instanceKey )
{ {
m_instanceKey = instanceKey; m_instanceKey = instanceKey;
} }

View File

@ -2,6 +2,7 @@
* *
* Copyright 2014-2015, Teo Mrnjavac <teo@kde.org> * Copyright 2014-2015, Teo Mrnjavac <teo@kde.org>
* Copyright 2016, Kevin Kofler <kevin.kofler@chello.at> * Copyright 2016, Kevin Kofler <kevin.kofler@chello.at>
* Copyright 2020, Adriaan de Groor <groot@kde.org>
* *
* Calamares is free software: you can redistribute it and/or modify * Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -20,12 +21,14 @@
#ifndef CALAMARES_CPPJOB_H #ifndef CALAMARES_CPPJOB_H
#define CALAMARES_CPPJOB_H #define CALAMARES_CPPJOB_H
#include <QObject>
#include <QVariant>
#include "DllMacro.h" #include "DllMacro.h"
#include "Job.h" #include "Job.h"
#include "modulesystem/InstanceKey.h"
#include <QObject>
#include <QVariant>
namespace Calamares namespace Calamares
{ {
@ -36,13 +39,13 @@ public:
explicit CppJob( QObject* parent = nullptr ); explicit CppJob( QObject* parent = nullptr );
virtual ~CppJob(); virtual ~CppJob();
void setModuleInstanceKey( const QString& instanceKey ); void setModuleInstanceKey( const Calamares::ModuleSystem::InstanceKey& instanceKey );
QString moduleInstanceKey() const { return m_instanceKey; } Calamares::ModuleSystem::InstanceKey moduleInstanceKey() const { return m_instanceKey; }
virtual void setConfigurationMap( const QVariantMap& configurationMap ); virtual void setConfigurationMap( const QVariantMap& configurationMap );
protected: protected:
QString m_instanceKey; Calamares::ModuleSystem::InstanceKey m_instanceKey;
}; };
} // namespace Calamares } // namespace Calamares

View File

@ -101,7 +101,7 @@ public:
* For instance, "partition\@partition" (default configuration) or * For instance, "partition\@partition" (default configuration) or
* "locale\@someconfig" (custom configuration) * "locale\@someconfig" (custom configuration)
*/ */
QString instanceKey() const { return m_key.toString(); } ModuleSystem::InstanceKey instanceKey() const { return m_key; }
/** /**
* @brief location returns the full path of this module's directory. * @brief location returns the full path of this module's directory.

View File

@ -66,7 +66,7 @@ ViewStep::back()
void void
ViewStep::setModuleInstanceKey( const QString& instanceKey ) ViewStep::setModuleInstanceKey( const Calamares::ModuleSystem::InstanceKey& instanceKey )
{ {
m_instanceKey = instanceKey; m_instanceKey = instanceKey;
} }

View File

@ -1,7 +1,7 @@
/* === This file is part of Calamares - <https://github.com/calamares> === /* === This file is part of Calamares - <https://github.com/calamares> ===
* *
* Copyright 2014-2015, Teo Mrnjavac <teo@kde.org> * Copyright 2014-2015, Teo Mrnjavac <teo@kde.org>
* Copyright 2017, Adriaan de Groot <groot@kde.org> * Copyright 2017, 2020, Adriaan de Groot <groot@kde.org>
* *
* Calamares is free software: you can redistribute it and/or modify * Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -20,15 +20,16 @@
#ifndef VIEWSTEP_H #ifndef VIEWSTEP_H
#define VIEWSTEP_H #define VIEWSTEP_H
#include <QList>
#include <QObject>
#include <QSize>
#include "Job.h" #include "Job.h"
#include "UiDllMacro.h" #include "UiDllMacro.h"
#include "modulesystem/InstanceKey.h"
#include "modulesystem/Requirement.h" #include "modulesystem/Requirement.h"
#include <QList>
#include <QObject>
#include <QSize>
namespace Calamares namespace Calamares
{ {
@ -36,9 +37,9 @@ namespace Calamares
* @brief The ViewStep class is the base class for all view modules. * @brief The ViewStep class is the base class for all view modules.
* A view module is a Calamares module which has at least one UI page (exposed as * A view module is a Calamares module which has at least one UI page (exposed as
* ViewStep::widget), and can optionally create Calamares jobs at runtime. * ViewStep::widget), and can optionally create Calamares jobs at runtime.
* As of early 2017, a view module can be implemented by deriving from ViewStep * As of early 2020, a view module can be implemented by deriving from ViewStep
* in C++ (as a Qt Plugin) or in Python with the PythonQt interface (which also * in C++ (as a Qt Plugin or a Qml ViewStep) or in Python with the PythonQt interface
* mimics the ViewStep class). * (which also mimics the ViewStep class).
* *
* A ViewStep can describe itself in human-readable format for the SummaryPage * A ViewStep can describe itself in human-readable format for the SummaryPage
* (which shows all of the things which have been collected to be done in the * (which shows all of the things which have been collected to be done in the
@ -129,8 +130,8 @@ public:
*/ */
virtual JobList jobs() const = 0; virtual JobList jobs() const = 0;
void setModuleInstanceKey( const QString& instanceKey ); void setModuleInstanceKey( const Calamares::ModuleSystem::InstanceKey& instanceKey );
QString moduleInstanceKey() const { return m_instanceKey; } Calamares::ModuleSystem::InstanceKey moduleInstanceKey() const { return m_instanceKey; }
virtual void setConfigurationMap( const QVariantMap& configurationMap ); virtual void setConfigurationMap( const QVariantMap& configurationMap );
@ -154,7 +155,7 @@ signals:
void enlarge( QSize enlarge ) const; void enlarge( QSize enlarge ) const;
protected: protected:
QString m_instanceKey; Calamares::ModuleSystem::InstanceKey m_instanceKey;
}; };
using ViewStepList = QList< ViewStep* >; using ViewStepList = QList< ViewStep* >;

View File

@ -192,8 +192,7 @@ PackageChooserViewStep::setConfigurationMap( const QVariantMap& configurationMap
if ( m_id.isEmpty() ) if ( m_id.isEmpty() )
{ {
// Not set, so use the instance id // Not set, so use the instance id
// TODO: use a stronger type than QString for structured IDs m_id = moduleInstanceKey().id();
m_id = moduleInstanceKey().split( '@' ).last();
} }
bool labels_ok = false; bool labels_ok = false;