188257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir/*
288257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir * Copyright (C) 2017 The Android Open Source Project
388257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir *
488257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir * Licensed under the Apache License, Version 2.0 (the "License");
588257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir * you may not use this file except in compliance with the License.
688257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir * You may obtain a copy of the License at
788257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir *
888257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir *      http://www.apache.org/licenses/LICENSE-2.0
988257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir *
1088257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir * Unless required by applicable law or agreed to in writing, software
1188257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir * distributed under the License is distributed on an "AS IS" BASIS,
1288257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1388257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir * See the License for the specific language governing permissions and
1488257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir * limitations under the License.
1588257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir */
1688257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir
1788257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinirpackage com.example.android.support.text.emoji;
1888257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir
1988257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinirimport android.content.Context;
2088257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinirimport android.os.Build;
2188257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinirimport android.support.annotation.RequiresApi;
2288257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinirimport android.util.AttributeSet;
2388257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinirimport android.view.LayoutInflater;
2488257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinirimport android.widget.CompoundButton;
2588257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinirimport android.widget.LinearLayout;
2688257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinirimport android.widget.Switch;
2788257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir
2888257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir/**
2988257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir * Layout that includes configuration parameters.
3088257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir */
3188257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinirpublic class ConfigLayout extends LinearLayout {
3288257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir    private Switch mEnableEmojiCompat;
3388257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir    private Switch mReplaceAll;
3488257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir    private Switch mDownloadable;
3588257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir    private Switch mIndicator;
3688257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir
3788257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir    public ConfigLayout(Context context) {
3888257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        super(context);
3988257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        init(context);
4088257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir    }
4188257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir
4288257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir    public ConfigLayout(Context context, AttributeSet attrs) {
4388257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        super(context, attrs);
4488257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        init(context);
4588257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir    }
4688257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir
4788257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir    @RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
4888257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir    public ConfigLayout(Context context, AttributeSet attrs,
4988257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir            int defStyleAttr) {
5088257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        super(context, attrs, defStyleAttr);
5188257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        init(context);
5288257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir    }
5388257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir
5488257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
5588257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir    public ConfigLayout(Context context, AttributeSet attrs,
5688257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir            int defStyleAttr, int defStyleRes) {
5788257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        super(context, attrs, defStyleAttr, defStyleRes);
5888257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        init(context);
5988257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir    }
6088257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir
6188257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir    private void init(Context context) {
6288257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        setOrientation(VERTICAL);
6388257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        LayoutInflater.from(context).inflate(R.layout.layout_config, this, true);
6488257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir
6588257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        mEnableEmojiCompat = findViewById(R.id.enable);
6688257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        mEnableEmojiCompat.setChecked(Config.get().isCompatEnabled());
6788257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        mEnableEmojiCompat.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
6888257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir            @Override
6988257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
7088257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                post(new Runnable() {
7188257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                    @Override
7288257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                    public void run() {
7388257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                        fireListener();
7488257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                    }
7588257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                });
7688257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir            }
7788257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        });
7888257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir
7988257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        mReplaceAll = findViewById(R.id.replaceAll);
8088257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        mReplaceAll.setChecked(Config.get().isReplaceAll());
8188257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        mReplaceAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
8288257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir            @Override
8388257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
8488257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                post(new Runnable() {
8588257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                    @Override
8688257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                    public void run() {
8788257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                        fireListener();
8888257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                    }
8988257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                });
9088257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir            }
9188257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        });
9288257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir
9388257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        mDownloadable = findViewById(R.id.useDownloadable);
9488257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        mDownloadable.setChecked(Config.get().isDownloadable());
9588257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        mDownloadable.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
9688257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir            @Override
9788257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
9888257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                post(new Runnable() {
9988257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                    @Override
10088257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                    public void run() {
10188257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                        fireListener();
10288257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                    }
10388257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                });
10488257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir            }
10588257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        });
10688257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir
10788257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        mIndicator = findViewById(R.id.indicator);
10888257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        mIndicator.setChecked(Config.get().isIndicator());
10988257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        mIndicator.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
11088257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir            @Override
11188257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
11288257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                post(new Runnable() {
11388257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                    @Override
11488257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                    public void run() {
11588257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                        fireListener();
11688257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                    }
11788257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                });
11888257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir            }
11988257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        });
12088257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir
12188257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir    }
12288257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir
12388257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir    void fireListener() {
12488257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir        Config.get().update(mEnableEmojiCompat.isChecked(), mReplaceAll.isChecked(),
12588257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir                mDownloadable.isChecked(), mIndicator.isChecked());
12688257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir    }
12788257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir
12888257c64fd28b11c082b56f2f81edca8641c410cSiyamed Sinir}
129