Exemple #1
0
	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);
		}
	}
Exemple #2
0
	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);
		}
	}