Πρόσφατος διαχειριστής (RecentManager)

Η RecentManager δρα ως μια βάση δεδομένων των πρόσφατα χρησιμοποιημένων αρχείων. Χρησιμοποιείτε αυτήν την κλάση για να καταχωρίσετε νέα αρχεία, να αφαιρέσετε αρχεία από τον κατάλογο, ή να αναζητήσετε πρόσφατα χρησιμοποιημένα αρχεία. Υπάρχει ένας κατάλογος των πρόσφατα χρησιμοποιημένων αρχείων ανά χρήστη.

Μπορείτε να δημιουργήσετε μια νέα RecentManager, αλλά μάλλον θα θέλετε να χρησιμοποιήσετε απλά την προεπιλεγμένη. Μπορείτε να κάνετε μια αναφορά στην προεπιλεγμένη RecentManager με την get_default().

Η RecentManager είναι το πρότυπο ενός υποδείγματος προβολής προτύπου, όπου η προβολή είναι μια κλάση που υλοποιεί τη διεπαφή RecentChooser.

21.1.1. Προσθήκη στοιχείων στον κατάλογο των πρόσφατων αρχείων

Για να προσθέσετε ένα νέο αρχείο στον κατάλογο των πρόσφατων εγγράφων, στην πιο απλή περίπτωση, χρειάζεστε μόνο να δώσετε το URI. Για παράδειγμα:

Glib::RefPtr<Gtk::RecentManager> recent_manager = Gtk::RecentManager::get_default();
recent_manager->add_item(uri);

Αν θέλετε να καταχωρίσετε ένα αρχείο με μεταδεδομένα, μπορείτε να περάσετε μια παράμετρο RecentManager::Data στην add_item(). Τα μεταδεδομένα που μπορούν να οριστούν στο συγκεκριμένο στοιχείο του αρχείου είναι ως εξής:

  • app_exec: Η γραμμή εντολών που θα χρησιμοποιηθεί για εκκίνηση αυτού του πόρου. Αυτή η συμβολοσειρά μπορεί να περιέχει τους χαρακτήρες διαφυγής "f" και "u" που θα επεκταθούν στη διαδρομή αρχείου του πόρου και στο URI αντίστοιχα
  • app_name: Το όνομα της εφαρμογής που καταχωρίστηκε στον πόρο
  • description: Μια σύντομη περιγραφή του πόρου ως μια κωδικοποιημένη συμβολοσειρά UTF-8
  • display_name: Το όνομα του πόρου που θα χρησιμοποιηθεί για εμφάνιση ως μιας κωδικοποιημένης συμβολοσειράς UTF-8
  • groups: Ένας κατάλογος ομάδων που σχετίζεται με αυτό το στοιχείο. Οι ομάδες είναι βασικά ελεύθερες συμβολοσειρές που σχετίζονται με έναν συγκεκριμένο πόρο. Μπορούν να θεωρηθούν ως 'κατηγορίες' (όπως "αλληλογραφία", "γραφικά", κλπ) ή ετικέτες για τον πόρο.
  • is_private: Αν αυτός ο πόρος πρέπει να είναι ορατός μόνο στις εφαρμογές που το έχουν καταχωρίσει ή όχι
  • mime_type: Ο τύπος MIME του πόρου

Πέρα από την προσθήκη στοιχείων στον κατάλογο, μπορείτε επίσης να αναζητήσετε στοιχεία από τον κατάλογο και να τροποποιήσετε ή να αφαιρέσετε στοιχεία.

21.1.2. Αναζήτηση στοιχείων στον κατάλογο των πρόσφατων αρχείων

Για την αναζήτηση πρόσφατα χρησιμοποιημένων αρχείων, η RecentManager δίνει αρκετές συναρτήσεις. Για αναζήτηση ενός συγκεκριμένου στοιχείου με το URI του, μπορείτε να χρησιμοποιήσετε τη συνάρτηση lookup_item(), που θα επιστρέψει μια κλάση RecentInfo. Αν το συγκεκριμένο URI δεν υπήρχε στον κατάλογο των πρόσφατων αρχείων, η lookup_item() εκπέμπει μια εξαίρεση της RecentManagerError. Για παράδειγμα:

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)
{
  // το στοιχείο βρέθηκε
}

Ένα αντικείμενο RecentInfo είναι βασικά ένα αντικείμενο που περιέχει όλα τα μεταδεδομένα για ένα μονό πρόσφατα χρησιμοποιούμενο αρχείο. Μπορείτε να χρησιμοποιήσετε αυτό το αντικείμενο για αναζήτηση οποιασδήποτε ιδιότητας είναι καταχωρισμένη παραπάνω.

Αν δεν θέλετε να ψάξετε για ένα συγκεκριμένο URI, αλλά αντίθετα θέλετε να πάρετε έναν κατάλογο όλων των πρόσφατα χρησιμοποιημένων στοιχείων, η RecentManager παρέχει τη συνάρτηση get_items(). Η τιμή επιστροφής αυτής της συνάρτησης είναι μια std::vector όλων των πρόσφατα χρησιμοποιημένων αρχείων. Ο παρακάτω κώδικας δείχνει πώς μπορείτε να πάρετε έναν κατάλογο των πρόσφατα χρησιμοποιημένων αρχείων:

std::vector< Glib::RefPtr<Gtk::RecentInfo> > info_list = recent_manager->get_items();

Η μέγιστη ηλικία των στοιχείων στον κατάλογο των πρόσφατα χρησιμοποιημένων αρχείων μπορεί να οριστεί με την Gtk::Settings::property_gtk_recent_files_max_age(). Προεπιλεγμένη τιμή: 30 ημέρες.

21.1.3. Τροποποίηση του καταλόγου των πρόσφατων αρχείων

Εκεί μπορεί να υπάρχουν φορές που χρειάζεστε να τροποποιήσετε τον κατάλογο των πρόσφατων αρχείων. Για παράδειγμα, αν ένα αρχείο μετακινήθηκε ή μετονομάστηκε, μπορεί να χρειαστεί να ενημερώσετε τη θέση του αρχείου στον κατάλογο πρόσφατων αρχείων, έτσι ώστε να μην δείχνει μια εσφαλμένη θέση. Μπορείτε να ενημερώσετε τη θέση ενός στοιχείου χρησιμοποιώντας την move_item().

Πέρα από την αλλαγή του URI ενός αρχείου, μπορείτε επίσης να αφαιρέσετε στοιχεία από τον κατάλογο, είτε ένα τη φορά είτε καθαρίζοντας τα όλα μονομιάς. Το πρώτο πραγματοποιείται με την remove_item(), το δεύτερο με την purge_items().

Οι συναρτήσεις move_item(), remove_item() και purge_items() δεν επιδρούν στα ενεργά αρχεία που αναφέρονται από τα URIs, τροποποιούν μόνο τον κατάλογο των πρόσφατων αρχείων.