qBittorrent icon indicating copy to clipboard operation
qBittorrent copied to clipboard

Rephrase `confirm deletion` dialog

Open xavier2k6 opened this issue 2 years ago • 10 comments

  • https://github.com/qbittorrent/qBittorrent/issues/14309#issuecomment-769702292

Closes #14309.

GUI: delete confirmation dialog

WebUI: WebUI delete confirmation dialog

xavier2k6 avatar Aug 09 '22 09:08 xavier2k6

What's others opinion on the buttons ie (ok/cancel) should these be consistent with WebUI (yes/no)?

xavier2k6 avatar Aug 09 '22 09:08 xavier2k6

Some people (including MS devs, e.g. https://docs.microsoft.com/en-us/windows/win32/uxguide/win-dialog-box#guidelines) recommend preferring specific responses to Yes and No buttons. And they strongly discourage using OK and Cancel when answering to naturally yes/no question.

glassez avatar Aug 09 '22 13:08 glassez

@glassez @thalieht Will I make the yes/no changes in this PR??

xavier2k6 avatar Aug 09 '22 16:08 xavier2k6

@glassez @thalieht Will I make the yes/no changes in this PR??

I don't mind.

glassez avatar Aug 09 '22 17:08 glassez

I don't mind.

Ok, another thing.....

Should I display the yes/no options exactly like they currently are in WebUI (No 1st & Yes 2nd ) as to me it should be Yes 1st & No 2nd.

xavier2k6 avatar Aug 09 '22 17:08 xavier2k6

Should I display the yes/no options exactly like they currently are in WebUI (No 1st & Yes 2nd ) as to me it should be Yes 1st & No 2nd.

No, Yes looks incorrect.

glassez avatar Aug 09 '22 18:08 glassez

Just got to test recent changes on windows, Experiencing a crash......


qBittorrent version: v4.5.0alpha1 (64-bit) Libtorrent version: 2.0.7.0 Qt version: 6.3.0 Boost version: 1.79.0 OpenSSL version: 3.0.5 zlib version: 1.2.12 OS version: Windows 10 Version 2009 10.0.19044 x86_64

Caught signal: SIGSEGV

 0# boost::stacktrace::basic_stacktrace >::init at D:\a\qBittorrent\boost\boost\stacktrace\stacktrace.hpp:77
 1# getStacktrace at D:\a\qBittorrent\qBittorrent\src\app\stacktrace.cpp:35
 2# `anonymous namespace'::abnormalExitHandler at D:\a\qBittorrent\qBittorrent\src\app\signalhandler.cpp:103
 3# _seh_filter_exe at minkernel\crts\ucrt\src\appcrt\misc\exception_filter.cpp:219
 4# `__scrt_common_main_seh'::`1'::filt$0 at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:304
 5# __C_specific_handler at D:\a\_work\1\s\src\vctools\crt\vcruntime\src\eh\riscchandler.cpp:389
 6# _chkstk in ntdll
 7# RtlRaiseException in ntdll
 8# KiUserExceptionDispatcher in ntdll
 9# QWidget::setFocus in Qt6Widgets
10# DeletionConfirmationDialog::DeletionConfirmationDialog at D:\a\qBittorrent\qBittorrent\src\gui\deletionconfirmationdialog.cpp:58
11# TransferListWidget::deleteSelectedTorrents at D:\a\qBittorrent\qBittorrent\src\gui\transferlistwidget.cpp:422
12# QObject::qt_static_metacall in Qt6Core
13# QMetaObject::activate in Qt6Core
14# QAction::activate in Qt6Gui
15# QMenu::actionGeometry in Qt6Widgets
16# QMenu::actionGeometry in Qt6Widgets
17# QMenu::mouseReleaseEvent in Qt6Widgets
18# QWidget::event in Qt6Widgets
19# QMenu::event in Qt6Widgets
20# QApplicationPrivate::notify_helper in Qt6Widgets
21# QApplication::notify in Qt6Widgets
22# QCoreApplication::notifyInternal2 in Qt6Core
23# QApplicationPrivate::sendMouseEvent in Qt6Widgets
24# QWidgetPrivate::shouldDiscardSyncRequest in Qt6Widgets
25# QWidgetPrivate::shouldDiscardSyncRequest in Qt6Widgets
26# QApplicationPrivate::notify_helper in Qt6Widgets
27# QApplication::notify in Qt6Widgets
28# QCoreApplication::notifyInternal2 in Qt6Core
29# QGuiApplicationPrivate::processMouseEvent in Qt6Gui
30# QWindowSystemInterface::sendWindowSystemEvents in Qt6Gui
31# QEventDispatcherWin32::processEvents in Qt6Core
32# QWindowsGuiEventDispatcher::processEvents in Qt6Gui
33# QEventLoop::exec in Qt6Core
34# QCoreApplication::exec in Qt6Core
35# Application::exec at D:\a\qBittorrent\qBittorrent\src\app\application.cpp:817
36# main at D:\a\qBittorrent\qBittorrent\src\app\main.cpp:270
37# WinMain at C:\Users\qt\work\qt\qtbase\src\entrypoint\qtentrypoint_win.cpp:97
38# __scrt_common_main_seh at D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
39# BaseThreadInitThunk in KERNEL32
40# RtlUserThreadStart in ntdll

xavier2k6 avatar Aug 10 '22 09:08 xavier2k6

Ok i now tested it and i have to admit that it's a little strange to uncheck "Also permanently delete files" and click Yes. The checkbox was the last thing i read and it kind of seems like Yes was referring to it (contradiction) while "Ok" was "Ok i'm done here, proceed". Am i the only one?

thalieht avatar Aug 10 '22 10:08 thalieht

Ok i now tested it and i have to admit that it's a little strange to uncheck "Also permanently delete files" and click Yes. The checkbox was the last thing i read and it kind of seems like Yes was referring to it (contradiction) while "Ok" was "Ok i'm done here, proceed". Am i the only one?

Then maybe change the first sentence so that it also becomes a statement instead of a question, for example, "This will remove the selected torrents from the list."?

glassez avatar Aug 10 '22 10:08 glassez

Then maybe change the first sentence so that it also becomes a statement instead of a question, for example, "This will remove the selected torrents from the list."?

It's ok as is IMO but sure, why not.

thalieht avatar Aug 10 '22 10:08 thalieht

Then maybe change the first sentence so that it also becomes a statement instead of a question, for example, "This will remove the selected torrents from the list."?

The dialog at hand is for double confirmation when removing torrents so naturally it should be a question dialog IMO.

Chocobo1 avatar Aug 11 '22 03:08 Chocobo1

Then maybe change the first sentence so that it also becomes a statement instead of a question, for example, "This will remove the selected torrents from the list."?

The dialog at hand is for double confirmation when removing torrents so naturally it should be a question dialog IMO.

No problem. The problem is how to answer the question "Are you sure you want to remove the selected torrents from the transfer list?"

glassez avatar Aug 11 '22 04:08 glassez

The problem is how to answer the question "Are you sure you want to remove the selected torrents from the transfer list?"

IMO there is nothing wrong to answer it with Yes/No. I think thalieht comment was with the checkbox. I don't know how that could be improved as I can't relate with it.

Chocobo1 avatar Aug 11 '22 04:08 Chocobo1

The problem is how to answer the question "Are you sure you want to remove the selected torrents from the transfer list?"

IMO there is nothing wrong to answer it with Yes/No.

Even more, I think it is incorrect (uncommon, unnatural) to answer such a question with OK/Cancel.

I think thalieht comment was with the checkbox.

I understand what @thalieht is worried about, but this is an additional option, and the answer still applies to the question mentioned above. Otherwise what's about using specific response Remove instead of Yes?

glassez avatar Aug 11 '22 04:08 glassez

Otherwise what's about using specific response Remove instead of Yes?

I'm Ok with it.

Chocobo1 avatar Aug 11 '22 04:08 Chocobo1

Buttons will state Remove & No??

Edit:

How about Agree & Disagree or Acknowledge & Reject/Disregard?

xavier2k6 avatar Aug 11 '22 09:08 xavier2k6

Buttons will state Remove & No??

👍 It's more straightforward.

ArcticGems avatar Aug 11 '22 10:08 ArcticGems

https://ux.stackexchange.com/questions/9946/should-i-use-yes-no-or-ok-cancel-on-my-message-box In particular, I agree with the last paragraph:

Also note that, given a choice between 'No' and 'Cancel', 'Cancel' is almost always better for exactly the same reasons as above: the meaning of 'Cancel' is clear even if the user hasn't read the rest of the dialog box. The meaning of 'No' is probably clear, but makes less sense when paired with a verb (e.g. 'Log Out' and 'Cancel' make more sense read alone than 'Log Out' and 'No').

Chocobo1 avatar Aug 11 '22 10:08 Chocobo1

https://ux.stackexchange.com/questions/9946/should-i-use-yes-no-or-ok-cancel-on-my-message-box In particular, I agree with the last paragraph:

Also note that, given a choice between 'No' and 'Cancel', 'Cancel' is almost always better for exactly the same reasons as above: the meaning of 'Cancel' is clear even if the user hasn't read the rest of the dialog box. The meaning of 'No' is probably clear, but makes less sense when paired with a verb (e.g. 'Log Out' and 'Cancel' make more sense read alone than 'Log Out' and 'No').

Well, since the confirmation answer is not Yes, then it shouldn't be such a problem to use Cancel.

glassez avatar Aug 11 '22 11:08 glassez

If there's no objections then I will change:

  1. The question to "Are you sure you want to remove.........
  2. Change the buttons to display Confirm/Cancel

xavier2k6 avatar Aug 12 '22 10:08 xavier2k6

2. Change the buttons to display Confirm/Cancel

👎

glassez avatar Aug 12 '22 10:08 glassez

  1. Change the buttons to display Confirm/Cancel

👎

??? So, do you want Remove/Cancel used for the buttons?

xavier2k6 avatar Aug 12 '22 11:08 xavier2k6

So, do you want Remove/Cancel used for the buttons?

It seemed to me that this was the final option.

glassez avatar Aug 12 '22 14:08 glassez

So, do you want Remove/Cancel used for the buttons?

It seemed to me that this was the final option.

Oh ok, will push changes later on tonight.

xavier2k6 avatar Aug 12 '22 17:08 xavier2k6

It seems Remove is not a member of 'QDialogButtonBox' so I went with original OK & Cancel for consistency across GUI/WebUI for buttons & changed the question to "Are you sure you want to remove.........

https://doc.qt.io/qt-6/qdialogbuttonbox.html#StandardButton-enum

xavier2k6 avatar Aug 14 '22 14:08 xavier2k6

Superseded by #17586.

Chocobo1 avatar Aug 22 '22 03:08 Chocobo1