| Line 53... |
Line 53... |
| 53 |
return CHOOSER_RESULT_OK;
|
53 |
return CHOOSER_RESULT_OK;
|
| 54 |
adata->timeout_remaining = params->timeout_idle;
|
54 |
adata->timeout_remaining = params->timeout_idle;
|
| 55 |
int spi = params->stepsperitem;
|
55 |
int spi = params->stepsperitem;
|
| 56 |
switch (event)
|
56 |
switch (event)
|
| 57 |
{
|
57 |
{
|
| 58 |
case BUTTON_PRESS:
|
58 |
case BUTTON_PRESS:
|
| 59 |
if (which < params->buttoncount)
|
59 |
if (which < params->buttoncount)
|
| 60 |
switch (params->buttonmap[which])
|
60 |
switch (params->buttonmap[which])
|
| 61 |
{
|
61 |
{
|
| 62 |
case CHOOSER_ACTION_HANDLER_WHEEL_ACTION_PREV:
|
62 |
case CHOOSER_ACTION_HANDLER_WHEEL_ACTION_PREV:
|
| 63 |
mutex_lock(&data->statemutex, TIMEOUT_BLOCK);
|
63 |
mutex_lock(&data->statemutex, TIMEOUT_BLOCK);
|
| 64 |
data->position = MIN(data->info->itemcount * spi,
|
64 |
data->position = MIN(data->info->itemcount * spi,
|
| 65 |
MAX(spi, data->position & ~(spi - 1))) - spi / 2;
|
65 |
MAX(spi, data->position & ~(spi - 1))) - spi / 2;
|
| 66 |
data->selected = &data->info->items[data->position / spi];
|
66 |
data->selected = &data->info->items[data->position / spi];
|
| 67 |
mutex_unlock(&data->statemutex);
|
67 |
mutex_unlock(&data->statemutex);
|
| 68 |
return CHOOSER_RESULT_REDRAW;
|
68 |
return CHOOSER_RESULT_REDRAW;
|
| 69 |
case CHOOSER_ACTION_HANDLER_WHEEL_ACTION_NEXT:
|
69 |
case CHOOSER_ACTION_HANDLER_WHEEL_ACTION_NEXT:
|
| 70 |
mutex_lock(&data->statemutex, TIMEOUT_BLOCK);
|
70 |
mutex_lock(&data->statemutex, TIMEOUT_BLOCK);
|
| 71 |
data->position = MIN(data->info->itemcount * spi,
|
71 |
data->position = MIN(data->info->itemcount * spi,
|
| 72 |
MAX(spi, (data->position & ~(spi - 1)) + 2 * spi)) - spi / 2;
|
72 |
MAX(spi, (data->position & ~(spi - 1)) + 2 * spi))
|
| - |
|
73 |
- spi / 2;
|
| 73 |
data->selected = &data->info->items[data->position / spi];
|
74 |
data->selected = &data->info->items[data->position / spi];
|
| 74 |
mutex_unlock(&data->statemutex);
|
75 |
mutex_unlock(&data->statemutex);
|
| 75 |
return CHOOSER_RESULT_REDRAW;
|
76 |
return CHOOSER_RESULT_REDRAW;
|
| 76 |
case CHOOSER_ACTION_HANDLER_WHEEL_ACTION_SELECT:
|
77 |
case CHOOSER_ACTION_HANDLER_WHEEL_ACTION_SELECT:
|
| 77 |
return CHOOSER_RESULT_FINISHED;
|
78 |
return CHOOSER_RESULT_FINISHED;
|
| 78 |
case CHOOSER_ACTION_HANDLER_WHEEL_ACTION_CANCEL:
|
79 |
case CHOOSER_ACTION_HANDLER_WHEEL_ACTION_CANCEL:
|
| 79 |
return CHOOSER_RESULT_CANCEL;
|
80 |
return CHOOSER_RESULT_CANCEL;
|
| 80 |
}
|
81 |
}
|
| 81 |
case WHEEL_MOVED_ACCEL:
|
82 |
case WHEEL_MOVED_ACCEL:
|
| 82 |
mutex_lock(&data->statemutex, TIMEOUT_BLOCK);
|
83 |
mutex_lock(&data->statemutex, TIMEOUT_BLOCK);
|
| 83 |
data->position = MIN(data->info->itemcount * spi - 1, MAX(0, data->position + value));
|
84 |
data->position = MIN(data->info->itemcount * spi - 1, MAX(0, data->position + value));
|
| 84 |
data->selected = &data->info->items[data->position / spi];
|
85 |
data->selected = &data->info->items[data->position / spi];
|
| 85 |
mutex_unlock(&data->statemutex);
|
86 |
mutex_unlock(&data->statemutex);
|
| 86 |
return CHOOSER_RESULT_REDRAW;
|
87 |
return CHOOSER_RESULT_REDRAW;
|
| 87 |
}
|
88 |
}
|
| 88 |
return CHOOSER_RESULT_OK;
|
89 |
return CHOOSER_RESULT_OK;
|
| 89 |
}
|
90 |
}
|
| 90 |
|
91 |
|
| 91 |
static enum chooser_result chooser_action_handler_wheel_handletick(struct chooser_data* data)
|
92 |
static enum chooser_result chooser_action_handler_wheel_handletick(struct chooser_data* data)
|