paperbox r129 - in trunk: . src



Author: markoa
Date: Thu Apr 24 14:25:10 2008
New Revision: 129
URL: http://svn.gnome.org/viewvc/paperbox?rev=129&view=rev

Log:
Tag request status awareness in the userland

Modified:
   trunk/ChangeLog
   trunk/src/browser.cc
   trunk/src/browser.hh
   trunk/src/document-tag-cloud-model.cc
   trunk/src/document-tag-cloud-model.hh
   trunk/src/document-tile.cc
   trunk/src/document-tile.hh

Modified: trunk/src/browser.cc
==============================================================================
--- trunk/src/browser.cc	(original)
+++ trunk/src/browser.cc	Thu Apr 24 14:25:10 2008
@@ -142,23 +142,22 @@
     }
 
     void
-    Browser::on_add_tags_request_completed(bool status,
+    Browser::on_add_tags_request_completed(bool success,
                                            const ustring& uri,
                                            const vector<ustring>& tags)
     {
         doc_map::iterator doc_iter = docs_.find(uri.raw());
         shared_ptr<Document> doc = doc_iter->second;
 
-        // TODO: be properly status-aware
-        if (status) {
+        if (success) {
             vector<ustring>::const_iterator it(tags.begin());
             vector<ustring>::const_iterator end(tags.end());
 
             for ( ; it != end; ++it) doc->add_tag(*it);
-
-            vector<ustring> tags_removed_none;
-            signal_tags_changed_.emit(uri, tags, tags_removed_none);
         }
+
+        vector<ustring> tags_removed_none;
+        signal_tags_changed_.emit(uri, success, tags, tags_removed_none);
     }
 
     // Does the validation work and forwards the add request to TrackerPhone
@@ -188,23 +187,22 @@
     }
 
     void
-    Browser::on_remove_tags_request_completed(bool status,
+    Browser::on_remove_tags_request_completed(bool success,
                                               const ustring& uri,
                                               const vector<ustring>& tags)
     {
         doc_map::iterator doc_iter = docs_.find(uri.raw());
         shared_ptr<Document> doc = doc_iter->second;
 
-        // TODO: be properly status-aware
-        if (status) {
+        if (success) {
             vector<ustring>::const_iterator it(tags.begin());
             vector<ustring>::const_iterator end(tags.end());
 
             for ( ; it != end; ++it) doc->remove_tag(*it);
-
-            vector<ustring> tags_added_none;
-            signal_tags_changed_.emit(uri, tags_added_none, tags);
         }
+
+        vector<ustring> tags_added_none;
+        signal_tags_changed_.emit(uri, success, tags_added_none, tags);
     }
 
     // Does the validation work and forwards the remove request to TrackerPhone

Modified: trunk/src/browser.hh
==============================================================================
--- trunk/src/browser.hh	(original)
+++ trunk/src/browser.hh	Thu Apr 24 14:25:10 2008
@@ -47,11 +47,13 @@
         /*
          * eg void on_tags_changed(
          *           const std::string& uri,
+         *           bool success,
          *           const std::vector<Glib::ustring>& tags_added,
          *           const std::vector<Glib::ustring>& tags_removed);
          */
         typedef sigc::signal<void,
                              const std::string&,
+                             bool,
                              const std::vector<Glib::ustring>& ,
                              const std::vector<Glib::ustring>& >
         SignalTagsChanged;

Modified: trunk/src/document-tag-cloud-model.cc
==============================================================================
--- trunk/src/document-tag-cloud-model.cc	(original)
+++ trunk/src/document-tag-cloud-model.cc	Thu Apr 24 14:25:10 2008
@@ -48,9 +48,12 @@
     void
     DocumentTagCloudModel::on_tags_changed(
         const std::string& /* uri */,
+        bool  success,
         const vector<Glib::ustring>& tags_added,
         const vector<Glib::ustring>& tags_removed)
     {
+        if (! success) return; // just ignore, a tile would notify the user
+
         vector<Glib::ustring>::const_iterator it_add(tags_added.begin());
         vector<Glib::ustring>::const_iterator end_add(tags_added.end());
 

Modified: trunk/src/document-tag-cloud-model.hh
==============================================================================
--- trunk/src/document-tag-cloud-model.hh	(original)
+++ trunk/src/document-tag-cloud-model.hh	Thu Apr 24 14:25:10 2008
@@ -44,6 +44,7 @@
 
     protected:
         void on_tags_changed(const std::string& uri,
+                             bool  success,
                              const std::vector<Glib::ustring>& tags_added,
                              const std::vector<Glib::ustring>& tags_removed);
     };

Modified: trunk/src/document-tile.cc
==============================================================================
--- trunk/src/document-tile.cc	(original)
+++ trunk/src/document-tile.cc	Thu Apr 24 14:25:10 2008
@@ -24,6 +24,7 @@
 #include <gtk/gtklinkbutton.h>
 #include <gtk/gtkwidget.h>
 #include <glibmm-utils/ustring.h>
+#include <gtkmm-utils/dialog.h>
 #include <gtkmm/stock.h>
 #include "browser.hh"
 #include "dialog-tag-entry.hh"
@@ -88,7 +89,7 @@
         tag_links_.clear();
     }
 
-    Glib::ustring
+    ustring
     DocumentTile::get_document_uri() const
     {
         return uri_;
@@ -152,8 +153,8 @@
     }
 
     void
-    DocumentTile::refresh_tag_links(const vector<Glib::ustring>& tags_added,
-                                    const vector<Glib::ustring>& tags_removed)
+    DocumentTile::refresh_tag_links(const vector<ustring>& tags_added,
+                                    const vector<ustring>& tags_removed)
     {
         {
             vector<ustring>::const_iterator it(tags_added.begin());
@@ -264,7 +265,7 @@
     void
     DocumentTile::on_tag_add_clicked()
     {
-        vector<Glib::ustring> tags;
+        vector<ustring> tags;
         shared_ptr<DialogTagEntry> dialog(DialogTagEntry::create());
         dialog->set_default_response(Gtk::RESPONSE_OK);
 
@@ -278,13 +279,13 @@
 
     void
     DocumentTile::on_taglink(Gtk::LinkButton */*button*/,
-                             const Glib::ustring& uri)
+                             const ustring& uri)
     {
         signal_tag_clicked_.emit(uri);
     }
 
     void
-    DocumentTile::on_tag_link_tag_remove_request(const Glib::ustring& tag)
+    DocumentTile::on_tag_link_tag_remove_request(const ustring& tag)
     {
         vector<ustring> tag_vec;
         tag_vec.push_back(tag);
@@ -294,14 +295,22 @@
 
     void
     DocumentTile::on_tags_changed(const std::string& uri,
-                                  const vector<Glib::ustring>& tags_added,
-                                  const vector<Glib::ustring>& tags_removed)
+                                  bool  success,
+                                  const vector<ustring>& tags_added,
+                                  const vector<ustring>& tags_removed)
     {
         if (uri_ != uri) return;
 
-        unpack_tag_links();
-        refresh_tag_links(tags_added, tags_removed);
-        pack_tag_links();
+        if (success) {
+            unpack_tag_links();
+            refresh_tag_links(tags_added, tags_removed);
+            pack_tag_links();
+        } else {
+            // TODO: wrap in _()
+            ustring op;
+            op = tags_added.size() > 0 ? "add tags to" : "remove tags from ";
+            Gtk::Util::display_dialog_error("Failed to " + op + uri);
+        }
     }
 
     void

Modified: trunk/src/document-tile.hh
==============================================================================
--- trunk/src/document-tile.hh	(original)
+++ trunk/src/document-tile.hh	Thu Apr 24 14:25:10 2008
@@ -82,6 +82,7 @@
 
         // Browser's signal handler
         void on_tags_changed(const std::string& uri,
+                             bool success,
                              const std::vector<Glib::ustring>& tags_added,
                              const std::vector<Glib::ustring>& tags_removed);
 



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