From 8fe97363e79bd889b9527cae2e2a9af216915960 Mon Sep 17 00:00:00 2001 From: penfold42 Date: Tue, 31 Jul 2018 18:38:24 +1000 Subject: [PATCH] Moved Number key checking code to inputmapping --- src/FileBrowser.cpp | 48 +++++++++++++++++++++++-------------------- src/FileBrowser.h | 3 +-- src/InputMappings.cpp | 32 +++++++++++++++++++++-------- src/InputMappings.h | 28 +++++++++++++++++++++++++ 4 files changed, 78 insertions(+), 33 deletions(-) diff --git a/src/FileBrowser.cpp b/src/FileBrowser.cpp index c3b570b..74337f8 100644 --- a/src/FileBrowser.cpp +++ b/src/FileBrowser.cpp @@ -45,21 +45,6 @@ extern void CheckAutoMountImage(EXIT_TYPE reset_reason , FileBrowser* fileBrowse unsigned char FileBrowser::LSTBuffer[FileBrowser::LSTBuffer_size]; -const unsigned FileBrowser::SwapKeys[33] = -{ - KEY_F1, KEY_KP1, KEY_1, - KEY_F2, KEY_KP2, KEY_2, - KEY_F3, KEY_KP3, KEY_3, - KEY_F4, KEY_KP4, KEY_4, - KEY_F5, KEY_KP5, KEY_5, - KEY_F6, KEY_KP6, KEY_6, - KEY_F7, KEY_KP7, KEY_7, - KEY_F8, KEY_KP8, KEY_8, - KEY_F9, KEY_KP9, KEY_9, - KEY_F10, KEY_KP0, KEY_0, - KEY_F11, KEY_KPMINUS, KEY_MINUS -}; - static const u32 palette[] = { RGBA(0x00, 0x00, 0x00, 0xFF), @@ -379,6 +364,28 @@ FileBrowser::BrowsableList::Entry* FileBrowser::BrowsableList::FindEntry(const c return 0; } +FileBrowser::BrowsableList::Entry* FileBrowser::BrowsableList::FindNextPartialEntry(const char* name, int match_len) +{ + int index; + int len = (int)entries.size(); + + for (index = 0; index < len; ++index) + { + Entry* entry = &entries[index]; + if (match_len) // partial match + { + if (strncasecmp(name, entry->filImage.fname, match_len) == 0) + return entry; + } + else // full match + { + if (strcasecmp(name, entry->filImage.fname) == 0) + return entry; + } + } + return 0; +} + FileBrowser::FileBrowser(DiskCaddy* diskCaddy, ROMs* roms, u8* deviceID, bool displayPNGIcons, ScreenBase* screenMain, ScreenBase* screenLCD, float scrollHighlightRate) : state(State_Folders) , diskCaddy(diskCaddy) @@ -980,14 +987,11 @@ void FileBrowser::UpdateInputFolders() else { // check for number keys for ROM and Drive Number changes - unsigned keySetIndex; - for (keySetIndex = 0; keySetIndex < 11; ++keySetIndex) + if (inputMappings->BrowseNumber() + && inputMappings->getKeyboardNumber() >= 0 + && inputMappings->getKeyboardNumber() < 11 ) { - unsigned keySetIndexBase = keySetIndex * 3; - if (keyboard->KeyPressed(FileBrowser::SwapKeys[keySetIndexBase]) - || keyboard->KeyPressed(FileBrowser::SwapKeys[keySetIndexBase + 1]) - || keyboard->KeyPressed(FileBrowser::SwapKeys[keySetIndexBase + 2])) - SelectROMOrDevice(keySetIndex); + SelectROMOrDevice(inputMappings->getKeyboardNumber()); } // check for keys a-z diff --git a/src/FileBrowser.h b/src/FileBrowser.h index 4e35ab2..4db2861 100644 --- a/src/FileBrowser.h +++ b/src/FileBrowser.h @@ -151,6 +151,7 @@ public: }; Entry* FindEntry(const char* name); + Entry* FindNextPartialEntry(const char* name, int match_len); int FindNextAutoName(char* basename); void RefreshViews(); @@ -191,8 +192,6 @@ public: static const long int LSTBuffer_size = 1024 * 8; static unsigned char LSTBuffer[]; - static const unsigned SwapKeys[]; - static u32 Colour(int index); bool SelectLST(const char* filenameLST); diff --git a/src/InputMappings.cpp b/src/InputMappings.cpp index 9cb5140..62443d1 100644 --- a/src/InputMappings.cpp +++ b/src/InputMappings.cpp @@ -191,16 +191,28 @@ bool InputMappings::CheckKeyboardBrowseMode() SetKeyboardFlag(AUTOLOAD_FLAG); else if (keyboard->KeyHeld(KEY_R) && keyboard->KeyEitherAlt() ) SetKeyboardFlag(FAKERESET_FLAG); - else if (keyboard->KeyHeld(KEY_W) && keyboard->KeyEitherAlt()) + else if (keyboard->KeyHeld(KEY_W) && keyboard->KeyEitherAlt() ) SetKeyboardFlag(WRITEPROTECT_FLAG); else { unsigned index; - for (index = 0; index < 11; ++index) + for (index = 0; index < sizeof(NumberKeys)/sizeof(NumberKeys[0]); index+=3) { - unsigned keySetIndexBase = index * 3; - if (keyboard->KeyHeld(FileBrowser::SwapKeys[keySetIndexBase]) || keyboard->KeyHeld(FileBrowser::SwapKeys[keySetIndexBase + 1]) || keyboard->KeyHeld(FileBrowser::SwapKeys[keySetIndexBase + 2])) - keyboardFlags |= NUMBER_FLAG; + if (keyboard->KeyHeld(NumberKeys[index]) + || keyboard->KeyHeld(NumberKeys[index + 1]) + || keyboard->KeyHeld(NumberKeys[index + 2]) ) + { + SetKeyboardFlag(NUMBER_FLAG); + keyboardNumber = index/3; + } + } + for (index = KEY_A; index <= KEY_Z; ++index) + { + if (keyboard->KeyHeld(index)) + { + SetKeyboardFlag(AtoZ_FLAG); + keyboardNumber = index-KEY_A+1; + } } } @@ -227,12 +239,14 @@ void InputMappings::CheckKeyboardEmulationMode(unsigned numberOfImages, unsigned else if (numberOfImages > 1) { unsigned index; - for (index = 0; index < numberOfImagesMax; ++index) + for (index = 0; index < sizeof(NumberKeys)/sizeof(NumberKeys[0]); index+=3) { - unsigned keySetIndexBase = index * 3; - if (keyboard->KeyHeld(FileBrowser::SwapKeys[keySetIndexBase]) || keyboard->KeyHeld(FileBrowser::SwapKeys[keySetIndexBase + 1]) || keyboard->KeyHeld(FileBrowser::SwapKeys[keySetIndexBase + 2])) - directDiskSwapRequest |= (1 << index); + if (keyboard->KeyHeld(NumberKeys[index]) + || keyboard->KeyHeld(NumberKeys[index + 1]) + || keyboard->KeyHeld(NumberKeys[index + 2]) ) + directDiskSwapRequest |= (1 << index/3); } } } } + diff --git a/src/InputMappings.h b/src/InputMappings.h index ffce76e..f4cd801 100644 --- a/src/InputMappings.h +++ b/src/InputMappings.h @@ -41,8 +41,24 @@ #define AUTOLOAD_FLAG (1 << 15) #define FAKERESET_FLAG (1 << 16) #define WRITEPROTECT_FLAG (1 << 17) +#define AtoZ_FLAG (1 << 18) // dont exceed 32!! +const unsigned NumberKeys[33] = +{ + KEY_F1, KEY_KP1, KEY_1, + KEY_F2, KEY_KP2, KEY_2, + KEY_F3, KEY_KP3, KEY_3, + KEY_F4, KEY_KP4, KEY_4, + KEY_F5, KEY_KP5, KEY_5, + KEY_F6, KEY_KP6, KEY_6, + KEY_F7, KEY_KP7, KEY_7, + KEY_F8, KEY_KP8, KEY_8, + KEY_F9, KEY_KP9, KEY_9, + KEY_F10, KEY_KP0, KEY_0, + KEY_F11, KEY_KPMINUS, KEY_MINUS +}; + class InputMappings : public Singleton { protected: @@ -59,6 +75,9 @@ protected: bool enterButtonPressedPrev; bool enterButtonPressed; + unsigned keyboardNumber; + unsigned keyboardLetter; + //inline void SetUartFlag(unsigned flag) { uartFlags |= flag; } //inline bool UartFlag(unsigned flag) { return (uartFlags & flag) != 0; } inline void SetKeyboardFlag(unsigned flag) { keyboardFlags |= flag; } @@ -179,6 +198,14 @@ public: return KeyboardFlag(WRITEPROTECT_FLAG); } + inline bool BrowseNumber() + { + return KeyboardFlag(NUMBER_FLAG); + } + + inline unsigned getKeyboardNumber() { return keyboardNumber; } + inline unsigned getKeyboardLetter() { return keyboardLetter; } + // Used by the 2 cores so need to be volatile //volatile static unsigned directDiskSwapRequest; static unsigned directDiskSwapRequest; @@ -187,3 +214,4 @@ public: // static unsigned escapeSequenceIndex; }; #endif +