feat(symlinks): make recursive links explicit

Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
This commit is contained in:
Rachel Powers
2023-02-08 18:39:17 -07:00
parent 5978882378
commit 1bed7754e0
7 changed files with 59 additions and 7 deletions

View File

@ -87,6 +87,7 @@ CopyInstanceDialog::CopyInstanceDialog(InstancePtr original, QWidget *parent)
ui->copyScreenshotsCheckbox->setChecked(m_selectedOptions.isCopyScreenshotsEnabled());
ui->linkFilesGroup->setChecked(m_selectedOptions.isLinkFilesEnabled());
ui->recursiveLinkCheckbox->setChecked(m_selectedOptions.isLinkRecursivelyEnabled());
ui->hardLinksCheckbox->setChecked(m_selectedOptions.isUseHardLinksEnabled());
ui->dontLinkSavesCheckbox->setChecked(m_selectedOptions.isDontLinkSavesEnabled());
}
@ -231,9 +232,22 @@ void CopyInstanceDialog::on_linkFilesGroup_toggled(bool checked)
m_selectedOptions.enableLinkFiles(checked);
}
void CopyInstanceDialog::on_recursiveLinkCheckbox_stateChanged(int state)
{
m_selectedOptions.enableLinkRecursively(state == Qt::Checked);
if (state != Qt::Checked) {
ui->hardLinksCheckbox->setChecked(false);
ui->dontLinkSavesCheckbox->setChecked(false);
}
}
void CopyInstanceDialog::on_hardLinksCheckbox_stateChanged(int state)
{
m_selectedOptions.enableUseHardLinks(state == Qt::Checked);
if (state == Qt::Checked && !ui->recursiveLinkCheckbox->isChecked()) {
ui->recursiveLinkCheckbox->setChecked(true);
}
}
void CopyInstanceDialog::on_dontLinkSavesCheckbox_stateChanged(int state)

View File

@ -56,6 +56,7 @@ slots:
void on_copyModsCheckbox_stateChanged(int state);
void on_copyScreenshotsCheckbox_stateChanged(int state);
void on_linkFilesGroup_toggled(bool checked);
void on_recursiveLinkCheckbox_stateChanged(int state);
void on_hardLinksCheckbox_stateChanged(int state);
void on_dontLinkSavesCheckbox_stateChanged(int state);

View File

@ -209,6 +209,16 @@
</layout>
</widget>
</item>
<item>
<widget class="QLabel" name="advancedOptionsLabel">
<property name="text">
<string>Advanced Copy Options</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="copyModeLayout">
<item>
@ -229,8 +239,18 @@
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="linkOptionsLayout">
<item>
<widget class="QCheckBox" name="recursiveLinkCheckbox">
<property name="text">
<string>Link files recursively</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="hardLinksCheckbox">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>Use hard links instead of symbolic links</string>
</property>
@ -242,7 +262,7 @@
<item>
<widget class="QCheckBox" name="dontLinkSavesCheckbox">
<property name="toolTip">
<string>If "copy saves" is selected world save data will be copied instead of linked and thus not shared between instances.</string>
<string>If &quot;copy saves&quot; is selected world save data will be copied instead of linked and thus not shared between instances.</string>
</property>
<property name="text">
<string>Don't link saves</string>
@ -283,8 +303,9 @@
<tabstop>copyResPacksCheckbox</tabstop>
<tabstop>copyModsCheckbox</tabstop>
<tabstop>linkFilesGroup</tabstop>
<tabstop>recursiveLinkCheckbox</tabstop>
<tabstop>hardLinksCheckbox</tabstop>
<tabstop>linkWorldsCheckbox</tabstop>
<tabstop>dontLinkSavesCheckbox</tabstop>
</tabstops>
<resources/>
<connections>