summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaurus Cuelenaere <mcuelenaere@gmail.com>2009-07-13 12:16:06 +0000
committerMaurus Cuelenaere <mcuelenaere@gmail.com>2009-07-13 12:16:06 +0000
commitc039d39a56579a206854fe0fd0f7b463d2b63932 (patch)
treea9b18e16e6835035cbca96aee70996fc3ac67699
parentb5b9cb031d0b1b3c802fde2f33e27ecf7d166778 (diff)
downloadrockbox-c039d39a56579a206854fe0fd0f7b463d2b63932.tar.gz
rockbox-c039d39a56579a206854fe0fd0f7b463d2b63932.zip
Make clix more usable on touchscreen targets
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21837 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/plugins/clix.c53
1 files changed, 37 insertions, 16 deletions
diff --git a/apps/plugins/clix.c b/apps/plugins/clix.c
index e04de3ca72..a6a3bdd626 100644
--- a/apps/plugins/clix.c
+++ b/apps/plugins/clix.c
@@ -139,31 +139,20 @@ PLUGIN_HEADER
139#elif CONFIG_KEYPAD == COWOND2_PAD 139#elif CONFIG_KEYPAD == COWOND2_PAD
140#define CLIX_BUTTON_QUIT BUTTON_POWER 140#define CLIX_BUTTON_QUIT BUTTON_POWER
141 141
142#elif (CONFIG_KEYPAD == ONDAVX747_PAD) || \ 142#elif (CONFIG_KEYPAD == ONDAVX747_PAD)
143 (CONFIG_KEYPAD == MROBE500_PAD) 143#define CLIX_BUTTON_QUIT BUTTON_POWER
144#define CLIX_BUTTON_CLICK BUTTON_MENU
145
146#elif (CONFIG_KEYPAD == MROBE500_PAD)
144#define CLIX_BUTTON_QUIT BUTTON_POWER 147#define CLIX_BUTTON_QUIT BUTTON_POWER
145 148
146#else 149#else
147#error "no keymap" 150#error "no keymap"
148#endif 151#endif
149 152
150#ifdef HAVE_TOUCHSCREEN
151#ifndef CLIX_BUTTON_LEFT
152#define CLIX_BUTTON_LEFT BUTTON_MIDLEFT
153#endif
154#ifndef CLIX_BUTTON_RIGHT
155#define CLIX_BUTTON_RIGHT BUTTON_MIDRIGHT
156#endif
157#ifndef CLIX_BUTTON_CLICK 153#ifndef CLIX_BUTTON_CLICK
158#define CLIX_BUTTON_CLICK BUTTON_CENTER 154#define CLIX_BUTTON_CLICK BUTTON_CENTER
159#endif 155#endif
160#ifndef CLIX_BUTTON_UP
161#define CLIX_BUTTON_UP BUTTON_TOPMIDDLE
162#endif
163#ifndef CLIX_BUTTON_DOWN
164#define CLIX_BUTTON_DOWN BUTTON_BOTTOMMIDDLE
165#endif
166#endif
167 156
168#define HIGHSCORE_FILE PLUGIN_GAMES_DIR "/clix.score" 157#define HIGHSCORE_FILE PLUGIN_GAMES_DIR "/clix.score"
169#define NUM_SCORES 5 158#define NUM_SCORES 5
@@ -717,8 +706,36 @@ static int clix_handle_game(struct clix_game_state_t* state)
717 rb->button_get_w_tmo(end - *rb->current_tick); 706 rb->button_get_w_tmo(end - *rb->current_tick);
718 button = rb->button_status(); 707 button = rb->button_status();
719 rb->button_clear_queue(); 708 rb->button_clear_queue();
709#ifdef HAVE_TOUCHSCREEN
710 if(button & BUTTON_TOUCHSCREEN)
711 {
712 int x = rb->button_get_data() >> 16;
713 int y = rb->button_get_data() & 0xffff;
714
715 x -= XOFS;
716 y -= YOFS;
717 if(x >= 0 && y >= 0)
718 {
719 x /= CELL_SIZE + 1;
720 y /= CELL_SIZE + 1;
721
722 if(x < BOARD_WIDTH && y < BOARD_HEIGHT
723 && state->board[XYPOS(x, y)] != CC_BLACK)
724 {
725 if(state->x == x && state->y == y)
726 button = CLIX_BUTTON_CLICK;
727 else
728 {
729 state->x = x;
730 state->y = y;
731 }
732 }
733 }
734 }
735#endif
720 switch( button) 736 switch( button)
721 { 737 {
738#ifndef HAVE_TOUCHSCREEN
722#ifdef CLIX_BUTTON_SCROLL_BACK 739#ifdef CLIX_BUTTON_SCROLL_BACK
723 case CLIX_BUTTON_SCROLL_BACK: 740 case CLIX_BUTTON_SCROLL_BACK:
724#endif 741#endif
@@ -761,6 +778,7 @@ static int clix_handle_game(struct clix_game_state_t* state)
761 clix_move_cursor(state, true); 778 clix_move_cursor(state, true);
762 779
763 break; 780 break;
781#endif
764 case CLIX_BUTTON_CLICK: 782 case CLIX_BUTTON_CLICK:
765 { 783 {
766 if (state->selected_count > 1) { 784 if (state->selected_count > 1) {
@@ -840,6 +858,9 @@ enum plugin_status plugin_start(const void* parameter)
840 rb->lcd_set_foreground(LCD_WHITE); 858 rb->lcd_set_foreground(LCD_WHITE);
841 rb->lcd_set_background(LCD_BLACK); 859 rb->lcd_set_background(LCD_BLACK);
842 rb->lcd_setfont(FONT_SYSFIXED); 860 rb->lcd_setfont(FONT_SYSFIXED);
861#ifdef HAVE_TOUCHSCREEN
862 rb->touchscreen_set_mode(TOUCHSCREEN_POINT);
863#endif
843 864
844 highscore_load(HIGHSCORE_FILE, highest, NUM_SCORES); 865 highscore_load(HIGHSCORE_FILE, highest, NUM_SCORES);
845 866