summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/requests.c13
-rw-r--r--src/trg-files-model.c11
-rw-r--r--src/trg-files-model.h5
-rw-r--r--src/trg-main-window.c115
-rw-r--r--src/trg-preferences-dialog.c3
-rw-r--r--src/trg-remote-prefs-dialog.c6
-rw-r--r--src/trg-torrent-move-dialog.c1
-rw-r--r--src/trg-torrent-props-dialog.c7
-rw-r--r--src/trg-tree-view.c33
9 files changed, 123 insertions, 71 deletions
diff --git a/src/requests.c b/src/requests.c
index a600396..38e3480 100644
--- a/src/requests.c
+++ b/src/requests.c
@@ -39,9 +39,11 @@ JsonNode *generic_request(gchar * method, JsonArray * ids)
{
JsonNode *root = base_request(method);
- if (ids)
- json_object_set_array_member(node_get_arguments(root),
- PARAM_IDS, ids);
+ if (ids) {
+ JsonObject *args = node_get_arguments(root);
+ json_object_set_array_member(args, PARAM_IDS, ids);
+ request_set_tag_from_ids(root, ids);
+ }
return root;
}
@@ -273,8 +275,7 @@ void request_set_tag(JsonNode * req, gint64 tag)
void request_set_tag_from_ids(JsonNode * req, JsonArray * ids)
{
gint64 id =
- json_array_get_length(ids) == 1 ? json_array_get_int_element(ids,
- 0) :
- -1;
+ json_array_get_length(ids) == 1 ?
+ json_array_get_int_element(ids, 0) : TORRENT_GET_TAG_MODE_FULL;
request_set_tag(req, id);
}
diff --git a/src/trg-files-model.c b/src/trg-files-model.c
index 8675237..fc79c73 100644
--- a/src/trg-files-model.c
+++ b/src/trg-files-model.c
@@ -248,11 +248,8 @@ static void trg_files_model_iter_update(TrgFilesModel * model,
gint64 fileCompleted = file_get_bytes_completed(file);
gint64 lastCompleted;
- 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));
+ gint wanted = (gint) json_array_get_int_element(wantedArray, id);
+ gint priority = (gint) json_array_get_int_element(prioritiesArray, id);
gdouble progress = file_get_progress(fileLength, fileCompleted);
gtk_tree_model_get(GTK_TREE_MODEL(model), filesIter,
@@ -373,8 +370,8 @@ static gpointer trg_files_model_buildtree_threadfunc(gpointer data)
return NULL;
}
-void trg_files_model_update(TrgFilesModel * model, GtkTreeView *tv,
- gint64 updateSerial, JsonObject * t, gint mode)
+void trg_files_model_update(TrgFilesModel * model, GtkTreeView * tv,
+ gint64 updateSerial, JsonObject * t, gint mode)
{
TrgFilesModelPrivate *priv = TRG_FILES_MODEL_GET_PRIVATE(model);
JsonArray *files = torrent_get_files(t);
diff --git a/src/trg-files-model.h b/src/trg-files-model.h
index 1b98246..b76b456 100644
--- a/src/trg-files-model.h
+++ b/src/trg-files-model.h
@@ -62,8 +62,9 @@ G_END_DECLS enum {
#define TRG_FILES_MODEL_CREATE_THREAD_IF_GT 600
-void trg_files_model_update(TrgFilesModel * model, GtkTreeView *tv,
- gint64 updateSerial, JsonObject * t, gint mode);
+void trg_files_model_update(TrgFilesModel * model, GtkTreeView * tv,
+ gint64 updateSerial, JsonObject * t,
+ gint mode);
gint64 trg_files_model_get_torrent_id(TrgFilesModel * model);
void trg_files_model_set_accept(TrgFilesModel * model, gboolean accept);
diff --git a/src/trg-main-window.c b/src/trg-main-window.c
index 1c97dd6..d152479 100644
--- a/src/trg-main-window.c
+++ b/src/trg-main-window.c
@@ -143,9 +143,9 @@ static void open_about_cb(GtkWidget * w, GtkWindow * parent);
static gboolean trg_torrent_tree_view_visible_func(GtkTreeModel * model,
GtkTreeIter * iter,
gpointer data);
-static TrgTorrentTreeView *
-trg_main_window_torrent_tree_view_new(TrgMainWindow * win,
- GtkTreeModel * model);
+static TrgTorrentTreeView
+ *trg_main_window_torrent_tree_view_new(TrgMainWindow * win,
+ GtkTreeModel * model);
static gboolean trg_dialog_error_handler(TrgMainWindow * win,
trg_response * response);
static gboolean torrent_selection_changed(GtkTreeSelection * selection,
@@ -296,7 +296,8 @@ static void update_selected_torrent_notebook(TrgMainWindow * win,
trg_general_panel_update(priv->genDetails, t, &iter);
trg_trackers_model_update(priv->trackersModel,
trg_client_get_serial(client), t, mode);
- trg_files_model_update(priv->filesModel, GTK_TREE_VIEW(priv->filesTreeView),
+ trg_files_model_update(priv->filesModel,
+ GTK_TREE_VIEW(priv->filesTreeView),
trg_client_get_serial(client), t, mode);
trg_peers_model_update(priv->peersModel,
TRG_TREE_VIEW(priv->peersTreeView),
@@ -430,8 +431,7 @@ static void add_url_cb(GtkWidget * w G_GNUC_UNUSED, gpointer data)
TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(data);
TrgTorrentAddUrlDialog *dlg = trg_torrent_add_url_dialog_new(win,
- priv->
- client);
+ priv->client);
gtk_widget_show_all(GTK_WIDGET(dlg));
}
@@ -1065,8 +1065,8 @@ TRANSMISSION_MIN_SUPPORTED, version);
if (refreshSpeed)
trg_status_bar_update_speed(priv->statusBar,
- trg_torrent_model_get_stats(priv->
- torrentModel),
+ trg_torrent_model_get_stats
+ (priv->torrentModel),
priv->client);
}
@@ -1209,9 +1209,8 @@ static gboolean on_torrent_get(gpointer data, int mode)
update_selected_torrent_notebook(win, mode, priv->selectedTorrentId);
trg_status_bar_update(priv->statusBar, stats, client);
update_whatever_statusicon(win,
- trg_status_bar_get_speed_text(priv->
- statusBar),
- stats);
+ trg_status_bar_get_speed_text
+ (priv->statusBar), stats);
#ifndef TRG_NO_GRAPH
if (priv->graphNotebookIndex >= 0)
@@ -1322,8 +1321,7 @@ static gboolean trg_torrent_tree_view_visible_func(GtkTreeModel * model,
matchesTracker = (!json
|| !torrent_has_tracker(json,
trg_state_selector_get_url_host_regex
- (priv->
- stateSelector),
+ (priv->stateSelector),
text));
g_free(text);
if (matchesTracker)
@@ -1375,8 +1373,8 @@ void trg_main_window_reload_dir_aliases(TrgMainWindow * win)
}
static TrgTorrentTreeView
- *trg_main_window_torrent_tree_view_new(TrgMainWindow * win,
- GtkTreeModel * model)
+ * trg_main_window_torrent_tree_view_new(TrgMainWindow * win,
+ GtkTreeModel * model)
{
TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(win);
TrgTorrentTreeView *torrentTreeView =
@@ -1459,7 +1457,6 @@ gboolean on_generic_interactive_action(gpointer data)
TrgMainWindowPrivate *priv =
TRG_MAIN_WINDOW_GET_PRIVATE(response->cb_data);
TrgClient *tc = priv->client;
- TrgPrefs *prefs = trg_client_get_prefs(tc);
if (trg_client_is_connected(tc)) {
trg_dialog_error_handler(win, response);
@@ -1468,10 +1465,6 @@ gboolean on_generic_interactive_action(gpointer data)
gint64 id;
if (json_object_has_member(response->obj, PARAM_TAG))
id = json_object_get_int_member(response->obj, PARAM_TAG);
- else if (trg_prefs_get_bool
- (prefs, TRG_PREFS_KEY_UPDATE_ACTIVE_ONLY,
- TRG_PREFS_CONNECTION))
- id = TORRENT_GET_TAG_MODE_UPDATE;
else
id = TORRENT_GET_TAG_MODE_FULL;
@@ -1796,6 +1789,28 @@ static void set_limit_cb(GtkWidget * w, gpointer data)
dispatch_async(priv->client, req, on_session_set, data);
}
+static void set_priority_cb(GtkWidget * w, gpointer data)
+{
+ TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(data);
+
+ GtkWidget *parent = gtk_widget_get_parent(w);
+
+ gint priority =
+ GPOINTER_TO_INT(g_object_get_data(G_OBJECT(w), "priority"));
+ gpointer limitIds = g_object_get_data(G_OBJECT(parent), "pri-ids");
+
+ JsonNode *req = NULL;
+ JsonObject *args;
+
+ req = torrent_set((JsonArray *) limitIds);
+
+ args = node_get_arguments(req);
+
+ json_object_set_int_member(args, FIELD_BANDWIDTH_PRIORITY, priority);
+
+ dispatch_async(priv->client, req, on_generic_interactive_action, data);
+}
+
static GtkWidget *limit_item_new(TrgMainWindow * win, GtkWidget * menu,
gint64 currentLimit, gfloat limit)
{
@@ -1816,6 +1831,58 @@ static GtkWidget *limit_item_new(TrgMainWindow * win, GtkWidget * menu,
return item;
}
+static GtkWidget *priority_menu_item_new(TrgMainWindow * win,
+ GtkMenuShell * menu,
+ const gchar * label, gint value,
+ gint current_value)
+{
+ GtkWidget *item = gtk_check_menu_item_new_with_label(label);
+
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item),
+ value == current_value);
+ g_object_set_data(G_OBJECT(item), "priority", GINT_TO_POINTER(value));
+ g_signal_connect(item, "activate", G_CALLBACK(set_priority_cb), win);
+
+ gtk_menu_shell_append(menu, item);
+
+ return item;
+}
+
+static GtkWidget *priority_menu_new(TrgMainWindow * win, JsonArray * ids)
+{
+ TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(win);
+ TrgClient *client = priv->client;
+ JsonObject *t = NULL;
+ gint selected_pri = TR_PRI_UNSET;
+ GtkWidget *toplevel, *menu;
+
+ if (get_torrent_data(trg_client_get_torrent_table(client),
+ priv->selectedTorrentId, &t, NULL))
+ selected_pri = torrent_get_bandwidth_priority(t);
+
+ toplevel = gtk_image_menu_item_new_with_label(GTK_STOCK_NETWORK);
+ gtk_image_menu_item_set_use_stock(GTK_IMAGE_MENU_ITEM(toplevel), TRUE);
+ gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM
+ (toplevel), TRUE);
+ gtk_menu_item_set_label(GTK_MENU_ITEM(toplevel), _("Priority"));
+
+ menu = gtk_menu_new();
+
+ g_object_set_data_full(G_OBJECT(menu), "pri-ids", ids,
+ (GDestroyNotify) json_array_unref);
+
+ priority_menu_item_new(win, GTK_MENU_SHELL(menu), _("High"),
+ TR_PRI_HIGH, selected_pri);
+ priority_menu_item_new(win, GTK_MENU_SHELL(menu), _("Normal"),
+ TR_PRI_NORMAL, selected_pri);
+ priority_menu_item_new(win, GTK_MENU_SHELL(menu), _("Low"), TR_PRI_LOW,
+ selected_pri);
+
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(toplevel), menu);
+
+ return toplevel;
+}
+
static GtkWidget *limit_menu_new(TrgMainWindow * win, gchar * title,
gchar * enabledKey, gchar * speedKey,
JsonArray * ids)
@@ -2055,6 +2122,8 @@ static void trg_torrent_tv_view_menu(GtkWidget * treeview,
_("Up Limit"),
FIELD_UPLOAD_LIMITED,
FIELD_UPLOAD_LIMIT, ids));
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu),
+ priority_menu_new(TRG_MAIN_WINDOW(data), ids));
gtk_widget_show_all(menu);
@@ -2436,8 +2505,7 @@ static GObject *trg_main_window_constructor(GType type,
self, NULL);
priv->torrentTreeView = trg_main_window_torrent_tree_view_new(self,
- priv->
- filteredTorrentModel);
+ priv->filteredTorrentModel);
g_signal_connect(priv->torrentTreeView, "popup-menu",
G_CALLBACK(torrent_tv_popup_menu_cb), self);
g_signal_connect(priv->torrentTreeView, "button-press-event",
@@ -2485,8 +2553,7 @@ static GObject *trg_main_window_constructor(GType type,
FALSE, FALSE);
gtk_paned_pack2(GTK_PANED(priv->hpaned), my_scrolledwin_new(GTK_WIDGET
- (priv->
- torrentTreeView)),
+ (priv->torrentTreeView)),
TRUE, TRUE);
g_signal_connect(G_OBJECT(priv->stateSelector),
diff --git a/src/trg-preferences-dialog.c b/src/trg-preferences-dialog.c
index 4c774ec..89ea325 100644
--- a/src/trg-preferences-dialog.c
+++ b/src/trg-preferences-dialog.c
@@ -385,8 +385,7 @@ static void trgp_double_special_dependent(GtkWidget * widget,
(priv->fullUpdateCheck)
&&
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON
- (priv->
- fullUpdateCheck)));
+ (priv->fullUpdateCheck)));
}
static GtkWidget *trg_prefs_generalPage(TrgPreferencesDialog * dlg)
diff --git a/src/trg-remote-prefs-dialog.c b/src/trg-remote-prefs-dialog.c
index 8f866ea..8c921e4 100644
--- a/src/trg-remote-prefs-dialog.c
+++ b/src/trg-remote-prefs-dialog.c
@@ -159,12 +159,10 @@ static void trg_remote_prefs_double_special_dependent(GtkWidget * widget,
gtk_widget_set_sensitive(GTK_WIDGET(data),
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON
- (priv->
- alt_time_check))
+ (priv->alt_time_check))
||
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON
- (priv->
- alt_check)));
+ (priv->alt_check)));
}
static void trg_rprefs_time_widget_savefunc(GtkWidget * w,
diff --git a/src/trg-torrent-move-dialog.c b/src/trg-torrent-move-dialog.c
index 5091120..21a76fe 100644
--- a/src/trg-torrent-move-dialog.c
+++ b/src/trg-torrent-move-dialog.c
@@ -67,7 +67,6 @@ trg_torrent_move_response_cb(GtkDialog * dlg, gint res_id, gpointer data)
(GTK_TOGGLE_BUTTON
(priv->move_check)));
g_free(location);
- request_set_tag_from_ids(request, priv->ids);
trg_destination_combo_save_selection(TRG_DESTINATION_COMBO
(priv->location_combo));
dispatch_async(priv->client, request,
diff --git a/src/trg-torrent-props-dialog.c b/src/trg-torrent-props-dialog.c
index 05ebaa8..a0ae22a 100644
--- a/src/trg-torrent-props-dialog.c
+++ b/src/trg-torrent-props-dialog.c
@@ -132,15 +132,16 @@ trg_torrent_props_response_cb(GtkDialog * dlg, gint res_id,
}
request = torrent_set(priv->targetIds);
- request_set_tag_from_ids(request, priv->targetIds);
args = node_get_arguments(request);
json_object_set_int_member(args, FIELD_SEED_RATIO_MODE,
gtk_combo_box_get_active(GTK_COMBO_BOX
- (priv->seedRatioMode)));
+ (priv->
+ seedRatioMode)));
json_object_set_int_member(args, FIELD_BANDWIDTH_PRIORITY,
gtk_combo_box_get_active(GTK_COMBO_BOX
- (priv->bandwidthPriorityCombo))
+ (priv->
+ bandwidthPriorityCombo))
- 1);
trg_json_widgets_save(priv->widgets, args);
diff --git a/src/trg-tree-view.c b/src/trg-tree-view.c
index 4265c7d..54c5cf5 100644
--- a/src/trg-tree-view.c
+++ b/src/trg-tree-view.c
@@ -313,8 +313,7 @@ static void trg_tree_view_add_column_after(TrgTreeView * tv,
gtk_cell_renderer_text_new();
column = gtk_tree_view_column_new_with_attributes(desc->header,
renderer, "text",
- desc->
- model_column,
+ desc->model_column,
NULL);
break;
@@ -323,8 +322,7 @@ static void trg_tree_view_add_column_after(TrgTreeView * tv,
column = gtk_tree_view_column_new_with_attributes(desc->header,
renderer,
"speed-value",
- desc->
- model_column,
+ desc->model_column,
NULL);
break;
case TRG_COLTYPE_EPOCH:
@@ -332,8 +330,7 @@ static void trg_tree_view_add_column_after(TrgTreeView * tv,
column = gtk_tree_view_column_new_with_attributes(desc->header,
renderer,
"epoch-value",
- desc->
- model_column,
+ desc->model_column,
NULL);
break;
case TRG_COLTYPE_ETA:
@@ -341,8 +338,7 @@ static void trg_tree_view_add_column_after(TrgTreeView * tv,
column = gtk_tree_view_column_new_with_attributes(desc->header,
renderer,
"eta-value",
- desc->
- model_column,
+ desc->model_column,
NULL);
break;
case TRG_COLTYPE_SIZE:
@@ -350,8 +346,7 @@ static void trg_tree_view_add_column_after(TrgTreeView * tv,
column = gtk_tree_view_column_new_with_attributes(desc->header,
renderer,
"size-value",
- desc->
- model_column,
+ desc->model_column,
NULL);
break;
case TRG_COLTYPE_PROG:
@@ -359,8 +354,7 @@ static void trg_tree_view_add_column_after(TrgTreeView * tv,
column = gtk_tree_view_column_new_with_attributes(desc->header,
renderer,
"value",
- desc->
- model_column,
+ desc->model_column,
NULL);
break;
case TRG_COLTYPE_RATIO:
@@ -368,8 +362,7 @@ static void trg_tree_view_add_column_after(TrgTreeView * tv,
column = gtk_tree_view_column_new_with_attributes(desc->header,
renderer,
"ratio-value",
- desc->
- model_column,
+ desc->model_column,
NULL);
break;
case TRG_COLTYPE_WANTED:
@@ -394,8 +387,7 @@ static void trg_tree_view_add_column_after(TrgTreeView * tv,
column = gtk_tree_view_column_new_with_attributes(desc->header,
renderer,
"priority-value",
- desc->
- model_column,
+ desc->model_column,
NULL);
break;
case TRG_COLTYPE_NUMGTZERO:
@@ -403,8 +395,7 @@ static void trg_tree_view_add_column_after(TrgTreeView * tv,
column = gtk_tree_view_column_new_with_attributes(desc->header,
renderer,
"value",
- desc->
- model_column,
+ desc->model_column,
NULL);
break;
case TRG_COLTYPE_NUMGTEQZERO:
@@ -412,8 +403,7 @@ static void trg_tree_view_add_column_after(TrgTreeView * tv,
column = gtk_tree_view_column_new_with_attributes(desc->header,
renderer,
"value",
- desc->
- model_column,
+ desc->model_column,
NULL);
break;
}
@@ -567,8 +557,7 @@ void trg_tree_view_setup_columns(TrgTreeView * tv)
json_node_get_string
((JsonNode
*)
- cli->
- data));
+ cli->data));
if (desc) {
gint64 width = json_node_get_int((JsonNode *) wli->data);
trg_tree_view_add_column(tv, desc, width);