Change to priority classes. Will probably require some fixings.

- Now using priority classes internally and in protocol
- Converting (depreciated) priorty numbers to the classes BACKGROUND,
  INFO and FOREGROUND
- Added menu_goto command (only works when menu not active)
This commit is contained in:
robijn
2003-02-27 21:20:20 +00:00
parent 4a7ef8d847
commit 71922063b8
19 changed files with 372 additions and 292 deletions
+31 -41
View File
@@ -6,6 +6,7 @@
* COPYING file distributed with this package.
*
* Copyright (c) 1999, William Ferrell, Scott Scriven
* 2003, Joris Robijn
*
*
* Handles keypad (and other?) input from the user.
@@ -28,12 +29,19 @@
#include "input.h"
LinkedList * keylist;
char * toggle_rotate_key = "Enter";
char * prev_screen_key = "Left";
char * next_screen_key = "Right";
char * scroll_up_key = "Up";
char * scroll_down_key = "Down";
/* Local functions */
int server_input (int key);
void input_send_to_client (Client * c, char * key);
void input_internal_key (char * key);
LinkedList * keylist;
int input_init()
{
@@ -44,6 +52,7 @@ int input_init()
return 0;
}
int input_shutdown()
{
if (!keylist) {
@@ -56,6 +65,7 @@ int input_shutdown()
return 0;
}
int
handle_input ()
{
@@ -93,12 +103,13 @@ handle_input ()
} else {
/* It's an external client */
report (RPT_DEBUG, "%s: key is for external client on socket %d", __FUNCTION__, target->sock );
input_send_to_client (current_client, key);
input_send_to_client (target, key);
}
}
return 0;
}
void input_send_to_client (Client * c, char * key)
{
char * s;
@@ -112,52 +123,31 @@ void input_send_to_client (Client * c, char * key)
free (s);
}
void
input_internal_key (char * key)
{
if (is_menu_key(key) || screenlist_current() == menuscreen) {
menuscreen_key_handler (key);
if( is_menu_key(key) || screenlist_current() == menuscreen ) {
menuscreen_key_handler(key);
}
else {
/* TODO: give keys to server screen */
/* Keys are for scrolling or rotating */
if( strcmp(key,toggle_rotate_key) == 0 ) {
autorotate = !autorotate;
}
else if( strcmp(key,prev_screen_key) == 0 ) {
screenlist_goto_prev ();
}
else if( strcmp(key,next_screen_key) == 0 ) {
screenlist_goto_next ();
}
else if( strcmp(key,scroll_up_key) == 0 ) {
}
else if( strcmp(key,scroll_down_key) == 0 ) {
}
}
}
/* TODO: REPLACE THE FOLLOWING FUNCTION BY SOMETHING NEW */
int
server_input (int key)
{
debug(RPT_DEBUG, "%s( key='%c' )", __FUNCTION__, (char) key);
switch ((char) key) {
case INPUT_PAUSE_KEY:
if (screenlist_action == SCR_HOLD)
screenlist_action = 0;
else
screenlist_action = SCR_HOLD;
break;
case INPUT_BACK_KEY:
screenlist_action = SCR_BACK;
screenlist_prev ();
break;
case INPUT_FORWARD_KEY:
screenlist_action = SCR_SKIP;
screenlist_next ();
break;
case INPUT_MAIN_MENU_KEY:
debug (RPT_DEBUG, "%s: got the menu key!", __FUNCTION__);
//server_menu ();
report (RPT_ERR, "MENU TEMPORATY DISABLED");
break;
default:
debug (RPT_DEBUG, "%s: Unused key \"%c\" (%i)", __FUNCTION__, (char) key, key);
break;
}
return 0;
}
int input_reserve_key (char * key, bool exclusive, Client * client)
{
KeyReservation * kr;