paperbox r252 - in trunk: . src



Author: markoa
Date: Sun Dec 28 21:21:33 2008
New Revision: 252
URL: http://svn.gnome.org/viewvc/paperbox?rev=252&view=rev

Log:
New Retrieval Order


Modified:
   trunk/ChangeLog
   trunk/src/browser.cc
   trunk/src/browser.hh
   trunk/src/category-editor.cc
   trunk/src/category-editor.hh
   trunk/src/document-tile.cc
   trunk/src/document-tile.hh
   trunk/src/document.cc
   trunk/src/main-window.cc
   trunk/src/main-window.hh

Modified: trunk/src/browser.cc
==============================================================================
--- trunk/src/browser.cc	(original)
+++ trunk/src/browser.cc	Sun Dec 28 21:21:33 2008
@@ -148,8 +148,19 @@
     {
         uri_queue_ = uris;
 
-        // begin retrieving information
         signal_retrieval_started_.emit();
+
+        vector<shared_ptr<Document> > docs;
+        std::queue<ustring> uris_copy(uris);
+
+        while (! uris_copy.empty()) {
+            ustring uri = uris_copy.front();
+            docs.push_back(shared_ptr<Document>(new Document(uri)));
+            uris_copy.pop();
+        }
+
+        signal_new_blank_documents_.emit(docs);
+
         Glib::signal_idle().connect(
             sigc::mem_fun(*this, &Browser::on_idle_initial_document_retrieval));
     }
@@ -177,7 +188,7 @@
 
             if (doc.get()) {
                 docs_[uri.raw()] = doc;
-                signal_new_document_.emit(doc);
+                signal_document_retrieved_.emit(doc);
             }
         }
         catch (const Glib::FileError& ex) {
@@ -210,10 +221,16 @@
         return signal_retrieval_finished_;
     }
 
-    Browser::SignalNewDocument&
-    Browser::signal_new_document()
+    Browser::SignalDocuments&
+    Browser::signal_new_blank_documents()
+    {
+        return signal_new_blank_documents_;
+    }
+
+    Browser::SignalDocument&
+    Browser::signal_document_retrieved()
     {
-        return signal_new_document_;
+        return signal_document_retrieved_;
     }
 
     Browser::SignalTagsChanged&

Modified: trunk/src/browser.hh
==============================================================================
--- trunk/src/browser.hh	(original)
+++ trunk/src/browser.hh	Sun Dec 28 21:21:33 2008
@@ -45,8 +45,9 @@
     class Browser : public sigc::trackable, private NonCopyable
     {
     public:
-        typedef sigc::signal<void, const std::tr1::shared_ptr<Document>& >
-        SignalNewDocument;
+        typedef sigc::signal<void, const std::tr1::shared_ptr<Document>& > SignalDocument;
+
+        typedef sigc::signal<void, const std::vector<std::tr1::shared_ptr<Document> >& > SignalDocuments;
 
         /*
          * eg void on_tags_changed(
@@ -93,7 +94,8 @@
         sigc::signal<void>& signal_retrieval_started();
         sigc::signal<void>& signal_retrieval_finished();
 
-        SignalNewDocument& signal_new_document();
+        SignalDocuments&   signal_new_blank_documents();
+        SignalDocument&    signal_document_retrieved();
         SignalTagsChanged& signal_tags_changed();
 
     protected:
@@ -119,8 +121,9 @@
 
         sigc::signal<void> signal_retrieval_started_;
         sigc::signal<void> signal_retrieval_finished_;
-        SignalNewDocument signal_new_document_;
-        SignalTagsChanged signal_tags_changed_;
+        SignalDocuments    signal_new_blank_documents_;
+        SignalDocument     signal_document_retrieved_;
+        SignalTagsChanged  signal_tags_changed_;
 
     private:
         static std::auto_ptr<Browser> instance_;

Modified: trunk/src/category-editor.cc
==============================================================================
--- trunk/src/category-editor.cc	(original)
+++ trunk/src/category-editor.cc	Sun Dec 28 21:21:33 2008
@@ -144,8 +144,8 @@
 
         // get notified about new tags through new documents
         // TODO: what about signals for tags added/removed?
-        Browser::instance()->signal_new_document().connect(
-            sigc::mem_fun(*this, &CategoryEditor::on_new_document));
+        Browser::instance()->signal_document_retrieved().connect(
+            sigc::mem_fun(*this, &CategoryEditor::on_document_retrieved));
 
         tag_cloud_.signal_tag_clicked().connect(
             sigc::mem_fun(*this, &CategoryEditor::on_tag_clicked));
@@ -283,7 +283,7 @@
     }
 
     void
-    CategoryEditor::on_new_document(const shared_ptr<Document>& doc)
+    CategoryEditor::on_document_retrieved(const shared_ptr<Document>& doc)
     {
         static_cast<DocumentTagCloudModel*>(
             tag_cloud_model_.get())->update_tags(doc);

Modified: trunk/src/category-editor.hh
==============================================================================
--- trunk/src/category-editor.hh	(original)
+++ trunk/src/category-editor.hh	Sun Dec 28 21:21:33 2008
@@ -67,7 +67,7 @@
                                   const Gtk::TreeModel::Path& path,
                                   bool path_selected);
         bool on_key_release_event(GdkEventKey* key);
-        void on_new_document(const std::tr1::shared_ptr<Document>& doc);
+        void on_document_retrieved(const std::tr1::shared_ptr<Document>& doc);
         void on_tag_clicked(const Glib::ustring& tag);
 
         virtual bool on_expose_event(GdkEventExpose* event);

Modified: trunk/src/document-tile.cc
==============================================================================
--- trunk/src/document-tile.cc	(original)
+++ trunk/src/document-tile.cc	Sun Dec 28 21:21:33 2008
@@ -55,20 +55,10 @@
 
         Gtk::VBox& content_vbox = get_content_vbox();
 
-        int page_count = doc->get_page_count();
-
         pages_label_.set_alignment(0.0);
-        pages_label_.set_text(
-            Glib::Util::uprintf(ngettext("%d page", "%d pages", page_count),
-                                page_count));
-
         extra_hbox_.pack_start(pages_label_, false, false, 0);
 
         modtime_label_.set_alignment(0.0);
-        modtime_label_.set_text(
-            Glib::Util::uprintf(_("Modified on %s"),
-                                doc->get_modification_time().c_str()));
-
         time_hbox_.pack_start(modtime_label_);
 
         // Build the tag bar
@@ -81,15 +71,6 @@
 
         tag_hbox_.pack_start(tag_labels_hbox_, false, false, 0);
 
-        // Build tag links from tag string
-        vector<ustring> tags = doc->get_tags();
-        vector<ustring> removed(0); // none
-        refresh_tag_links(tags, removed);
-        pack_tag_links();
-
-        refresh_tag_labels(tags, removed);
-        pack_tag_labels();
-
         content_vbox.pack_start(tag_hbox_, false, false, 0);
 
         connect_signals();
@@ -137,10 +118,46 @@
             sigc::mem_fun(*this, &DocumentTile::on_tag_add_clicked));
 
         Browser* b = Browser::instance();
+
+        b->signal_document_retrieved().connect(
+            sigc::mem_fun(*this, &DocumentTile::on_document_retrieved));
+
         b->signal_tags_changed().connect(
             sigc::mem_fun(*this, &DocumentTile::on_tags_changed));
     }
 
+    void
+    DocumentTile::on_document_retrieved(const shared_ptr<Document>& doc)
+    {
+        if (doc_->get_uri() != doc->get_uri()) return;
+
+        doc_ = doc; // well we might get rid of this duplication
+
+        set_title(doc->get_subject());
+        set_summary(doc->get_author());
+        break_title();
+
+        int page_count = doc->get_page_count();
+
+        pages_label_.set_text(
+            Glib::Util::uprintf(ngettext("%d page", "%d pages", page_count),
+                                page_count));
+
+        modtime_label_.set_text(
+            Glib::Util::uprintf(_("Modified on %s"),
+                                doc->get_modification_time().c_str()));
+
+        // Build tag links from tag string
+        vector<ustring> tags = doc->get_tags();
+        vector<ustring> removed(0); // none
+
+        refresh_tag_links(tags, removed);
+        pack_tag_links();
+
+        refresh_tag_labels(tags, removed);
+        pack_tag_labels();
+    }
+
     Gtk::Widget*
     DocumentTile::get_tag_link(const string& tag)
     {

Modified: trunk/src/document-tile.hh
==============================================================================
--- trunk/src/document-tile.hh	(original)
+++ trunk/src/document-tile.hh	Sun Dec 28 21:21:33 2008
@@ -97,7 +97,10 @@
         virtual void on_selected();
         virtual void on_unselected();
 
-        // Browser's signal handler
+        // Browser's signal handlers
+
+        void on_document_retrieved(const std::tr1::shared_ptr<Document>& doc);
+
         void on_tags_changed(const std::string& uri,
                              const std::vector<Glib::ustring>& tags_added,
                              const std::vector<Glib::ustring>& tags_removed);

Modified: trunk/src/document.cc
==============================================================================
--- trunk/src/document.cc	(original)
+++ trunk/src/document.cc	Sun Dec 28 21:21:33 2008
@@ -54,6 +54,7 @@
         page_count_(0),
         word_count_(0)
     {
+        set_file_name(uri_); // just so it's not completely blank at first
     }
 
     Document::~Document()

Modified: trunk/src/main-window.cc
==============================================================================
--- trunk/src/main-window.cc	(original)
+++ trunk/src/main-window.cc	Sun Dec 28 21:21:33 2008
@@ -511,8 +511,11 @@
         browser_->signal_retrieval_finished().connect(
             sigc::mem_fun(*this, &MainWindow::on_retrieval_finished));
 
-        browser_->signal_new_document().connect(
-            sigc::mem_fun(*this, &MainWindow::on_new_document));
+        browser_->signal_new_blank_documents().connect(
+            sigc::mem_fun(*this, &MainWindow::on_new_blank_documents));
+
+        browser_->signal_document_retrieved().connect(
+            sigc::mem_fun(*this, &MainWindow::on_document_retrieved));
 
         tile_view_->signal_tile_activated().connect(
             sigc::mem_fun(*this, &MainWindow::on_document_tile_selected));
@@ -541,18 +544,28 @@
         show_widgets_after_retrieval();
     }
 
+    void
+    MainWindow::on_new_blank_documents(const vector<shared_ptr<Document> >& docs)
+    {
+        vector<shared_ptr<Document> >::const_iterator it(docs.begin());
+        vector<shared_ptr<Document> >::const_iterator end(docs.end());
+        for ( ; it != end; ++it) {
+            shared_ptr<DocumentTile> tile(new DocumentTile(thumbnailer_, *it));
+
+            bool ok = tiles_->add(tile);
+            if (! ok) return; // maybe not?
+
+            tile_view_->add_tile(*tile);
+        }
+    }
+
     // Invoked from Browser during idle time.
     // All this should be re-thought when we get xesam dbus api in tracker.
     void
-    MainWindow::on_new_document(const shared_ptr<Document>& doc)
+    MainWindow::on_document_retrieved(const shared_ptr<Document>& doc)
     {
         shared_ptr<DocumentTile> tile(new DocumentTile(thumbnailer_, doc));
 
-        bool ok = tiles_->add(tile);
-        if (! ok) return; // maybe not?
-
-        tile_view_->add_tile(*tile);
-
         std::vector<Glib::ustring> tags = doc->get_tags();
         std::vector<Glib::ustring>::iterator it(tags.begin());
         std::vector<Glib::ustring>::iterator end(tags.end());

Modified: trunk/src/main-window.hh
==============================================================================
--- trunk/src/main-window.hh	(original)
+++ trunk/src/main-window.hh	Sun Dec 28 21:21:33 2008
@@ -86,7 +86,9 @@
 
         void on_retrieval_finished();
 
-        void on_new_document(const std::tr1::shared_ptr<Document>& doc);
+        void on_new_blank_documents(const std::vector<std::tr1::shared_ptr<Document> >& docs);
+
+        void on_document_retrieved(const std::tr1::shared_ptr<Document>& doc);
 
         void on_document_tile_selected(/*Document*/Gtk::Util::Tile& t);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]