RecentManager
RecentManager actúa como una base de datos de archivos usados recientemente. Use esta clase para registrar archivos nuevos, eliminarlos o buscarlos. Hay una lista de archivos usados recientemente por cada usuario.
Puede crear un RecentManager nuevo, pero es muy probable que prefiera usar el predeterminado. Puede obtener una referencia del RecentManager predeterminado con get_default().
RecentManager es el modelo de un patrón modelo-vista cuya vista es la clase que implementa la interfaz RecentChooser.
21.1.1. Agregar elementos a la lista de archivos recientes
Para añadir un archivo nuevo a la lista de documentos recientes, en el caso más simple, sólo necesita proporcionar su URI. Por ejemplo:
Glib::RefPtr<Gtk::RecentManager> recent_manager = Gtk::RecentManager::get_default(); recent_manager->add_item(uri);
Si quiere registrar un archivo con metadatos, puede pasar un parámetro RecentManager::Data al add_item(). Los metadatos que pueden establecerse en un elemento archivo particular son los siguientes:
- app_exec: la línea de comandos que se usará para lanzar este recurso. La cadena puede contener los caracteres de escape «f» y «u» que se expandirán en la ruta del archivo de recursos y el URI respectivamente
- app_name: el nombre de la aplicación que registró el recurso
- description: una descripción corta del recurso en una cadena codificada en UTF-8
- display_name: el nombre del recurso que se mostrará como una cadena codificada en UTF-8
- groups: una lista de grupos asociada con este elemento. Los grupos son esencialmente cadenas arbitrarias asociadas con un recurso en particular. Puede pensar en ellos como «categorías» (como «correo-e», «gráficos», etc), o etiquetas del recurso
- is_private: determina si el recurso debe ser visible sólo a las aplicaciones que lo han registrado o no
- mime_type: el tipo MIME del recurso
Además de añadir elementos a la lista, puede buscarlos y modificarlos o eliminarlos.
21.1.2. Buscar elementos en la lista de archivos recientes
Para buscar archivos usados recientemente, RecentManager proporciona varias funciones. Para buscar un elemento específico por su URI, puede usar la función lookup_item(), que devolverá una clase RecentInfo. Si el URI especificado no existe en la lista de archivos recientes, lookup_item() arroja una excepción RecentManagerError. Por ejemplo:
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) { // item was found }
Un objeto RecentInfo es esencialmente un objeto que contiene todos los metadatos de un solo archivo utilizado recientemente. Puede utilizar este objeto para buscar cualquiera de las propiedades enumeradas anteriormente.
Si no quiere buscar un URI específico, sino obtener una lista de todos los elementos usados recientemente, RecentManager proporciona la función get_items(). El valor que devuelve esta función es un std::vector de todos los archivos usados recientemente. El siguiente código demuestra cómo puede obtener una lista de todos los archivos usados recientemente:
std::vector< Glib::RefPtr<Gtk::RecentInfo> > info_list = recent_manager->get_items();
La edad máxima de los elementos de la lista de archivos usados recientemente puede establecerse con Gtk::Settings::property_gtk_recent_files_max_age(). El valor predeterminado es 30 días.
21.1.3. Modificar la lista de archivos recientes
Podría existir alguna ocasión en la que necesite modificar la lista de archivos usados recientemente. Por ejemplo, si un archivo se borra o renombra, necesitará actualizar la localización del archivo en la lista de archivos recientes para que no apunte a un lugar incorrecto. Puede actualizar la localización de un elemento usando move_item().
Además de cambiar el URI de un archivo, también puede eliminar archivos de la lista uno a uno o todos juntos. Realice lo primero con remove_item(), y lo último con purge_items().
Las funciones move_item(), remove_item() y purge_items() no tienen efecto en los archivos en sí a los que se refieren los URI, sólo modifican la lista de archivos recientes.