gui: update tab reordering
Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
This commit is contained in:
parent
587eacfdd4
commit
eb5a65069a
|
@ -37,6 +37,7 @@ public:
|
||||||
void tab_set_size();
|
void tab_set_size();
|
||||||
void queue_set_number(unsigned int);
|
void queue_set_number(unsigned int);
|
||||||
void on_tab_reordered();
|
void on_tab_reordered();
|
||||||
|
void on_move_queue(int);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GTK-MM Callbacks
|
* GTK-MM Callbacks
|
||||||
|
@ -44,7 +45,7 @@ public:
|
||||||
void on_close_clicked();
|
void on_close_clicked();
|
||||||
};
|
};
|
||||||
|
|
||||||
static std::map<Playqueue *, QueueTab *> queue_mapping;
|
static std::map<Gtk::Widget *, QueueTab *> queue_mapping;
|
||||||
|
|
||||||
|
|
||||||
QueueTab :: QueueTab(Playqueue *pq, unsigned int num)
|
QueueTab :: QueueTab(Playqueue *pq, unsigned int num)
|
||||||
|
@ -80,15 +81,16 @@ QueueTab :: QueueTab(Playqueue *pq, unsigned int num)
|
||||||
tab_widget = &q_vbox;
|
tab_widget = &q_vbox;
|
||||||
|
|
||||||
tab_finish_init();
|
tab_finish_init();
|
||||||
queue_mapping[pq] = this;
|
queue_mapping[tab_widget] = this;
|
||||||
|
|
||||||
get_widget<Gtk::Notebook>("o_notebook")->insert_page(q_vbox, q_tab_box, num);
|
get_widget<Gtk::Notebook>("o_notebook")->insert_page(q_vbox, q_tab_box, num);
|
||||||
|
get_widget<Gtk::Notebook>("o_notebook")->set_tab_reorderable(q_vbox);
|
||||||
q_vbox.show_all();
|
q_vbox.show_all();
|
||||||
}
|
}
|
||||||
|
|
||||||
QueueTab :: ~QueueTab()
|
QueueTab :: ~QueueTab()
|
||||||
{
|
{
|
||||||
queue_mapping.erase(tab_pq);
|
queue_mapping.erase(tab_widget);
|
||||||
tab_unmap();
|
tab_unmap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,6 +126,11 @@ void QueueTab :: on_tab_reordered()
|
||||||
queue_set_number(tab_page_num());
|
queue_set_number(tab_page_num());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QueueTab :: on_move_queue(int num)
|
||||||
|
{
|
||||||
|
deck :: move(tab_pq, num);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -146,7 +153,7 @@ void QueueTab :: on_close_clicked()
|
||||||
*/
|
*/
|
||||||
static void renumber_queues()
|
static void renumber_queues()
|
||||||
{
|
{
|
||||||
std::map<Playqueue *, QueueTab *>::iterator it;
|
std::map<Gtk::Widget *, QueueTab *>::iterator it;
|
||||||
for (it = queue_mapping.begin(); it != queue_mapping.end(); it++)
|
for (it = queue_mapping.begin(); it != queue_mapping.end(); it++)
|
||||||
it->second->on_tab_reordered();
|
it->second->on_tab_reordered();
|
||||||
}
|
}
|
||||||
|
@ -166,9 +173,29 @@ static void on_pq_removed(Playqueue *pq)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void on_page_reordered(Gtk::Widget *page, int num)
|
||||||
|
{
|
||||||
|
Gtk::Notebook *notebook = get_widget<Gtk::Notebook>("o_notebook");
|
||||||
|
|
||||||
|
if ((unsigned int)num >= deck :: size()) {
|
||||||
|
notebook->reorder_child(*page, deck::size() - 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::map<Gtk::Widget *, QueueTab *>::iterator it;
|
||||||
|
it = queue_mapping.find(page);
|
||||||
|
if (it != queue_mapping.end()) {
|
||||||
|
it->second->on_move_queue(num);
|
||||||
|
renumber_queues();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void init_queue_tabs()
|
void init_queue_tabs()
|
||||||
{
|
{
|
||||||
struct Callbacks *cb = get_callbacks();
|
struct Callbacks *cb = get_callbacks();
|
||||||
cb->on_pq_created = on_pq_created;
|
cb->on_pq_created = on_pq_created;
|
||||||
cb->on_pq_removed = on_pq_removed;
|
cb->on_pq_removed = on_pq_removed;
|
||||||
|
|
||||||
|
Gtk::Notebook *notebook = get_widget<Gtk::Notebook>("o_notebook");
|
||||||
|
notebook->signal_page_reordered().connect(sigc::ptr_fun(on_page_reordered));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue