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:
@@ -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;
|
||||
|
||||
@@ -43,6 +43,7 @@ public:
|
||||
protected:
|
||||
void mousePressEvent( QMouseEvent * me ) override;
|
||||
void paintEvent( QPaintEvent * pe ) override;
|
||||
bool confirmRemoval();
|
||||
|
||||
|
||||
private slots:
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user