aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/activity/ShowcaseViewBuilder.java
blob: 86f5302aa8c0e762dc7689f9313a32ddf2e9785c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package cgeo.geocaching.activity;

import com.github.amlcurran.showcaseview.ShowcaseView;
import com.github.amlcurran.showcaseview.ShowcaseView.Builder;
import com.github.amlcurran.showcaseview.targets.Target;

import android.app.Activity;
import android.view.View;
import android.view.WindowManager.LayoutParams;

/**
 * TODO: replace by simple utility class embedding a builder instead of inheriting from it
 */
public class ShowcaseViewBuilder extends Builder {

    private final Activity activity;

    public ShowcaseViewBuilder(final Activity activity) {
        super(activity);
        this.activity = activity;
    }

    @Override
    public ShowcaseViewBuilder setContentTitle(final int resId) {
        setSingleshot(activity.getResources().getString(resId));
        return (ShowcaseViewBuilder) super.setContentTitle(resId);
    }

    /**
     * Use the hash of the title for the single shot remembering
     *
     */
    private void setSingleshot(final CharSequence title) {
        super.singleShot(title.hashCode());
    }

    @Override
    public ShowcaseViewBuilder setContentText(final int resId) {
        return (ShowcaseViewBuilder) super.setContentText(resId);
    }

    @Override
    public ShowcaseViewBuilder setContentText(final CharSequence text) {
        return (ShowcaseViewBuilder) super.setContentText(text);
    }

    @Override
    public ShowcaseViewBuilder setContentTitle(final CharSequence title) {
        setSingleshot(title);
        return (ShowcaseViewBuilder) super.setContentTitle(title);
    }

    @Override
    public ShowcaseViewBuilder setTarget(final Target target) {
        return (ShowcaseViewBuilder) super.setTarget(target);
    }

    public ShowcaseViewBuilder setContent(final int titleId, final int textId) {
        setContentTitle(titleId);
        return setContentText(textId);
    }

    @Override
    public ShowcaseView build() {
        final ShowcaseView showcaseView = super.build();
        if (showcaseView.getVisibility() == View.VISIBLE) {
            activity.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_HIDDEN);
        }
        return showcaseView;
    }

}