package de.jeisfeld.augendiagnoselib.activities;
import android.support.annotation.Nullable;
import android.view.View;
import android.view.ViewManager;
import com.admarvel.android.ads.AdMarvelView;
import de.jeisfeld.augendiagnoselib.Application;
import de.jeisfeld.augendiagnoselib.Application.AuthorizationLevel;
import de.jeisfeld.augendiagnoselib.R;
import de.jeisfeld.augendiagnoselib.util.AdMarvelUtil;
import de.jeisfeld.augendiagnoselib.util.PreferenceUtil;
/**
* An activity showing AdMarvel ads.
*/
public abstract class AdMarvelActivity extends BaseActivity {
/**
* The view holding the ad.
*/
@Nullable
private AdMarvelView mAdMarvelView;
/**
* Display a banner ad.
*/
public final void requestBannerAdIfEligible() {
getAdMarvelView();
AdMarvelUtil.requestBannerAdIfEligible(this);
}
/**
* Delete the ad view.
*/
private void deleteAdMarvelView() {
runOnUiThread(new Runnable() {
@Override
public void run() {
try {
((ViewManager) mAdMarvelView.getParent()).removeView(mAdMarvelView);
}
catch (Exception e) {
// do nothing.
}
}
});
}
// OVERRIDABLE
@Override
protected void onStart() {
super.onStart();
if (mAdMarvelView != null && mAdMarvelView.getVisibility() != View.GONE) {
mAdMarvelView.start(this);
}
}
// OVERRIDABLE
@Override
protected void onResume() {
super.onResume();
if (mAdMarvelView != null && mAdMarvelView.getVisibility() != View.GONE) {
if (PreferenceUtil.getSharedPreferenceBoolean(R.string.key_admarvel_iscurrentlyclicked)
|| Application.getAuthorizationLevel() != AuthorizationLevel.FULL_ACCESS_WITH_ADS) {
// do not trigger again after it was once clicked.
mAdMarvelView.setVisibility(View.GONE);
mAdMarvelView.destroy();
deleteAdMarvelView();
mAdMarvelView = null;
}
else {
mAdMarvelView.resume(this);
}
}
}
// OVERRIDABLE
@Override
protected void onPause() {
super.onPause();
if (mAdMarvelView != null && mAdMarvelView.getVisibility() != View.GONE) {
mAdMarvelView.pause(this);
}
}
// OVERRIDABLE
@Override
public void onStop() {
super.onStop();
if (mAdMarvelView != null && mAdMarvelView.getVisibility() != View.GONE) {
mAdMarvelView.stop(this);
}
}
// OVERRIDABLE
@Override
protected void onDestroy() {
super.onDestroy();
if (mAdMarvelView != null && mAdMarvelView.getVisibility() != View.GONE) {
mAdMarvelView.destroy();
}
}
/**
* Get the AdMarvelView.
*
* @return The AdMarvelView.
*/
@Nullable
public final AdMarvelView getAdMarvelView() {
if (mAdMarvelView == null) {
mAdMarvelView = (AdMarvelView) findViewById(R.id.admarvel);
}
return mAdMarvelView;
}
}