1250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka/*
2250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka * Copyright (C) 2013 The Android Open Source Project
3250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka *
4250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka * Licensed under the Apache License, Version 2.0 (the "License");
5250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka * you may not use this file except in compliance with the License.
6250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka * You may obtain a copy of the License at
7250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka *
8250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka *      http://www.apache.org/licenses/LICENSE-2.0
9250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka *
10250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka * Unless required by applicable law or agreed to in writing, software
11250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka * distributed under the License is distributed on an "AS IS" BASIS,
12250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka * See the License for the specific language governing permissions and
14250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka * limitations under the License.
15250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka */
16250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka
17250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataokapackage com.android.inputmethod.keyboard;
18250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka
19250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataokaimport com.android.inputmethod.latin.R;
20250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka
21250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataokaimport android.content.Context;
22250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataokaimport android.graphics.Canvas;
23250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataokaimport android.graphics.Paint;
24250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataokaimport android.util.AttributeSet;
25250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataokaimport android.widget.LinearLayout;
26250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka
27250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataokapublic class EmojiCategoryPageIndicatorView extends LinearLayout {
28250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka    private static final float BOTTOM_MARGIN_RATIO = 0.66f;
29250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka    private final Paint mPaint = new Paint();
30250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka    private int mCategoryPageSize = 0;
31250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka    private int mCurrentCategoryPageId = 0;
32250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka    private float mOffset = 0.0f;
33250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka
34250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka    public EmojiCategoryPageIndicatorView(Context context) {
35250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka        this(context, null /* attrs */);
36250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka    }
37250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka
38250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka    public EmojiCategoryPageIndicatorView(Context context, AttributeSet attrs) {
39250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka        super(context, attrs);
40250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka        mPaint.setColor(context.getResources().getColor(
41250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka                R.color.emoji_category_page_id_view_foreground));
42250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka    }
43250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka
44250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka    public void setCategoryPageId(int size, int id, float offset) {
45250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka        mCategoryPageSize = size;
46250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka        mCurrentCategoryPageId = id;
47250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka        mOffset = offset;
48250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka        invalidate();
49250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka    }
50250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka
51250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka    @Override
52250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka    protected void onDraw(Canvas canvas) {
53a4913994c2904eefa861782966a288959b216713Satoshi Kataoka        if (mCategoryPageSize <= 1) {
54a4913994c2904eefa861782966a288959b216713Satoshi Kataoka            // If the category is not set yet or contains only one category,
55a4913994c2904eefa861782966a288959b216713Satoshi Kataoka            // just clear and return.
56250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka            canvas.drawColor(0);
57250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka            return;
58250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka        }
59250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka        final float height = getHeight();
60250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka        final float width = getWidth();
61250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka        final float unitWidth = width / mCategoryPageSize;
62250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka        final float left = unitWidth * mCurrentCategoryPageId + mOffset * unitWidth;
63250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka        final float top = 0.0f;
64250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka        final float right = left + unitWidth;
65250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka        final float bottom = height * BOTTOM_MARGIN_RATIO;
66250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka        canvas.drawRect(left, top, right, bottom, mPaint);
67250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka    }
68250a12f6c216f65f3b6459b9fa620d20a6b94475Satoshi Kataoka}
69