don't assume a device always has a partition table.

svn path=/trunk/extragear/sysadmin/partitionmanager/; revision=1097675
This commit is contained in:
Volker Lanz 2010-03-01 21:13:36 +00:00
parent 6573273554
commit afffc3b4d8
1 changed files with 26 additions and 15 deletions

View File

@ -61,8 +61,31 @@ void DevicePropsDialog::setupDialog()
enableButtonOk(false);
button(KDialog::Cancel)->setFocus();
dialogWidget().partTableWidget().setReadOnly(true);
dialogWidget().partTableWidget().setPartitionTable(device().partitionTable());
QString type = "---";
QString maxPrimaries = "---";
if (device().partitionTable() != NULL)
{
type = (device().partitionTable()->isReadOnly())
? i18nc("@label device", "%1 (read only)", device().partitionTable()->typeName())
: device().partitionTable()->typeName();
maxPrimaries = QString("%1/%2").arg(device().partitionTable()->numPrimaries()).arg(device().partitionTable()->maxPrimaries());
dialogWidget().partTableWidget().setReadOnly(true);
dialogWidget().partTableWidget().setPartitionTable(device().partitionTable());
if (device().partitionTable()->type() == PartitionTable::msdos)
dialogWidget().radioCylinderBased().setChecked(true);
else if (device().partitionTable()->type() == PartitionTable::msdos_sectorbased)
dialogWidget().radioSectorBased().setChecked(true);
else
dialogWidget().hideTypeRadioButtons();
}
else
{
dialogWidget().partTableWidget().setVisible(false);
dialogWidget().hideTypeRadioButtons();
}
dialogWidget().capacity().setText(Capacity(device()).toString(Capacity::AppendUnit | Capacity::AppendBytes));
@ -72,23 +95,11 @@ void DevicePropsDialog::setupDialog()
dialogWidget().chs().setText(QString("%1/%2/%3").arg(cyls).arg(heads).arg(sectors));
dialogWidget().cylinderSize().setText(i18ncp("@label", "1 Sector", "%1 Sectors", device().cylinderSize()));
dialogWidget().primariesMax().setText(QString("%1/%2").arg(device().partitionTable()->numPrimaries()).arg(device().partitionTable()->maxPrimaries()));
dialogWidget().primariesMax().setText(maxPrimaries);
dialogWidget().sectorSize().setText(Capacity(device().sectorSize()).toString(Capacity::Byte, Capacity::AppendUnit));
dialogWidget().totalSectors().setText(KGlobal::locale()->formatNumber(device().totalSectors(), 0));
const QString type = device().partitionTable()->isReadOnly()
? i18nc("@label device", "%1 (read only)", device().partitionTable()->typeName())
: device().partitionTable()->typeName();
dialogWidget().type().setText(type);
if (device().partitionTable()->type() == PartitionTable::msdos)
dialogWidget().radioCylinderBased().setChecked(true);
else if (device().partitionTable()->type() == PartitionTable::msdos_sectorbased)
dialogWidget().radioSectorBased().setChecked(true);
else
dialogWidget().hideTypeRadioButtons();
setMinimumSize(dialogWidget().size());
resize(dialogWidget().size());
}