[pan2] disconnect only if set in prefs small improvements to status icon



commit c860200acc21a574273f78e8e246ae52347154fd
Author: Heinrich MÃller <henmull src gnome org>
Date:   Sun Oct 7 10:35:03 2012 +0200

    disconnect only if set in prefs
    small improvements to status icon

 pan/data-impl/download-meter.cc |   10 ++++++----
 pan/gui/dl-prefs.cc             |    4 ++--
 pan/gui/gui.cc                  |    6 +++---
 pan/gui/pan.cc                  |   11 +++++++++--
 pan/tasks/queue.cc              |    3 ++-
 5 files changed, 22 insertions(+), 12 deletions(-)
---
diff --git a/pan/data-impl/download-meter.cc b/pan/data-impl/download-meter.cc
index 808f23e..dcac0a5 100644
--- a/pan/data-impl/download-meter.cc
+++ b/pan/data-impl/download-meter.cc
@@ -99,11 +99,11 @@ namespace
   {
     int cnt (log10f(bytes)/log10f(1024));
     uint64_t factor = ::pow(1024ul, (uint64_t)cnt);
-    float rest = cnt > 0.0f ? (((float)bytes / (float)factor)/10.0f) : 0.0f;
+    double rest = cnt > 0.0f ? (((double)bytes / (double)factor)/10.0f) : 0.0f;
     std::stringstream str;
 
     uint64_t ret = factor == 0ul ? ret : bytes / factor;
-    str << std::setprecision (2) << (ret+rest) << " " << mnemonic(cnt);
+    str << (ret+rest) << " " << mnemonic(cnt);
     return str.str();
   }
 
@@ -113,10 +113,10 @@ void
 DownloadMeterImpl :: set_status ()
 {
   // check if limit reached
-  if (_downloaded_bytes > _limit && _limit > 0)
+  if (_downloaded_bytes >= _limit && _limit > 0)
   {
     fire_dl_limit_reached ();
-    if (_prefs.get_flag("warn-dl-limit-reached", true))
+    if (_prefs.get_flag("warn-dl-limit-reached", false))
       _view->set_color("red");
   }
   else
@@ -167,6 +167,8 @@ DownloadMeterImpl :: dl_meter_update ()
   int limit (_prefs.get_int("dl-limit", 1024));
   _limit = limit * ::pow(1024, type_idx);
 
+  std::cerr<<"diff "<<_limit-_downloaded_bytes<<"\n";
+
   set_status ();
 }
 
diff --git a/pan/gui/dl-prefs.cc b/pan/gui/dl-prefs.cc
index 5e53bb6..556ad3b 100644
--- a/pan/gui/dl-prefs.cc
+++ b/pan/gui/dl-prefs.cc
@@ -168,9 +168,9 @@ namespace pan
     HIG::workarea_add_section_title (t, &row, _("Download Limit reached"));
 
       HIG :: workarea_add_section_spacer (t, row, 2);
-      w = new_check_button (_("Warn"), "warn-dl-limit-reached", true, prefs);
+      w = new_check_button (_("Warn"), "warn-dl-limit-reached", false, prefs);
       HIG :: workarea_add_wide_control (t, &row, w);
-      w = new_check_button (_("Disconnect from server"), "disconnect-on-dl-limit-reached", true, prefs);
+      w = new_check_button (_("Disconnect from server"), "disconnect-on-dl-limit-reached", false, prefs);
       HIG :: workarea_add_wide_control (t, &row, w);
       w = _spin = new_spin_button ("dl-limit", 1, 1024, prefs);
       HIG :: workarea_add_wide_control (t, &row, w);
diff --git a/pan/gui/gui.cc b/pan/gui/gui.cc
index b726a06..1136212 100644
--- a/pan/gui/gui.cc
+++ b/pan/gui/gui.cc
@@ -303,9 +303,9 @@ GUI :: GUI (Data& data, Queue& queue, Prefs& prefs, GroupPrefs& group_prefs, Dow
   gtk_box_pack_start (GTK_BOX(status_bar), frame, FALSE, FALSE, 0);
 
   // download meter
-  w = _meter.get_widget();
-  gtk_box_pack_start (GTK_BOX(status_bar), w, FALSE, FALSE, 0);
-  g_signal_connect (_meter.get_button(), "clicked", G_CALLBACK(show_download_meter_prefs_cb), this);
+//  w = _meter.get_widget();
+//  gtk_box_pack_start (GTK_BOX(status_bar), w, FALSE, FALSE, 0);
+//  g_signal_connect (_meter.get_button(), "clicked", G_CALLBACK(show_download_meter_prefs_cb), this);
 
   // drag and drop for message-ids
   //  gtk_drag_dest_set(_workarea_bin,GTK_DEST_DEFAULT_ALL,target_list,3,GDK_ACTION_COPY);
diff --git a/pan/gui/pan.cc b/pan/gui/pan.cc
index df380cf..2e6b707 100644
--- a/pan/gui/pan.cc
+++ b/pan/gui/pan.cc
@@ -110,7 +110,14 @@ namespace
 
   gboolean delete_event_cb (GtkWidget * w, GdkEvent *, gpointer user_data)
   {
-    mainloop_quit ();
+    if (static_cast<Prefs*>(user_data)->get_flag("status-icon", false))
+    {
+      gtk_widget_hide(w);
+    }
+    else
+    {
+      mainloop_quit ();
+    }
     return true; // don't invoke the default handler that destroys the widget
   }
 
@@ -513,7 +520,7 @@ namespace
 
     GUI& gui (*_gui);
 
-    const gulong delete_cb_id =  g_signal_connect (window, "delete-event", G_CALLBACK(delete_event_cb), NULL);
+    const gulong delete_cb_id =  g_signal_connect (window, "delete-event", G_CALLBACK(delete_event_cb), &prefs);
 
     gtk_container_add (GTK_CONTAINER(window), gui.root());
     const bool minimized(prefs.get_flag("start-minimized", false));
diff --git a/pan/tasks/queue.cc b/pan/tasks/queue.cc
index a9a59c8..2f98cff 100644
--- a/pan/tasks/queue.cc
+++ b/pan/tasks/queue.cc
@@ -989,7 +989,8 @@ Queue :: get_stats (unsigned long   & queued_count,
 void
 Queue :: on_dl_limit_reached ()
 {
-  set_online (false);
+  if (_prefs.get_flag("disconnect-on-dl-limit-reached", false))
+    set_online (false);
 }
 
 void



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