|
|
|
|
@ -19,6 +19,7 @@
|
|
|
|
|
#include "QmlViewStep.h"
|
|
|
|
|
|
|
|
|
|
#include "Branding.h"
|
|
|
|
|
#include "ViewManager.h"
|
|
|
|
|
|
|
|
|
|
#include "utils/Dirs.h"
|
|
|
|
|
#include "utils/Logger.h"
|
|
|
|
|
@ -51,6 +52,36 @@ searchNames()
|
|
|
|
|
return names;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// @brief State-change of the QML, for changeQMLState()
|
|
|
|
|
enum class QMLAction
|
|
|
|
|
{
|
|
|
|
|
Start,
|
|
|
|
|
Stop
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/** @brief Tells the QML we activated or left it.
|
|
|
|
|
*
|
|
|
|
|
* If @p action is @c QMLAction::Start, calls onActivate in the QML.
|
|
|
|
|
* If @p action is @c QMLAction::Stop, calls onLeave in the QML.
|
|
|
|
|
*
|
|
|
|
|
* Sets *activatedInCalamares* property on the QML as well (to true
|
|
|
|
|
* if @p action is @c QMLAction::Start, false otherwise).
|
|
|
|
|
*/
|
|
|
|
|
static void
|
|
|
|
|
changeQMLState( QMLAction action, QQuickItem* item )
|
|
|
|
|
{
|
|
|
|
|
static const char propertyName[] = "activatedInCalamares";
|
|
|
|
|
|
|
|
|
|
bool activate = action == QMLAction::Start;
|
|
|
|
|
CalamaresUtils::callQMLFunction( item, activate ? "onActivate" : "onLeave" );
|
|
|
|
|
|
|
|
|
|
auto property = item->property( propertyName );
|
|
|
|
|
if ( property.isValid() && ( property.type() == QVariant::Bool ) && ( property.toBool() != activate ) )
|
|
|
|
|
{
|
|
|
|
|
item->setProperty( propertyName, activate );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
namespace Calamares
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
@ -81,7 +112,6 @@ QmlViewStep::prettyName() const
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool
|
|
|
|
|
QmlViewStep::isAtBeginning() const
|
|
|
|
|
{
|
|
|
|
|
@ -114,13 +144,19 @@ QmlViewStep::jobs() const
|
|
|
|
|
void
|
|
|
|
|
QmlViewStep::onActivate()
|
|
|
|
|
{
|
|
|
|
|
// TODO: call into QML
|
|
|
|
|
if ( m_qmlObject )
|
|
|
|
|
{
|
|
|
|
|
changeQMLState( QMLAction::Start, m_qmlObject );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
QmlViewStep::onLeave()
|
|
|
|
|
{
|
|
|
|
|
// TODO: call into QML
|
|
|
|
|
if ( m_qmlObject )
|
|
|
|
|
{
|
|
|
|
|
changeQMLState( QMLAction::Stop, m_qmlObject );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QWidget*
|
|
|
|
|
@ -181,6 +217,13 @@ QmlViewStep::showQml()
|
|
|
|
|
{
|
|
|
|
|
cDebug() << "showQml() called twice";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ( ViewManager::instance()->currentStep() == this )
|
|
|
|
|
{
|
|
|
|
|
// We're alreay visible! Must have been slow QML loading, and we
|
|
|
|
|
// passed onActivate already.
|
|
|
|
|
changeQMLState( QMLAction::Start, m_qmlObject );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|