summaryrefslogtreecommitdiff
path: root/src/trg-files-model.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/trg-files-model.c')
-rw-r--r--src/trg-files-model.c173
1 files changed, 111 insertions, 62 deletions
diff --git a/src/trg-files-model.c b/src/trg-files-model.c
index d6770bf..b5dc34e 100644
--- a/src/trg-files-model.c
+++ b/src/trg-files-model.c
@@ -44,8 +44,9 @@ struct _TrgFilesModelPrivate {
gboolean accept;
};
-static void iter_to_row_reference(GtkTreeModel *model, GtkTreeIter *iter,
- GtkTreeRowReference **rr) {
+static void iter_to_row_reference(GtkTreeModel * model, GtkTreeIter * iter,
+ GtkTreeRowReference ** rr)
+{
GtkTreePath *path = gtk_tree_model_get_path(model, iter);
if (*rr)
@@ -55,8 +56,9 @@ static void iter_to_row_reference(GtkTreeModel *model, GtkTreeIter *iter,
gtk_tree_path_free(path);
}
-static void rowref_to_iter(GtkTreeModel *model, GtkTreeRowReference *rr,
- GtkTreeIter *iter) {
+static void rowref_to_iter(GtkTreeModel * model, GtkTreeRowReference * rr,
+ GtkTreeIter * iter)
+{
GtkTreePath *path = gtk_tree_row_reference_get_path(rr);
gtk_tree_model_get_iter(model, iter, path);
gtk_tree_path_free(path);
@@ -67,23 +69,33 @@ struct UpdateParentProgressForeachData {
gint64 increment;
};
-static gboolean trg_files_update_parent_progress_foreachfunc(GtkTreeModel *model,
- GtkTreePath *path, GtkTreeIter *iter, gpointer data) {
- struct UpdateParentProgressForeachData *args = (struct UpdateParentProgressForeachData*) data;
+static gboolean trg_files_update_parent_progress_foreachfunc(GtkTreeModel *
+ model,
+ GtkTreePath *
+ path,
+ GtkTreeIter *
+ iter,
+ gpointer data)
+{
+ struct UpdateParentProgressForeachData *args =
+ (struct UpdateParentProgressForeachData *) data;
GtkTreePath *descendentPath = gtk_tree_model_get_path(model,
- args->descendentIter);
+ args->
+ descendentIter);
if (gtk_tree_path_is_ancestor(path, descendentPath)) {
gint64 lastCompleted, newCompleted, length;
- gtk_tree_model_get(model, iter, FILESCOL_BYTESCOMPLETED, &lastCompleted,
- FILESCOL_SIZE, &length, -1);
+ gtk_tree_model_get(model, iter, FILESCOL_BYTESCOMPLETED,
+ &lastCompleted, FILESCOL_SIZE, &length, -1);
newCompleted = lastCompleted + args->increment;
- gtk_tree_store_set(GTK_TREE_STORE(model), iter, FILESCOL_BYTESCOMPLETED,
- newCompleted, FILESCOL_PROGRESS,
- file_get_progress(length, newCompleted), -1);
+ gtk_tree_store_set(GTK_TREE_STORE(model), iter,
+ FILESCOL_BYTESCOMPLETED, newCompleted,
+ FILESCOL_PROGRESS, file_get_progress(length,
+ newCompleted),
+ -1);
}
@@ -92,7 +104,9 @@ static gboolean trg_files_update_parent_progress_foreachfunc(GtkTreeModel *model
return FALSE;
}
-static void trg_files_update_parent_progress(GtkTreeModel *model, GtkTreeIter *iter, gint64 increment)
+static void trg_files_update_parent_progress(GtkTreeModel * model,
+ GtkTreeIter * iter,
+ gint64 increment)
{
if (increment > 0) {
struct UpdateParentProgressForeachData args;
@@ -100,12 +114,15 @@ static void trg_files_update_parent_progress(GtkTreeModel *model, GtkTreeIter *i
args.increment = increment;
gtk_tree_model_foreach(GTK_TREE_MODEL(model),
- trg_files_update_parent_progress_foreachfunc, &args);
+ trg_files_update_parent_progress_foreachfunc,
+ &args);
}
}
-static void trg_files_model_iter_new(TrgFilesModel * model, GtkTreeIter * iter,
- JsonObject * file, gint id) {
+static void trg_files_model_iter_new(TrgFilesModel * model,
+ GtkTreeIter * iter, JsonObject * file,
+ gint id)
+{
TrgFilesModelPrivate *priv = TRG_FILES_MODEL_GET_PRIVATE(model);
gchar **elements = g_strsplit(file_get_name(file), "/", -1);
gchar *existingName;
@@ -117,19 +134,21 @@ static void trg_files_model_iter_new(TrgFilesModel * model, GtkTreeIter * iter,
GtkTreeIter *found = NULL;
if (parentRowRef)
- rowref_to_iter(GTK_TREE_MODEL(model), parentRowRef, &parentIter);
+ rowref_to_iter(GTK_TREE_MODEL(model), parentRowRef,
+ &parentIter);
/* If this is the last component of the path, create a file node. */
if (!elements[i + 1]) {
gtk_tree_store_append(GTK_TREE_STORE(model), iter,
- parentRowRef ? &parentIter : NULL);
+ parentRowRef ? &parentIter : NULL);
gtk_tree_store_set(GTK_TREE_STORE(model), iter, FILESCOL_NAME,
- elements[i], FILESCOL_SIZE, file_get_length(file),
- FILESCOL_ID, id, -1);
+ elements[i], FILESCOL_SIZE,
+ file_get_length(file), FILESCOL_ID, id, -1);
if (parentRowRef)
- trg_files_model_update_parents(GTK_TREE_MODEL(model), iter, FILESCOL_SIZE);
+ trg_files_model_update_parents(GTK_TREE_MODEL(model), iter,
+ FILESCOL_SIZE);
break;
}
@@ -138,45 +157,50 @@ static void trg_files_model_iter_new(TrgFilesModel * model, GtkTreeIter * iter,
* GtkTreeRowReferece *parent. */
if (gtk_tree_model_iter_children(GTK_TREE_MODEL(model), iter,
- parentRowRef ? &parentIter : NULL)) {
+ parentRowRef ? &parentIter :
+ NULL)) {
do {
- gtk_tree_model_get(GTK_TREE_MODEL(model), iter, FILESCOL_NAME,
- &existingName, FILESCOL_ID, &existingId, -1);
+ gtk_tree_model_get(GTK_TREE_MODEL(model), iter,
+ FILESCOL_NAME, &existingName,
+ FILESCOL_ID, &existingId, -1);
- if (existingId == -1 && !g_strcmp0(elements[i], existingName)) {
+ if (existingId == -1
+ && !g_strcmp0(elements[i], existingName)) {
found = iter;
iter_to_row_reference(GTK_TREE_MODEL(model), iter,
- &parentRowRef);
+ &parentRowRef);
}
g_free(existingName);
if (found)
break;
- } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(model), iter));
+ } while (gtk_tree_model_iter_next
+ (GTK_TREE_MODEL(model), iter));
}
if (!found) {
GValue gvalue = { 0 };
gtk_tree_store_append(GTK_TREE_STORE(model), iter,
- parentRowRef ? &parentIter : NULL);
+ parentRowRef ? &parentIter : NULL);
gtk_tree_store_set(GTK_TREE_STORE(model), iter,
- FILESCOL_PRIORITY, TR_PRI_UNSET,
- FILESCOL_NAME, elements[i], -1);
+ FILESCOL_PRIORITY, TR_PRI_UNSET,
+ FILESCOL_NAME, elements[i], -1);
g_value_init(&gvalue, G_TYPE_INT);
g_value_set_int(&gvalue, -1);
- gtk_tree_store_set_value(GTK_TREE_STORE(model), iter, FILESCOL_ID,
- &gvalue);
+ gtk_tree_store_set_value(GTK_TREE_STORE(model), iter,
+ FILESCOL_ID, &gvalue);
memset(&gvalue, 0, sizeof(GValue));
g_value_init(&gvalue, G_TYPE_INT);
g_value_set_int(&gvalue, TR_PRI_UNSET);
gtk_tree_store_set_value(GTK_TREE_STORE(model), iter,
- FILESCOL_PRIORITY, &gvalue);
+ FILESCOL_PRIORITY, &gvalue);
- iter_to_row_reference(GTK_TREE_MODEL(model), iter, &parentRowRef);
+ iter_to_row_reference(GTK_TREE_MODEL(model), iter,
+ &parentRowRef);
}
}
@@ -187,24 +211,32 @@ static void trg_files_model_iter_new(TrgFilesModel * model, GtkTreeIter * iter,
priv->n_items++;
}
-void trg_files_model_set_accept(TrgFilesModel * model, gboolean accept) {
+void trg_files_model_set_accept(TrgFilesModel * model, gboolean accept)
+{
TrgFilesModelPrivate *priv = TRG_FILES_MODEL_GET_PRIVATE(model);
priv->accept = accept;
}
static void trg_files_model_iter_update(TrgFilesModel * model,
- GtkTreeIter * filesIter, gboolean isFirst, JsonObject * file,
- JsonArray * wantedArray, JsonArray * prioritiesArray, int id) {
+ GtkTreeIter * filesIter,
+ gboolean isFirst,
+ JsonObject * file,
+ JsonArray * wantedArray,
+ JsonArray * prioritiesArray,
+ int id)
+{
TrgFilesModelPrivate *priv = TRG_FILES_MODEL_GET_PRIVATE(model);
gint64 fileLength = file_get_length(file);
gint64 fileCompleted = file_get_bytes_completed(file);
gint64 increment;
- gboolean wanted = json_node_get_int(json_array_get_element(wantedArray, id))
- == 1;
- gint priority = (gint)json_node_get_int(
- json_array_get_element(prioritiesArray, id));
+ gboolean wanted =
+ json_node_get_int(json_array_get_element(wantedArray, id))
+ == 1;
+ gint priority =
+ (gint)
+ json_node_get_int(json_array_get_element(prioritiesArray, id));
gdouble progress = file_get_progress(fileLength, fileCompleted);
if (isFirst) {
@@ -212,30 +244,40 @@ static void trg_files_model_iter_update(TrgFilesModel * model,
} else {
gint64 lastCompleted;
gtk_tree_model_get(GTK_TREE_MODEL(model), filesIter,
- FILESCOL_BYTESCOMPLETED, &lastCompleted, -1);
+ FILESCOL_BYTESCOMPLETED, &lastCompleted, -1);
increment = fileCompleted - lastCompleted;
}
gtk_tree_store_set(GTK_TREE_STORE(model), filesIter, FILESCOL_PROGRESS,
- progress, FILESCOL_BYTESCOMPLETED, fileCompleted, -1);
+ progress, FILESCOL_BYTESCOMPLETED, fileCompleted,
+ -1);
- trg_files_update_parent_progress(GTK_TREE_MODEL(model), filesIter, increment);
+ trg_files_update_parent_progress(GTK_TREE_MODEL(model), filesIter,
+ increment);
if (priv->accept)
- gtk_tree_store_set(GTK_TREE_STORE(model), filesIter, FILESCOL_WANTED,
- wanted, FILESCOL_PRIORITY, priority, -1);
+ gtk_tree_store_set(GTK_TREE_STORE(model), filesIter,
+ FILESCOL_WANTED, wanted, FILESCOL_PRIORITY,
+ priority, -1);
if (isFirst) {
- trg_files_tree_model_propogateChangeUp(GTK_TREE_MODEL(model), filesIter, FILESCOL_PRIORITY, priority);
- trg_files_tree_model_propogateChangeUp(GTK_TREE_MODEL(model), filesIter, FILESCOL_WANTED, wanted);
+ trg_files_tree_model_propogateChangeUp(GTK_TREE_MODEL(model),
+ filesIter,
+ FILESCOL_PRIORITY,
+ priority);
+ trg_files_tree_model_propogateChangeUp(GTK_TREE_MODEL(model),
+ filesIter, FILESCOL_WANTED,
+ wanted);
}
}
-static void trg_files_model_class_init(TrgFilesModelClass * klass) {
+static void trg_files_model_class_init(TrgFilesModelClass * klass)
+{
g_type_class_add_private(klass, sizeof(TrgFilesModelPrivate));
}
-static void trg_files_model_init(TrgFilesModel * self) {
+static void trg_files_model_init(TrgFilesModel * self)
+{
TrgFilesModelPrivate *priv = TRG_FILES_MODEL_GET_PRIVATE(self);
GType column_types[FILESCOL_COLUMNS];
@@ -250,11 +292,13 @@ static void trg_files_model_init(TrgFilesModel * self) {
column_types[FILESCOL_BYTESCOMPLETED] = G_TYPE_INT64;
gtk_tree_store_set_column_types(GTK_TREE_STORE(self), FILESCOL_COLUMNS,
- column_types);
+ column_types);
}
gboolean trg_files_model_update_foreach(GtkListStore * model,
- GtkTreePath * path G_GNUC_UNUSED, GtkTreeIter * iter, GList * files) {
+ GtkTreePath * path G_GNUC_UNUSED,
+ GtkTreeIter * iter, GList * files)
+{
TrgFilesModelPrivate *priv = TRG_FILES_MODEL_GET_PRIVATE(model);
JsonObject *file;
gint id;
@@ -263,15 +307,17 @@ gboolean trg_files_model_update_foreach(GtkListStore * model,
if (id >= 0) {
file = json_node_get_object(g_list_nth_data(files, id));
- trg_files_model_iter_update(TRG_FILES_MODEL(model), iter, FALSE, file,
- priv->wanted, priv->priorities, id);
+ trg_files_model_iter_update(TRG_FILES_MODEL(model), iter, FALSE,
+ file, priv->wanted, priv->priorities,
+ id);
}
return FALSE;
}
void trg_files_model_update(TrgFilesModel * model, gint64 updateSerial,
- JsonObject * t, gint mode) {
+ JsonObject * t, gint mode)
+{
TrgFilesModelPrivate *priv = TRG_FILES_MODEL_GET_PRIVATE(model);
GList *filesList, *li;
GtkTreeIter filesIter;
@@ -292,21 +338,22 @@ void trg_files_model_update(TrgFilesModel * model, gint64 updateSerial,
trg_files_model_iter_new(model, &filesIter, file, j);
trg_files_model_iter_update(model, &filesIter, TRUE, file,
- priv->wanted, priv->priorities, j);
+ priv->wanted, priv->priorities, j);
j++;
}
} else {
guint n_updates = g_list_length(filesList);
gtk_tree_model_foreach(GTK_TREE_MODEL(model),
- (GtkTreeModelForeachFunc) trg_files_model_update_foreach,
- filesList);
+ (GtkTreeModelForeachFunc)
+ trg_files_model_update_foreach, filesList);
if (n_updates > priv->n_items) {
gint n_new = n_updates - priv->n_items;
for (j = n_updates - n_new; j < n_updates; j++) {
file = json_node_get_object(g_list_nth_data(filesList, j));
trg_files_model_iter_new(model, &filesIter, file, j);
trg_files_model_iter_update(model, &filesIter, TRUE, file,
- priv->wanted, priv->priorities, j);
+ priv->wanted, priv->priorities,
+ j);
}
}
}
@@ -314,11 +361,13 @@ void trg_files_model_update(TrgFilesModel * model, gint64 updateSerial,
g_list_free(filesList);
}
-gint64 trg_files_model_get_torrent_id(TrgFilesModel * model) {
+gint64 trg_files_model_get_torrent_id(TrgFilesModel * model)
+{
TrgFilesModelPrivate *priv = TRG_FILES_MODEL_GET_PRIVATE(model);
return priv->torrentId;
}
-TrgFilesModel *trg_files_model_new(void) {
+TrgFilesModel *trg_files_model_new(void)
+{
return g_object_new(TRG_TYPE_FILES_MODEL, NULL);
}