Hook up ReplacePage in ChoicePage and PartitionViewStep.

This commit is contained in:
Teo Mrnjavac 2014-12-16 17:04:09 +01:00
parent 2f2ef73f20
commit 0da99d0866
4 changed files with 58 additions and 2 deletions

View File

@ -97,8 +97,16 @@ ChoicePage::init( PartitionCoreModule* core, const OsproberEntryList& osproberEn
iconSize ) ); iconSize ) );
grp->addButton( eraseButton->buttonWidget() ); grp->addButton( eraseButton->buttonWidget() );
PrettyRadioButton* replaceButton = new PrettyRadioButton;
replaceButton->setIconSize( iconSize );
replaceButton->setIcon( CalamaresUtils::defaultPixmap( CalamaresUtils::Replace,
CalamaresUtils::Original,
iconSize ) );
grp->addButton( replaceButton->buttonWidget() );
m_itemsLayout->addWidget( eraseButton ); m_itemsLayout->addWidget( eraseButton );
m_itemsLayout->addWidget( alongsideButton ); m_itemsLayout->addWidget( alongsideButton );
m_itemsLayout->addWidget( replaceButton );
m_itemsLayout->setSpacing( CalamaresUtils::defaultFontHeight() / 2 ); m_itemsLayout->setSpacing( CalamaresUtils::defaultFontHeight() / 2 );
if ( osproberEntries.count() == 0 ) if ( osproberEntries.count() == 0 )
@ -114,6 +122,7 @@ ChoicePage::init( PartitionCoreModule* core, const OsproberEntryList& osproberEn
string( Calamares::Branding::VersionedName ) ) ); string( Calamares::Branding::VersionedName ) ) );
) )
replaceButton->hide();
alongsideButton->hide(); alongsideButton->hide();
} }
else if ( osproberEntries.count() == 1 ) else if ( osproberEntries.count() == 1 )
@ -135,13 +144,19 @@ ChoicePage::init( PartitionCoreModule* core, const OsproberEntryList& osproberEn
.arg( Calamares::Branding::instance()-> .arg( Calamares::Branding::instance()->
string( Calamares::Branding::VersionedName ) ) ); string( Calamares::Branding::VersionedName ) ) );
eraseButton->setText( tr( "<b>Replace %1 with %2</b><br/>" eraseButton->setText( tr( "<b>Erase entire disk with %1 and install %2</b><br/>"
"<font color=\"red\">Warning: </font>This will erase the whole disk and " "<font color=\"red\">Warning: </font>This will erase the whole disk and "
"delete all of your %1 programs, " "delete all of your %1 programs, "
"documents, photos, music, and any other files." ) "documents, photos, music, and any other files." )
.arg( osName ) .arg( osName )
.arg( Calamares::Branding::instance()-> .arg( Calamares::Branding::instance()->
string( Calamares::Branding::VersionedName ) ) ); string( Calamares::Branding::VersionedName ) ) );
replaceButton->setText( tr( "<b>Install %1 on an existing partition</b><br/>"
"<font color=\"red\">Warning: </font>This will delete all files "
"on the selected partition." )
.arg( Calamares::Branding::instance()->
string( Calamares::Branding::VersionedName ) ) );
) )
} }
else else
@ -162,6 +177,12 @@ ChoicePage::init( PartitionCoreModule* core, const OsproberEntryList& osproberEn
"documents, photos, music, and any other files." ) "documents, photos, music, and any other files." )
.arg( Calamares::Branding::instance()-> .arg( Calamares::Branding::instance()->
string( Calamares::Branding::VersionedName ) ) ); string( Calamares::Branding::VersionedName ) ) );
replaceButton->setText( tr( "<b>Install %1 on an existing partition</b><br/>"
"<font color=\"red\">Warning: </font>This will delete all files "
"on the selected partition." )
.arg( Calamares::Branding::instance()->
string( Calamares::Branding::VersionedName ) ) );
) )
} }
if ( !osproberEntries.first().canBeResized ) if ( !osproberEntries.first().canBeResized )
@ -198,6 +219,12 @@ ChoicePage::init( PartitionCoreModule* core, const OsproberEntryList& osproberEn
"documents, photos, music, and any other files." ) "documents, photos, music, and any other files." )
.arg( Calamares::Branding::instance()-> .arg( Calamares::Branding::instance()->
string( Calamares::Branding::VersionedName ) ) ); string( Calamares::Branding::VersionedName ) ) );
replaceButton->setText( tr( "<b>Install %1 on an existing partition</b><br/>"
"<font color=\"red\">Warning: </font>This will delete all files "
"on the selected partition." )
.arg( Calamares::Branding::instance()->
string( Calamares::Branding::VersionedName ) ) );
) )
if ( !atLeastOneCanBeResized ) if ( !atLeastOneCanBeResized )
@ -239,6 +266,14 @@ ChoicePage::init( PartitionCoreModule* core, const OsproberEntryList& osproberEn
setNextEnabled( true ); setNextEnabled( true );
} ); } );
connect( replaceButton->buttonWidget(), &QRadioButton::toggled,
this, [ this ]( bool checked )
{
if ( checked )
m_choice = Replace;
setNextEnabled( true );
} );
connect( somethingElseButton->buttonWidget(), &QRadioButton::toggled, connect( somethingElseButton->buttonWidget(), &QRadioButton::toggled,
this, [ this ]( bool checked ) this, [ this ]( bool checked )
{ {

View File

@ -37,6 +37,7 @@ public:
NoChoice, NoChoice,
Alongside, Alongside,
Erase, Erase,
Replace,
Manual Manual
}; };

View File

@ -1,6 +1,7 @@
/* === This file is part of Calamares - <http://github.com/calamares> === /* === This file is part of Calamares - <http://github.com/calamares> ===
* *
* Copyright 2014, Aurélien Gâteau <agateau@kde.org> * Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2014, Teo Mrnjavac <teo@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
@ -28,6 +29,7 @@
#include <gui/EraseDiskPage.h> #include <gui/EraseDiskPage.h>
#include <gui/AlongsidePage.h> #include <gui/AlongsidePage.h>
#include <gui/PartitionPage.h> #include <gui/PartitionPage.h>
#include <gui/ReplacePage.h>
#include <gui/PartitionPreview.h> #include <gui/PartitionPreview.h>
#include "OsproberEntry.h" #include "OsproberEntry.h"
@ -55,6 +57,7 @@ PartitionViewStep::PartitionViewStep( QObject* parent )
, m_erasePage( new EraseDiskPage() ) , m_erasePage( new EraseDiskPage() )
, m_alongsidePage( new AlongsidePage() ) , m_alongsidePage( new AlongsidePage() )
, m_manualPartitionPage( new PartitionPage( m_core ) ) , m_manualPartitionPage( new PartitionPage( m_core ) )
, m_replacePage( new ReplacePage( m_core ) )
{ {
m_widget->setContentsMargins( 0, 0, 0, 0 ); m_widget->setContentsMargins( 0, 0, 0, 0 );
@ -118,6 +121,7 @@ PartitionViewStep::PartitionViewStep( QObject* parent )
m_widget->addWidget( m_manualPartitionPage ); m_widget->addWidget( m_manualPartitionPage );
m_widget->addWidget( m_alongsidePage ); m_widget->addWidget( m_alongsidePage );
m_widget->addWidget( m_erasePage ); m_widget->addWidget( m_erasePage );
m_widget->addWidget( m_replacePage );
m_widget->removeWidget( waitingWidget ); m_widget->removeWidget( waitingWidget );
waitingWidget->deleteLater(); waitingWidget->deleteLater();
@ -133,6 +137,8 @@ PartitionViewStep::PartitionViewStep( QObject* parent )
this, &PartitionViewStep::nextStatusChanged ); this, &PartitionViewStep::nextStatusChanged );
connect( m_alongsidePage, &AlongsidePage::nextStatusChanged, connect( m_alongsidePage, &AlongsidePage::nextStatusChanged,
this, &PartitionViewStep::nextStatusChanged ); this, &PartitionViewStep::nextStatusChanged );
connect( m_replacePage, &ReplacePage::nextStatusChanged,
this, &PartitionViewStep::nextStatusChanged );
} }
@ -206,6 +212,12 @@ PartitionViewStep::next()
m_core->revert(); m_core->revert();
m_widget->setCurrentWidget( m_alongsidePage ); m_widget->setCurrentWidget( m_alongsidePage );
} }
else if ( m_choicePage->currentChoice() == ChoicePage::Replace )
{
if ( m_core->isDirty() )
m_core->revert();
m_widget->setCurrentWidget( m_replacePage );
}
cDebug() << "Choice applied: " << m_choicePage->currentChoice(); cDebug() << "Choice applied: " << m_choicePage->currentChoice();
return; return;
} }
@ -248,7 +260,8 @@ PartitionViewStep::isAtBeginning() const
{ {
if ( m_widget->currentWidget() == m_manualPartitionPage || if ( m_widget->currentWidget() == m_manualPartitionPage ||
m_widget->currentWidget() == m_erasePage || m_widget->currentWidget() == m_erasePage ||
m_widget->currentWidget() == m_alongsidePage ) m_widget->currentWidget() == m_alongsidePage ||
m_widget->currentWidget() == m_replacePage )
return false; return false;
return true; return true;
} }
@ -270,6 +283,10 @@ PartitionViewStep::onLeave()
{ {
m_alongsidePage->applyChanges(); m_alongsidePage->applyChanges();
} }
else if ( m_widget->currentWidget() == m_replacePage )
{
m_replacePage->applyChanges();
}
} }

View File

@ -1,6 +1,7 @@
/* === This file is part of Calamares - <http://github.com/calamares> === /* === This file is part of Calamares - <http://github.com/calamares> ===
* *
* Copyright 2014, Aurélien Gâteau <agateau@kde.org> * Copyright 2014, Aurélien Gâteau <agateau@kde.org>
* Copyright 2014, Teo Mrnjavac <teo@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
@ -28,6 +29,7 @@ class ChoicePage;
class EraseDiskPage; class EraseDiskPage;
class AlongsidePage; class AlongsidePage;
class PartitionPage; class PartitionPage;
class ReplacePage;
class PartitionCoreModule; class PartitionCoreModule;
class QStackedWidget; class QStackedWidget;
@ -71,6 +73,7 @@ private:
EraseDiskPage* m_erasePage; EraseDiskPage* m_erasePage;
AlongsidePage* m_alongsidePage; AlongsidePage* m_alongsidePage;
PartitionPage* m_manualPartitionPage; PartitionPage* m_manualPartitionPage;
ReplacePage* m_replacePage;
}; };
#endif // PARTITIONVIEWSTEP_H #endif // PARTITIONVIEWSTEP_H