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()
|
NoggitProjectSelectionWindow::~NoggitProjectSelectionWindow()
|
||||||
{
|
{
|
||||||
delete ui;
|
delete ui;
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user