mirror of
https://github.com/libretro/RetroArch.git
synced 2025-02-26 12:48:27 +00:00
Qt: move drag&drop context menu into FileDropWidget source
This commit is contained in:
parent
566d0fc0d9
commit
819e930b89
@ -6,7 +6,18 @@
|
||||
#include <QStyleOption>
|
||||
#include <QMimeData>
|
||||
#include <QPainter>
|
||||
#include <QAction>
|
||||
#include <QFileInfo>
|
||||
#include <QFileDialog>
|
||||
#include <QMenu>
|
||||
|
||||
#include "filedropwidget.h"
|
||||
#include "playlistentrydialog.h"
|
||||
#include "../ui_qt.h"
|
||||
|
||||
extern "C" {
|
||||
#include "../../../file_path_special.h"
|
||||
}
|
||||
|
||||
FileDropWidget::FileDropWidget(QWidget *parent) :
|
||||
QWidget(parent)
|
||||
@ -67,3 +78,101 @@ void FileDropWidget::dropEvent(QDropEvent *event)
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::onFileDropWidgetContextMenuRequested(const QPoint &pos)
|
||||
{
|
||||
QScopedPointer<QMenu> menu;
|
||||
QScopedPointer<QAction> addEntryAction;
|
||||
QScopedPointer<QAction> addFilesAction;
|
||||
QScopedPointer<QAction> addFolderAction;
|
||||
QScopedPointer<QAction> editAction;
|
||||
QScopedPointer<QAction> deleteAction;
|
||||
QPointer<QAction> selectedAction;
|
||||
QPoint cursorPos = QCursor::pos();
|
||||
QHash<QString, QString> contentHash = getCurrentContentHash();
|
||||
|
||||
menu.reset(new QMenu(this));
|
||||
|
||||
addEntryAction.reset(new QAction(QString(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_ADD_ENTRY)), this));
|
||||
addFilesAction.reset(new QAction(QString(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_ADD_FILES)), this));
|
||||
addFolderAction.reset(new QAction(QString(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_ADD_FOLDER)), this));
|
||||
editAction.reset(new QAction(QString(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_EDIT)), this));
|
||||
deleteAction.reset(new QAction(QString(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_DELETE)), this));
|
||||
|
||||
menu->addAction(addEntryAction.data());
|
||||
menu->addAction(addFilesAction.data());
|
||||
menu->addAction(addFolderAction.data());
|
||||
|
||||
if (!contentHash.isEmpty())
|
||||
{
|
||||
menu->addAction(editAction.data());
|
||||
menu->addAction(deleteAction.data());
|
||||
}
|
||||
|
||||
selectedAction = menu->exec(cursorPos);
|
||||
|
||||
if (!selectedAction)
|
||||
return;
|
||||
|
||||
if (selectedAction == addFilesAction.data())
|
||||
{
|
||||
QStringList filePaths = QFileDialog::getOpenFileNames(this, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_SELECT_FILES));
|
||||
|
||||
if (!filePaths.isEmpty())
|
||||
addFilesToPlaylist(filePaths);
|
||||
}
|
||||
else if (selectedAction == addEntryAction.data())
|
||||
{
|
||||
addFilesToPlaylist(QStringList());
|
||||
}
|
||||
else if (selectedAction == addFolderAction.data())
|
||||
{
|
||||
QString dirPath = QFileDialog::getExistingDirectory(this, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_SELECT_FOLDER), QString(), QFileDialog::ShowDirsOnly);
|
||||
|
||||
if (!dirPath.isEmpty())
|
||||
addFilesToPlaylist(QStringList() << dirPath);
|
||||
}
|
||||
else if (selectedAction == editAction.data())
|
||||
{
|
||||
PlaylistEntryDialog *playlistDialog = playlistEntryDialog();
|
||||
QHash<QString, QString> selectedCore;
|
||||
QString selectedDatabase;
|
||||
QString selectedName;
|
||||
QString selectedPath;
|
||||
QString currentPlaylistPath = getCurrentPlaylistPath();
|
||||
|
||||
if (!playlistDialog->showDialog(contentHash))
|
||||
return;
|
||||
|
||||
selectedName = m_playlistEntryDialog->getSelectedName();
|
||||
selectedPath = m_playlistEntryDialog->getSelectedPath();
|
||||
selectedCore = m_playlistEntryDialog->getSelectedCore();
|
||||
selectedDatabase = m_playlistEntryDialog->getSelectedDatabase();
|
||||
|
||||
if (selectedCore.isEmpty())
|
||||
{
|
||||
selectedCore["core_name"] = "DETECT";
|
||||
selectedCore["core_path"] = "DETECT";
|
||||
}
|
||||
|
||||
if (selectedDatabase.isEmpty())
|
||||
{
|
||||
selectedDatabase = QFileInfo(currentPlaylistPath).fileName().remove(file_path_str(FILE_PATH_LPL_EXTENSION));
|
||||
}
|
||||
|
||||
contentHash["label"] = selectedName;
|
||||
contentHash["path"] = selectedPath;
|
||||
contentHash["core_name"] = selectedCore.value("core_name");
|
||||
contentHash["core_path"] = selectedCore.value("core_path");
|
||||
contentHash["db_name"] = selectedDatabase;
|
||||
|
||||
if (!updateCurrentPlaylistEntry(contentHash))
|
||||
{
|
||||
showMessageBox(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_COULD_NOT_UPDATE_PLAYLIST_ENTRY), MainWindow::MSGBOX_TYPE_ERROR, Qt::ApplicationModal, false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (selectedAction == deleteAction.data())
|
||||
{
|
||||
deleteCurrentPlaylistItem();
|
||||
}
|
||||
}
|
||||
|
@ -1140,105 +1140,6 @@ bool MainWindow::showMessageBox(QString msg, MessageBoxType msgType, Qt::WindowM
|
||||
return true;
|
||||
}
|
||||
|
||||
void MainWindow::onFileDropWidgetContextMenuRequested(const QPoint &pos)
|
||||
{
|
||||
QScopedPointer<QMenu> menu;
|
||||
QScopedPointer<QAction> addEntryAction;
|
||||
QScopedPointer<QAction> addFilesAction;
|
||||
QScopedPointer<QAction> addFolderAction;
|
||||
QScopedPointer<QAction> editAction;
|
||||
QScopedPointer<QAction> deleteAction;
|
||||
QPointer<QAction> selectedAction;
|
||||
QPoint cursorPos = QCursor::pos();
|
||||
QHash<QString, QString> contentHash = getCurrentContentHash();
|
||||
|
||||
menu.reset(new QMenu(this));
|
||||
|
||||
addEntryAction.reset(new QAction(QString(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_ADD_ENTRY)), this));
|
||||
addFilesAction.reset(new QAction(QString(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_ADD_FILES)), this));
|
||||
addFolderAction.reset(new QAction(QString(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_ADD_FOLDER)), this));
|
||||
editAction.reset(new QAction(QString(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_EDIT)), this));
|
||||
deleteAction.reset(new QAction(QString(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_DELETE)), this));
|
||||
|
||||
menu->addAction(addEntryAction.data());
|
||||
menu->addAction(addFilesAction.data());
|
||||
menu->addAction(addFolderAction.data());
|
||||
|
||||
if (!contentHash.isEmpty())
|
||||
{
|
||||
menu->addAction(editAction.data());
|
||||
menu->addAction(deleteAction.data());
|
||||
}
|
||||
|
||||
selectedAction = menu->exec(cursorPos);
|
||||
|
||||
if (!selectedAction)
|
||||
return;
|
||||
|
||||
if (selectedAction == addFilesAction.data())
|
||||
{
|
||||
QStringList filePaths = QFileDialog::getOpenFileNames(this, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_SELECT_FILES));
|
||||
|
||||
if (!filePaths.isEmpty())
|
||||
addFilesToPlaylist(filePaths);
|
||||
}
|
||||
else if (selectedAction == addEntryAction.data())
|
||||
{
|
||||
addFilesToPlaylist(QStringList());
|
||||
}
|
||||
else if (selectedAction == addFolderAction.data())
|
||||
{
|
||||
QString dirPath = QFileDialog::getExistingDirectory(this, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_SELECT_FOLDER), QString(), QFileDialog::ShowDirsOnly);
|
||||
|
||||
if (!dirPath.isEmpty())
|
||||
addFilesToPlaylist(QStringList() << dirPath);
|
||||
}
|
||||
else if (selectedAction == editAction.data())
|
||||
{
|
||||
PlaylistEntryDialog *playlistDialog = playlistEntryDialog();
|
||||
QHash<QString, QString> selectedCore;
|
||||
QString selectedDatabase;
|
||||
QString selectedName;
|
||||
QString selectedPath;
|
||||
QString currentPlaylistPath = getCurrentPlaylistPath();
|
||||
|
||||
if (!playlistDialog->showDialog(contentHash))
|
||||
return;
|
||||
|
||||
selectedName = m_playlistEntryDialog->getSelectedName();
|
||||
selectedPath = m_playlistEntryDialog->getSelectedPath();
|
||||
selectedCore = m_playlistEntryDialog->getSelectedCore();
|
||||
selectedDatabase = m_playlistEntryDialog->getSelectedDatabase();
|
||||
|
||||
if (selectedCore.isEmpty())
|
||||
{
|
||||
selectedCore["core_name"] = "DETECT";
|
||||
selectedCore["core_path"] = "DETECT";
|
||||
}
|
||||
|
||||
if (selectedDatabase.isEmpty())
|
||||
{
|
||||
selectedDatabase = QFileInfo(currentPlaylistPath).fileName().remove(file_path_str(FILE_PATH_LPL_EXTENSION));
|
||||
}
|
||||
|
||||
contentHash["label"] = selectedName;
|
||||
contentHash["path"] = selectedPath;
|
||||
contentHash["core_name"] = selectedCore.value("core_name");
|
||||
contentHash["core_path"] = selectedCore.value("core_path");
|
||||
contentHash["db_name"] = selectedDatabase;
|
||||
|
||||
if (!updateCurrentPlaylistEntry(contentHash))
|
||||
{
|
||||
showMessageBox(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_COULD_NOT_UPDATE_PLAYLIST_ENTRY), MainWindow::MSGBOX_TYPE_ERROR, Qt::ApplicationModal, false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (selectedAction == deleteAction.data())
|
||||
{
|
||||
deleteCurrentPlaylistItem();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::onFileBrowserTreeContextMenuRequested(const QPoint&)
|
||||
{
|
||||
#ifdef HAVE_LIBRETRODB
|
||||
|
Loading…
x
Reference in New Issue
Block a user