gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r3563 - gnunet-gtk/src/plugins/fs


From: grothoff
Subject: [GNUnet-SVN] r3563 - gnunet-gtk/src/plugins/fs
Date: Sun, 29 Oct 2006 13:57:39 -0800 (PST)

Author: grothoff
Date: 2006-10-29 13:57:35 -0800 (Sun, 29 Oct 2006)
New Revision: 3563

Modified:
   gnunet-gtk/src/plugins/fs/collection.c
   gnunet-gtk/src/plugins/fs/collection.h
   gnunet-gtk/src/plugins/fs/fs.c
   gnunet-gtk/src/plugins/fs/fs.h
   gnunet-gtk/src/plugins/fs/meta.h
   gnunet-gtk/src/plugins/fs/namespace.c
   gnunet-gtk/src/plugins/fs/namespace.h
   gnunet-gtk/src/plugins/fs/upload.c
   gnunet-gtk/src/plugins/fs/upload.h
Log:
first half of upload refactoring done

Modified: gnunet-gtk/src/plugins/fs/collection.c
===================================================================
--- gnunet-gtk/src/plugins/fs/collection.c      2006-10-29 19:52:26 UTC (rev 
3562)
+++ gnunet-gtk/src/plugins/fs/collection.c      2006-10-29 21:57:35 UTC (rev 
3563)
@@ -35,10 +35,6 @@
 
 static GladeXML * metaXML;
 
-static struct GE_Context * ectx;
-
-static struct GC_Configuration * cfg;
-
 void on_collectionDialogMetaDataAddButton_clicked_fs(gpointer dummy,
                                                     GtkWidget * uploadButton) {
   handleMetaDataListUpdate(metaXML,
@@ -168,12 +164,9 @@
   }
 }
 
-void fs_collection_start(struct GE_Context * e,
-                        struct GC_Configuration * c) {
+void fs_collection_start() {
   GtkWidget * w;
 
-  ectx = e;
-  cfg = c;
   if (NULL != CO_getCollection(ectx,
                               cfg))
     w = glade_xml_get_widget(getMainXML(),
@@ -184,8 +177,4 @@
   gtk_widget_set_sensitive(w, FALSE);
 }
 
-void fs_collection_stop() {
-  /* nothing to do */
-}
-
 /* end of collection.c */

Modified: gnunet-gtk/src/plugins/fs/collection.h
===================================================================
--- gnunet-gtk/src/plugins/fs/collection.h      2006-10-29 19:52:26 UTC (rev 
3562)
+++ gnunet-gtk/src/plugins/fs/collection.h      2006-10-29 21:57:35 UTC (rev 
3563)
@@ -29,9 +29,6 @@
 
 #include <GNUnet/gnunet_util.h>
 
-void fs_collection_start(struct GE_Context * ectx,
-                        struct GC_Configuration * cfg);
+void fs_collection_start(void);
 
-void fs_collection_stop(void);
-
 #endif

Modified: gnunet-gtk/src/plugins/fs/fs.c
===================================================================
--- gnunet-gtk/src/plugins/fs/fs.c      2006-10-29 19:52:26 UTC (rev 3562)
+++ gnunet-gtk/src/plugins/fs/fs.c      2006-10-29 21:57:35 UTC (rev 3563)
@@ -42,29 +42,25 @@
 
 DownloadList * download_head;
 
+UploadList * upload_head;
+
 GtkListStore * search_summary;
 
 GtkTreeStore * download_summary;
 
-typedef struct {
-  const FSUI_Event * event;
-  void * ret;
-} SEP_Closure;
+GtkTreeStore * upload_summary;
 
-static void saveEventProcessor(void * arg) {
-  SEP_Closure * cls = arg;
-  const FSUI_Event * event = cls->event;
-  
-  cls->ret = NULL;
-  DEBUG_BEGIN();
+static void * eventProcessor(void * unused,
+                            const FSUI_Event * event) {
+  void * ret = NULL;
   switch (event->type) {
     /* search events */
   case FSUI_search_started:
-    cls->ret = fs_search_started(event->data.SearchStarted.sc.pos,
-                                event->data.SearchStarted.searchURI,
-                                event->data.SearchStarted.anonymityLevel,
-                                0,
-                                NULL);
+    ret = fs_search_started(event->data.SearchStarted.sc.pos,
+                           event->data.SearchStarted.searchURI,
+                           event->data.SearchStarted.anonymityLevel,
+                           0,
+                           NULL);
     break;
   case FSUI_search_result:
     fs_search_result_received(event->data.SearchResult.sc.cctx,
@@ -85,11 +81,11 @@
     fs_search_aborted(event->data.SearchSuspended.sc.cctx);
     break;
   case FSUI_search_resumed:
-    cls->ret = fs_search_started(event->data.SearchResumed.sc.pos,
-                                event->data.SearchResumed.searchURI,
-                                event->data.SearchResumed.anonymityLevel,
-                                event->data.SearchResumed.fisSize,
-                                event->data.SearchResumed.fis);
+    ret = fs_search_started(event->data.SearchResumed.sc.pos,
+                           event->data.SearchResumed.searchURI,
+                           event->data.SearchResumed.anonymityLevel,
+                           event->data.SearchResumed.fisSize,
+                           event->data.SearchResumed.fis);
   case FSUI_search_stopped:
     fs_search_aborted(event->data.SearchError.sc.cctx);
     break;
@@ -117,56 +113,68 @@
   case FSUI_download_stopped:
     fs_download_stopped(event->data.DownloadCompleted.dc.cctx);
     break;
- case FSUI_download_started:
-    cls->ret = fs_download_started(event->data.DownloadStarted.dc.pos,
-                                  event->data.DownloadStarted.dc.pcctx,
-                                  event->data.DownloadStarted.dc.sctx,
-                                  event->data.DownloadStarted.total,
-                                  event->data.DownloadStarted.anonymityLevel,
-                                  &event->data.DownloadStarted.fi,
-                                  event->data.DownloadStarted.filename,
-                                  0,
-                                  get_time());
+  case FSUI_download_started:
+    ret = fs_download_started(event->data.DownloadStarted.dc.pos,
+                             event->data.DownloadStarted.dc.pcctx,
+                             event->data.DownloadStarted.dc.sctx,
+                             event->data.DownloadStarted.total,
+                             event->data.DownloadStarted.anonymityLevel,
+                             &event->data.DownloadStarted.fi,
+                             event->data.DownloadStarted.filename,
+                             0,
+                             get_time());
     break;
   case FSUI_download_resumed:
-    cls->ret = fs_download_started(event->data.DownloadResumed.dc.pos,
-                                  event->data.DownloadStarted.dc.pcctx,
-                                  event->data.DownloadStarted.dc.sctx,
-                                  event->data.DownloadResumed.total,
-                                  event->data.DownloadResumed.anonymityLevel,
-                                  &event->data.DownloadResumed.fi,
-                                  event->data.DownloadResumed.filename,
-                                  event->data.DownloadResumed.completed,
-                                  event->data.DownloadResumed.eta);
+    ret = fs_download_started(event->data.DownloadResumed.dc.pos,
+                             event->data.DownloadStarted.dc.pcctx,
+                             event->data.DownloadStarted.dc.sctx,
+                             event->data.DownloadResumed.total,
+                             event->data.DownloadResumed.anonymityLevel,
+                             &event->data.DownloadResumed.fi,
+                             event->data.DownloadResumed.filename,
+                             event->data.DownloadResumed.completed,
+                             event->data.DownloadResumed.eta);
     break;
 
-
-    /* upload */
+    /* upload events */
   case FSUI_upload_progress:
-    displayUploadUpdate(event->data.UploadProgress.uc.cctx,
-                       event->data.UploadProgress.filename,
-                       event->data.UploadProgress.completed,
-                       event->data.UploadProgress.total);
+    fs_upload_update(event->data.UploadProgress.uc.cctx,
+                    event->data.UploadProgress.completed);
     break;
   case FSUI_upload_completed:
-    displayUploadComplete(event->data.UploadCompleted.uc.cctx,
-                         event->data.UploadCompleted.filename,
-                         event->data.UploadCompleted.uri);
-    addLogEntry(_("Upload `%s' complete"), 
-               event->data.UploadCompleted.filename);
-    gnunetgtk_notify(NOTIFY_NORMAL,
-                    _("Upload `%s' complete"), 
-                    event->data.UploadCompleted.filename);
+    fs_upload_complete(event->data.UploadCompleted.uc.cctx,
+                      event->data.UploadCompleted.uri);
     break;
   case FSUI_upload_error:
-    GE_LOG(ectx,
-          GE_ERROR,
-          _("Error while uploading: %s\n"),
-          event->data.UploadError.message);
-    gnunetgtk_notify(NOTIFY_NORMAL,
-                    _("Error while uploading `%s'"), 
-                    event->data.UploadError.message);
+    fs_upload_error(event->data.UploadError.uc.cctx);
     break;
+  case FSUI_upload_aborted:
+    fs_upload_error(event->data.UploadAborted.uc.cctx);
+    break;
+  case FSUI_upload_stopped:
+    fs_upload_stopped(event->data.UploadStopped.uc.cctx);
+    break;
+  case FSUI_upload_suspended:
+    fs_upload_stopped(event->data.UploadSuspended.uc.cctx);
+    break;
+  case FSUI_upload_started:
+    ret = fs_upload_started(event->data.UploadStarted.uc.pos,
+                           event->data.UploadStarted.uc.pcctx,
+                           event->data.UploadStarted.filename,
+                           NULL,
+                           event->data.UploadStarted.total,
+                           0);
+    break;
+  case FSUI_upload_resumed:
+    ret = fs_upload_started(event->data.UploadResumed.uc.pos,
+                           event->data.UploadResumed.uc.pcctx,
+                           event->data.UploadResumed.filename,
+                           NULL, /* FIXME: maybe completed!? */
+                           event->data.UploadResumed.total,
+                           event->data.UploadResumed.completed);
+    break;
+
+    /* TODO: unindex events */
   default:
     GE_BREAK(ectx, 0);
     GE_LOG(ectx,
@@ -175,38 +183,26 @@
           event->type);
     break;
   }
-  DEBUG_END();
+  return ret;
 }
 
-/**
- * FSUI event handler.
- */
-static void * eventProcessor(void * unused,
-                            const FSUI_Event * event) {
-  SEP_Closure cls;
-  
-  cls.event = event;
-  cls.ret = NULL;
-  gtkSaveCall(&saveEventProcessor,
-             &cls);
-  return cls.ret;
-}
 
-
-
 /**
  * Setup the summary views (in particular the models
  * and the renderers).  
  */
 static void fs_summary_start() {
   GtkComboBoxEntry * searchCB;
+  GtkWidget * uploadEntry;
   GtkTreeView * searchList;
   GtkTreeView * downloadList;
+  GtkTreeView * uploadList;
   GtkListStore * model;
   GtkCellRenderer * renderer;
   GtkTreeViewColumn * column;
   int col;
-  
+
+  /* search namespace selection setup */
   searchCB
     = GTK_COMBO_BOX_ENTRY(glade_xml_get_widget(getMainXML(),
                                               "fssearchKeywordComboBoxEntry"));
@@ -221,6 +217,8 @@
                          GTK_TREE_MODEL(model));
   gtk_combo_box_entry_set_text_column(searchCB,
                                      NS_SEARCH_DESCRIPTION);
+
+  /* search summary setup */
   searchList = GTK_TREE_VIEW(glade_xml_get_widget(getMainXML(),
                                                  "activeSearchesSummary"));
   search_summary =
@@ -262,7 +260,7 @@
   gtk_tree_view_column_set_sort_column_id(column, SEARCH_SUMMARY_RESULT_COUNT);
   gtk_tree_view_column_set_resizable(column, TRUE);
 
-
+  /* download summary setup */
   downloadList = GTK_TREE_VIEW(glade_xml_get_widget(getMainXML(),
                                                    "activeDownloadsList"));
   download_summary =
@@ -324,10 +322,56 @@
   gtk_tree_view_column_set_reorderable(column, TRUE);
   /*gtk_tree_view_column_set_sort_indicator(column, TRUE);*/
   gtk_tree_view_column_set_resizable(column, TRUE);
+
+  /* upload summary setup */
+  uploadList = GTK_TREE_VIEW(glade_xml_get_widget(getMainXML(),
+                                                 "activeUploadsList"));
+  upload_summary =
+    gtk_tree_store_new(UPLOAD_NUM,
+                      G_TYPE_STRING, /* filename */
+                      G_TYPE_INT,    /* progress */
+                      G_TYPE_STRING,
+                      G_TYPE_POINTER);  /* URI (as string) - after completion 
*/
+  gtk_tree_view_set_model(uploadList,
+                         GTK_TREE_MODEL(upload_summary));
+  gtk_tree_selection_set_mode(gtk_tree_view_get_selection(uploadList),
+                             GTK_SELECTION_MULTIPLE);
+  renderer = gtk_cell_renderer_progress_new();
+  col = gtk_tree_view_insert_column_with_attributes(uploadList,
+                                                   -1,
+                                                   _("Filename"),
+                                                   renderer,
+                                                   "text", UPLOAD_FILENAME,
+                                                   "value", UPLOAD_PROGRESS,
+                                                   NULL);
+  gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(uploadList,
+                                                             col - 1),
+                                    TRUE);
+  renderer = gtk_cell_renderer_text_new();
+  col = gtk_tree_view_insert_column_with_attributes(uploadList,
+                                                   -1,
+                                                   _("URI"),
+                                                   renderer,
+                                                   "text", UPLOAD_URISTRING,
+                                                   NULL);
+  gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(uploadList,
+                                                             col - 1),
+                                    TRUE);
+
+  /* upload entry setup */
+  uploadEntry
+    = glade_xml_get_widget(getMainXML(),
+                          "uploadFilenameComboBoxEntry");
+
+  model = gtk_list_store_new(1, G_TYPE_STRING);
+  gtk_combo_box_set_model(GTK_COMBO_BOX(uploadEntry),
+                         GTK_TREE_MODEL(model));
+  gtk_combo_box_entry_set_text_column(GTK_COMBO_BOX_ENTRY(uploadEntry),
+                                     0);
 }
 
 /**
- * Shutdown.
+ * Shutdown the summary dialogs.
  */
 static void fs_summary_stop() {
   GtkComboBox * searchCB;
@@ -343,8 +387,6 @@
 
 
 
-
-
 void init_fs(struct GE_Context * e,
             struct GC_Configuration * c) {
   GtkWidget * tab;
@@ -366,14 +408,13 @@
   ctx = FSUI_start(ectx,
                   cfg,
                   "gnunet-gtk",
-                  128,
+                  128, /* FIXME: allow user to configure download parallelism 
*/
                   YES,
                   &eventProcessor,
                   NULL);
-  fs_collection_start(ectx, cfg);
+  fs_collection_start();
   fs_summary_start();
-  fs_upload_start(ectx, cfg);
-  fs_namespace_start(ectx, cfg);
+  fs_namespace_start();
 }
 
 void done_fs() {
@@ -384,9 +425,7 @@
                           "fsnotebook");
   gtk_widget_hide(tab);
   fs_summary_stop();
-  fs_collection_stop();
   fs_namespace_stop();
-  fs_upload_stop();
   FSUI_stop(ctx);
 }
 

Modified: gnunet-gtk/src/plugins/fs/fs.h
===================================================================
--- gnunet-gtk/src/plugins/fs/fs.h      2006-10-29 19:52:26 UTC (rev 3562)
+++ gnunet-gtk/src/plugins/fs/fs.h      2006-10-29 21:57:35 UTC (rev 3563)
@@ -73,6 +73,9 @@
   SEARCH_SUMMARY_NUM
 };
 
+/**
+ * Entry in download summary.
+ */
 enum {
   DOWNLOAD_FILENAME = 0,
   DOWNLOAD_SHORTNAME,
@@ -109,11 +112,14 @@
   IN_NAMESPACE_NUM
 };
 
-
+/**
+ * Entry in upload summary.
+ */
 enum {
   UPLOAD_FILENAME = 0,
   UPLOAD_PROGRESS,
   UPLOAD_URISTRING,
+  UPLOAD_INTERNAL,
   UPLOAD_NUM
 };
 
@@ -249,6 +255,35 @@
 
 } DownloadList;
 
+typedef struct UL {
+  struct UL * next;
+
+  /**
+   * Which file or directory are we uploading?
+   */
+  char * filename;
+
+  /**
+   * Path in the summary view for this download.
+   */
+  GtkTreeRowReference * summaryViewRowReference;
+
+  struct FSUI_UploadList * fsui_list;
+
+  /**
+   * Set to final URI upon successful completion.
+   */
+  struct ECRS_URI * uri;
+
+  /**
+   * Total size of the upload.
+   */
+  unsigned long long total;
+
+  int has_terminated;
+
+} UploadList;
+
 extern struct FSUI_Context * ctx;
 
 extern struct GE_Context * ectx;
@@ -259,10 +294,12 @@
 
 extern DownloadList * download_head;
 
+extern UploadList * upload_head;
+
 extern GtkListStore * search_summary;
 
 extern GtkTreeStore * download_summary;
 
+extern GtkTreeStore * upload_summary;
 
-
 #endif

Modified: gnunet-gtk/src/plugins/fs/meta.h
===================================================================
--- gnunet-gtk/src/plugins/fs/meta.h    2006-10-29 19:52:26 UTC (rev 3562)
+++ gnunet-gtk/src/plugins/fs/meta.h    2006-10-29 21:57:35 UTC (rev 3563)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     (C) 2005 Christian Grothoff (and other contributing authors)
+     (C) 2005, 2006 Christian Grothoff (and other contributing authors)
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published

Modified: gnunet-gtk/src/plugins/fs/namespace.c
===================================================================
--- gnunet-gtk/src/plugins/fs/namespace.c       2006-10-29 19:52:26 UTC (rev 
3562)
+++ gnunet-gtk/src/plugins/fs/namespace.c       2006-10-29 21:57:35 UTC (rev 
3563)
@@ -55,10 +55,6 @@
 
 static GladeXML * metaXML;
 
-static struct GE_Context * ectx;
-
-static struct GC_Configuration * cfg;
-
 static GtkWidget * makeNamespaceFrame(GtkWidget ** treeview,
                                      GtkWidget ** anonSpin) {
   GtkWidget * window;
@@ -1353,8 +1349,7 @@
 
 
 
-void fs_namespace_start(struct GE_Context * e,
-                       struct GC_Configuration * c) {
+void fs_namespace_start() {
   GtkWidget * contentList;
   GtkListStore * model;
   GtkCellRenderer * renderer;
@@ -1362,8 +1357,6 @@
   GtkTreeViewColumn * column;
   int col;
 
-  ectx = e;
-  cfg = c;
   DEBUG_BEGIN();
   trackCheckButton
     = glade_xml_get_widget(getMainXML(),
@@ -1508,6 +1501,7 @@
 #endif
 
 void fs_namespace_stop() {
+  /* FIXME: free resources! */
 }
 
 /* end of namespace.c */

Modified: gnunet-gtk/src/plugins/fs/namespace.h
===================================================================
--- gnunet-gtk/src/plugins/fs/namespace.h       2006-10-29 19:52:26 UTC (rev 
3562)
+++ gnunet-gtk/src/plugins/fs/namespace.h       2006-10-29 21:57:35 UTC (rev 
3563)
@@ -27,11 +27,8 @@
 #ifndef GTK_NAMESPACE_H
 #define GTK_NAMESPACE_H
 
-#include <GNUnet/gnunet_util.h>
+void fs_namespace_start(void);
 
-void fs_namespace_start(struct GE_Context * ectx,
-                       struct GC_Configuration * cfg);
-
 void fs_namespace_stop(void);
 
 #endif

Modified: gnunet-gtk/src/plugins/fs/upload.c
===================================================================
--- gnunet-gtk/src/plugins/fs/upload.c  2006-10-29 19:52:26 UTC (rev 3562)
+++ gnunet-gtk/src/plugins/fs/upload.c  2006-10-29 21:57:35 UTC (rev 3563)
@@ -39,9 +39,6 @@
 #endif
 #endif
 
-
-static GtkTreeStore * summary;
-
 /**
  * XML tree for the meta-data dialog of upload.
  * (there can only be one at a time;
@@ -49,45 +46,149 @@
  */
 static GladeXML * metaXML;
 
-static struct GE_Context * ectx;
+/* ************ FSUI event handlers ************ */
 
-static struct GC_Configuration * cfg;
-
-/**
- */
-void displayUploadUpdate(struct FSUI_UploadList * list,
-                        const char * filename,
-                        unsigned long long completed,
-                        unsigned long long total) {
+void fs_upload_update(UploadList * list,
+                     unsigned long long completed) {
+  GtkTreeIter iter;
+  GtkTreePath * path;
   int progress;
 
-  DEBUG_BEGIN();
-  if (total != 0)
-    progress = 100 * completed / total;
+  if (list->total != 0)
+    progress = 100 * completed / list->total;
   else
     progress = 100;
-
-  /* FIXME! */
-  DEBUG_END();
+  path = gtk_tree_row_reference_get_path(list->summaryViewRowReference);
+  gtk_tree_model_get_iter(GTK_TREE_MODEL(upload_summary),
+                         &iter,
+                         path);
+  gtk_tree_path_free(path);
+  gtk_tree_store_set(upload_summary,
+                    &iter,
+                    UPLOAD_PROGRESS, progress,
+                    -1);
 }
 
-/**
- */
-void displayUploadComplete(struct FSUI_UploadList * list,
-                          const char * filename,
-                          const struct ECRS_URI * uri) {
+void fs_upload_complete(UploadList * list,
+                       struct ECRS_URI * uri) {
+  GtkTreeIter iter;
+  GtkTreePath * path;
   char * us;
 
-  DEBUG_BEGIN();
-  GE_ASSERT(ectx, uri != NULL);
+  list->has_terminated = YES;
+  list->uri = ECRS_dupUri(uri);
   us = ECRS_uriToString(uri);
-  GE_ASSERT(ectx, us != NULL);
-  /* FIXME */
+  path = gtk_tree_row_reference_get_path(list->summaryViewRowReference);
+  gtk_tree_model_get_iter(GTK_TREE_MODEL(upload_summary),
+                         &iter,
+                         path);
+  gtk_tree_path_free(path);
+  gtk_tree_store_set(upload_summary,
+                    &iter,
+                    UPLOAD_URISTRING, us,
+                    -1);
   FREE(us);
-  DEBUG_END();
 }
 
+void fs_upload_error(UploadList * list) {
+  /* FIXME: indicate error in summary dialog! */
+  list->has_terminated = YES;
+}
 
+void fs_upload_stopped(UploadList * list) {
+  GtkTreeIter iter;
+  GtkTreePath * path;
+  UploadList * prev;
+
+  path = gtk_tree_row_reference_get_path(list->summaryViewRowReference);
+  gtk_tree_model_get_iter(GTK_TREE_MODEL(upload_summary),
+                         &iter,
+                         path);
+  gtk_tree_path_free(path);
+  gtk_tree_row_reference_free(list->summaryViewRowReference); 
+  list->summaryViewRowReference = NULL;
+  gtk_tree_store_remove(upload_summary,
+                       &iter);
+  FREE(list->filename);
+  if (list->uri != NULL) {
+    ECRS_freeUri(list->uri);
+    list->uri = NULL;
+  }  
+  if (upload_head == list)
+    upload_head = list->next;
+  else {
+    prev = upload_head;
+    while ( (prev != NULL) &&
+           (prev->next != list) )
+      prev = prev->next;
+    if (prev != NULL)
+      prev->next = list->next;
+    else
+      GE_BREAK(ectx, 0);
+  }
+  FREE(list);
+}
+
+UploadList * 
+fs_upload_started(struct FSUI_UploadList * fsui,
+                 UploadList * parent,
+                 const char * filename,
+                 struct ECRS_URI * uri,
+                 unsigned long long total,
+                 unsigned long long completed) {
+  UploadList * ret;
+  GtkTreeIter iter;
+  GtkTreePath * path;
+  int progress;
+
+  ret = MALLOC(sizeof(UploadList));
+  memset(ret,
+        0,
+        sizeof(UploadList));
+  ret->filename = STRDUP(filename);
+  ret->fsui_list = fsui;
+  ret->total = total;
+  if (parent == NULL) {
+    gtk_tree_store_append(upload_summary,
+                         &iter,
+                         NULL);
+  } else {
+    GtkTreeIter par;
+
+    path = gtk_tree_row_reference_get_path(parent->summaryViewRowReference);
+    gtk_tree_model_get_iter(GTK_TREE_MODEL(upload_summary),
+                           &par,
+                           path);
+    gtk_tree_path_free(path);
+    gtk_tree_store_append(upload_summary,
+                         &iter,
+                         &par);
+  }
+
+  if (total != 0)
+    progress = 100 * completed / total;
+  else
+    progress = 100;
+  gtk_tree_store_set(upload_summary,
+                     &iter,
+                     UPLOAD_FILENAME, filename,
+                     UPLOAD_PROGRESS, progress,
+                     UPLOAD_URISTRING, "", /* FIXME: set if URI != NULL! */
+                    UPLOAD_INTERNAL, ret, 
+                     -1);
+  path = gtk_tree_model_get_path(GTK_TREE_MODEL(upload_summary),
+                                &iter);
+  ret->summaryViewRowReference
+    = gtk_tree_row_reference_new(GTK_TREE_MODEL(upload_summary),
+                                path);
+  ret->next = upload_head;
+  upload_head = ret;
+  return ret;
+}
+
+/* *************** Glade UI event handling ************** */
+
+
 void on_selectAlternativePreviewButton_selection_changed_fs(GtkWidget * 
preview,
                                                            GtkWidget * 
fileChooser) {
   char * fn;
@@ -239,8 +340,8 @@
                                  "previewImage");
     uc.keywordURI = getKeywordURIFromList(metaXML,
                                          "metaDataDialogKeywordList");
-    uc.anon = getAnonymityLevel(getMainXML(),
-                               "uploadAnonymityLevelSpinButton");   
+    uc.anon = getSpinButtonValue(getMainXML(),
+                                "uploadAnonymityLevelSpinButton");   
     deepIndex = glade_xml_get_widget(getMainXML(),
                                     "deepIndexCheckButton");
     uc.deepIndex = (TRUE == 
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(deepIndex))) ? YES : NO;
@@ -342,63 +443,4 @@
   }
 }
 
-
-void fs_upload_start(struct GE_Context * e,
-                    struct GC_Configuration * c) {
-  GtkWidget * uploadList;
-  GtkWidget * uploadEntry;
-  GtkCellRenderer * renderer;
-  GtkListStore * model;
-  int col;
-
-  ectx = e;
-  cfg = c;
-  uploadList = glade_xml_get_widget(getMainXML(),
-                                   "activeUploadsList");
-  summary =
-    gtk_tree_store_new(UPLOAD_NUM,
-                      G_TYPE_STRING, /* filename */
-                      G_TYPE_INT,    /* progress */
-                      G_TYPE_STRING);  /* URI (as string) - after completion */
-  gtk_tree_view_set_model(GTK_TREE_VIEW(uploadList),
-                         GTK_TREE_MODEL(summary));
-  
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(GTK_TREE_VIEW(uploadList)),
-                             GTK_SELECTION_MULTIPLE);
-  renderer = gtk_cell_renderer_progress_new();
-  col = gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(uploadList),
-                                             -1,
-                                             _("Filename"),
-                                             renderer,
-                                             "text", UPLOAD_FILENAME,
-                                             "value", UPLOAD_PROGRESS,
-                                             NULL);
-  
gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(uploadList),
-                                                             col - 1),
-                                    TRUE);
-  renderer = gtk_cell_renderer_text_new();
-  col = gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(uploadList),
-                                                   -1,
-                                                   _("URI"),
-                                                   renderer,
-                                                   "text", UPLOAD_URISTRING,
-                                                   NULL);
-  
gtk_tree_view_column_set_resizable(gtk_tree_view_get_column(GTK_TREE_VIEW(uploadList),
-                                                             col - 1),
-                                    TRUE);
-  
-  uploadEntry
-    = glade_xml_get_widget(getMainXML(),
-                          "uploadFilenameComboBoxEntry");
-
-  model = gtk_list_store_new(1, G_TYPE_STRING);
-  gtk_combo_box_set_model(GTK_COMBO_BOX(uploadEntry),
-                         GTK_TREE_MODEL(model));
-  gtk_combo_box_entry_set_text_column(GTK_COMBO_BOX_ENTRY(uploadEntry),
-                                     0);
-}
-
-void fs_upload_stop() {
-  /* nothing to be done */
-}
-
 /* end of upload.c */

Modified: gnunet-gtk/src/plugins/fs/upload.h
===================================================================
--- gnunet-gtk/src/plugins/fs/upload.h  2006-10-29 19:52:26 UTC (rev 3562)
+++ gnunet-gtk/src/plugins/fs/upload.h  2006-10-29 21:57:35 UTC (rev 3563)
@@ -27,36 +27,27 @@
 #ifndef GTK_UPLOAD_H
 #define GTK_UPLOAD_H
 
-/**
- */
-void displayUploadUpdate(struct FSUI_UploadList * list,
-                        const char * filename,
-                        unsigned long long completed,
-                        unsigned long long total);
+#include "fs.h"
 
-/**
- */
-void displayUploadComplete(struct FSUI_UploadList * list,
-                          const char * filename,
-                          const struct ECRS_URI * uri);
+void fs_upload_update(UploadList * list,
+                     unsigned long long completed);
 
+void fs_upload_complete(UploadList * list,
+                       struct ECRS_URI * uri);
 
+void fs_upload_error(UploadList * list);
 
+void fs_upload_stopped(UploadList * list);
+
 /**
- * Add the given result to the model (upload result
- * list).
- * @param info the information to add to the model
- * @param uri the upload URI
- * @param path the tree path that selects where to add
- *        the information, NULL for top-level
+ * @param uri NULL if upload is not yet finished
  */
-void displayUploadResult(const ECRS_FileInfo * info,
-                        const struct ECRS_URI * uri,
-                        GtkTreeRowReference * row);
+UploadList * 
+fs_upload_started(struct FSUI_UploadList * fsui,
+                 UploadList * parent,
+                 const char * filename,
+                 struct ECRS_URI * uri,
+                 unsigned long long total,
+                 unsigned long long completed);
 
-void fs_upload_start(struct GE_Context * e,
-                    struct GC_Configuration * c);
-
-void fs_upload_stop(void);
-
 #endif





reply via email to

[Prev in Thread] Current Thread [Next in Thread]