Správa nedávno použitých (RecentManager)

RecentManager funguje jako databáze nedávno použitých souborů. Tuto třídu můžete použít k registraci nových souborů, odstranění souborů ze seznamu a vyhledání nedávno použitých souborů. Každý uživatel má svůj vlastní seznam nedávno použitých souborů.

Můžete vytvořit nový RecentManager, ale nejspíše budete chtít používat výchozí. Ukazatel na výchozí RecentManager získáte pomocí metody get_default().

20.1.1. Přidání položek do seznamu nedávných souborů

Když chcete do seznamu nedávných dokumentů přidat novou položku, v nejjednodušším případě stačí poskytnou adresu URI. Například:

auto recent_manager = Gtk::RecentManager::get_default();
recent_manager->add_item(uri);

Když chcete zaregistrovat soubor včetně metadat, můžete předat do add_item() parametr RecentManager::Data. Metadata mohou být nastavena pro konkrétní položku souboru následovně:

  • app_exec: Příkazový řádek, který bude použitý ke spuštění tohoto prostředku. Tento řetězec může obsahovat ošetřené znaky „f“ a „u“, které se nahradí souborovou cestou prostředku, respektive jeho adresou URI.
  • app_name: Název aplikace, která registruje prostředky.
  • description: Krátký popis prostředku v podobě řetězce kódovaného v UTF-8.
  • display_name: Název prostředku v podobě řetězce kódovaného v UTF-8, který se použije k zobrazení.
  • groups: Seznam skupin přidružených k položce. Skupiny jsou v podstatě libovolné řetězce přidružené ke konkrétnímu prostředku. Můžete o nich uvažovat, jako o kategoriích (třeba „e-mail“, „grafika“, atd.) nebo o štítcích pro prostředek.
  • is_private:Jestli má být tento prostředek viditelný jen aplikacím, které mají registraci, či nikoliv.
  • mime_type: Typ MIME prostředku.

Mimo přidávání položek do seznamu, můžete položky v seznamu také vyhledávat a měnit nebo odebírat.

20.1.2. Vyhledávání položek v seznamu nedávných souborů

Pro vyhledání nedávno použitých souborů RecentManager poskytuje několik funkcí. K vyhledání konkrétní položky podle její URI můžete použít funkci lookup_item(), která vrací třídu RecentInfo. Pokud zadaná adresa URI v seznamu nedávných souborů neexistuje lookup_item() vyhodí výjimku RecentManagerError. Například:

Glib::RefPtr<Gtk::RecentInfo> info;
try
{
  info = recent_manager->lookup_item(uri);
}
catch(const Gtk::RecentManagerError& ex)
{
  std::cerr << "RecentManagerError: " << ex.what() << std::endl;
}
if (info)
{
  // položka byla nalezena
}

Objekt RecentInfo je v podstatě objekt obsahující všechna metadata o jednom nedávno použitém souboru. Můžete jej využít k vyhledání vlastností uvedených v předchozím.

Pokud nechcete vyhledávat podle konkrétní URI, ale místo toho chcete získat seznam všech nedávno použitých položek, poskytuje RecentManager funkci get_items(). Návratová hodnota této funkce je std::vector se všemi nedávno použitými soubory. Následující kód ukazuje, jak můžete seznam nedávno použitých souborů získat:

auto info_list = recent_manager->get_items();

Maximální stáří položek v seznamu nedávno použitých položek se dá nastavit pomocí Gtk::Settings::property_gtk_recent_files_max_age(). Výchozí hodnota je 30 dní.

20.1.3. Změny seznamu nedávných souborů

Mohou nastat situace, kdy budete chtít seznam nedávných souborů změnit. Například, když je soubor přesunut nebo přejmenován, můžete potřebovat aktualizovat umístění souboru v seznamu nedávných souborů, aby neodkazoval na nesprávné místo. Aktualizovat umístění položky můžete pomocí move_item().

Mimo změny URI souboru můžete také položky ze seznam odstranit, buď po jedné nebo smazat všechny naráz. Prvního zmíněného dosáhnete pomocí remove_item(), druhého pomocí purge_items().

Funkce move_item(), remove_item() a purge_items() nemají žádný vliv na skutečné soubory, na které odkazují adresy URI, mění pouze seznam nedávných souborů.