[pan2/testing: 77/279] added multi log entries for multi uploads



commit a5dac50498a0a5e74358a819af675dacf37b5e14
Author: Heinrich Mueller <sphemuel stud informatik uni-erlangen de>
Date:   Wed Jun 1 23:21:27 2011 +0200

    added multi log entries for multi uploads

 pan/data/Makefile.am     |    2 +
 pan/general/log.cc       |   13 ++---
 pan/general/log.h        |   16 ++----
 pan/gui/log-ui.cc        |  123 ++++++++++++++++++++++++++--------------------
 pan/gui/post-ui.cc       |   36 ++++++++++---
 pan/gui/post-ui.h        |    1 +
 pan/gui/score-add-ui.cc  |   14 +++---
 pan/tasks/task-upload.cc |   68 ++++++++++----------------
 pan/tasks/task-upload.h  |    3 +
 9 files changed, 147 insertions(+), 129 deletions(-)
---
diff --git a/pan/data/Makefile.am b/pan/data/Makefile.am
index 7c0f654..977d063 100644
--- a/pan/data/Makefile.am
+++ b/pan/data/Makefile.am
@@ -7,6 +7,7 @@ noinst_LIBRARIES = libdata.a
 libdata_a_SOURCES = \
  article.cc \
  article-cache.cc \
+ encode-cache.cc \
  data.cc \
  parts.cc \
  xref.cc
@@ -14,6 +15,7 @@ libdata_a_SOURCES = \
 noinst_HEADERS = \
  article.h \
  article-cache.h \
+ encode-cache.h \
  data.h \
  defgroup.h \
  parts.h \
diff --git a/pan/general/log.cc b/pan/general/log.cc
index e4b9fec..a0f5840 100644
--- a/pan/general/log.cc
+++ b/pan/general/log.cc
@@ -64,12 +64,12 @@ void
 Log :: add_entry(Entry& e, std::deque<Entry>& list)
 {
   _entries.resize (_entries.size() + 1);
-  Entry& tmp (_entries.back());
-  tmp.date = e.date;
-  tmp.severity = e.severity;
-  tmp.message = e.message;
-  tmp.list = list;
-  fire_entry_added (tmp);
+  Entry& a (_entries.back());
+  a.date = time(NULL);
+  a.severity = e.severity;
+  a.message = e.message;
+  a.messages = list;
+  fire_entry_added (a);
 }
 
 void
@@ -81,7 +81,6 @@ Log :: add (Severity severity, const char * msg)
   e.severity = severity;
   e.message = msg;
   fire_entry_added (e);
-  //std::cerr << "log entry: [" << msg << ']' << std::endl;
 }
 
 void
diff --git a/pan/general/log.h b/pan/general/log.h
index 1ba04fe..0a34983 100644
--- a/pan/general/log.h
+++ b/pan/general/log.h
@@ -39,6 +39,8 @@ namespace pan
         PAN_SEVERITY_URGENT = (1<<10)
       };
 
+
+
       /**
        * A log message specifying the message's text, severity, and time.
        * @see Log
@@ -47,12 +49,13 @@ namespace pan
       struct Entry {
         time_t date;
         Severity severity;
+        std::deque<Entry> messages;
         std::string message;
-        std::deque<Entry> list;
         Entry() {}
-        Entry(std::deque<Entry>& d) : list(d) {}
       };
 
+      void add_entry(Entry& e, std::deque<Entry>& list);
+
       /** Interface class for objects that listen to a Log's events */
       struct Listener {
         Listener () {}
@@ -67,15 +70,6 @@ namespace pan
       void add (Severity, const char *);
       void add_va (Severity, const char *, ...);
       const entries_t& get_entries () const { return _entries; }
-      void append_entries(entries_t& entries)
-      {
-        for (entries_t::iterator it = entries.begin(); it != entries.end(); ++it)
-        {
-          _entries.resize(entries.size()+1);
-          _entries.push_back(*it);
-        }
-      }
-      void add_entry(Entry& e, std::deque<Entry>& list);
       void clear ();
       void add_listener (Listener* l) { _listeners.insert(l); }
       void remove_listener (Listener* l) { _listeners.erase(l); }
diff --git a/pan/gui/log-ui.cc b/pan/gui/log-ui.cc
index 219094f..ccee55e 100644
--- a/pan/gui/log-ui.cc
+++ b/pan/gui/log-ui.cc
@@ -35,13 +35,13 @@ using namespace pan;
 
 namespace
 {
-  enum { COL_SEVERITY, COL_DATE, COL_MESSAGE, N_COLS };
+  enum { COL_HIDDEN, COL_SEVERITY, COL_DATE, COL_MESSAGE, N_COLS };
 
   struct MyLogListener: private Log::Listener
   {
-    GtkListStore * myStore;
+    GtkTreeStore * myStore;
 
-    MyLogListener (GtkListStore * store): myStore(store) {
+    MyLogListener (GtkTreeStore * store): myStore(store) {
       Log::get().add_listener (this);
     }
 
@@ -51,15 +51,16 @@ namespace
 
     virtual void on_log_entry_added (const Log::Entry& e) {
       GtkTreeIter iter;
-      gtk_list_store_prepend (myStore, &iter);
-      gtk_list_store_set (myStore, &iter,
+      gtk_tree_store_prepend (myStore, &iter, NULL);
+      gtk_tree_store_set (myStore, &iter,
+                          COL_HIDDEN, "",
                           COL_SEVERITY, (e.severity & Log::PAN_SEVERITY_ERROR),
                           COL_DATE, (unsigned long)e.date,
                           COL_MESSAGE, &e, -1);
     }
 
     virtual void on_log_cleared () {
-      gtk_list_store_clear (myStore);
+      gtk_tree_store_clear (myStore);
     }
   };
 
@@ -120,63 +121,39 @@ namespace
   }
 }
 
-void
-pan ::  do_popup_menu (GtkWidget *treeview, GdkEventButton *event, gpointer userdata)
-{
-  GtkWidget    * w    = treeview;
-  GtkTreeModel * model = gtk_tree_view_get_model(GTK_TREE_VIEW(w));
-  GtkTreeIter  iter ;
-  GtkTreePath * path;
-  gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW(treeview),
-                                       (gint)event->x, (gint)event->y,
-                                       &path, NULL, NULL, NULL);
-  gtk_tree_model_get_iter(model,&iter,path);
-  Log::Entry* e;
-  gtk_tree_model_get (model, &iter, COL_MESSAGE, &e, -1);
-  if (!e->list.empty())
-  {
-
-    std::cerr<<"multi entry.\n";
-
-    GtkTextBuffer * tb;
-    std::string tmp (to_string(e->list));
-    int len = tmp.length();
-    gtk_text_buffer_set_text(tb, to_string(e->list).c_str(), len);
-    GtkWidget * w = gtk_text_view_new_with_buffer(tb);
-
-    gtk_widget_show_all(w);
-  }
-}
-
-gboolean
-pan :: on_button_pressed (GtkWidget *treeview, GdkEventButton *event, gpointer userdata)
-{
-  if (event->type == GDK_BUTTON_PRESS && event->button == 3)
-  {
-      do_popup_menu (treeview, event, userdata);
-    return true;
-  }
-  return false;
-}
-
 namespace
 {
-  GtkListStore*
+  GtkTreeStore*
   create_model ()
   {
-    GtkListStore * store = gtk_list_store_new (N_COLS,
+    GtkTreeStore * store = gtk_tree_store_new (N_COLS,
+                                               G_TYPE_STRING,
                                                G_TYPE_BOOLEAN, // true==error, false==info
                                                G_TYPE_ULONG, // date
                                                G_TYPE_POINTER); // message
 
     const Log::entries_t& entries (Log::get().get_entries());
     foreach_const (Log::entries_t, entries, it) {
-      GtkTreeIter iter;
-      gtk_list_store_prepend (store, &iter);
-      gtk_list_store_set (store, &iter,
+      GtkTreeIter   top, child, tmp;
+      gtk_tree_store_prepend (store, &top, 0);
+      gtk_tree_store_set (store, &top,
+                          COL_HIDDEN, "",
                           COL_SEVERITY, (it->severity & Log::PAN_SEVERITY_ERROR),
                           COL_DATE, (unsigned long)it->date,
                           COL_MESSAGE, &*it, -1);
+      if (!it->messages.empty())
+      {
+        std::cerr<<"multi\n";
+        foreach_const (Log::entries_t, it->messages, lit)
+        {
+          gtk_tree_store_prepend (store, &child, &top );
+          gtk_tree_store_set (store, &child,
+                          COL_HIDDEN, "",
+                          COL_SEVERITY, (lit->severity & Log::PAN_SEVERITY_ERROR),
+                          COL_DATE, (unsigned long)lit->date,
+                          COL_MESSAGE, &*lit, -1);
+        }
+      }
     }
 
     return store;
@@ -228,6 +205,35 @@ namespace
 
 }
 
+gboolean
+pan :: on_button_pressed (GtkWidget *treeview, GdkEventButton *event, gpointer userdata)
+{
+  // single click with the right mouse button?
+  if (event->type == GDK_BUTTON_PRESS && event->button == 3)
+  {
+    GtkTreeSelection * selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
+    GtkTreePath * path;
+    if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW(treeview),
+                                       (gint)event->x, (gint)event->y,
+                                       &path, NULL, NULL, NULL))
+    {
+      if (!gtk_tree_selection_path_is_selected (selection, path))
+      {
+        gtk_tree_selection_unselect_all (selection);
+        gtk_tree_selection_select_path (selection, path);
+      }
+    }
+    const bool expanded (gtk_tree_view_row_expanded (GTK_TREE_VIEW(treeview), path));
+    if (expanded)
+      gtk_tree_view_collapse_row(GTK_TREE_VIEW(treeview),path);
+    else
+      gtk_tree_view_expand_row (GTK_TREE_VIEW(treeview),path,false);
+    gtk_tree_path_free (path);
+    return true;
+  }
+  return false;
+}
+
 GtkWidget*
 pan :: log_dialog_new (Prefs& prefs, GtkWindow* window)
 {
@@ -246,9 +252,11 @@ pan :: log_dialog_new (Prefs& prefs, GtkWindow* window)
   GdkPixbuf * info_pixbuf = gtk_icon_theme_load_icon (theme, GTK_STOCK_DIALOG_INFO, 20, (GtkIconLookupFlags)0, NULL);
   g_object_set_data_full (G_OBJECT(dialog), "pixbuf-info", info_pixbuf, g_object_unref);
 
-  GtkListStore * store = create_model ();
+  GtkTreeStore * store = create_model ();
   GtkWidget * view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(store));
 
+  gtk_tree_view_set_show_expanders(GTK_TREE_VIEW(view),false);
+
   g_object_set_data_full (G_OBJECT(view), "listener", new MyLogListener(store), delete_my_log_listener);
   GtkWidget * scroll = gtk_scrolled_window_new (0, 0);
   gtk_container_set_border_width (GTK_CONTAINER(scroll), PAD_BIG);
@@ -257,10 +265,17 @@ pan :: log_dialog_new (Prefs& prefs, GtkWindow* window)
   GtkCellRenderer * pixbuf_renderer = gtk_cell_renderer_pixbuf_new ();
   GtkCellRenderer * text_renderer = gtk_cell_renderer_text_new ();
 
-  // severity
+  /* placeholder for expander */
   GtkTreeViewColumn * col = gtk_tree_view_column_new ();
+  gtk_tree_view_column_set_resizable (col, false);
+  gtk_tree_view_append_column (GTK_TREE_VIEW(view), col);
+  gtk_tree_view_column_set_visible(col,false);
+  gtk_tree_view_set_expander_column(GTK_TREE_VIEW(view), col);
+
+  // severity
+  col = gtk_tree_view_column_new ();
   gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_FIXED);
-  gtk_tree_view_column_set_fixed_width (col, 24);
+  gtk_tree_view_column_set_fixed_width (col, 35);
   gtk_tree_view_column_set_resizable (col, false);
   gtk_tree_view_column_pack_start (col, pixbuf_renderer, false);
   gtk_tree_view_column_set_cell_data_func (col, pixbuf_renderer, render_severity, dialog, 0);
@@ -284,8 +299,8 @@ pan :: log_dialog_new (Prefs& prefs, GtkWindow* window)
   gtk_tree_view_column_set_title (col, _("Message"));
   gtk_tree_view_column_pack_start (col, text_renderer, true);
   gtk_tree_view_column_set_cell_data_func (col, text_renderer, render_message, 0, 0);
-//  gtk_tree_view_column_set_attributes (col, text_renderer, "text", COL_MESSAGE, NULL);
   gtk_tree_view_append_column (GTK_TREE_VIEW(view), col);
+  gtk_tree_view_set_expander_column(GTK_TREE_VIEW(view), col);
 
   gtk_widget_show (view);
   gtk_widget_show (scroll);
diff --git a/pan/gui/post-ui.cc b/pan/gui/post-ui.cc
index 10f6f01..af45011 100644
--- a/pan/gui/post-ui.cc
+++ b/pan/gui/post-ui.cc
@@ -190,6 +190,7 @@ namespace
   void do_copy     (GtkAction*, gpointer p) { g_signal_emit_by_name (get_focus(p), "copy_clipboard"); }
   void do_paste    (GtkAction*, gpointer p) { g_signal_emit_by_name (get_focus(p), "paste_clipboard"); }
   void do_rot13    (GtkAction*, gpointer p) { static_cast<PostUI*>(p)->rot13_selection(); }
+  void do_save_upload (GtkAction*, gpointer p) { static_cast<PostUI*>(p)->rot13_selection(); }
   void do_edit     (GtkAction*, gpointer p) { static_cast<PostUI*>(p)->spawn_editor (); }
   void do_profiles (GtkAction*, gpointer p) { static_cast<PostUI*>(p)->manage_profiles (); }
   void do_send     (GtkAction*, gpointer p) { static_cast<PostUI*>(p)->send_now (); }
@@ -818,7 +819,7 @@ PostUI :: maybe_post_message (GMimeMessage * message)
     _queue.add_task (_post_task, Queue::TOP);
   } else {
      foreach_const (tasks_v, _file_queue_tasks, it)
-        _queue.add_task (*it, Queue::BOTTOM);
+      _queue.add_task (*it, Queue::BOTTOM);
      close_window(true); // dont wait for the upload queue
   }
 
@@ -1635,6 +1636,14 @@ namespace
     static_cast<PostUI*>(user_data)->apply_profile ();
   }
 
+  void on_lines_spin_changed_cb (GtkComboBox* box, gpointer user_data)
+  {
+    const int res (gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON(box)));
+
+    static_cast<PostUI*>(user_data)->upload_ptr()->set_lpf(res);
+  }
+
+
   typedef std::map <std::string, std::string> str2str_t;
 
   struct SetMessageForeachHeaderData
@@ -2010,11 +2019,16 @@ PostUI :: create_filequeue_tab ()
   gtk_box_pack_start (GTK_BOX(buttons), gtk_vseparator_new(), 0, 0, 0);
   w = add_button (buttons, GTK_STOCK_DELETE, G_CALLBACK(delete_clicked_cb), this);
   gtk_widget_set_tooltip_text( w, _("Delete from Queue"));
+  gtk_box_pack_start (GTK_BOX(buttons), gtk_vseparator_new(), 0, 0, 0);
+  add_button (buttons, GTK_STOCK_SELECT_ALL, 0, 0);
+  w = gtk_toggle_button_new_with_label(_("Save"));
+  gtk_box_pack_start (GTK_BOX(vbox), w, false, false, 0);
   pan_box_pack_start_defaults (GTK_BOX(buttons), gtk_event_box_new());
 
   gtk_box_pack_start (GTK_BOX(vbox), buttons, false, false, 0);
   gtk_box_pack_start (GTK_BOX(vbox), gtk_hseparator_new(), false, false, 0);
 
+  //add filestore
   list_store = gtk_list_store_new (3, G_TYPE_UINT, G_TYPE_POINTER, G_TYPE_UINT);
   w = _filequeue_store = gtk_tree_view_new_with_model (GTK_TREE_MODEL(list_store));
 
@@ -2129,12 +2143,13 @@ PostUI :: create_parts_tab ()
   gtk_label_set_use_markup (GTK_LABEL(l), true);
   gtk_misc_set_alignment (GTK_MISC(l), 0.0f, 0.5f);
   gtk_table_attach (GTK_TABLE(t), l, 0, 1, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
-  ///TODO make generic!!
-  g_snprintf (buf, sizeof(buf), "%d", 4000);
-  l = gtk_label_new_with_mnemonic (buf);
-  gtk_misc_set_alignment (GTK_MISC(l), 0.5f, 0.5f);
-  gtk_widget_set_tooltip_text (l, _("The current Number of Lines per File"));
-  gtk_table_attach (GTK_TABLE(t), l, 1, 2, row, row+1, fe, fill, 0, 0);
+  GtkAdjustment * a = (GtkAdjustment*)gtk_adjustment_new (5000, 1500, INT_MAX, 1.0, 1.0, 0.0);
+  w = _lines_spin = gtk_spin_button_new (a, 1.0, 0u);
+  gtk_misc_set_alignment (GTK_MISC(w), 0.5f, 0.5f);
+  gtk_widget_set_tooltip_text (w, _("The current Number of Lines per File"));
+  gtk_spin_button_set_value (GTK_SPIN_BUTTON(w), _upload_ptr->_lines_per_file);
+  gtk_table_attach (GTK_TABLE(t), w, 1, 2, row, row+1, fe, fill, 0, 0);
+  g_signal_connect (w, "changed", G_CALLBACK(on_lines_spin_changed_cb), this);
 
   ++row;   // 5
   g_snprintf (buf, sizeof(buf), "<b>%s:</b>", _("Parts"));
@@ -2153,7 +2168,6 @@ PostUI :: create_parts_tab ()
   l = gtk_label_new (NULL);
   gtk_table_attach (GTK_TABLE(t), l, 0, 2, row, row+1, fe, fill, 0, 0);
 
-
   //7
   ++row;
 
@@ -2370,6 +2384,12 @@ void PostUI :: delete_clicked_cb (GtkButton*, PostUI* pane)
   pane->remove_files ();
 }
 
+//void PostUI :: save_clicked_cb (GtkButton*, Postui* pane)
+//{
+//  pane->
+//}
+
+
 void
 PostUI :: update_filequeue_tab()
 {
diff --git a/pan/gui/post-ui.h b/pan/gui/post-ui.h
index b064951..1df55d7 100644
--- a/pan/gui/post-ui.h
+++ b/pan/gui/post-ui.h
@@ -120,6 +120,7 @@ namespace pan
 
       GtkWidget * _filequeue_store;
       GtkWidget * _parts_store;
+      GtkWidget * _lines_spin;
 
       GtkWidget * _to_entry;
       GtkWidget * _followupto_entry;
diff --git a/pan/gui/score-add-ui.cc b/pan/gui/score-add-ui.cc
index 9584736..e2c4e0c 100644
--- a/pan/gui/score-add-ui.cc
+++ b/pan/gui/score-add-ui.cc
@@ -195,9 +195,9 @@ namespace
       { TextMatch::CONTAINS,    true,  N_("doesn't contain")},
       { TextMatch::IS,          false, N_("is")},
       { TextMatch::IS,          true,  N_("isn't")},
-      { TextMatch::BEGINS_WITH, false, N_("starts with")}, 
+      { TextMatch::BEGINS_WITH, false, N_("starts with")},
       { TextMatch::ENDS_WITH,   false, N_("ends with")},
-      { TextMatch::REGEX,       false, N_("matches regex")}, 
+      { TextMatch::REGEX,       false, N_("matches regex")},
     };
 
     GtkListStore * store = gtk_list_store_new (TEXT_MATCH_COLS, G_TYPE_STRING, G_TYPE_INT, G_TYPE_BOOLEAN);
@@ -319,7 +319,7 @@ namespace
 
     GtkTreeModel * model = field_tree_model_new ();
     GtkWidget * field = setme_field = value_combo_new (model);
-    g_object_unref (G_OBJECT(model)); 
+    g_object_unref (G_OBJECT(model));
     gtk_box_pack_start (GTK_BOX(h), field, false, false, 0);
     g_signal_connect (field, "changed", G_CALLBACK(field_changed_cb), h);
     g_object_set_data (G_OBJECT(h), "field", field);
@@ -353,7 +353,7 @@ namespace
 void
 ScoreAddDialog :: add_this_to_scorefile (bool do_rescore)
 {
-  
+
   // section
   bool negate (false);
   int value (0);
@@ -552,12 +552,12 @@ namespace
     GtkWidget * button = gtk_button_new ();
     GtkWidget * label = gtk_label_new_with_mnemonic (_("Add and Re_score"));
     gtk_label_set_mnemonic_widget (GTK_LABEL (label), GTK_WIDGET (button));
-			      
+
     GtkWidget * image = gtk_image_new_from_stock (GTK_STOCK_ADD, GTK_ICON_SIZE_BUTTON);
     GtkWidget * image2 = gtk_image_new_from_stock (GTK_STOCK_REFRESH, GTK_ICON_SIZE_BUTTON);
     GtkWidget * hbox = gtk_hbox_new (FALSE, 2);
     GtkWidget * align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
-					        
+
     gtk_box_pack_start (GTK_BOX (hbox), image, FALSE, FALSE, 0);
     gtk_box_pack_start (GTK_BOX (hbox), image2, FALSE, FALSE, 0);
     gtk_box_pack_end (GTK_BOX (hbox), label, FALSE, FALSE, 0);
@@ -643,7 +643,7 @@ ScoreAddDialog :: ScoreAddDialog (Data           & data,
     gtk_widget_show (w);
 
     // score
-    h = gtk_hbox_new (false, PAD_SMALL); 
+    h = gtk_hbox_new (false, PAD_SMALL);
     model = score_tree_model_new ();
     w = _score_menu = value_combo_new (model);
     g_object_unref (model);
diff --git a/pan/tasks/task-upload.cc b/pan/tasks/task-upload.cc
index 1f871d5..3c9db68 100644
--- a/pan/tasks/task-upload.cc
+++ b/pan/tasks/task-upload.cc
@@ -95,7 +95,8 @@ TaskUpload :: TaskUpload ( const std::string         & filename,
   _author(author),
   _encoder(0),
   _encoder_has_run (false),
-  _encode_mode(enc)
+  _encode_mode(enc),
+  _lines_per_file(4000)
 {
   if (listener != 0)
     add_listener (listener);
@@ -229,30 +230,6 @@ TaskUpload :: on_nntp_line (NNTP * nntp,
                               const StringView & line_in)
 {}
 
-
-namespace
-{
-  void add_err_to_groups(std::deque<Log :: Entry> _logfile, const char* buf)
-  {
-    _logfile.resize(_logfile.size()+1);
-    Log :: Entry& e(_logfile.back());
-    e.severity = Log :: PAN_SEVERITY_ERROR;
-    e.date = time (NULL);
-    e.message = buf;
-    Log :: entry_added (e);
-  }
-
-  void add_info_to_groups(std::deque<Log :: Entry> _logfile, const char* buf)
-  {
-    _logfile.resize(_logfile.size()+1);
-    Log :: Entry& e(_logfile.back());
-    e.severity = Log :: PAN_SEVERITY_INFO;
-    e.date = time (NULL);
-    e.message = buf;
-    Log :: entry_added (e);
-  }
-}
-
 void
 TaskUpload :: on_nntp_done (NNTP * nntp,
                              Health health,
@@ -278,7 +255,6 @@ TaskUpload :: on_nntp_done (NNTP * nntp,
     case ERR_NETWORK:
       goto _end;
     case ERR_COMMAND:
-      _severity_final = Log::PAN_SEVERITY_URGENT;
       delete_cache(it->second);
       _needed.erase (it);
       break;
@@ -289,43 +265,51 @@ TaskUpload :: on_nntp_done (NNTP * nntp,
     case NO_POSTING:
       g_snprintf(buf,sizeof(buf), _("Posting of File %s (Part %d of %d) failed: No Posts allowed by server."),
                  _basename.c_str(), it->second.partno, _total_parts);
-      add_err_to_groups(_logfile, buf);
-       _severity_final = Log::PAN_SEVERITY_URGENT;
+      tmp.message = buf;
+      tmp.severity = Log :: PAN_SEVERITY_ERROR;
+      _logfile.push_back(tmp);
+      Log::add_entry_list (tmp, _logfile);
+      std::cerr<<LINE_ID<<" "<<_logfile.size()<<std::endl;
       this->stop();
       break;
     case POSTING_FAILED:
       g_snprintf(buf,sizeof(buf), _("Posting of File %s (Part %d of %d) failed: %s"),
                  _basename.c_str(), it->second.partno, _total_parts, response.str);
-      add_err_to_groups(_logfile, buf);
-       _severity_final = Log::PAN_SEVERITY_URGENT;
+      tmp.severity = Log :: PAN_SEVERITY_ERROR;
+      tmp.message = buf;
+      _logfile.push_back(tmp);
+      std::cerr<<LINE_ID<<" "<<_logfile.size()<<std::endl;
       break;
     case ARTICLE_POSTED_OK:
-
-      std::cerr<<"OK!\n";
-
+      tmp.severity = Log :: PAN_SEVERITY_INFO;
       if (post_ok && !_needed.empty())
       {
         g_snprintf(buf,sizeof(buf), _("Posting of file %s (Part %d of %d) succesful: %s"),
                    _basename.c_str(), it->second.partno, _total_parts, response.str);
-        add_info_to_groups(_logfile, buf);
-        _severity_final = (Log :: Severity) (_severity_final | Log :: PAN_SEVERITY_INFO);
+        tmp.message = buf;
+        _logfile.push_back(tmp);
+        std::cerr<<LINE_ID<<" "<<_logfile.size()<<std::endl;
       } else if (post_ok && _needed.empty())
       {
+        g_snprintf(buf,sizeof(buf), _("Posting of file %s (Part %d of %d) succesful: %s"),
+                   _basename.c_str(), it->second.partno, _total_parts, response.str);
+        tmp.message = buf;
+        _logfile.push_back(tmp);
         g_snprintf(buf,sizeof(buf), _("Posting of file %s succesful: %s"),
                    _basename.c_str(), response.str);
-        _severity_final = (Log :: Severity) (_severity_final | Log :: PAN_SEVERITY_INFO);
         tmp.message = buf;
-        tmp.date = time(NULL);
-        tmp.severity = _severity_final;
-        Log :: add_entry_list (tmp, _logfile);
+        _logfile.push_back(tmp);
+        Log::add_entry_list (tmp, _logfile);
+        std::cerr<<LINE_ID<<" "<<_logfile.size()<<std::endl;
       } else
       {
         g_snprintf(buf,sizeof(buf), _("Posting of file %s not successful: Check the popup log!"),
                    _basename.c_str(), response.str);
         tmp.message = buf;
-        tmp.date = time(NULL);
-        tmp.severity = _severity_final;
-        Log :: add_entry_list (tmp, _logfile);
+        tmp.severity = Log :: PAN_SEVERITY_ERROR;
+        _logfile.push_back(tmp);
+        Log::add_entry_list (tmp, _logfile);
+        std::cerr<<LINE_ID<<" "<<_logfile.size()<<std::endl;
       }
       break;
     case TOO_MANY_CONNECTIONS:
diff --git a/pan/tasks/task-upload.h b/pan/tasks/task-upload.h
index f8093ea..8b557dc 100644
--- a/pan/tasks/task-upload.h
+++ b/pan/tasks/task-upload.h
@@ -49,6 +49,8 @@ namespace pan
   {
     public:
 
+      void set_lpf (const int& setme ) { _lines_per_file = setme; }
+
       typedef std::vector<Quark> mid_sequence_t;
 
       struct Needed {
@@ -118,6 +120,7 @@ namespace pan
       friend class NZB;
       Encoder * _encoder;
       bool _encoder_has_run;
+      int _lines_per_file;
       std::string _filename;
       std::string _basename;
       TaskUpload::EncodeMode _encode_mode;



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