paperbox r252 - in trunk: . src
- From: markoa svn gnome org
- To: svn-commits-list gnome org
- Subject: paperbox r252 - in trunk: . src
- Date: Sun, 28 Dec 2008 21:21:34 +0000 (UTC)
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]