[vlc-commits] [Git][videolan/vlc][master] 10 commits: qt: set transient parent in `DialogsProvider::getMessageDialog()`
Steve Lhomme (@robUx4)
gitlab at videolan.org
Sat Jun 14 08:49:48 UTC 2025
Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
693a33d6 by Fatih Uzunoglu at 2025-06-14T08:35:28+00:00
qt: set transient parent in `DialogsProvider::getMessageDialog()`
This is also the reason why `QMessageBox::question()` is not
used here.
- - - - -
7855ef44 by Fatih Uzunoglu at 2025-06-14T08:35:28+00:00
qt: have the window title as parameter in `DialogsProvider::getMessageDialog()`
- - - - -
e49faa4c by Fatih Uzunoglu at 2025-06-14T08:35:28+00:00
qt: set icon to question in `DialogsProvider::getMessageDialog()`
Having the "OK" and "Cancel" buttons already make it a question.
- - - - -
c14e9d27 by Fatih Uzunoglu at 2025-06-14T08:35:28+00:00
qt: use "Yes" and "No" buttons instead of "OK" and "Cancel" in `DialogsProvider::getMessageDialog()`
- - - - -
c539a4d6 by Fatih Uzunoglu at 2025-06-14T08:35:28+00:00
qt: set default button to `No` in `DialogsProvider::getMessageDialog()`
- - - - -
08d4a5ad by Fatih Uzunoglu at 2025-06-14T08:35:28+00:00
qt: rename `DialogsProvider::getMessageDialog()` to `DialogsProvider::questionDialog()`
- - - - -
1cd602b4 by Fatih Uzunoglu at 2025-06-14T08:35:28+00:00
qt: register `MLPlaylistListModel::Roles` enum in metatype system
- - - - -
ddd66d52 by Fatih Uzunoglu at 2025-06-14T08:35:28+00:00
qt: prompt confirmation before committing deletion in `PlaylistMediaList`
- - - - -
44fa61fe by Fatih Uzunoglu at 2025-06-14T08:35:28+00:00
qt: make it possible to delete playlists with the delete key
- - - - -
cf70d3d1 by Fatih Uzunoglu at 2025-06-14T08:35:28+00:00
qt: make `MLContextMenu::deleteFileFromSource()`'s prompt translatable
- - - - -
7 changed files:
- modules/gui/qt/dialogs/dialogs_provider.cpp
- modules/gui/qt/dialogs/dialogs_provider.hpp
- modules/gui/qt/medialibrary/mlplaylistlistmodel.hpp
- modules/gui/qt/medialibrary/qml/PlaylistMediaList.qml
- modules/gui/qt/menus/qml_menu_wrapper.cpp
- modules/gui/qt/menus/qml_menu_wrapper.hpp
- modules/gui/qt/util/qml/MLContextMenu.qml
Changes:
=====================================
modules/gui/qt/dialogs/dialogs_provider.cpp
=====================================
@@ -402,14 +402,20 @@ void DialogsProvider::mediaInfoDialog( const MLItemId& itemId )
}
}
-bool DialogsProvider::getMessageDialog(const QString& message) const
+bool DialogsProvider::questionDialog(const QString& text, const QString &title) const
{
QMessageBox messageBox;
- messageBox.setText(message);
- messageBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
+ messageBox.setText(text);
+ if (!title.isEmpty())
+ messageBox.setWindowTitle(title);
+ messageBox.setIcon(QMessageBox::Question);
+ messageBox.setStandardButtons(QMessageBox::StandardButtons(QMessageBox::Yes | QMessageBox::No));
+ messageBox.setDefaultButton(QMessageBox::No);
+
+ QVLCDialog::setWindowTransientParent(&messageBox, nullptr, p_intf);
int result = messageBox.exec();
- return result == QMessageBox::Ok;
+ return result == QMessageBox::Yes;
}
void DialogsProvider::mediaCodecDialog()
=====================================
modules/gui/qt/dialogs/dialogs_provider.hpp
=====================================
@@ -177,7 +177,7 @@ public slots:
void mediaInfoDialog( const PlaylistItem& pItem );
void mediaInfoDialog( const MLItemId& itemId );
void mediaCodecDialog();
- bool getMessageDialog(const QString& message) const;
+ bool questionDialog(const QString& text, const QString& title = {}) const;
void prefsDialog();
void firstRunDialog();
void extendedDialog();
=====================================
modules/gui/qt/medialibrary/mlplaylistlistmodel.hpp
=====================================
@@ -39,6 +39,7 @@ public:
PLAYLIST_DURATION,
PLAYLIST_COUNT
};
+ Q_ENUM(Roles)
enum PlaylistType {
PLAYLIST_TYPE_ALL,
=====================================
modules/gui/qt/medialibrary/qml/PlaylistMediaList.qml
=====================================
@@ -80,6 +80,9 @@ MainViewLoader {
resetFocus()
}
+ Component.onCompleted: {
+ root.Keys.deletePressed.connect(root.deleteSelectedPlaylists)
+ }
//---------------------------------------------------------------------------------------------
// Private
@@ -183,6 +186,23 @@ MainViewLoader {
return Promise.resolve()
}
+ function deleteSelectedPlaylists() {
+ console.assert(root.model)
+ console.assert(root.selectionModel)
+ if (root.selectionModel.hasSelection) {
+ const items = []
+ for (const i of root.selectionModel.selectedIndexes) {
+ items.push(root.model.data(i, MLPlaylistListModel.PLAYLIST_ID))
+ }
+ console.assert(items.length > 0)
+ if (DialogsProvider.questionDialog(qsTr("Do you really want to delete the selected playlist(s)?"),
+ qsTr("Delete playlist(s)")))
+ root.model.deletePlaylists(items)
+ } else {
+ console.warn(root, ": Nothing to delete")
+ }
+ }
+
//---------------------------------------------------------------------------------------------
// Childs
//---------------------------------------------------------------------------------------------
@@ -248,6 +268,10 @@ MainViewLoader {
function tableView_popup(index, selectedIndexes, globalPos) {
popup(selectedIndexes, globalPos)
}
+
+ Component.onCompleted: {
+ contextMenu.requestDeleteSelectedPlaylists.connect(root.deleteSelectedPlaylists)
+ }
}
// TBD: Refactor this with MusicGenres ?
=====================================
modules/gui/qt/menus/qml_menu_wrapper.cpp
=====================================
@@ -839,9 +839,7 @@ void PlaylistListContextMenu::popup(const QModelIndexList & selected, QPoint pos
action = menu->addAction(qtr("Delete"));
- connect(action, &QAction::triggered, [this, ids]() {
- m_model->deletePlaylists(ids);
- });
+ connect(action, &QAction::triggered, this, &PlaylistListContextMenu::requestDeleteSelectedPlaylists);
menu->popup(pos);
}
=====================================
modules/gui/qt/menus/qml_menu_wrapper.hpp
=====================================
@@ -391,6 +391,9 @@ public:
public slots:
void popup(const QModelIndexList & selected, QPoint pos, QVariantMap options = {});
+
+signals:
+ void requestDeleteSelectedPlaylists();
};
class QmlAudioContextMenu : public VLCMenuBar
=====================================
modules/gui/qt/util/qml/MLContextMenu.qml
=====================================
@@ -165,7 +165,7 @@ NativeMenu {
}
function deleteFileFromSource(dataList, options, indexes) {
- let confirm = DialogsProvider.getMessageDialog("Are you sure you want to delete this file?");
+ let confirm = DialogsProvider.questionDialog(qsTr("Are you sure you want to delete this file?"));
if (confirm) {
model.deleteFileFromSource(indexes[0]);
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/3a90548bc1c85a18d81f14f3ce5aedc5af943b6a...cf70d3d1e8a2b1e042bde6676a129a53dac505fa
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/3a90548bc1c85a18d81f14f3ce5aedc5af943b6a...cf70d3d1e8a2b1e042bde6676a129a53dac505fa
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
More information about the vlc-commits
mailing list