void FSDisplayer::MakeItems (const QList<QList<Util::XDG::Item_ptr>>& items) { MakeStdItems (); const auto& curLang = Util::GetLanguage ().toLower (); QList<Util::XDG::Item_ptr> uniqueItems; for (const auto& sublist : items) for (const auto& item : sublist) if (!item->IsHidden () && std::none_of (uniqueItems.begin (), uniqueItems.end (), [&item] (const auto& other) { return *other == *item; })) uniqueItems << item; std::sort (uniqueItems.begin (), uniqueItems.end (), [&curLang] (const auto& left, const auto& right) { return QString::localeAwareCompare (left->GetName (curLang), right->GetName (curLang)) < 0; }); for (const auto& item : uniqueItems) { const auto& itemName = item->GetName (curLang); auto appItem = new QStandardItem (); appItem->setData (itemName, ModelRoles::ItemName); appItem->setData (item->GetCommand (), ModelRoles::ItemCommand); auto comment = item->GetComment (curLang); if (comment.isEmpty ()) comment = item->GetGenericName (curLang); appItem->setData (comment, ModelRoles::ItemDescription); const auto& iconName = item->GetIconName (); appItem->setData (iconName, ModelRoles::ItemIcon); IconsProvider_->AddIcon (iconName, item->GetIcon (Proxy_)); appItem->setData (item->GetCategories (), ModelRoles::ItemNativeCategories); appItem->setData (item->GetPermanentID (), ModelRoles::ItemID); appItem->setData (FavManager_->IsFavorite (item->GetPermanentID ()), ModelRoles::IsItemFavorite); const auto isRecent = RecentManager_->IsRecent (item->GetPermanentID ()); appItem->setData (isRecent, ModelRoles::IsItemRecent); if (isRecent) appItem->setData (RecentManager_->GetRecentOrder (item->GetPermanentID ()), ModelRoles::ItemRecentPos); auto executor = [this, item] { item->Execute (Proxy_); }; appItem->setData (QVariant::fromValue<Executor_f> (executor), ModelRoles::ExecutorFunctor); ItemsModel_->appendRow (appItem); } }
void FSDisplayer::MakeItems (const QList<QList<Item_ptr>>& items) { MakeStdItems (); const auto& curLang = Util::GetLanguage ().toLower (); QList<Item_ptr> uniqueItems; for (const auto& sublist : items) for (auto item : sublist) if (!item->IsHidden () && std::find_if (uniqueItems.begin (), uniqueItems.end (), [&item] (const Item_ptr other) { return *other == *item; }) == uniqueItems.end ()) uniqueItems << item; std::sort (uniqueItems.begin (), uniqueItems.end (), [&curLang] (Item_ptr left, Item_ptr right) { return QString::localeAwareCompare (left->GetName (curLang), right->GetName (curLang)) < 0; }); for (const auto& item : uniqueItems) { const auto& itemName = item->GetName (curLang); auto appItem = new QStandardItem (); appItem->setData (itemName, ModelRoles::ItemName); auto comment = item->GetComment (curLang); if (comment.isEmpty ()) comment = item->GetGenericName (curLang); appItem->setData (comment, ModelRoles::ItemDescription); const auto& iconName = item->GetIconName (); appItem->setData (iconName, ModelRoles::ItemIcon); IconsProvider_->AddIcon (iconName, item->GetIcon ()); appItem->setData (item->GetCategories (), ModelRoles::ItemNativeCategories); appItem->setData (itemName, ModelRoles::ItemID); appItem->setData (FavManager_->IsFavorite (item->GetPermanentID ()), ModelRoles::IsItemFavorite); ItemInfos_ [itemName] = { [this, item] () { item->Execute (Proxy_); }, item->GetPermanentID () }; ItemsModel_->appendRow (appItem); } }