adding the ability to delete projects
This commit is contained in:
@@ -64,6 +64,34 @@ namespace Noggit::Ui::Windows
|
||||
);
|
||||
}
|
||||
|
||||
void NoggitProjectSelectionWindow::HandleContextMenuProjectListItemDelete(std::string projectPath)
|
||||
{
|
||||
QMessageBox prompt;
|
||||
prompt.setWindowIcon(QIcon(":/icon"));
|
||||
prompt.setWindowTitle("Delete Project");
|
||||
prompt.setIcon(QMessageBox::Critical);
|
||||
prompt.setWindowFlags(Qt::WindowStaysOnTopHint);
|
||||
prompt.setText("Deleting project will remove all saved data.");
|
||||
prompt.addButton("Accept", QMessageBox::AcceptRole);
|
||||
prompt.setDefaultButton(prompt.addButton("Cancel", QMessageBox::RejectRole));
|
||||
prompt.setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowTitleHint);
|
||||
|
||||
prompt.exec();
|
||||
|
||||
switch (prompt.buttonRole(prompt.clickedButton()))
|
||||
{
|
||||
case QMessageBox::AcceptRole:
|
||||
std::filesystem::remove_all(projectPath);
|
||||
break;
|
||||
case QMessageBox::DestructiveRole:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
_existingProjectEnumerationComponent->BuildExistingProjectList(this);
|
||||
}
|
||||
|
||||
NoggitProjectSelectionWindow::~NoggitProjectSelectionWindow()
|
||||
{
|
||||
delete ui;
|
||||
|
||||
@@ -49,6 +49,8 @@ namespace Noggit::Ui::Windows
|
||||
std::unique_ptr<Component::ExistingProjectEnumerationComponent> _existingProjectEnumerationComponent;
|
||||
std::unique_ptr<Component::CreateProjectComponent> _createProjectComponent;
|
||||
std::unique_ptr<Component::LoadProjectComponent> _loadProjectComponent;
|
||||
|
||||
void HandleContextMenuProjectListItemDelete(std::string projectPath);
|
||||
};
|
||||
}
|
||||
#endif // NOGGITREDPROJECTPAGE_H
|
||||
@@ -36,6 +36,27 @@ namespace Noggit::Ui::Component
|
||||
|
||||
item->setData(Qt::UserRole, QVariant(projectData.ProjectName));
|
||||
item->setSizeHint(projectListItem->minimumSizeHint());
|
||||
|
||||
QObject::connect(projectListItem, &QListWidget::customContextMenuRequested,
|
||||
[=](const QPoint& pos)
|
||||
{
|
||||
QMenu contextMenu(projectListItem->tr("Context menu"), projectListItem);
|
||||
|
||||
QAction action1("Delete Project", projectListItem);
|
||||
auto icon = QIcon();
|
||||
icon.addPixmap(FontAwesomeIcon(FontAwesome::trash).pixmap(QSize(16, 16)));
|
||||
action1.setIcon(icon);
|
||||
|
||||
QObject::connect(&action1, &QAction::triggered, [=]()
|
||||
{
|
||||
parent->HandleContextMenuProjectListItemDelete(projectData.ProjectDirectory.toStdString());
|
||||
});
|
||||
|
||||
contextMenu.addAction(&action1);
|
||||
contextMenu.exec(projectListItem->mapToGlobal(pos));
|
||||
});
|
||||
|
||||
|
||||
parent->ui->listView->setItemWidget(item, projectListItem);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,6 +64,8 @@ namespace Noggit::Ui::Widget
|
||||
project_last_edited_label->setGraphicsEffect(lastEditedEffect);
|
||||
project_last_edited_label->setAutoFillBackground(true);
|
||||
|
||||
setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
|
||||
layout.addWidget(project_version_icon);
|
||||
layout.addWidget(project_name_label);
|
||||
layout.addWidget(project_directory_label);
|
||||
|
||||
Reference in New Issue
Block a user