Start PartitionPage
This commit is contained in:
parent
afa1d9dce0
commit
8d6b7672bc
42
src/modules/partition/CMakeLists.txt
Normal file
42
src/modules/partition/CMakeLists.txt
Normal file
@ -0,0 +1,42 @@
|
||||
add_definitions( -DCALAMARES )
|
||||
|
||||
include_directories( ${PROJECT_BINARY_DIR}/src/calamares )
|
||||
calamares_add_plugin( partition
|
||||
TYPE viewmodule
|
||||
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
||||
CONFIG_FILE module.conf
|
||||
SOURCES
|
||||
DeviceModel.cpp
|
||||
PartitionModel.cpp
|
||||
PartitionPage.cpp
|
||||
PartitionViewPlugin.cpp
|
||||
UI
|
||||
PartitionPage.ui
|
||||
LINK_LIBRARIES
|
||||
calapm
|
||||
${CALAMARES_LIBRARIES}
|
||||
calamares_bin
|
||||
SHARED_LIB
|
||||
)
|
||||
|
||||
# Temporary, until views are integrated
|
||||
set( partview_SRCS
|
||||
DeviceModel.cpp
|
||||
PartitionModel.cpp
|
||||
PartitionPage.cpp
|
||||
${calamares_SOURCE_DIR}/viewpages/AbstractPage.cpp
|
||||
main.cpp
|
||||
)
|
||||
qt5_wrap_ui( partview_SRCS PartitionPage.ui )
|
||||
|
||||
include_directories( ${CMAKE_CURRENT_BINARY_DIR} )
|
||||
|
||||
add_executable( partview ${partview_SRCS} )
|
||||
target_link_libraries( partview
|
||||
calapm
|
||||
${CALAMARES_LIBRARIES}
|
||||
Qt5::Widgets
|
||||
Qt5::Gui
|
||||
Qt5::Core
|
||||
)
|
||||
set_target_properties( partview PROPERTIES AUTOMOC TRUE )
|
78
src/modules/partition/DeviceModel.cpp
Normal file
78
src/modules/partition/DeviceModel.cpp
Normal file
@ -0,0 +1,78 @@
|
||||
/* === This file is part of Calamares - <http://github.com/calamares> ===
|
||||
*
|
||||
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
|
||||
*
|
||||
* Calamares is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Calamares is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include <DeviceModel.h>
|
||||
|
||||
// CalaPM
|
||||
#include <core/device.h>
|
||||
|
||||
DeviceModel::DeviceModel( QObject* parent )
|
||||
: QAbstractListModel( parent )
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
DeviceModel::init( const QList< Device* >& devices )
|
||||
{
|
||||
beginResetModel();
|
||||
m_devices = devices;
|
||||
endResetModel();
|
||||
}
|
||||
|
||||
int
|
||||
DeviceModel::rowCount( const QModelIndex& parent ) const
|
||||
{
|
||||
return parent.isValid() ? 0 : m_devices.count();
|
||||
}
|
||||
|
||||
QVariant
|
||||
DeviceModel::data( const QModelIndex& index, int role ) const
|
||||
{
|
||||
int row = index.row();
|
||||
if ( row < 0 || row >= m_devices.count() )
|
||||
{
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
Device* device = m_devices.at( row );
|
||||
|
||||
switch ( role )
|
||||
{
|
||||
case Qt::DisplayRole:
|
||||
if ( device->name().isEmpty() )
|
||||
{
|
||||
return device->deviceNode();
|
||||
}
|
||||
else
|
||||
{
|
||||
return device->name() + " " + device->deviceNode();
|
||||
}
|
||||
default:
|
||||
return QVariant();
|
||||
}
|
||||
}
|
||||
|
||||
Device*
|
||||
DeviceModel::deviceForIndex( const QModelIndex& index ) const
|
||||
{
|
||||
int row = index.row();
|
||||
if ( row < 0 || row >= m_devices.count() )
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
return m_devices.at( row );
|
||||
}
|
41
src/modules/partition/DeviceModel.h
Normal file
41
src/modules/partition/DeviceModel.h
Normal file
@ -0,0 +1,41 @@
|
||||
/* === This file is part of Calamares - <http://github.com/calamares> ===
|
||||
*
|
||||
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
|
||||
*
|
||||
* Calamares is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Calamares is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef DEVICEMODEL_H
|
||||
#define DEVICEMODEL_H
|
||||
|
||||
#include <QAbstractListModel>
|
||||
#include <QList>
|
||||
|
||||
class Device;
|
||||
|
||||
class DeviceModel : public QAbstractListModel
|
||||
{
|
||||
public:
|
||||
DeviceModel( QObject* parent = 0 );
|
||||
void init( const QList< Device* >& devices );
|
||||
|
||||
int rowCount( const QModelIndex& parent = QModelIndex() ) const Q_DECL_OVERRIDE;
|
||||
QVariant data( const QModelIndex& index, int role = Qt::DisplayRole ) const Q_DECL_OVERRIDE;
|
||||
|
||||
Device* deviceForIndex( const QModelIndex& index ) const;
|
||||
|
||||
private:
|
||||
QList< Device* > m_devices;
|
||||
};
|
||||
|
||||
#endif /* DEVICEMODEL_H */
|
82
src/modules/partition/PartitionModel.cpp
Normal file
82
src/modules/partition/PartitionModel.cpp
Normal file
@ -0,0 +1,82 @@
|
||||
/* === This file is part of Calamares - <http://github.com/calamares> ===
|
||||
*
|
||||
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
|
||||
*
|
||||
* Calamares is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Calamares is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include <PartitionModel.h>
|
||||
|
||||
// CalaPM
|
||||
#include <core/device.h>
|
||||
#include <core/partition.h>
|
||||
#include <core/partitiontable.h>
|
||||
#include <fs/filesystem.h>
|
||||
|
||||
PartitionModel::PartitionModel( QObject* parent )
|
||||
: QAbstractListModel( parent )
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
PartitionModel::init( Device* device )
|
||||
{
|
||||
beginResetModel();
|
||||
m_device = device;
|
||||
m_partitionList.clear();
|
||||
if ( device )
|
||||
{
|
||||
fillPartitionList( m_device->partitionTable() );
|
||||
}
|
||||
endResetModel();
|
||||
}
|
||||
|
||||
int
|
||||
PartitionModel::rowCount( const QModelIndex& parent ) const
|
||||
{
|
||||
return parent.isValid() ? 0 : m_partitionList.count();
|
||||
}
|
||||
|
||||
QVariant
|
||||
PartitionModel::data( const QModelIndex& index, int role ) const
|
||||
{
|
||||
int row = index.row();
|
||||
if ( row < 0 || row >= m_partitionList.count() )
|
||||
{
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
Partition* partition = m_partitionList.at( row );
|
||||
|
||||
switch ( role )
|
||||
{
|
||||
case Qt::DisplayRole:
|
||||
if ( partition->partitionPath().isEmpty() )
|
||||
{
|
||||
return tr( "Free Space" );
|
||||
}
|
||||
return partition->partitionPath() + " " + partition->fileSystem().name() + " " + partition->mountPoint();
|
||||
default:
|
||||
return QVariant();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
PartitionModel::fillPartitionList( PartitionNode* parent )
|
||||
{
|
||||
for ( auto partition : parent->children() )
|
||||
{
|
||||
m_partitionList << partition;
|
||||
fillPartitionList( partition );
|
||||
}
|
||||
}
|
43
src/modules/partition/PartitionModel.h
Normal file
43
src/modules/partition/PartitionModel.h
Normal file
@ -0,0 +1,43 @@
|
||||
/* === This file is part of Calamares - <http://github.com/calamares> ===
|
||||
*
|
||||
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
|
||||
*
|
||||
* Calamares is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Calamares is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef PARTITIONMODEL_H
|
||||
#define PARTITIONMODEL_H
|
||||
|
||||
#include <QAbstractListModel>
|
||||
|
||||
class Device;
|
||||
class Partition;
|
||||
class PartitionNode;
|
||||
|
||||
class PartitionModel : public QAbstractListModel
|
||||
{
|
||||
public:
|
||||
PartitionModel( QObject* parent = 0 );
|
||||
void init( Device* device );
|
||||
|
||||
int rowCount( const QModelIndex& parent = QModelIndex() ) const Q_DECL_OVERRIDE;
|
||||
QVariant data( const QModelIndex& index, int role = Qt::DisplayRole ) const Q_DECL_OVERRIDE;
|
||||
|
||||
private:
|
||||
Device* m_device;
|
||||
QList< Partition* > m_partitionList;
|
||||
|
||||
void fillPartitionList( PartitionNode* parent );
|
||||
};
|
||||
|
||||
#endif /* PARTITIONMODEL_H */
|
61
src/modules/partition/PartitionPage.cpp
Normal file
61
src/modules/partition/PartitionPage.cpp
Normal file
@ -0,0 +1,61 @@
|
||||
/* === This file is part of Calamares - <http://github.com/calamares> ===
|
||||
*
|
||||
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
|
||||
*
|
||||
* Calamares is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Calamares is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "PartitionPage.h"
|
||||
|
||||
// Local
|
||||
#include <DeviceModel.h>
|
||||
#include <PartitionModel.h>
|
||||
#include <ui_PartitionPage.h>
|
||||
|
||||
// CalaPM
|
||||
#include <CalaPM.h>
|
||||
#include <backend/corebackend.h>
|
||||
#include <backend/corebackendmanager.h>
|
||||
|
||||
// Qt
|
||||
#include <QDebug>
|
||||
|
||||
PartitionPage::PartitionPage( QWidget* parent )
|
||||
: Calamares::AbstractPage( parent )
|
||||
, m_ui( new Ui_PartitionPage )
|
||||
, m_deviceModel( new DeviceModel( this ) )
|
||||
, m_partitionModel( new PartitionModel( this ) )
|
||||
{
|
||||
// FIXME: Should be done at startup
|
||||
if ( !CalaPM::init() )
|
||||
{
|
||||
qFatal( "Failed to init CalaPM" );
|
||||
}
|
||||
m_backend = CoreBackendManager::self()->backend();
|
||||
m_ui->setupUi( this );
|
||||
m_ui->deviceListView->setModel( m_deviceModel );
|
||||
m_ui->partitionListView->setModel( m_partitionModel );
|
||||
|
||||
m_deviceModel->init( m_backend->scanDevices() );
|
||||
|
||||
connect( m_ui->deviceListView, &QListView::clicked, [ this ]( const QModelIndex & index )
|
||||
{
|
||||
Device* device = m_deviceModel->deviceForIndex( index );
|
||||
m_partitionModel->init( device );
|
||||
} );
|
||||
}
|
||||
|
||||
PartitionPage::~PartitionPage()
|
||||
{
|
||||
}
|
50
src/modules/partition/PartitionPage.h
Normal file
50
src/modules/partition/PartitionPage.h
Normal file
@ -0,0 +1,50 @@
|
||||
/* === This file is part of Calamares - <http://github.com/calamares> ===
|
||||
*
|
||||
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
|
||||
*
|
||||
* Calamares is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Calamares is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef PARTITIONPAGE_H
|
||||
#define PARTITIONPAGE_H
|
||||
|
||||
#include "viewpages/AbstractPage.h"
|
||||
|
||||
#include <QScopedPointer>
|
||||
|
||||
class CoreBackend;
|
||||
class Ui_PartitionPage;
|
||||
|
||||
class DeviceModel;
|
||||
class PartitionModel;
|
||||
|
||||
class PartitionPage : public Calamares::AbstractPage
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit PartitionPage( QWidget* parent = 0 );
|
||||
~PartitionPage();
|
||||
|
||||
Q_SIGNALS:
|
||||
|
||||
public Q_SLOTS:
|
||||
|
||||
private:
|
||||
QScopedPointer< Ui_PartitionPage > m_ui;
|
||||
DeviceModel* m_deviceModel;
|
||||
PartitionModel* m_partitionModel;
|
||||
CoreBackend* m_backend;
|
||||
};
|
||||
|
||||
#endif // PARTITIONPAGE_H
|
79
src/modules/partition/PartitionPage.ui
Normal file
79
src/modules/partition/PartitionPage.ui
Normal file
@ -0,0 +1,79 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>PartitionPage</class>
|
||||
<widget class="QWidget" name="PartitionPage">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>568</width>
|
||||
<height>304</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>[Disk preview goes here]</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QListView" name="partitionListView"/>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="createButton">
|
||||
<property name="text">
|
||||
<string>Create</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="editButton">
|
||||
<property name="text">
|
||||
<string>Edit</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="deleteButton">
|
||||
<property name="text">
|
||||
<string>Delete</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="0" rowspan="3">
|
||||
<widget class="QListView" name="deviceListView">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
32
src/modules/partition/PartitionViewPlugin.cpp
Normal file
32
src/modules/partition/PartitionViewPlugin.cpp
Normal file
@ -0,0 +1,32 @@
|
||||
/* === This file is part of Calamares - <http://github.com/calamares> ===
|
||||
*
|
||||
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
|
||||
*
|
||||
* Calamares is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Calamares is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "PartitionViewPlugin.h"
|
||||
|
||||
|
||||
PartitionViewPlugin::PartitionViewPlugin( QObject* parent )
|
||||
: Calamares::ViewPlugin( parent )
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
QString
|
||||
PartitionViewPlugin::prettyName()
|
||||
{
|
||||
return tr( "Welcome" );
|
||||
}
|
40
src/modules/partition/PartitionViewPlugin.h
Normal file
40
src/modules/partition/PartitionViewPlugin.h
Normal file
@ -0,0 +1,40 @@
|
||||
/* === This file is part of Calamares - <http://github.com/calamares> ===
|
||||
*
|
||||
* Copyright 2014, Aurélien Gâteau <agateau@kde.org>
|
||||
*
|
||||
* Calamares is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Calamares is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef PARTITIONPAGEPLUGIN_H
|
||||
#define PARTITIONPAGEPLUGIN_H
|
||||
|
||||
#include <QObject>
|
||||
|
||||
#include "viewpages/ViewPlugin.h"
|
||||
#include "PluginDllMacro.h"
|
||||
|
||||
class PLUGINDLLEXPORT PartitionViewPlugin : public Calamares::ViewPlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PLUGIN_METADATA( IID "calamares.ViewPlugin/1.0" )
|
||||
//FILE "module.json" )
|
||||
Q_INTERFACES( Calamares::ViewPlugin )
|
||||
|
||||
public:
|
||||
explicit PartitionViewPlugin( QObject* parent = 0 );
|
||||
|
||||
QString prettyName() override;
|
||||
};
|
||||
|
||||
#endif // PARTITIONPAGEPLUGIN_H
|
12
src/modules/partition/main.cpp
Normal file
12
src/modules/partition/main.cpp
Normal file
@ -0,0 +1,12 @@
|
||||
#include <PartitionPage.h>
|
||||
|
||||
#include <QApplication>
|
||||
|
||||
int
|
||||
main( int argc, char* argv[] )
|
||||
{
|
||||
QApplication app( argc, argv );
|
||||
PartitionPage page;
|
||||
page.show();
|
||||
return app.exec();
|
||||
}
|
10
src/modules/partition/module.conf
Normal file
10
src/modules/partition/module.conf
Normal file
@ -0,0 +1,10 @@
|
||||
# Module metadata file for dummy plugin
|
||||
# Syntax is YAML 1.2
|
||||
---
|
||||
type: "view" #core or view
|
||||
name: "partition" #the module name. must be unique and same as the parent directory
|
||||
interface: "qtplugin" #can be: qtplugin, python, process, ...
|
||||
requires: [] #list of module names that must also be loaded. only applies to
|
||||
#binary plugins! these are actual link-time dependencies, not
|
||||
#conceptual dependencies for the setup procedure
|
||||
load: "libcalamares_viewmodule_partition.so"
|
Loading…
Reference in New Issue
Block a user