diff --git a/avgen.c b/avgen.c index 0fb7ae49..73b742b9 100644 --- a/avgen.c +++ b/avgen.c @@ -100,7 +100,7 @@ avgen_init(void) if(avcodec_find_encoder(CODEC_ID_MP2) == NULL) return; - ch = channel_find("Test 1", 1, NULL); + ch = channel_find("Test 1", 1, channel_group_find("Test channels", 1)); t = calloc(1, sizeof(th_transport_t)); t->tht_prio = 100; diff --git a/channels.c b/channels.c index 3468abbe..0384734f 100644 --- a/channels.c +++ b/channels.c @@ -356,6 +356,33 @@ channel_group_by_tag(uint32_t tag) return NULL; } +void +channel_group_move_next(th_channel_group_t *tcg) +{ + th_channel_group_t *n = TAILQ_NEXT(tcg, tcg_global_link); + if(n == NULL) + return; + + TAILQ_REMOVE(&all_channel_groups, tcg, tcg_global_link); + TAILQ_INSERT_AFTER(&all_channel_groups, n, tcg, tcg_global_link); + channel_settings_write(); +} + +void +channel_group_move_prev(th_channel_group_t *tcg) +{ + th_channel_group_t *p = TAILQ_PREV(tcg, th_channel_group_queue, + tcg_global_link); + if(p == NULL) + return; + + TAILQ_REMOVE(&all_channel_groups, tcg, tcg_global_link); + TAILQ_INSERT_BEFORE(p, tcg, tcg_global_link); + channel_settings_write(); +} + + + /** * */ diff --git a/channels.h b/channels.h index 1fba6a71..2ec3bc56 100644 --- a/channels.h +++ b/channels.h @@ -40,5 +40,10 @@ th_channel_group_t *channel_group_by_tag(uint32_t tag); void channel_group_destroy(th_channel_group_t *tcg); +void channel_group_move_prev(th_channel_group_t *tcg); + +void channel_group_move_next(th_channel_group_t *tcg); + void channel_settings_write(void); + #endif /* CHANNELS_H */ diff --git a/htmlui.c b/htmlui.c index 6ff41fd5..3e3cd471 100644 --- a/htmlui.c +++ b/htmlui.c @@ -1238,14 +1238,25 @@ page_chgroups(http_connection_t *hc, const char *remain, void *opaque) channel_group_find(grp, 1); LIST_FOREACH(ra, &hc->hc_url_args, link) { - if(!strncmp(ra->key, "delgroup", 8)) + if(!strncmp(ra->key, "delgroup", 8)) { + tcg = channel_group_by_tag(atoi(ra->key + 8)); + if(tcg != NULL) + channel_group_destroy(tcg); break; - } + } - if(ra != NULL) { - tcg = channel_group_by_tag(atoi(ra->key + 8)); - if(tcg != NULL) { - channel_group_destroy(tcg); + if(!strncmp(ra->key, "up", 2)) { + tcg = channel_group_by_tag(atoi(ra->key + 2)); + if(tcg != NULL) + channel_group_move_prev(tcg); + break; + } + + if(!strncmp(ra->key, "down", 4)) { + tcg = channel_group_by_tag(atoi(ra->key + 4)); + if(tcg != NULL) + channel_group_move_next(tcg); + break; } } @@ -1266,19 +1277,25 @@ page_chgroups(http_connection_t *hc, const char *remain, void *opaque) TAILQ_FOREACH(ch, &tcg->tcg_channels, ch_group_link) cnt++; - tcp_qprintf(&tq, "%s (%d channels)
", tcg->tcg_name, cnt); + tcp_qprintf(&tq, "%s (%d channels)

", tcg->tcg_name, cnt); + + tcp_qprintf(&tq, + " ", tcg->tcg_tag); + + tcp_qprintf(&tq, + " ", tcg->tcg_tag); if(tcg->tcg_cant_delete_me == 0) { tcp_qprintf(&tq, "" - "", tcg->tcg_tag); + " value=\"Delete this group\">", tcg->tcg_tag); } tcp_qprintf(&tq, ""); box_bottom(&tq); tcp_qprintf(&tq, "
\r\n"); - } @@ -1294,8 +1311,6 @@ page_chgroups(http_connection_t *hc, const char *remain, void *opaque) box_bottom(&tq); tcp_qprintf(&tq, "
\r\n"); - - http_output_queue(hc, &tq, "text/html; charset=UTF-8"); return 0; }