summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/session-get.c5
-rw-r--r--src/session-get.h2
-rw-r--r--src/torrent.c1
-rw-r--r--src/trg-client.c2
-rw-r--r--src/trg-main-window.c16
-rw-r--r--src/trg-state-selector.c12
-rw-r--r--src/trg-status-bar.c82
-rw-r--r--src/trg-status-bar.h6
8 files changed, 76 insertions, 50 deletions
diff --git a/src/session-get.c b/src/session-get.c
index 4251749..ea523de 100644
--- a/src/session-get.c
+++ b/src/session-get.c
@@ -31,6 +31,11 @@ int session_get_version(JsonObject * s, float *version)
return sscanf(versionStr, "%g", version);
}
+gint64 session_get_download_dir_free_space(JsonObject *s)
+{
+ return json_object_get_int_member(s, SGET_DOWNLOAD_DIR_FREE_SPACE);
+}
+
gint64 session_get_rpc_version(JsonObject * s)
{
return json_object_get_int_member(s, SGET_RPC_VERSION);
diff --git a/src/session-get.h b/src/session-get.h
index 98448cc..7bb4c38 100644
--- a/src/session-get.h
+++ b/src/session-get.h
@@ -22,6 +22,7 @@
#include <glib-object.h>
+#define SGET_DOWNLOAD_DIR_FREE_SPACE "download-dir-free-space"
#define SGET_ALT_SPEED_DOWN "alt-speed-down"
#define SGET_ALT_SPEED_ENABLED "alt-speed-enabled"
#define SGET_ALT_SPEED_TIME_BEGIN "alt-speed-time-begin"
@@ -99,5 +100,6 @@ gint64 session_get_download_queue_size(JsonObject * s);
gboolean session_get_seed_queue_enabled(JsonObject * s);
gint64 session_get_seed_queue_size(JsonObject * s);
gint64 session_get_rpc_version(JsonObject * s);
+gint64 session_get_download_dir_free_space(JsonObject *s);
#endif /* SESSION_GET_H_ */
diff --git a/src/torrent.c b/src/torrent.c
index cc9f0f8..bdd6d75 100644
--- a/src/torrent.c
+++ b/src/torrent.c
@@ -304,6 +304,7 @@ gchar *torrent_get_status_string(gint64 rpcv, gint64 value)
}
}
+ g_warning("Unknown status: %ld", value);
return g_strdup(_("Unknown"));
}
diff --git a/src/trg-client.c b/src/trg-client.c
index fb57a93..db5a051 100644
--- a/src/trg-client.c
+++ b/src/trg-client.c
@@ -179,7 +179,7 @@ int trg_client_populate_with_settings(TrgClient * tc)
if (!host) {
return TRG_NO_HOSTNAME_SET;
} else if (strlen(host) < 1) {
- free(host);
+ g_free(host);
return TRG_NO_HOSTNAME_SET;
}
diff --git a/src/trg-main-window.c b/src/trg-main-window.c
index 7f36064..84efee0 100644
--- a/src/trg-main-window.c
+++ b/src/trg-main-window.c
@@ -165,8 +165,6 @@ static gboolean torrent_tv_button_pressed_cb(GtkWidget * treeview,
GdkEventButton * event, gpointer userdata);
static gboolean torrent_tv_popup_menu_cb(GtkWidget * treeview,
gpointer userdata);
-static void status_bar_text_pushed(GtkStatusbar * statusbar, guint context_id,
- gchar * text, gpointer user_data);
static gboolean window_state_event(GtkWidget * widget,
GdkEventWindowState * event, gpointer trayIcon);
@@ -429,7 +427,7 @@ static void disconnect_cb(GtkWidget * w G_GNUC_UNUSED, gpointer data) {
TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(data);
trg_main_window_conn_changed(TRG_MAIN_WINDOW(data), FALSE);
- trg_status_bar_push_connection_msg(priv->statusBar, "Disconnected.");
+ trg_status_bar_reset(priv->statusBar);
}
static void connect_cb(GtkWidget * w G_GNUC_UNUSED, gpointer data) {
@@ -1473,14 +1471,6 @@ static gboolean torrent_tv_popup_menu_cb(GtkWidget * treeview,
return TRUE;
}
-static void status_bar_text_pushed(GtkStatusbar * statusbar, guint context_id,
- gchar * text, gpointer user_data) {
- TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(user_data);
-
- if (priv->statusIcon)
- gtk_status_icon_set_tooltip(priv->statusIcon, text);
-}
-
static gboolean window_state_event(GtkWidget * widget,
GdkEventWindowState * event, gpointer trayIcon) {
TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(widget);
@@ -1706,8 +1696,8 @@ static GObject *trg_main_window_constructor(GType type,
priv->statusIcon = NULL;
priv->statusBar = trg_status_bar_new();
- g_signal_connect(priv->statusBar, "text-pushed",
- G_CALLBACK(status_bar_text_pushed), self);
+ /*g_signal_connect(priv->statusBar, "text-pushed",
+ G_CALLBACK(status_bar_text_pushed), self);*/
gtk_box_pack_start(GTK_BOX(outerVbox), GTK_WIDGET(priv->statusBar), FALSE,
FALSE, 2);
diff --git a/src/trg-state-selector.c b/src/trg-state-selector.c
index aa39f8f..dde1e0f 100644
--- a/src/trg-state-selector.c
+++ b/src/trg-state-selector.c
@@ -34,7 +34,7 @@ enum {
SELECTOR_SIGNAL_COUNT
};
-#define N_CATEGORIES 10
+#define N_CATEGORIES 12
static guint signals[SELECTOR_SIGNAL_COUNT] = { 0 };
@@ -477,18 +477,20 @@ static void trg_state_selector_init(TrgStateSelector * self)
trg_state_selector_add_state(store, &iter, GTK_STOCK_GO_DOWN,
_("Downloading"),
TORRENT_FLAG_DOWNLOADING);
+ trg_state_selector_add_state(store, &iter, GTK_STOCK_MEDIA_REWIND, _("Queue Down"), TORRENT_FLAG_DOWNLOADING_WAIT);
+ trg_state_selector_add_state(store, &iter, GTK_STOCK_GO_UP,
+ _("Seeding"), TORRENT_FLAG_SEEDING);
+ trg_state_selector_add_state(store, &iter, GTK_STOCK_MEDIA_FORWARD, _("Queue Up"), TORRENT_FLAG_SEEDING_WAIT);
trg_state_selector_add_state(store, &iter, GTK_STOCK_MEDIA_PAUSE,
_("Paused"), TORRENT_FLAG_PAUSED);
- trg_state_selector_add_state(store, &iter, GTK_STOCK_REFRESH,
- _("Checking"), TORRENT_FLAG_CHECKING);
trg_state_selector_add_state(store, &iter, GTK_STOCK_APPLY,
_("Complete"), TORRENT_FLAG_COMPLETE);
trg_state_selector_add_state(store, &iter, GTK_STOCK_SELECT_ALL,
_("Incomplete"), TORRENT_FLAG_INCOMPLETE);
- trg_state_selector_add_state(store, &iter, GTK_STOCK_GO_UP,
- _("Seeding"), TORRENT_FLAG_SEEDING);
trg_state_selector_add_state(store, &iter, GTK_STOCK_NETWORK,
_("Active"), TORRENT_FLAG_ACTIVE);
+ trg_state_selector_add_state(store, &iter, GTK_STOCK_REFRESH,
+ _("Checking"), TORRENT_FLAG_CHECKING);
trg_state_selector_add_state(store, &iter, GTK_STOCK_DIALOG_WARNING,
_("Error"), TORRENT_FLAG_ERROR);
trg_state_selector_add_state(store, &iter, NULL, NULL, 0);
diff --git a/src/trg-status-bar.c b/src/trg-status-bar.c
index 8ccbe72..5c2002b 100644
--- a/src/trg-status-bar.c
+++ b/src/trg-status-bar.c
@@ -26,14 +26,15 @@
#include "session-get.h"
#include "util.h"
-G_DEFINE_TYPE(TrgStatusBar, trg_status_bar, GTK_TYPE_STATUSBAR)
+G_DEFINE_TYPE(TrgStatusBar, trg_status_bar, GTK_TYPE_HBOX)
#define TRG_STATUS_BAR_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE ((o), TRG_TYPE_STATUS_BAR, TrgStatusBarPrivate))
typedef struct _TrgStatusBarPrivate TrgStatusBarPrivate;
struct _TrgStatusBarPrivate {
- guint connectionCtx;
- guint countSpeedsCtx;
+ GtkWidget *speed_lbl;
+ GtkWidget *free_lbl;
+ GtkWidget *info_lbl;
};
static void trg_status_bar_class_init(TrgStatusBarClass * klass)
@@ -41,26 +42,36 @@ static void trg_status_bar_class_init(TrgStatusBarClass * klass)
g_type_class_add_private(klass, sizeof(TrgStatusBarPrivate));
}
+void trg_status_bar_reset(TrgStatusBar *sb)
+{
+ TrgStatusBarPrivate *priv = TRG_STATUS_BAR_GET_PRIVATE(sb);
+
+ gtk_label_set_text(GTK_LABEL(priv->info_lbl), _("Disconnected"));
+ gtk_label_set_text(GTK_LABEL(priv->free_lbl), "");
+ gtk_label_set_text(GTK_LABEL(priv->speed_lbl), "");
+}
+
static void trg_status_bar_init(TrgStatusBar * self)
{
TrgStatusBarPrivate *priv = TRG_STATUS_BAR_GET_PRIVATE(self);
+ gtk_container_set_border_width (GTK_CONTAINER(self), 2);
- priv->connectionCtx =
- gtk_statusbar_get_context_id(GTK_STATUSBAR(self), "connection");
- priv->countSpeedsCtx =
- gtk_statusbar_get_context_id(GTK_STATUSBAR(self),
- "counts and speeds");
+ priv->info_lbl = gtk_label_new(_("Disconnected"));
+ gtk_box_pack_start(GTK_BOX(self), priv->info_lbl, FALSE, TRUE, 0);
+
+ priv->speed_lbl = gtk_label_new(NULL);
+ gtk_box_pack_end(GTK_BOX(self), priv->speed_lbl, FALSE, TRUE, 10);
+
+ priv->free_lbl = gtk_label_new(NULL);
+ gtk_box_pack_end(GTK_BOX(self), priv->free_lbl, FALSE, TRUE, 30);
}
void trg_status_bar_push_connection_msg(TrgStatusBar * sb,
const gchar * msg)
{
- TrgStatusBarPrivate *priv;
+ TrgStatusBarPrivate *priv = TRG_STATUS_BAR_GET_PRIVATE(sb);
- priv = TRG_STATUS_BAR_GET_PRIVATE(sb);
-
- gtk_statusbar_pop(GTK_STATUSBAR(sb), priv->connectionCtx);
- gtk_statusbar_push(GTK_STATUSBAR(sb), priv->connectionCtx, msg);
+ gtk_label_set_text(GTK_LABEL(priv->info_lbl), msg);
}
void trg_status_bar_connect(TrgStatusBar * sb, JsonObject * session)
@@ -72,7 +83,7 @@ void trg_status_bar_connect(TrgStatusBar * sb, JsonObject * session)
statusMsg =
g_strdup_printf
(_("Connected to Transmission %g, getting torrents..."), version);
- g_printf("%s\n", statusMsg);
+ g_message("%s", statusMsg);
trg_status_bar_push_connection_msg(sb, statusMsg);
g_free(statusMsg);
}
@@ -83,15 +94,15 @@ void trg_status_bar_update(TrgStatusBar * sb,
{
TrgStatusBarPrivate *priv;
JsonObject *session;
- gchar *statusBarUpdate;
- gint64 uplimitraw, downlimitraw;
+ gchar *speedText, *infoText;
+ gint64 uplimitraw, downlimitraw, freeSpaceRaw;
gchar downRateTotalString[32], upRateTotalString[32];
- gchar uplimit[64], downlimit[64];
+ gchar uplimit[64], downlimit[64], freeSpace[64];
priv = TRG_STATUS_BAR_GET_PRIVATE(sb);
session = trg_client_get_session(client);
- /* The session should always exist otherwise this function wouldn't be called */
+ // The session should always exist otherwise this function wouldn't be called
downlimitraw =
json_object_get_boolean_member(session,
SGET_SPEED_LIMIT_DOWN_ENABLED) ?
@@ -122,19 +133,34 @@ void trg_status_bar_update(TrgStatusBar * sb,
downlimitstring);
}
- statusBarUpdate =
+ speedText = g_strdup_printf(_("Down: %s%s, Up: %s%s"), downRateTotalString,
+ downlimitraw >= 0 ? downlimit : "", upRateTotalString,
+ uplimitraw >= 0 ? uplimit : "");
+
+ infoText =
g_strdup_printf
(ngettext
- ("%d torrent .. Down %s%s, Up %s%s .. %d seeding, %d downloading, %d paused",
- "%d torrents .. Down %s%s, Up %s%s .. %d seeding, %d downloading, %d paused",
- stats->count), stats->count, downRateTotalString,
- downlimitraw >= 0 ? downlimit : "", upRateTotalString,
- uplimitraw >= 0 ? uplimit : "", stats->seeding, stats->down,
+ ("%d torrent: %d seeding, %d downloading, %d paused",
+ "%d torrents: %d seeding, %d downloading, %d paused",
+ stats->count), stats->count, stats->seeding, stats->down,
stats->paused);
- gtk_statusbar_pop(GTK_STATUSBAR(sb), priv->countSpeedsCtx);
- gtk_statusbar_push(GTK_STATUSBAR(sb),
- priv->countSpeedsCtx, statusBarUpdate);
- g_free(statusBarUpdate);
+
+ gtk_label_set_text(GTK_LABEL(priv->info_lbl), infoText);
+ gtk_label_set_text(GTK_LABEL(priv->speed_lbl), speedText);
+
+ freeSpaceRaw = session_get_download_dir_free_space(session);
+ if (freeSpaceRaw >= 0) {
+ gchar *freeSpaceString;
+ trg_strlsize(freeSpace, freeSpaceRaw);
+ freeSpaceString = g_strdup_printf(_("Free space: %s"), freeSpace);
+ gtk_label_set_text(GTK_LABEL(priv->free_lbl), freeSpaceString);
+ g_free(freeSpaceString);
+ } else {
+ gtk_label_set_text(GTK_LABEL(priv->free_lbl), "");
+ }
+
+ g_free(speedText);
+ g_free(infoText);
}
diff --git a/src/trg-status-bar.h b/src/trg-status-bar.h
index 4f7212e..a122dcb 100644
--- a/src/trg-status-bar.h
+++ b/src/trg-status-bar.h
@@ -17,7 +17,6 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-
#ifndef TRG_STATUS_BAR_H_
#define TRG_STATUS_BAR_H_
@@ -39,11 +38,11 @@ G_BEGIN_DECLS
#define TRG_STATUS_BAR_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS ((obj), TRG_TYPE_STATUS_BAR, TrgStatusBarClass))
typedef struct {
- GtkStatusbar parent;
+ GtkHBox parent;
} TrgStatusBar;
typedef struct {
- GtkStatusbarClass parent_class;
+ GtkHBoxClass parent_class;
} TrgStatusBarClass;
GType trg_status_bar_get_type(void);
@@ -57,5 +56,6 @@ G_END_DECLS
void trg_status_bar_connect(TrgStatusBar * sb, JsonObject * session);
void trg_status_bar_push_connection_msg(TrgStatusBar * sb,
const gchar * msg);
+void trg_status_bar_reset(TrgStatusBar *sb);
#endif /* TRG_STATUS_BAR_H_ */