1
0
Fork 0
mirror of https://github.com/DarkMatterCore/nxdumptool.git synced 2024-12-23 00:52:10 +00:00

UserTitleTab: remove the need for a title ID map by extending the ListItem class.

Each ListItem element gets its own internal title ID.
This commit is contained in:
Pablo Curiel 2021-06-23 21:04:28 -04:00
parent b5507b38a6
commit 7a15b4eab8
3 changed files with 18 additions and 18 deletions

View file

@ -29,12 +29,21 @@
namespace nxdt::views
{
/* Expanded ListItem class to hold a title ID. */
class UserTitlesItem: public brls::ListItem
{
private:
u64 title_id = 0;
public:
UserTitlesItem(TitleApplicationMetadata *app_metadata);
};
class UserTitlesTab: public LayeredErrorFrame
{
private:
nxdt::tasks::TitleTask *title_task = nullptr;
nxdt::tasks::TitleEvent::Subscription title_task_sub;
std::unordered_map<brls::ListItem*, TitleApplicationMetadata*> list_item_metadata;
void PopulateList(const nxdt::tasks::TitleApplicationMetadataVector* user_app_metadata);

@ -1 +1 @@
Subproject commit 053870cd5e2402d180d858ca502fb90db6809279
Subproject commit 7de16249a693e187e7249404d41e0da8a5572bf6

View file

@ -26,6 +26,12 @@ using namespace brls::i18n::literals; /* For _i18n. */
namespace nxdt::views
{
UserTitlesItem::UserTitlesItem(TitleApplicationMetadata *app_metadata) : brls::ListItem(std::string(app_metadata->lang_entry.name), "", std::string(app_metadata->lang_entry.author)), \
title_id(app_metadata->title_id)
{
if (app_metadata->icon && app_metadata->icon_size) this->setThumbnail(app_metadata->icon, app_metadata->icon_size);
}
UserTitlesTab::UserTitlesTab(nxdt::tasks::TitleTask *title_task) : LayeredErrorFrame("user_titles_tab/no_titles_available"_i18n), title_task(title_task)
{
/* Populate list. */
@ -43,9 +49,6 @@ namespace nxdt::views
{
/* Unregister task listener. */
this->title_task->UnregisterListener(this->title_task_sub);
/* Clear user application metadata map. */
this->list_item_metadata.clear();
}
void UserTitlesTab::PopulateList(const nxdt::tasks::TitleApplicationMetadataVector* user_app_metadata)
@ -78,23 +81,11 @@ namespace nxdt::views
this->list->clear();
this->list->invalidate(true);
/* Clear our private user application map. */
this->list_item_metadata.clear();
/* Immediately return if we have no user application metadata. */
if (!user_app_metadata_count) return;
/* Populate list. */
for(TitleApplicationMetadata *cur_app_metadata : *user_app_metadata)
{
/* Add list item for this application metadata to our list. */
brls::ListItem *list_item = new brls::ListItem(std::string(cur_app_metadata->lang_entry.name), "", std::string(cur_app_metadata->lang_entry.author));
list_item->setThumbnail(cur_app_metadata->icon, cur_app_metadata->icon_size);
this->list->addView(list_item);
/* Update our private user application metadata map. */
this->list_item_metadata.insert(std::make_pair(list_item, cur_app_metadata));
}
for(TitleApplicationMetadata *cur_app_metadata : *user_app_metadata) this->list->addView(new UserTitlesItem(cur_app_metadata));
/* Switch to the list. */
this->list->invalidate(true);