/*
 * Copyright (c) 2018 The sky Authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.sky.xposed.aweme.ui.util;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.net.Uri;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.sky.xposed.aweme.BuildConfig;
import com.sky.xposed.aweme.R;
import com.sky.xposed.common.ui.util.LayoutUtil;
import com.sky.xposed.common.util.Alog;
import com.sky.xposed.common.util.DisplayUtil;
import com.sky.xposed.common.util.ResourceUtil;
import com.squareup.picasso.Picasso;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * Created by sky on 18-6-9.
 */
public class DialogUtil {

    public static void showAboutDialog(Context context) {

        try {
            int left = DisplayUtil.dip2px(context, 25f);
            int top = DisplayUtil.dip2px(context, 10f);

            LinearLayout.LayoutParams contentParams = LayoutUtil.newMatchLinearLayoutParams();

            LinearLayout content = new LinearLayout(context);
            content.setLayoutParams(contentParams);
            content.setOrientation(LinearLayout.VERTICAL);
            content.setBackgroundColor(Color.WHITE);
            content.setPadding(left, top, left, 0);

            TextView tvHead = new TextView(context);
            tvHead.setTextColor(Color.BLACK);
            tvHead.setTextSize(14f);
            tvHead.setText("版本:v" + BuildConfig.VERSION_NAME + "\n想了解更多类似作品\n请关注公众号");

            ImageView ivCommunity = new ImageView(context);
            ivCommunity.setLayoutParams(LayoutUtil.newWrapLinearLayoutParams());
            Picasso.get().load(resourceIdToUri(R.drawable.community)).into(ivCommunity);

            TextView tvTail = new TextView(context);
            tvTail.setTextColor(Color.BLACK);
            tvTail.setTextSize(14f);
            tvTail.setText("官方QQ群:\n794327446 (1群)\n824933593 (2群)\n592216812 (3群)");

            content.addView(tvHead);
            content.addView(ivCommunity);
            content.addView(tvTail);

            // 显示关于
            AlertDialog.Builder builder = new AlertDialog.Builder(context);
            builder.setTitle("关于");
            builder.setView(content);
            builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
            builder.show();
        } catch (Throwable tr) {
            Alog.e("异常了", tr);
        }
    }

    public static Uri resourceIdToUri(int resourceId) {
        return ResourceUtil.resourceIdToUri(BuildConfig.APPLICATION_ID, resourceId);
    }

    public static void scanFile(Context context, String file) {
        Uri data = Uri.parse("file://" + file);
        context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, data));
    }

    public static boolean saveImage2SDCard(String qrSavePath, Bitmap qrBitmap) {

        try {
            File qrFile = new File(qrSavePath);

            File parentFile = qrFile.getParentFile();
            if (!parentFile.exists()) {
                parentFile.mkdirs();
            }

            FileOutputStream fos = new FileOutputStream(qrFile);
            qrBitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
            fos.flush();
            fos.close();
            return true;
        } catch (IOException e) {
            Alog.e("保存失败", e);
        }
        return false;
    }
}