Subversion Repositories freemyipod

Rev

Rev 755 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 755 Rev 820
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)