Change the way the button is created / fix crash

This commit is contained in:
Tomaz Canabrava 2021-12-12 20:13:52 +00:00 committed by Andrius Štikonas
parent 2bcd994bf1
commit 1edb947525
4 changed files with 217 additions and 159 deletions

View File

@ -55,14 +55,6 @@ NewDialog::NewDialog(QWidget* parent, Device& device, Partition& unallocatedPart
KConfigGroup kcg(KSharedConfig::openConfig(), "newDialog");
restoreGeometry(kcg.readEntry<QByteArray>("Geometry", QByteArray()));
// Hack on top of hack. The dialog is created via two inheritances.
auto *allowEveryone = new QCheckBox(i18n("Allow everyone to use this partition"));
allowEveryone->setToolTip(i18n("If you are creating a partition on a usb stick, leave this on"));
QBoxLayout *l = qobject_cast<QBoxLayout*>(layout());
int lCount = l->count();
l->insertWidget(lCount-1, allowEveryone);
}
NewDialog::~NewDialog()
@ -122,6 +114,20 @@ void NewDialog::setupDialog()
// run there is a valid partition set in the part resizer widget and they will need that.
onRoleChanged(false);
onFilesystemChanged(dialogWidget().comboFileSystem().currentIndex());
connect(&dialogWidget().comboFileSystem(), QOverload<int>::of(&QComboBox::currentIndexChanged), this, [this]{
const QString currText = dialogWidget().comboFileSystem().currentText();
const bool enablePosixPermission = QList<QString>({
QStringLiteral("ext2"),
QStringLiteral("ext3"),
QStringLiteral("ext4")}
).contains(currText);
if (enablePosixPermission) {
dialogWidget().showPosixPermissions();
} else {
dialogWidget().hidePosixPermissions();
}
});
}
void NewDialog::setupConnections()
@ -296,5 +302,5 @@ void NewDialog::updateOkButtonStatus()
bool NewDialog::useUnsecuredPartition() const
{
return m_unsecuredPartition->checkState() == Qt::CheckState::Checked;
return !dialogWidget().isPermissionOnlyRoot();
}

View File

@ -506,7 +506,7 @@ void PartitionManagerWidget::onNewPartition()
QPointer<NewDialog> dlg = new NewDialog(this, *selectedDevice(), *newPartition, selectedDevice()->partitionTable()->childRoles(*selectedPartition()));
if (dlg->exec() == QDialog::Accepted) {
if (dlg->useUnsecuredPartition()) {
newPartition->setPermissions(QStringLiteral("777"));
newPartition->fileSystem().setPosixPermissions(QStringLiteral("777"));
}
operationStack().push(new NewOperation(*selectedDevice(), newPartition));
} else {

View File

@ -22,6 +22,7 @@ class SizeDialogWidget : public QWidget, public Ui::SizeDialogWidgetBase
public:
SizeDialogWidget(QWidget* parent) : QWidget(parent), Ui::SizeDialogWidgetBase() {
setupUi(this);
hidePosixPermissions();
}
public:
@ -141,6 +142,23 @@ public:
delete m_LabelTextNoSetLabel;
m_LabelTextNoSetLabel = nullptr;
}
void hidePosixPermissions() {
m_permissionEveryone->hide();
m_permissionOnlyRoot->hide();
m_labelPermission->hide();
}
void showPosixPermissions() {
m_permissionEveryone->show();
m_permissionOnlyRoot->show();
m_labelPermission->show();
}
bool isPermissionOnlyRoot() const {
return m_permissionOnlyRoot->isVisible() && m_permissionOnlyRoot->isChecked();
}
void hideBeforeAndAfter() {
labelFreeBefore().hide();
spinFreeBefore().hide();

View File

@ -18,22 +18,19 @@ SPDX-License-Identifier: GPL-3.0-or-later
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="11" column="0">
<widget class="QLabel" name="m_LabelFreeBefore">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>3</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
<item row="0" column="0" colspan="2">
<widget class="PartResizerWidget" name="m_PartResizerWidget" native="true">
<property name="minimumSize">
<size>
<width>400</width>
<height>60</height>
</size>
</property>
<property name="text">
<string comment="@label:listbox">F&amp;ree space before:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>m_SpinFreeBefore</cstring>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>60</height>
</size>
</property>
</widget>
</item>
@ -53,18 +50,8 @@ SPDX-License-Identifier: GPL-3.0-or-later
</property>
</spacer>
</item>
<item row="12" column="1">
<widget class="FormattedSpinBox" name="m_SpinCapacity">
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>999999999.000000000000000</double>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="m_LabelFileSystem">
<item row="2" column="0">
<widget class="QLabel" name="m_LabelRole">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
@ -72,46 +59,13 @@ SPDX-License-Identifier: GPL-3.0-or-later
</sizepolicy>
</property>
<property name="text">
<string comment="@label:listbox">File system:</string>
<string comment="@label:listbox">Partition &amp;type:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>m_ComboFileSystem</cstring>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QCheckBox" name="m_CheckBoxEncrypt">
<property name="toolTip">
<string>Set up encryption for this filesystem with LUKS. You will be asked to provide a passphrase.</string>
</property>
<property name="text">
<string>Encrypt with LUKS</string>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="label_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string comment="@label">Maximum size:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="10" column="1">
<widget class="QLabel" name="m_LabelMaxSize">
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
<cstring>m_RadioPrimary</cstring>
</property>
</widget>
</item>
@ -140,7 +94,76 @@ SPDX-License-Identifier: GPL-3.0-or-later
</item>
</layout>
</item>
<item row="8" column="1">
<item row="3" column="0">
<widget class="QLabel" name="m_LabelFileSystem">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string comment="@label:listbox">File system:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>m_ComboFileSystem</cstring>
</property>
</widget>
</item>
<item row="3" column="1">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QComboBox" name="m_ComboFileSystem"/>
</item>
</layout>
</item>
<item row="4" column="1">
<widget class="QCheckBox" name="m_CheckBoxEncrypt">
<property name="toolTip">
<string>Set up encryption for this filesystem with LUKS. You will be asked to provide a passphrase.</string>
</property>
<property name="text">
<string>Encrypt with LUKS</string>
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<widget class="KNewPasswordWidget" name="m_EditPassphrase"/>
</item>
<item row="6" column="0">
<widget class="QLabel" name="m_LabelTextLVName">
<property name="text">
<string>Logical Volume Name:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLineEdit" name="m_EditLVName">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="m_LabelTextLabel">
<property name="text">
<string comment="@label">Label:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>m_EditLabel</cstring>
</property>
</widget>
</item>
<item row="7" column="1">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLineEdit" name="m_EditLabel"/>
@ -157,62 +180,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
</item>
</layout>
</item>
<item row="0" column="0" colspan="2">
<widget class="PartResizerWidget" name="m_PartResizerWidget" native="true">
<property name="minimumSize">
<size>
<width>400</width>
<height>60</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>60</height>
</size>
</property>
</widget>
</item>
<item row="3" column="1">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QComboBox" name="m_ComboFileSystem"/>
</item>
</layout>
</item>
<item row="2" column="0">
<widget class="QLabel" name="m_LabelRole">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string comment="@label:listbox">Partition &amp;type:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>m_RadioPrimary</cstring>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="m_LabelTextLabel">
<property name="text">
<string comment="@label">Label:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>m_EditLabel</cstring>
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QLabel" name="label_4">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
@ -228,7 +196,56 @@ SPDX-License-Identifier: GPL-3.0-or-later
</property>
</widget>
</item>
<item row="11" column="1">
<item row="8" column="1">
<widget class="QLabel" name="m_LabelMinSize">
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QLabel" name="label_5">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string comment="@label">Maximum size:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QLabel" name="m_LabelMaxSize">
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="m_LabelFreeBefore">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>3</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string comment="@label:listbox">F&amp;ree space before:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="buddy">
<cstring>m_SpinFreeBefore</cstring>
</property>
</widget>
</item>
<item row="10" column="1">
<widget class="FormattedSpinBox" name="m_SpinFreeBefore">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
@ -244,7 +261,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
</property>
</widget>
</item>
<item row="12" column="0">
<item row="11" column="0">
<widget class="QLabel" name="label_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
@ -263,7 +280,17 @@ SPDX-License-Identifier: GPL-3.0-or-later
</property>
</widget>
</item>
<item row="13" column="0">
<item row="11" column="1">
<widget class="FormattedSpinBox" name="m_SpinCapacity">
<property name="minimum">
<double>0.000000000000000</double>
</property>
<property name="maximum">
<double>999999999.000000000000000</double>
</property>
</widget>
</item>
<item row="12" column="0">
<widget class="QLabel" name="m_LabelFreeAfter">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
@ -282,7 +309,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
</property>
</widget>
</item>
<item row="13" column="1">
<item row="12" column="1">
<widget class="FormattedSpinBox" name="m_SpinFreeAfter">
<property name="minimum">
<double>0.000000000000000</double>
@ -292,6 +319,40 @@ SPDX-License-Identifier: GPL-3.0-or-later
</property>
</widget>
</item>
<item row="13" column="0">
<widget class="QLabel" name="m_labelPermission">
<property name="text">
<string>Permissions</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="13" column="1">
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QRadioButton" name="m_permissionEveryone">
<property name="toolTip">
<string>Allow everyone to write and read on this device</string>
</property>
<property name="text">
<string>Everyone</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="m_permissionOnlyRoot">
<property name="toolTip">
<string>Allow only root to write and read on this device, you will need to setup per-folder permissions</string>
</property>
<property name="text">
<string>Only Root</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="14" column="0" colspan="2">
<spacer name="verticalSpacer_2">
<property name="orientation">
@ -308,33 +369,6 @@ SPDX-License-Identifier: GPL-3.0-or-later
</property>
</spacer>
</item>
<item row="5" column="0" colspan="2">
<widget class="KNewPasswordWidget" name="m_EditPassphrase"/>
</item>
<item row="9" column="1">
<widget class="QLabel" name="m_LabelMinSize">
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="m_LabelTextLVName">
<property name="text">
<string>Logical Volume Name:</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLineEdit" name="m_EditLVName">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>