From 15305513aedcfccb5b42dc51f2793de7ff4efd19 Mon Sep 17 00:00:00 2001 From: Humdinger Date: Fri, 3 Nov 2023 08:03:45 +0100 Subject: [PATCH] Add "Reset rating" menu item to MediaPlayer and ShowImage Doesn't remove the rating BFS attribute from the file, just sets it to "0". ShowImage: Move "Ratings" menu into a new "Attributes" menu, similar to MediaPlayer. Change-Id: I831166d88be9d18f1d302a423aa43929b7a1b255 Reviewed-on: https://review.haiku-os.org/c/haiku/+/7092 Tested-by: Commit checker robot Reviewed-by: Adrien Destugues --- src/apps/mediaplayer/MainWin.cpp | 7 +++++++ src/apps/mediaplayer/MainWin.h | 1 + src/apps/showimage/ShowImageWindow.cpp | 14 ++++++++++---- src/apps/showimage/ShowImageWindow.h | 1 + 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/apps/mediaplayer/MainWin.cpp b/src/apps/mediaplayer/MainWin.cpp index d177d07fdd..adcf0f1fef 100644 --- a/src/apps/mediaplayer/MainWin.cpp +++ b/src/apps/mediaplayer/MainWin.cpp @@ -1836,6 +1836,11 @@ MainWin::_CreateMenu() setRatingMsg->AddInt32("rating", i); fRatingMenu->AddItem(new BMenuItem(label, setRatingMsg)); } + + BMessage* message = new BMessage(M_SET_RATING); + message->AddInt32("rating", 0); + fResetRatingItem = new BMenuItem(B_TRANSLATE("Reset rating"), message); + fAttributesMenu->AddItem(fResetRatingItem); } @@ -2821,6 +2826,8 @@ MainWin::_UpdateAttributesMenu(const BNode& node) for (int32 i = 0; BMenuItem* item = fRatingMenu->ItemAt(i); i++) item->SetMarked(i + 1 == rating); + + fResetRatingItem->SetEnabled(rating > 0); } diff --git a/src/apps/mediaplayer/MainWin.h b/src/apps/mediaplayer/MainWin.h index 806008794c..51d627c44e 100644 --- a/src/apps/mediaplayer/MainWin.h +++ b/src/apps/mediaplayer/MainWin.h @@ -147,6 +147,7 @@ private: BMenuItem* fNoInterfaceMenuItem; BMenu* fAttributesMenu; BMenu* fRatingMenu; + BMenuItem* fResetRatingItem; bool fHasFile; bool fHasVideo; diff --git a/src/apps/showimage/ShowImageWindow.cpp b/src/apps/showimage/ShowImageWindow.cpp index 2d8de4f137..5cce0f497d 100644 --- a/src/apps/showimage/ShowImageWindow.cpp +++ b/src/apps/showimage/ShowImageWindow.cpp @@ -281,7 +281,13 @@ ShowImageWindow::ShowImageWindow(BRect frame, const entry_ref& ref, _BuildViewMenu(menu, false); fBar->AddItem(menu); - fBar->AddItem(_BuildRatingMenu()); + menu = new BMenu(B_TRANSLATE_CONTEXT("Attributes", "Menus")); + menu->AddItem(_BuildRatingMenu()); + BMessage* message = new BMessage(MSG_SET_RATING); + message->AddInt32("rating", 0); + fResetRatingItem = new BMenuItem(B_TRANSLATE("Reset rating"), message); + menu->AddItem(fResetRatingItem); + fBar->AddItem(menu); SetPulseRate(100000); // every 1/10 second; ShowImageView needs it for marching ants @@ -399,14 +405,13 @@ ShowImageWindow::_BuildRatingMenu() { fRatingMenu = new BMenu(B_TRANSLATE("Rating")); for (int32 i = 1; i <= 10; i++) { + BMessage* message = new BMessage(MSG_SET_RATING); BString label; label << i; - BMessage* message = new BMessage(MSG_SET_RATING); message->AddInt32("rating", i); fRatingMenu->AddItem(new BMenuItem(label.String(), message)); } - // NOTE: We may want to encapsulate the Rating menu within a more - // general "Attributes" menu. + return fRatingMenu; } @@ -1601,6 +1606,7 @@ ShowImageWindow::_UpdateRatingMenu() break; item->SetMarked(i == rating); } + fResetRatingItem->SetEnabled(rating > 0); } diff --git a/src/apps/showimage/ShowImageWindow.h b/src/apps/showimage/ShowImageWindow.h index 18377ebc99..e69339e342 100644 --- a/src/apps/showimage/ShowImageWindow.h +++ b/src/apps/showimage/ShowImageWindow.h @@ -126,6 +126,7 @@ private: BMenu* fSlideShowDelayMenu; BMenu* fRatingMenu; BMenu* fOpenWithMenu; + BMenuItem* fResetRatingItem; BToolBar* fToolBar; bool fToolBarVisible; BView* fScrollArea;