From 2ab1fc710761d1674856ba49d6dd121235c36f56 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Fri, 1 Sep 2023 11:44:59 +0200 Subject: [PATCH] added ROM image widget to tab order and moved event handling into it added launcher list paging events for controllers --- docs/index.html | 18 +++---- src/emucore/Settings.cxx | 2 + src/gui/LauncherDialog.cxx | 91 ++++++++++++++++++------------------ src/gui/NavigationWidget.cxx | 2 +- src/gui/RomImageWidget.cxx | 30 +++++++++++- src/gui/RomImageWidget.hxx | 1 + 6 files changed, 85 insertions(+), 59 deletions(-) diff --git a/docs/index.html b/docs/index.html index a9e37838e..2ffd14b96 100644 --- a/docs/index.html +++ b/docs/index.html @@ -2107,23 +2107,17 @@ - - Select previous image - Control + Left arrow - Control + Left arrow + Move Page Up + Page Up + Page Up Button 1/X + Left - Select next image - Control + Right arrow - Control + Right arrow + Move Page Down + Page Down + Page Down Button 1/X + Right - - Toogle image zoom - Control + Return - Control + Return - Button 1/X + Up - Remove from 'Recently Played' or 'Most Popular' folder Control + X diff --git a/src/emucore/Settings.cxx b/src/emucore/Settings.cxx index 3eff1c00f..53131849f 100644 --- a/src/emucore/Settings.cxx +++ b/src/emucore/Settings.cxx @@ -53,6 +53,8 @@ Settings::Settings() setPermanent(SETTINGS_VERSION_KEY, 0); setPermanent("stella.version", "6.2.1"); + //setTemporary("minimal_ui", 1); // enable for minimal UI testing only + // Video-related options setPermanent("video", ""); setPermanent("speed", "1.0"); diff --git a/src/gui/LauncherDialog.cxx b/src/gui/LauncherDialog.cxx index 8abdf321e..b1242e61a 100644 --- a/src/gui/LauncherDialog.cxx +++ b/src/gui/LauncherDialog.cxx @@ -83,7 +83,8 @@ LauncherDialog::LauncherDialog(OSystem& osystem, DialogContainer& parent, addPathWidgets(ypos); addFilteringWidgets(ypos); //-- filtering widget line has file count } - mySelectedItem = addRomWidgets(ypos) - 1; // Highlight 'Rom Listing' + + mySelectedItem = addRomWidgets(ypos) - (myUseMinimalUI ? 1 : 2); // Highlight 'Rom Listing' if(!myUseMinimalUI && bottomButtons) addButtonWidgets(ypos); myNavigationBar->setList(myList); @@ -105,7 +106,7 @@ void LauncherDialog::addTitleWidget(int &ypos) #if defined(RETRON77) ver << " for RetroN 77"; #endif - new StaticTextWidget(this, _font, 0, ypos, _w, fontHeight, + new StaticTextWidget(this, _font, 1, ypos, _w - 2, fontHeight, ver.str(), TextAlign::Center); ypos += fontHeight + VGAP; } @@ -250,11 +251,11 @@ void LauncherDialog::addPathWidgets(int& ypos) // Show the files counter myShortCount = true; xpos = _w - HBORDER - lwFound - LBL_GAP / 2; - myRomCount = new StaticTextWidget(this, _font, xpos, ypos, + myRomCount = new StaticTextWidget(this, _font, xpos, ypos - 1, lwFound, fontHeight, "", TextAlign::Right); auto* e = new EditTextWidget(this, _font, myNavigationBar->getRight() - 1, - ypos - btnYOfs, lwFound + LBL_GAP + 1, buttonHeight - 2, ""); + ypos - btnYOfs, lwFound + LBL_GAP + 1, lineHeight, ""); e->setEditable(false); e->setEnabled(false); } else { @@ -324,6 +325,8 @@ int LauncherDialog::addRomWidgets(int ypos) imageHeight = imgSize.h + RomImageWidget::labelHeight(*myROMInfoFont); myRomImageWidget = new RomImageWidget(this, *myROMInfoFont, xpos, ypos, imageWidth, imageHeight); + if(!myUseMinimalUI) + wid.push_back(myRomImageWidget); const int yofs = imageHeight + myROMInfoFont->getFontHeight() / 2; myRomInfoWidget = new RomInfoWidget(this, *myROMInfoFont, @@ -831,18 +834,6 @@ void LauncherDialog::handleKeyDown(StellaKey key, StellaMod mod, bool repeated) reload(); break; - case KBDK_LEFT: - myRomImageWidget->changeImage(-1); - break; - - case KBDK_RIGHT: - myRomImageWidget->changeImage(1); - break; - - case KBDK_RETURN: - myRomImageWidget->toggleImageZoom(); - break; - default: handled = false; break; @@ -909,50 +900,60 @@ void LauncherDialog::handleJoyUp(int stick, int button) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Event::Type LauncherDialog::getJoyAxisEvent(int stick, JoyAxis axis, JoyDir adir, int button) { - Event::Type e = instance().eventHandler().eventForJoyAxis(EventMode::kMenuMode, stick, axis, adir, button); + Event::Type event = instance().eventHandler().eventForJoyAxis(EventMode::kMenuMode, stick, axis, adir, button); // map axis events for launcher - switch(e) + if(myUseMinimalUI) { - case Event::UINavPrev: - if(myUseMinimalUI) + switch(event) + { + case Event::UINavPrev: // convert unused previous item event into page-up event - e = Event::UIPgUp; - else - myRomImageWidget->disableImageZoom(); - break; + event = Event::UIPgUp; + break; - case Event::UINavNext: - if(myUseMinimalUI) + case Event::UINavNext: // convert unused next item event into page-down event - e = Event::UIPgDown; - else - myRomImageWidget->disableImageZoom(); - break; + event = Event::UIPgDown; + break; - case Event::UITabPrev: - if(myList->isHighlighted()) + case Event::UITabPrev: myRomImageWidget->changeImage(-1); - myEventHandled = true; - break; + myEventHandled = true; + break; - case Event::UITabNext: - if(myList->isHighlighted()) + case Event::UITabNext: myRomImageWidget->changeImage(1); - myEventHandled = true; - break; + myEventHandled = true; + break; - case Event::UIOK: - if(myList->isHighlighted()) + case Event::UIOK: + case Event::UICancel: myRomImageWidget->toggleImageZoom(); - myEventHandled = true; - break; + myEventHandled = true; + break; - default: - break; + default: + break; + } } + else + { + switch(event) + { + case Event::UITabPrev: + event = Event::UIPgUp; + break; - return e; + case Event::UITabNext: + event = Event::UIPgDown; + break; + + default: + break; + } + } + return event; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/gui/NavigationWidget.cxx b/src/gui/NavigationWidget.cxx index a0c8e32f1..720b6fe60 100644 --- a/src/gui/NavigationWidget.cxx +++ b/src/gui/NavigationWidget.cxx @@ -218,7 +218,7 @@ void NavigationWidget::PathWidget::setPath(string_view path) s->setID(static_cast(idx)); s->setTarget(myTarget); myFolderList.push_back(s); - _boss->addFocusWidget(s); + //_boss->addFocusWidget(s); // TODO: allow adding/inserting focus dynamically } x += width; } diff --git a/src/gui/RomImageWidget.cxx b/src/gui/RomImageWidget.cxx index 458b85cf6..70028f82a 100644 --- a/src/gui/RomImageWidget.cxx +++ b/src/gui/RomImageWidget.cxx @@ -35,7 +35,7 @@ RomImageWidget::RomImageWidget(GuiObject* boss, const GUI::Font& font, int x, int y, int w, int h) : Widget(boss, font, x, y, w, h) { - _flags = Widget::FLAG_ENABLED | Widget::FLAG_TRACK_MOUSE; + _flags = Widget::FLAG_ENABLED | Widget::FLAG_TRACK_MOUSE; // | FLAG_WANTS_RAWDATA; _bgcolor = kDlgColor; _bgcolorlo = kBGColorLo; myImageHeight = _h - labelHeight(font); @@ -464,6 +464,34 @@ void RomImageWidget::positionSurfaces() } } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool RomImageWidget::handleEvent(Event::Type event) +{ + switch(event) + { + case Event::UIPgUp: // controller + case Event::UILeft: // keyboard + changeImage(-1); + return true; + + case Event::UIPgDown: // controller + case Event::UIRight: // keyboard + changeImage(1); + return true; + + case Event::UIOK: // controller + case Event::UICancel: // controller + case Event::UISelect: // keyboard & controller + toggleImageZoom(); + return true; + + default: + break; + } + + return Widget::handleEvent(event); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void RomImageWidget::handleMouseUp(int x, int y, MouseButton b, int clickCount) { diff --git a/src/gui/RomImageWidget.hxx b/src/gui/RomImageWidget.hxx index c9a82fb24..bd2dddb72 100644 --- a/src/gui/RomImageWidget.hxx +++ b/src/gui/RomImageWidget.hxx @@ -48,6 +48,7 @@ class RomImageWidget : public Widget protected: #ifdef IMAGE_SUPPORT + bool handleEvent(Event::Type event) override; void handleMouseUp(int x, int y, MouseButton b, int clickCount) override; void handleMouseMoved(int x, int y) override; void tick() override;