Added message box prompt when user tries to delete track (#5274)

* Added messagebox when user tries to delete track

* Code review refactorings

* Update Track.h

* Changed message box title to "Confirm removal"

* Merge changes from master

* Add option to disable warning

* Default to showing warning if no config found

Co-authored-by: Hyunjin Song <tteu.ingog@gmail.com>
Co-authored-by: Spekular <Spekular@users.noreply.github.com>
This commit is contained in:
fschuelke
2021-04-03 21:18:27 +02:00
committed by GitHub
parent c50ff0663d
commit 8d9c7347ba
4 changed files with 56 additions and 1 deletions

View File

@@ -77,6 +77,7 @@ private slots:
void toggleSideBarOnRight(bool enabled);
void toggleLetPreviewsFinish(bool enabled);
void toggleSoloLegacyBehavior(bool enabled);
void toggleTrackDeletionWarning(bool enabled);
void toggleMMPZ(bool enabled);
void toggleDisableBackup(bool enabled);
void toggleOpenLastProject(bool enabled);
@@ -136,6 +137,7 @@ private:
bool m_sideBarOnRight;
bool m_letPreviewsFinish;
bool m_soloLegacyBehavior;
bool m_trackDeletionWarning;
bool m_MMPZ;
bool m_disableBackup;
bool m_openLastProject;

View File

@@ -43,6 +43,7 @@ public:
protected:
void mousePressEvent( QMouseEvent * me ) override;
void paintEvent( QPaintEvent * pe ) override;
bool confirmRemoval();
private slots:

View File

@@ -108,6 +108,8 @@ SetupDialog::SetupDialog(ConfigTabs tab_to_open) :
"ui", "letpreviewsfinish").toInt()),
m_soloLegacyBehavior(ConfigManager::inst()->value(
"app", "sololegacybehavior", "0").toInt()),
m_trackDeletionWarning(ConfigManager::inst()->value(
"ui", "trackdeletionwarning", "1").toInt()),
m_MMPZ(!ConfigManager::inst()->value(
"app", "nommpz").toInt()),
m_disableBackup(!ConfigManager::inst()->value(
@@ -243,6 +245,8 @@ SetupDialog::SetupDialog(ConfigTabs tab_to_open) :
m_letPreviewsFinish, SLOT(toggleLetPreviewsFinish(bool)), false);
addLedCheckBox(tr("Mute automation tracks during solo"), gui_tw, counter,
m_soloLegacyBehavior, SLOT(toggleSoloLegacyBehavior(bool)), false);
addLedCheckBox(tr("Show warning when deleting tracks"), gui_tw, counter,
m_trackDeletionWarning, SLOT(toggleTrackDeletionWarning(bool)), false);
gui_tw->setFixedHeight(YDelta + YDelta * counter);
@@ -919,6 +923,8 @@ void SetupDialog::accept()
QString::number(m_letPreviewsFinish));
ConfigManager::inst()->setValue("app", "sololegacybehavior",
QString::number(m_soloLegacyBehavior));
ConfigManager::inst()->setValue("ui", "trackdeletionwarning",
QString::number(m_trackDeletionWarning));
ConfigManager::inst()->setValue("app", "nommpz",
QString::number(!m_MMPZ));
ConfigManager::inst()->setValue("app", "disablebackup",
@@ -1037,6 +1043,12 @@ void SetupDialog::toggleLetPreviewsFinish(bool enabled)
}
void SetupDialog::toggleTrackDeletionWarning(bool enabled)
{
m_trackDeletionWarning = enabled;
}
void SetupDialog::toggleMMPZ(bool enabled)
{
m_MMPZ = enabled;

View File

@@ -25,9 +25,11 @@
#include "TrackOperationsWidget.h"
#include <QMenu>
#include <QMessageBox>
#include <QMouseEvent>
#include <QPainter>
#include <QPushButton>
#include <QCheckBox>
#include "AutomationPattern.h"
#include "AutomationTrack.h"
@@ -193,6 +195,41 @@ void TrackOperationsWidget::paintEvent( QPaintEvent * pe )
}
/*! \brief Show a message box warning the user that this track is about to be closed */
bool TrackOperationsWidget::confirmRemoval()
{
bool needConfirm = ConfigManager::inst()->value("ui", "trackdeletionwarning", "1").toInt();
if (!needConfirm){ return true; }
QString messageRemoveTrack = tr("After removing a track, it can not "
"be recovered. Are you sure you want to remove track \"%1\"?")
.arg(m_trackView->getTrack()->name());
QString messageTitleRemoveTrack = tr("Confirm removal");
QString askAgainText = tr("Don't ask again");
QCheckBox* askAgainCheckBox = new QCheckBox(askAgainText, nullptr);
connect(askAgainCheckBox, &QCheckBox::stateChanged, [this](int state){
// Invert button state, if it's checked we *shouldn't* ask again
ConfigManager::inst()->setValue("ui", "trackdeletionwarning", state ? "0" : "1");
});
QMessageBox mb(this);
mb.setText(messageRemoveTrack);
mb.setWindowTitle(messageTitleRemoveTrack);
mb.setIcon(QMessageBox::Warning);
mb.addButton(QMessageBox::Cancel);
mb.addButton(QMessageBox::Ok);
mb.setCheckBox(askAgainCheckBox);
mb.setDefaultButton(QMessageBox::Cancel);
int answer = mb.exec();
if( answer == QMessageBox::Ok )
{
return true;
}
return false;
}
/*! \brief Clone this track
@@ -232,7 +269,10 @@ void TrackOperationsWidget::clearTrack()
*/
void TrackOperationsWidget::removeTrack()
{
emit trackRemovalScheduled( m_trackView );
if (confirmRemoval())
{
emit trackRemovalScheduled(m_trackView);
}
}
void TrackOperationsWidget::changeTrackColor()