adding the ability to delete projects

This commit is contained in:
Alister
2021-12-29 13:15:17 +00:00
parent 4c9acc5dad
commit e3819bf33a
4 changed files with 53 additions and 0 deletions

View File

@@ -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() NoggitProjectSelectionWindow::~NoggitProjectSelectionWindow()
{ {
delete ui; delete ui;

View File

@@ -49,6 +49,8 @@ namespace Noggit::Ui::Windows
std::unique_ptr<Component::ExistingProjectEnumerationComponent> _existingProjectEnumerationComponent; std::unique_ptr<Component::ExistingProjectEnumerationComponent> _existingProjectEnumerationComponent;
std::unique_ptr<Component::CreateProjectComponent> _createProjectComponent; std::unique_ptr<Component::CreateProjectComponent> _createProjectComponent;
std::unique_ptr<Component::LoadProjectComponent> _loadProjectComponent; std::unique_ptr<Component::LoadProjectComponent> _loadProjectComponent;
void HandleContextMenuProjectListItemDelete(std::string projectPath);
}; };
} }
#endif // NOGGITREDPROJECTPAGE_H #endif // NOGGITREDPROJECTPAGE_H

View File

@@ -36,6 +36,27 @@ namespace Noggit::Ui::Component
item->setData(Qt::UserRole, QVariant(projectData.ProjectName)); item->setData(Qt::UserRole, QVariant(projectData.ProjectName));
item->setSizeHint(projectListItem->minimumSizeHint()); 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); parent->ui->listView->setItemWidget(item, projectListItem);
} }
} }

View File

@@ -64,6 +64,8 @@ namespace Noggit::Ui::Widget
project_last_edited_label->setGraphicsEffect(lastEditedEffect); project_last_edited_label->setGraphicsEffect(lastEditedEffect);
project_last_edited_label->setAutoFillBackground(true); project_last_edited_label->setAutoFillBackground(true);
setContextMenuPolicy(Qt::CustomContextMenu);
layout.addWidget(project_version_icon); layout.addWidget(project_version_icon);
layout.addWidget(project_name_label); layout.addWidget(project_name_label);
layout.addWidget(project_directory_label); layout.addWidget(project_directory_label);