Encapsulate LFIDBearer::sActive, set with member setActive

This function caches the current type when active,
in the future it could be more useful than that.

sActive is now const, getActive returns const,
IDBearers display information, the interface should only be used for that
This commit is contained in:
Liru Færs
2020-01-06 12:22:31 -05:00
parent f73fb6424b
commit 6839cba56a
10 changed files with 31 additions and 20 deletions

View File

@@ -30,7 +30,8 @@ const std::array<const std::string, LFIDBearer::COUNT> LFIDBearer::sMenuStrings
};
std::array<LLMenuGL*, LFIDBearer::COUNT> LFIDBearer::sMenus {};
LFIDBearer* LFIDBearer::sActive = nullptr;
const LFIDBearer* LFIDBearer::sActive = nullptr;
LFIDBearer::Type LFIDBearer::sActiveType = LFIDBearer::AVATAR;
void LFIDBearer::buildMenus()
{
@@ -49,7 +50,7 @@ LLMenuGL* LFIDBearer::showMenu(LLView* self, const std::string& menu_name, S32 x
void LFIDBearer::showMenu(LLView* self, LLMenuGL* menu, S32 x, S32 y)
{
sActive = this; // Menu listeners rely on this
setActive(); // Menu listeners rely on this
menu->buildDrawLabels();
menu->updateParent(LLMenuGL::sMenuContainer);
LLMenuGL::showPopup(self, menu, x, y);

View File

@@ -43,11 +43,18 @@ struct LFIDBearer
virtual S32 getNumSelected() const { return getStringUUIDSelectedItem().notNull(); }
virtual Type getSelectedType() const { return AVATAR; }
template<typename T> static T* getActive() { return static_cast<T*>(sActive); }
template<typename T> static const T* getActive() { return static_cast<const T*>(sActive); }
static LLUUID getActiveSelectedID() { return sActive->getStringUUIDSelectedItem(); }
static uuid_vec_t getActiveSelectedIDs() { return sActive->getSelectedIDs(); }
static S32 getActiveNumSelected() { return sActive->getNumSelected(); }
static Type getActiveType() { return sActive->getSelectedType(); }
static const Type& getActiveType() { return sActiveType; }
void setActive() const
{
sActive = this;
sActiveType = getSelectedType();
//sActiveIDs or even some kinda hybrid map, if Type is MULTIPLE fill the vals? and remove a buncha virtual functions?
}
static void buildMenus();
LLMenuGL* showMenu(LLView* self, const std::string& menu_name, S32 x, S32 y, std::function<void(LLMenuGL*)> on_menu_built = nullptr);
@@ -57,5 +64,8 @@ protected:
// Menus that recur, such as general avatars or groups menus
static const std::array<const std::string, COUNT> sMenuStrings;
static std::array<LLMenuGL*, COUNT> sMenus;
static LFIDBearer* sActive;
private:
static const LFIDBearer* sActive;
static Type sActiveType;
};