/* === This file is part of Calamares - === * * Copyright 2014, Aurélien Gâteau * * 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 . */ #include #include // CalaPM #include DeviceModel::DeviceInfo::DeviceInfo( Device* dev ) : device( dev ) , partitionModel( new PartitionModel ) { partitionModel->init( dev ); } DeviceModel::DeviceInfo::~DeviceInfo() { delete device; delete partitionModel; } DeviceModel::DeviceModel( QObject* parent ) : QAbstractListModel( parent ) { } DeviceModel::~DeviceModel() { qDeleteAll( m_devices ); } void DeviceModel::init( const QList< Device* >& devices ) { beginResetModel(); m_devices.clear(); for ( auto device : devices ) { m_devices << new DeviceInfo( device ); } 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 )->device; switch ( role ) { case Qt::DisplayRole: if ( device->name().isEmpty() ) { return device->deviceNode(); } else { return device->name() + " " + device->deviceNode(); } default: return QVariant(); } } PartitionModel* DeviceModel::partitionModelForIndex( const QModelIndex& index ) const { int row = index.row(); if ( row < 0 || row >= m_devices.count() ) { return nullptr; } return m_devices.at( row )->partitionModel; }