package com.hitanshudhawan.popcorn.activities;

import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.CardView;
import android.support.v7.widget.Toolbar;
import android.view.HapticFeedbackConstants;
import android.view.MenuItem;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;

import com.hitanshudhawan.popcorn.R;

public class AboutActivity extends AppCompatActivity {

    private ImageView featureGraphicImageView;

    private ImageButton shareImageButton;
    private ImageButton rateUsImageButton;
    private ImageButton feedbackImageButton;

    private CardView sourceCodeOnGitHubCardView;

    private FrameLayout openSourceLicensesFrameLayout;
    private TextView versionNumberTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_about);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        setTitle(R.string.about);

        featureGraphicImageView = (ImageView) findViewById(R.id.image_view_feature_graphic_about);
        featureGraphicImageView.getLayoutParams().width = getResources().getDisplayMetrics().widthPixels;
        featureGraphicImageView.getLayoutParams().height = (int) ((double) getResources().getDisplayMetrics().widthPixels * (500.0 / 1024.0));

        shareImageButton = (ImageButton) findViewById(R.id.image_button_share_about);
        rateUsImageButton = (ImageButton) findViewById(R.id.image_button_rate_us_about);
        feedbackImageButton = (ImageButton) findViewById(R.id.image_button_feedback_about);

        sourceCodeOnGitHubCardView = (CardView) findViewById(R.id.card_view_source_code_on_github);

        openSourceLicensesFrameLayout = (FrameLayout) findViewById(R.id.frame_layout_open_source_licenses);
        versionNumberTextView = (TextView) findViewById(R.id.text_view_version_number);

        loadActivity();

    }

    private void loadActivity() {

        shareImageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
                String packageName = getApplicationContext().getPackageName();
                Intent appShareIntent = new Intent(Intent.ACTION_SEND);
                appShareIntent.setType("text/plain");
                String extraText = "Hey! Check out this amazing app.\n";
                extraText += "https://play.google.com/store/apps/details?id=" + packageName;
                appShareIntent.putExtra(Intent.EXTRA_TEXT, extraText);
                startActivity(appShareIntent);
            }
        });

        rateUsImageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
                String packageName = getApplicationContext().getPackageName();
                String playStoreLink = "https://play.google.com/store/apps/details?id=" + packageName;
                Intent appRateUsIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(playStoreLink));
                startActivity(appRateUsIntent);
            }
        });

        feedbackImageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
                Intent feedbackIntent = new Intent(Intent.ACTION_SENDTO);
                feedbackIntent.setData(Uri.parse("mailto:"));
                feedbackIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"});
                feedbackIntent.putExtra(Intent.EXTRA_SUBJECT, "Feedback: " + getResources().getString(R.string.app_name));
                startActivity(feedbackIntent);
            }
        });

        sourceCodeOnGitHubCardView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
                String githubLink = "https://github.com/hitanshu-dhawan/" + getResources().getString(R.string.app_name);
                Intent githubIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(githubLink));
                startActivity(githubIntent);
            }
        });

        openSourceLicensesFrameLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
                String attributionsLink = "https://github.com/hitanshu-dhawan/" + getResources().getString(R.string.app_name) + "/blob/master/ATTRIBUTIONS.md";
                Intent attributionsIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(attributionsLink));
                startActivity(attributionsIntent);
            }
        });

        try {
            versionNumberTextView.setText((getPackageManager().getPackageInfo(getPackageName(), 0)).versionName);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == android.R.id.home) {
            onBackPressed();
        }
        return super.onOptionsItemSelected(item);
    }
}