ocarina: Hide queue when empty

This was something that I did in 4.x, and I like the feature.  Who wants
to see an empty notebook page?
This commit is contained in:
Bryan Schumaker 2011-12-11 17:56:24 -05:00
parent e983d69322
commit e987eaa3a4
5 changed files with 39 additions and 4 deletions

View File

@ -2,8 +2,11 @@
#define OCARINA_BODY_H
#include <ocarina/gtk.h>
#include <ocarina/page.h>
GtkWidget *get_tabs();
void add_page(GtkWidget *, GtkWidget *, bool);
unsigned int add_page(GtkWidget *, GtkWidget *, bool);
void hide_page(unsigned int);
void show_page(unsigned int);
#endif /* OCARINA_BODY_H */

View File

@ -18,6 +18,9 @@ class Page
void add_footer(GtkWidget *);
void remove_header(GtkWidget *);
void remove_footer(GtkWidget *);
void hide();
void show();
};
#endif /* OCARINA_PAGE_H */

View File

@ -49,3 +49,13 @@ GtkWidget *Page::get_page()
{
return table;
}
void Page::hide()
{
gtk_widget_hide(table);
}
void Page::show()
{
gtk_widget_show(table);
}

View File

@ -52,8 +52,9 @@ GtkWidget *get_tabs()
return tabs;
}
void add_page(GtkWidget *label, GtkWidget *content, bool fill)
unsigned int add_page(GtkWidget *label, GtkWidget *content, bool fill)
{
unsigned int index = pages.size();
Page page(content);
pages.push_back(page);
@ -65,4 +66,16 @@ void add_page(GtkWidget *label, GtkWidget *content, bool fill)
TRUE,
GTK_PACK_START);
}
return index;
};
void hide_page(unsigned int index)
{
pages[index].hide();
}
void show_page(unsigned int index)
{
pages[index].show();
}

View File

@ -12,6 +12,7 @@ using namespace std;
static SongList queue_list;
static struct SongListFuncs queue_funcs;
static list <MenuItem> queue_menu;
unsigned int queue_index;;
namespace ocarina
{
@ -19,7 +20,11 @@ namespace ocarina
void queue::refresh()
{
queue_list.clear();
queue_list.fill();
if (libsaria::queue::size() > 0) {
queue_list.fill();
show_page(queue_index);
} else
hide_page(queue_index);
}
void queue::init()
@ -28,7 +33,8 @@ namespace ocarina
queue_funcs.size = libsaria::queue::size;
queue_list.init("Queue", &queue_funcs, &queue_menu);
add_page(queue_list.get_label(), queue_list.get_window(), true);
queue_index = add_page(queue_list.get_label(),
queue_list.get_window(), true);
ocarina::queue::refresh();
}