From 819e930b89b89243b4e4f45854d37632364813c0 Mon Sep 17 00:00:00 2001 From: Brad Parker Date: Fri, 17 Aug 2018 11:57:41 -0400 Subject: [PATCH] Qt: move drag&drop context menu into FileDropWidget source --- ui/drivers/qt/filedropwidget.cpp | 109 +++++++++++++++++++++++++++++++ ui/drivers/qt/ui_qt_window.cpp | 99 ---------------------------- 2 files changed, 109 insertions(+), 99 deletions(-) diff --git a/ui/drivers/qt/filedropwidget.cpp b/ui/drivers/qt/filedropwidget.cpp index 09eaf0abed..0d3809b668 100644 --- a/ui/drivers/qt/filedropwidget.cpp +++ b/ui/drivers/qt/filedropwidget.cpp @@ -6,7 +6,18 @@ #include #include #include +#include +#include +#include +#include + #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 menu; + QScopedPointer addEntryAction; + QScopedPointer addFilesAction; + QScopedPointer addFolderAction; + QScopedPointer editAction; + QScopedPointer deleteAction; + QPointer selectedAction; + QPoint cursorPos = QCursor::pos(); + QHash 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 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(); + } +} diff --git a/ui/drivers/qt/ui_qt_window.cpp b/ui/drivers/qt/ui_qt_window.cpp index d36d27dfd7..70ae24ee7a 100644 --- a/ui/drivers/qt/ui_qt_window.cpp +++ b/ui/drivers/qt/ui_qt_window.cpp @@ -1140,105 +1140,6 @@ bool MainWindow::showMessageBox(QString msg, MessageBoxType msgType, Qt::WindowM return true; } -void MainWindow::onFileDropWidgetContextMenuRequested(const QPoint &pos) -{ - QScopedPointer menu; - QScopedPointer addEntryAction; - QScopedPointer addFilesAction; - QScopedPointer addFolderAction; - QScopedPointer editAction; - QScopedPointer deleteAction; - QPointer selectedAction; - QPoint cursorPos = QCursor::pos(); - QHash 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 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