chiark
/
gitweb
/
~mdw
/
disorder
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
28b4af0
)
Switch Disobedience reset (i.e. fresh login) notification over to
author
Richard Kettlewell
<rjk@greenend.org.uk>
Mon, 9 Jun 2008 07:22:50 +0000
(08:22 +0100)
committer
Richard Kettlewell
<rjk@greenend.org.uk>
Mon, 9 Jun 2008 07:22:50 +0000
(08:22 +0100)
event_() functions.
disobedience/choose.c
patch
|
blob
|
blame
|
history
disobedience/disobedience.c
patch
|
blob
|
blame
|
history
disobedience/disobedience.h
patch
|
blob
|
blame
|
history
disobedience/login.c
patch
|
blob
|
blame
|
history
disobedience/menu.c
patch
|
blob
|
blame
|
history
disobedience/properties.c
patch
|
blob
|
blame
|
history
diff --git
a/disobedience/choose.c
b/disobedience/choose.c
index 731c7a2eee64a83d48db9ccf002d7ab73e0a8976..9cfcc2e9a85a77857b11fc1759f3ad8b3ec2b7d1 100644
(file)
--- a/
disobedience/choose.c
+++ b/
disobedience/choose.c
@@
-1426,8
+1426,13
@@
static const struct tabtype tabtype_choose = {
/* Public entry points ----------------------------------------------------- */
/* Public entry points ----------------------------------------------------- */
-/** @brief Called to entirely reset the choose screen */
-static void choose_reset(void) {
+/** @brief Called when we have just logged in
+ *
+ * Entirely resets the choose tab.
+ */
+static void choose_logged_in(const char attribute((unused)) *event,
+ void attribute((unused)) *eventdata,
+ void attribute((unused)) *callbackdata) {
if(root)
undisplay_tree(root);
root = newnode(0/*parent*/, "<root>", "All files", "",
if(root)
undisplay_tree(root);
root = newnode(0/*parent*/, "<root>", "All files", "",
@@
-1506,8
+1511,8
@@
GtkWidget *choose_widget(void) {
NW(layout);
chooselayout = gtk_layout_new(0, 0);
gtk_widget_set_style(chooselayout, layout_style);
NW(layout);
chooselayout = gtk_layout_new(0, 0);
gtk_widget_set_style(chooselayout, layout_style);
- choose_
reset(
);
-
register_reset(choose_reset
);
+ choose_
logged_in(0, 0, 0
);
+
event_register("logged-in", choose_logged_in, 0
);
/* Create the popup menus */
NW(menu);
track_menu = gtk_menu_new();
/* Create the popup menus */
NW(menu);
track_menu = gtk_menu_new();
diff --git
a/disobedience/disobedience.c
b/disobedience/disobedience.c
index 6ee4803def54105d99108cc57d3a2751fa7c965d..5e32d2e1172b52b4cd99971bde9540cb25d14364 100644
(file)
--- a/
disobedience/disobedience.c
+++ b/
disobedience/disobedience.c
@@
-90,12
+90,6
@@
int rtp_supported;
/** @brief True if RTP play is enabled */
int rtp_is_running;
/** @brief True if RTP play is enabled */
int rtp_is_running;
-/** @brief Linked list of functions to call when we reset login parameters */
-static struct reset_callback_node {
- struct reset_callback_node *next;
- reset_callback *callback;
-} *resets;
-
/* Window creation --------------------------------------------------------- */
/* Note that all the client operations kicked off from here will only complete
/* Window creation --------------------------------------------------------- */
/* Note that all the client operations kicked off from here will only complete
@@
-408,29
+402,16
@@
static void help(void) {
exit(0);
}
exit(0);
}
-/* reset state */
-void reset(void) {
- struct reset_callback_node *r;
-
+void logged_in(void) {
/* reset the clients */
disorder_eclient_close(client);
disorder_eclient_close(logclient);
rtp_supported = 0;
/* reset the clients */
disorder_eclient_close(client);
disorder_eclient_close(logclient);
rtp_supported = 0;
- for(r = resets; r; r = r->next)
- r->callback();
+ event_raise("logged-in", 0);
/* Might be a new server so re-check */
check_rtp_address();
}
/* Might be a new server so re-check */
check_rtp_address();
}
-/** @brief Register a reset callback */
-void register_reset(reset_callback *callback) {
- struct reset_callback_node *const r = xmalloc(sizeof *r);
-
- r->next = resets;
- r->callback = callback;
- resets = r;
-}
-
int main(int argc, char **argv) {
int n;
gboolean gtkok;
int main(int argc, char **argv) {
int n;
gboolean gtkok;
@@
-483,7
+464,6
@@
int main(int argc, char **argv) {
maybe_send_nop,
0/*data*/,
0/*notify*/);
maybe_send_nop,
0/*data*/,
0/*notify*/);
- register_reset(properties_reset);
/* Start monitoring the log */
disorder_eclient_log(logclient, &log_callbacks, 0);
/* See if RTP play supported */
/* Start monitoring the log */
disorder_eclient_log(logclient, &log_callbacks, 0);
/* See if RTP play supported */
diff --git
a/disobedience/disobedience.h
b/disobedience/disobedience.h
index 452526d9fd8f26ca818070dcc70e227db7d4bdd2..d945e32c8997629d8dee9cf36a0bec69ec5c5a04 100644
(file)
--- a/
disobedience/disobedience.h
+++ b/
disobedience/disobedience.h
@@
-134,8
+134,6
@@
void popup_protocol_error(int code,
void properties(int ntracks, const char **tracks);
/* Pop up a properties window for a list of tracks */
void properties(int ntracks, const char **tracks);
/* Pop up a properties window for a list of tracks */
-void properties_reset(void);
-
GtkWidget *scroll_widget(GtkWidget *child);
/* Wrap a widget up for scrolling */
GtkWidget *scroll_widget(GtkWidget *child);
/* Wrap a widget up for scrolling */
@@
-166,13
+164,7
@@
GtkWidget *create_buttons_box(struct button *buttons,
size_t nbuttons,
GtkWidget *box);
size_t nbuttons,
GtkWidget *box);
-/** @brief Type signature for a reset callback */
-typedef void reset_callback(void);
-
-void register_reset(reset_callback *callback);
-/* Register a reset callback */
-
-void reset(void);
+void logged_in(void);
void all_update(void);
/* Update everything */
void all_update(void);
/* Update everything */
diff --git
a/disobedience/login.c
b/disobedience/login.c
index 18afce461642b353c49cc6fc6a9bfe06ddd0ca44..5831aa6cef6cc2455ae71cba2caca449b016ffe9 100644
(file)
--- a/
disobedience/login.c
+++ b/
disobedience/login.c
@@
-153,7
+153,7
@@
static void login_ok(GtkButton attribute((unused)) *button,
if(!disorder_connect(c)) {
/* Success; save the config and start using it */
login_save_config();
if(!disorder_connect(c)) {
/* Success; save the config and start using it */
login_save_config();
-
reset
();
+
logged_in
();
/* Pop down login window */
gtk_widget_destroy(login_window);
} else {
/* Pop down login window */
gtk_widget_destroy(login_window);
} else {
diff --git
a/disobedience/menu.c
b/disobedience/menu.c
index 209438cf5e0dfa3e48d7aa058c99897affbc0639..b52190efcb3391306282c7f9b573ddf2b24b1e26 100644
(file)
--- a/
disobedience/menu.c
+++ b/
disobedience/menu.c
@@
-244,8
+244,10
@@
static void menu_got_rights(void attribute((unused)) *v,
users_set_sensitive(!!(r & RIGHT_ADMIN));
}
users_set_sensitive(!!(r & RIGHT_ADMIN));
}
-/** @brief Called when we need to reset state */
-static void menu_reset(void) {
+/** @brief Called after a fresh login */
+static void menu_logged_in(const char attribute((unused)) *event,
+ void attribute((unused)) *eventdata,
+ void attribute((unused)) *callbackdata) {
users_set_sensitive(0); /* until we know better */
disorder_eclient_userinfo(client, menu_got_rights, config->username, "rights",
0);
users_set_sensitive(0); /* until we know better */
disorder_eclient_userinfo(client, menu_got_rights, config->username, "rights",
0);
@@
-419,8
+421,8
@@
GtkWidget *menubar(GtkWidget *w) {
assert(selectall_widget != 0);
assert(selectnone_widget != 0);
assert(properties_widget != 0);
assert(selectall_widget != 0);
assert(selectnone_widget != 0);
assert(properties_widget != 0);
-
register_reset(menu_reset
);
- menu_
reset(
);
+
event_register("logged-in", menu_logged_in, 0
);
+ menu_
logged_in(0, 0, 0
);
m = gtk_item_factory_get_widget(mainmenufactory,
"<GdisorderMain>");
set_tool_colors(m);
m = gtk_item_factory_get_widget(mainmenufactory,
"<GdisorderMain>");
set_tool_colors(m);
diff --git
a/disobedience/properties.c
b/disobedience/properties.c
index fe2bbf5a59a354eecaee5d7f8fea633dfa539cf7..57ed65d007ddd782e16a485d97a542f91c7f10b7 100644
(file)
--- a/
disobedience/properties.c
+++ b/
disobedience/properties.c
@@
-55,6
+55,10
@@
static void properties_ok(GtkButton *button, gpointer userdata);
static void properties_apply(GtkButton *button, gpointer userdata);
static void properties_cancel(GtkButton *button, gpointer userdata);
static void properties_apply(GtkButton *button, gpointer userdata);
static void properties_cancel(GtkButton *button, gpointer userdata);
+static void properties_logged_in(const char *event,
+ void *eventdata,
+ void *callbackdata);
+
/** @brief Data for a single preference */
struct prefdata {
const char *track;
/** @brief Data for a single preference */
struct prefdata {
const char *track;
@@
-157,6
+161,7
@@
static struct prefdata *prefdatas; /* Current prefdatas */
static GtkWidget *properties_window;
static GtkWidget *properties_table;
static struct progress_window *pw;
static GtkWidget *properties_window;
static GtkWidget *properties_table;
static struct progress_window *pw;
+static event_handle properties_event;
static void propagate_clicked(GtkButton attribute((unused)) *button,
gpointer userdata) {
static void propagate_clicked(GtkButton attribute((unused)) *button,
gpointer userdata) {
@@
-191,6
+196,7
@@
void properties(int ntracks, const char **tracks) {
popup_msg(GTK_MESSAGE_ERROR, "Too many tracks selected");
return;
}
popup_msg(GTK_MESSAGE_ERROR, "Too many tracks selected");
return;
}
+ properties_event = event_register("logged-in", properties_logged_in, 0);
/* Create a new properties window */
properties_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_set_style(properties_window, tool_style);
/* Create a new properties window */
properties_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_set_style(properties_window, tool_style);
@@
-489,13
+495,17
@@
static void properties_apply(GtkButton attribute((unused)) *button,
static void properties_cancel(GtkButton attribute((unused)) *button,
gpointer attribute((unused)) userdata) {
gtk_widget_destroy(properties_window);
static void properties_cancel(GtkButton attribute((unused)) *button,
gpointer attribute((unused)) userdata) {
gtk_widget_destroy(properties_window);
+ event_cancel(properties_event);
+ properties_event = 0;
}
}
-/** @brief Called
on client reset
+/** @brief Called
when we've just logged in
*
* Destroys the current properties window.
*/
*
* Destroys the current properties window.
*/
-void properties_reset(void) {
+static void properties_logged_in(const char attribute((unused)) *event,
+ void attribute((unused)) *eventdata,
+ void attribute((unused)) *callbackdata) {
if(properties_window)
gtk_widget_destroy(properties_window);
}
if(properties_window)
gtk_widget_destroy(properties_window);
}