berict/Tapad

View on GitHub
app/src/main/java/com/bedrock/padder/fragment/AboutFragment.java

Summary

Maintainability
D
2 days
Test Coverage
package com.bedrock.padder.fragment;

import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.ImageView;
import android.widget.TextView;

import com.bedrock.padder.R;
import com.bedrock.padder.helper.AdMobHelper;
import com.bedrock.padder.helper.AnimateHelper;
import com.bedrock.padder.helper.IntentHelper;
import com.bedrock.padder.helper.ToolbarHelper;
import com.bedrock.padder.helper.WindowHelper;
import com.google.android.gms.ads.AdListener;
import com.squareup.picasso.Picasso;

import static com.bedrock.padder.activity.MainActivity.coordinate;
import static com.bedrock.padder.activity.MainActivity.currentPreset;
import static com.bedrock.padder.activity.MainActivity.isPresetVisible;

public class AboutFragment extends Fragment {

    private WindowHelper w = new WindowHelper();
    private AdMobHelper ad = new AdMobHelper();
    private IntentHelper intent = new IntentHelper();
    private AnimateHelper anim = new AnimateHelper();
    private ToolbarHelper toolbar = new ToolbarHelper();

    private int circularRevealDuration = 400;
    private int fadeAnimDuration = 200;

    public boolean isAdsShown = false;

    AppCompatActivity a;
    View v;

    private OnFragmentInteractionListener mListener;

    public AboutFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_about, container, false);
        setHasOptionsMenu(true);
        return view;
    }

    @Override
    public void onStart() {
        super.onStart();

        v = getView();
        ad.requestLoadAd(ad.getAdView(R.id.adView_about, a));
        setPresetInfo();
    }

    @Override
    public void onPause() {
        ad.pauseAdView(R.id.adView_about, a);

        super.onPause();
    }

    @Override
    public void onResume() {
        ad.resumeAdView(R.id.adView_about, a);

        super.onResume();
    }

    @Override
    public void onDestroy() {
        ad.destroyAdView(R.id.adView_about, a);

        super.onDestroy();
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if (context instanceof OnFragmentInteractionListener) {
            mListener = (OnFragmentInteractionListener) context;
        } else {
            throw new RuntimeException(context.toString()
                    + " must implement OnFragmentInteractionListener");
        }
        a = (AppCompatActivity)getActivity();
    }

    Menu menu;

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        this.menu = menu;
        int i = 0;
        while (true) {
            try {
                menu.getItem(i++).setVisible(false);
            } catch (Exception e) {
                break;
            }
        }
    }

    public boolean onOptionsItemSelected(MenuItem item) {
        Log.d("itemSelected", item.toString());
        if (item != menu.findItem(R.id.action_about) &&
                item != menu.findItem(R.id.action_settings) &&
                item != menu.findItem(R.id.action_help)) {
            if (!item.toString().equals("About") &&
                    !item.toString().equals("Settings") &&
                    !item.toString().equals("Help")) {
                // only the back icon
                pressBack();
            }
        }
        return true;
    }

    private void pressBack() {
        KeyEvent kDown = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
        a.dispatchKeyEvent(kDown);
        KeyEvent kUp = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK);
        a.dispatchKeyEvent(kUp);
    }

    public void setPresetInfo() {
        toolbar.setActionBar(a, v);
        toolbar.setActionBarTitle(R.string.about);
        toolbar.setActionBarPadding(a, v);
        toolbar.setActionBarDisplayHomeAsUpIcon(R.drawable.ic_close_white);

        if (currentPreset != null) {
            // CardView
            (v.findViewById(R.id.cardview_music_layout)).setVisibility(View.VISIBLE);
            Picasso.with(a)
                    .load("file:" + currentPreset.getAbout().getImage(currentPreset))
                    .placeholder(R.drawable.ic_image_album_placeholder)
                    .error(R.drawable.ic_image_album_error)
                    .into(((ImageView) v.findViewById(R.id.cardview_music_image)));
            ((TextView) v.findViewById(R.id.cardview_music_song)).setText(currentPreset.getAbout().getTitle());
            ((TextView) v.findViewById(R.id.cardview_music_explore)).setTextColor(currentPreset.getAbout().getColor());
            ((TextView) v.findViewById(R.id.cardview_music_change)).setTextColor(currentPreset.getAbout().getColor());

            toolbar.setActionBarColor(currentPreset.getAbout().getColor(), a);
        } else {
            (v.findViewById(R.id.cardview_music_layout)).setVisibility(View.GONE);

            toolbar.setActionBarColor(R.color.colorPrimary, a);
        }

        // artist
        (v.findViewById(R.id.cardview_music)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                intent.intentSharedElementWithExtra(a, "activity.AboutActivity",
                        R.id.cardview_music_image, "transition", "about", "now_playing", 0, v);
            }
        });

        (v.findViewById(R.id.cardview_music_explore)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                intent.intentSharedElementWithExtra(a, "activity.AboutActivity",
                        R.id.cardview_music_image, "transition", "about", "now_playing", 0, v);
            }
        });

        (v.findViewById(R.id.cardview_music_change)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (isPresetVisible == false) {
                    intent.intent(a, "activity.PresetStoreActivity");
                }
            }
        });

        // preset store
        (v.findViewById(R.id.cardview_preset_store)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                intent.intentSharedElementWithExtra(a, "activity.PresetStoreActivity",
                        R.id.cardview_preset_store_image, "transition", "about", "now_playing", 0, v);
            }
        });

        (v.findViewById(R.id.cardview_preset_store_explore)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                intent.intentSharedElementWithExtra(a, "activity.PresetStoreActivity",
                        R.id.cardview_preset_store_image, "transition", "about", "now_playing", 0, v);
            }
        });

        // tapad
        (v.findViewById(R.id.cardview_about)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                intent.intentSharedElementWithExtra(a, "activity.AboutActivity",
                        R.id.cardview_about_image, "transition", "about", "tapad", 0, v);
            }
        });

        (v.findViewById(R.id.cardview_about_explore)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                intent.intentSharedElementWithExtra(a, "activity.AboutActivity",
                        R.id.cardview_about_image, "transition", "about", "tapad", 0, v);
            }
        });

        (v.findViewById(R.id.cardview_about_settings)).setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                coordinate[2] = (int) event.getRawX();
                coordinate[3] = (int) event.getRawY();

                return false;
            }
        });

        (v.findViewById(R.id.cardview_about_settings)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                anim.circularRevealInPx(R.id.placeholder,
                        coordinate[2], coordinate[3],
                        0, (int) Math.hypot(coordinate[2], coordinate[3]) + 200, new AccelerateDecelerateInterpolator(),
                        circularRevealDuration, 0, a);

                intent.intent(a, "activity.SettingsActivity", circularRevealDuration);
            }
        });

        // developer
        (v.findViewById(R.id.cardview_dev)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                intent.intentSharedElementWithExtra(a, "activity.AboutActivity",
                        R.id.cardview_dev_image, "transition", "about", "dev", 0, v);
            }
        });

        (v.findViewById(R.id.cardview_dev_explore)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                intent.intentSharedElementWithExtra(a, "activity.AboutActivity",
                        R.id.cardview_dev_image, "transition", "about", "dev", 0, v);
            }
        });

        // Blank ads
        if (ad.isConnected(a)) {
            // connected to internet, check ad is working
            ad.getAdView(R.id.adView_about, a).setAdListener(new AdListener() {
                @Override
                public void onAdLoaded() {
                    // Ad loaded
                    Log.d("AdView", "Loaded");
                    anim.fadeOut(R.id.cardview_ad_loading, 0, 400, v, a);
                    (v.findViewById(R.id.cardview_ad_failed)).setVisibility(View.GONE);
                    (v.findViewById(R.id.adView_about)).setVisibility(View.VISIBLE);
                    isAdsShown = true;
                    Log.d("AdView", "adView visible = " + String.valueOf((v.findViewById(R.id.adView_about)).getVisibility() == View.VISIBLE));
                    super.onAdLoaded();
                }
                @Override
                public void onAdFailedToLoad(int i) {
                    // Ad failed to load
                    Log.d("AdView", "Failed to load");
                    anim.fadeOut(R.id.cardview_ad_loading, 0, 400, v, a);
                    anim.fadeIn(R.id.cardview_ad_failed, 400, 400, "adFailFadeIn", v, a);
                    super.onAdFailedToLoad(i);
                }
            });
        } else {
            // not connected to internet
            Log.d("AdView", "Failed to connect to the internet");
            (v.findViewById(R.id.cardview_ad)).setVisibility(View.GONE);
        }
    }

    @Override
    public void onDetach() {
        super.onDetach();
        if (mListener != null) {
            mListener = null;
        }
    }

    public interface OnFragmentInteractionListener {
        void onFragmentInteraction(Uri uri);
    }
}