[file-roller: 107/123] progress dialog: better description and progressbar precision
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [file-roller: 107/123] progress dialog: better description and progressbar precision
- Date: Mon, 6 Aug 2012 13:49:51 +0000 (UTC)
commit 0bc86155596edae8bc5fa3f613f8a596c5334672
Author: Paolo Bacchilega <paobac src gnome org>
Date: Mon Aug 6 12:09:28 2012 +0200
progress dialog: better description and progressbar precision
src/fr-archive-libarchive.c | 42 ++++++++++----------------------
src/fr-archive.c | 7 ++++-
src/fr-window.c | 56 +++++++++++++++++++++++++++++-------------
3 files changed, 57 insertions(+), 48 deletions(-)
---
diff --git a/src/fr-archive-libarchive.c b/src/fr-archive-libarchive.c
index c8066f1..195388e 100644
--- a/src/fr-archive-libarchive.c
+++ b/src/fr-archive-libarchive.c
@@ -254,25 +254,6 @@ _g_file_get_size (GFile *file,
}
-#if 1 /* FIXME: delete if not needed */
-
-static gssize
-_archive_read_data_skip (struct archive *a)
-{
- int r;
- const void *buff;
- size_t size;
- int64_t offset;
-
- while ((r = archive_read_data_block (a, &buff, &size, &offset)) == ARCHIVE_OK)
- /* void */;
-
- return (r == ARCHIVE_EOF) ? (gssize) offset + size : 0;
-}
-
-#endif
-
-
static void
list_archive_thread (GSimpleAsyncResult *result,
GObject *object,
@@ -282,7 +263,6 @@ list_archive_thread (GSimpleAsyncResult *result,
struct archive *a;
struct archive_entry *entry;
int r;
- gssize skipped_size = 0;
load_data = g_simple_async_result_get_op_res_gpointer (result);
@@ -340,15 +320,10 @@ list_archive_thread (GSimpleAsyncResult *result,
fr_archive_add_file (load_data->archive, file_data);
- skipped_size += _archive_read_data_skip (a);
+ archive_read_data_skip (a);
}
archive_read_free (a);
- g_print ("compressed size: %" G_GSSIZE_FORMAT ", uncompressed size: %" G_GSSIZE_FORMAT ", skipped: %" G_GSSIZE_FORMAT "\n",
- FR_ARCHIVE_LIBARCHIVE (load_data->archive)->priv->compressed_size,
- FR_ARCHIVE_LIBARCHIVE (load_data->archive)->priv->uncompressed_size,
- skipped_size);
-
if ((load_data->error == NULL) && (r != ARCHIVE_EOF) && (archive_error_string (a) != NULL))
load_data->error = g_error_new_literal (FR_ERROR, FR_ERROR_COMMAND_ERROR, archive_error_string (a));
if (load_data->error == NULL)
@@ -1442,9 +1417,12 @@ static void
_remove_files_begin (SaveData *save_data,
gpointer user_data)
{
+ LoadData *load_data = LOAD_DATA (save_data);
RemoveData *remove_data = user_data;
- fr_archive_progress_set_total_files (LOAD_DATA (save_data)->archive, remove_data->n_files_to_remove);
+ fr_archive_progress_set_total_files (load_data->archive, remove_data->n_files_to_remove);
+ fr_archive_progress_set_total_bytes (load_data->archive,
+ FR_ARCHIVE_LIBARCHIVE (load_data->archive)->priv->uncompressed_size);
}
@@ -1462,9 +1440,10 @@ _remove_files_entry_action (SaveData *save_data,
pathname = archive_entry_pathname (w_entry);
if (g_hash_table_lookup (remove_data->files_to_remove, pathname)) {
action = WRITE_ACTION_SKIP_ENTRY;
- fr_archive_progress_inc_completed_files (load_data->archive, 1);
remove_data->n_files_to_remove--;
g_hash_table_remove (remove_data->files_to_remove, pathname);
+ fr_archive_progress_inc_completed_bytes (load_data->archive, archive_entry_size (w_entry));
+ fr_archive_progress_inc_completed_files (load_data->archive, 1);
}
return action;
@@ -1530,9 +1509,12 @@ static void
_rename_files_begin (SaveData *save_data,
gpointer user_data)
{
+ LoadData *load_data = LOAD_DATA (save_data);
RenameData *rename_data = user_data;
- fr_archive_progress_set_total_files (LOAD_DATA (save_data)->archive, rename_data->n_files_to_rename);
+ fr_archive_progress_set_total_files (load_data->archive, rename_data->n_files_to_rename);
+ fr_archive_progress_set_total_bytes (load_data->archive,
+ FR_ARCHIVE_LIBARCHIVE (load_data->archive)->priv->uncompressed_size);
}
@@ -1644,6 +1626,8 @@ fr_archive_libarchive_paste_clipboard (FrArchive *archive,
add_data = add_data_new ();
+ fr_archive_action_started (archive, FR_ACTION_ADDING_FILES);
+
current_dir = current_dir + 1;
for (scan = files; scan; scan = scan->next) {
const char *old_name = (char *) scan->data;
diff --git a/src/fr-archive.c b/src/fr-archive.c
index b8273b3..b4ff898 100644
--- a/src/fr-archive.c
+++ b/src/fr-archive.c
@@ -1245,7 +1245,7 @@ fr_archive_remove (FrArchive *archive,
{
g_return_if_fail (! archive->read_only);
- archive->priv->progress_event = g_timeout_add (PROGRESS_DELAY, _fr_archive_update_progress_cb, archive);
+ _fr_archive_activate_progress_update (archive);
FR_ARCHIVE_GET_CLASS (archive)->remove_files (archive,
file_list,
@@ -1488,6 +1488,8 @@ fr_archive_rename (FrArchive *archive,
GAsyncReadyCallback callback,
gpointer user_data)
{
+ _fr_archive_activate_progress_update (archive);
+
FR_ARCHIVE_GET_CLASS (archive)->rename (archive,
file_list,
old_name,
@@ -1518,6 +1520,8 @@ fr_archive_paste_clipboard (FrArchive *archive,
GAsyncReadyCallback callback,
gpointer user_data)
{
+ _fr_archive_activate_progress_update (archive);
+
FR_ARCHIVE_GET_CLASS (archive)->paste_clipboard (archive,
file,
password,
@@ -1867,6 +1871,7 @@ fr_archive_update_open_files (FrArchive *archive,
GAsyncReadyCallback callback,
gpointer user_data)
{
+ _fr_archive_activate_progress_update (archive);
FR_ARCHIVE_GET_CLASS (archive)->update_open_files (archive,
file_list,
dir_list,
diff --git a/src/fr-window.c b/src/fr-window.c
index 6bee0c7..c46f881 100644
--- a/src/fr-window.c
+++ b/src/fr-window.c
@@ -375,6 +375,7 @@ struct _FrWindowPrivate {
double pd_last_fraction;
char *pd_last_message;
gboolean use_progress_dialog;
+ char *custom_action_message;
/* update dialog data */
@@ -577,6 +578,7 @@ fr_window_free_private_data (FrWindow *window)
g_free (window->priv->password);
g_free (window->priv->password_for_paste);
+ g_free (window->priv->custom_action_message);
g_object_unref (window->priv->list_store);
@@ -2348,8 +2350,9 @@ progress_dialog_response (GtkDialog *dialog,
}
-static char*
-get_action_description (FrAction action,
+static char *
+get_action_description (FrWindow *window,
+ FrAction action,
GFile *file)
{
char *basename;
@@ -2373,7 +2376,7 @@ get_action_description (FrAction action,
break;
case FR_ACTION_DELETING_FILES:
/* Translators: %s is a filename */
- message = g_strdup_printf (_("Deleting files from \"%s\""), basename);
+ message = g_strdup_printf (_("Deleting the files from \"%s\""), basename);
break;
case FR_ACTION_TESTING_ARCHIVE:
/* Translators: %s is a filename */
@@ -2388,11 +2391,11 @@ get_action_description (FrAction action,
break;
case FR_ACTION_ADDING_FILES:
/* Translators: %s is a filename */
- message = g_strdup_printf (_("Adding files to \"%s\""), basename);
+ message = g_strdup_printf (_("Adding the files to \"%s\""), basename);
break;
case FR_ACTION_EXTRACTING_FILES:
/* Translators: %s is a filename */
- message = g_strdup_printf (_("Extracting files from \"%s\""), basename);
+ message = g_strdup_printf (_("Extracting the files from \"%s\""), basename);
break;
case FR_ACTION_COPYING_FILES_TO_REMOTE:
message = g_strdup (_("Copying the extracted files to the destination"));
@@ -2405,19 +2408,18 @@ get_action_description (FrAction action,
/* Translators: %s is a filename */
message = g_strdup_printf (_("Saving \"%s\""), basename);
break;
+ case FR_ACTION_PASTING_FILES:
+ message = g_strdup (window->priv->custom_action_message);
+ break;
case FR_ACTION_RENAMING_FILES:
/* Translators: %s is a filename */
message = g_strdup_printf (_("Renaming the files in \"%s\""), basename);
break;
- case FR_ACTION_PASTING_FILES:
- /* Translators: %s is a filename */
- message = g_strdup_printf (_("Pasting the files from the clipboard into \"%s\""), basename);
- break;
case FR_ACTION_UPDATING_FILES:
/* Translators: %s is a filename */
message = g_strdup_printf (_("Updating the files in \"%s\""), basename);
break;
- case FR_ACTION_NONE:
+ default:
break;
}
@@ -2461,7 +2463,7 @@ progress_dialog_update_action_description (FrWindow *window)
if (current_archive != NULL)
window->priv->pd_last_archive = g_object_ref (current_archive);
- description = get_action_description (window->priv->action, window->priv->pd_last_archive);
+ description = get_action_description (window, window->priv->action, window->priv->pd_last_archive);
progress_dialog_set_action_description (window, description);
g_free (description);
@@ -2548,7 +2550,7 @@ fr_archive_start_cb (FrArchive *archive,
{
char *description;
- description = get_action_description (action, fr_archive_get_file (archive));
+ description = get_action_description (window, action, fr_archive_get_file (archive));
fr_archive_message_cb (archive, description, window);
g_free (description);
@@ -2700,15 +2702,18 @@ fr_archive_progress_cb (FrArchive *archive,
char *message = NULL;
int remaining_files;
- remaining_files = fr_archive_progress_get_total_files (archive) - fr_archive_progress_get_completed_files (archive) + 1;
+ remaining_files = fr_archive_progress_get_total_files (archive) - fr_archive_progress_get_completed_files (archive);
switch (window->priv->action) {
case FR_ACTION_ADDING_FILES:
case FR_ACTION_EXTRACTING_FILES:
case FR_ACTION_DELETING_FILES:
- message = g_strdup_printf (ngettext ("%d file remaining",
- "%'d files remaining",
- remaining_files), remaining_files);
+ if (remaining_files > 0)
+ message = g_strdup_printf (ngettext ("%d file remaining",
+ "%'d files remaining",
+ remaining_files), remaining_files);
+ else
+ message = g_strdup (_("Operation completed"));
break;
default:
break;
@@ -3265,7 +3270,7 @@ _archive_operation_started (FrWindow *window,
archive = window->priv->pd_last_archive;
if (archive == NULL)
archive = window->priv->archive_file;
- message = get_action_description (action, archive);
+ message = get_action_description (window, action, archive);
fr_window_push_message (window, message);
g_free (message);
@@ -6362,7 +6367,7 @@ _fr_window_notify_creation_complete (FrWindow *window)
GList *caps;
NotifyData *notify_data;
- title = get_action_description (window->priv->action, window->priv->pd_last_archive);
+ title = get_action_description (window, window->priv->action, window->priv->pd_last_archive);
basename = _g_file_get_display_basename (window->priv->convert_data.new_file);
/* Translators: %s is a filename */
message = g_strdup_printf (_("\"%s\" created successfully"), basename);
@@ -8294,6 +8299,7 @@ paste_from_archive_extract_ready_cb (GObject *source_object,
}
if (window->priv->clipboard_data->op == FR_CLIPBOARD_OP_CUT) {
+ fr_archive_action_started (window->priv->copy_from_archive, FR_ACTION_DELETING_FILES);
fr_archive_remove (window->priv->copy_from_archive,
window->priv->clipboard_data->files,
window->priv->compression,
@@ -8364,6 +8370,8 @@ fr_window_paste_from_clipboard_data (FrWindow *window,
const char *current_dir_relative;
GHashTable *created_dirs;
GList *scan;
+ char *from_archive;
+ char *to_archive;
if (window->priv->password_for_paste != NULL)
fr_clipboard_data_set_password (data, window->priv->password_for_paste);
@@ -8406,12 +8414,24 @@ fr_window_paste_from_clipboard_data (FrWindow *window,
/**/
+ g_free (window->priv->custom_action_message);
+ from_archive = _g_file_get_display_basename (data->file);
+ to_archive = _g_file_get_display_basename (window->priv->archive_file);
+ if (data->op == FR_CLIPBOARD_OP_CUT)
+ /* Translators: %s are archive filenames */
+ window->priv->custom_action_message = g_strdup_printf (_("Moving the files from \"%s\" to \"%s\""), from_archive, to_archive);
+ else
+ /* Translators: %s are archive filenames */
+ window->priv->custom_action_message = g_strdup_printf (_("Copying the files from \"%s\" to \"%s\""), from_archive, to_archive);
_archive_operation_started (window, FR_ACTION_PASTING_FILES);
fr_archive_open (data->file,
window->priv->cancellable,
paste_from_archive_open_cb,
window);
+
+ g_free (to_archive);
+ g_free (from_archive);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]