package com.mobapphome.mahads;
/**
* Created by settar on 7/12/16.
*/
import android.content.ActivityNotFoundException;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.DialogFragment;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.PopupMenu;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.LinearInterpolator;
import android.view.animation.RotateAnimation;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.google.gson.Gson;
import com.mobapphome.mahads.mahfragments.MAHDialogFragment;
import com.mobapphome.mahads.mahfragments.MAHFragmentExeption;
import com.mobapphome.mahads.tools.Constants;
import com.mobapphome.mahads.tools.Updater;
import com.mobapphome.mahads.mahfragments.TextViewFontSetter;
import com.mobapphome.mahads.types.MAHRequestResult;
import com.mobapphome.mahads.types.Program;
import com.mobapphome.mahads.types.Urls;
import java.util.LinkedList;
import java.util.List;
public class MAHAdsDlgPrograms extends MAHDialogFragment implements
View.OnClickListener {
View view;
TextView tvErrorResultF1;
ImageView ivLoading;
ListView lstProgram;
LinearLayout lytErrorF1;
List<Object> items;
MAHRequestResult mahRequestResult;
Urls urls;
String fontName;
boolean btnInfoVisibility;
boolean btnInfoWithMenu;
String btnInfoMenuItemTitle;
String btnInfoActionURL;
boolean dataHasAlreadySet = false;
public MAHAdsDlgPrograms() {
// Empty constructor required for DialogFragment
}
public static MAHAdsDlgPrograms newInstance(
MAHRequestResult mahRequestResult,
Urls urls,
String fontName, boolean btnInfoVisibility,
boolean btnInfoWithMenu,
String btnInfoMenuItemTitle,
String btnInfoActionURL) {
MAHAdsDlgPrograms dialog = new MAHAdsDlgPrograms();
Bundle args = new Bundle();
Gson gson = new Gson();
args.putString("mahRequestResult", gson.toJson(mahRequestResult));
args.putString("urls", gson.toJson(urls));
args.putString("fontName", fontName);
args.putBoolean("btnInfoVisibility", btnInfoVisibility);
args.putBoolean("btnInfoWithMenu", btnInfoWithMenu);
args.putString("btnInfoMenuItemTitle", btnInfoMenuItemTitle);
args.putString("btnInfoActionURL", btnInfoActionURL);
dialog.setArguments(args);
return dialog;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(DialogFragment.STYLE_NORMAL, R.style.MAHAdsDlgPrograms);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
try {
Log.i(Constants.LOG_TAG_MAH_ADS, "MAH Ads Programs Dlg Created ");
Bundle args = getArguments();
Gson gson = new Gson();
mahRequestResult = gson.fromJson(args.getString("mahRequestResult"), MAHRequestResult.class);
urls = gson.fromJson(args.getString("urls"), Urls.class);
fontName = args.getString("fontName");
btnInfoVisibility = args.getBoolean("btnInfoVisibility");
btnInfoWithMenu = args.getBoolean("btnInfoWithMenu");
btnInfoMenuItemTitle = args.getString("btnInfoMenuItemTitle");
btnInfoActionURL = args.getString("btnInfoActionURL");
view = inflater.inflate(R.layout.mah_ads_dialog_programs, container);
getDialog().getWindow().getAttributes().windowAnimations = R.style.MAHAdsDialogAnimation;
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
//getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
getDialog().setCanceledOnTouchOutside(false);
getDialog().setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN
&& keyCode == KeyEvent.KEYCODE_BACK) {
onClose();
return true;
}
return false;
}
});
lstProgram = (ListView) view.findViewById(R.id.lstMahAds);
lytErrorF1 = (LinearLayout) view.findViewById(R.id.lytErrorMAHAds);
tvErrorResultF1 = (TextView) view.findViewById(R.id.tvErrorResultMAHAds);
view.findViewById(R.id.mah_ads_dlg_programs_btn_close).setOnClickListener(this);
view.findViewById(R.id.btnErrorRefreshMAHAds).setOnClickListener(this);
ImageView ivBtnCancel = ((ImageView) view.findViewById(R.id.mah_ads_dlg_programs_btnCancel));
ImageView ivBtnInfo = ((ImageView) view.findViewById(R.id.mah_ads_dlg_programs_btnInfo));
ivBtnCancel.setOnClickListener(this);
ivBtnInfo.setOnClickListener(this);
ivBtnCancel.setColorFilter(ContextCompat.getColor(getContext(), R.color.mah_ads_title_bar_text_color));
ivBtnInfo.setColorFilter(ContextCompat.getColor(getContext(), R.color.mah_ads_title_bar_text_color));
if (btnInfoVisibility) {
ivBtnInfo.setVisibility(View.VISIBLE);
} else {
ivBtnInfo.setVisibility(View.INVISIBLE);
}
ivLoading = (ImageView) view.findViewById(R.id.ivLoadingMahAds);
ivLoading.setColorFilter(ContextCompat.getColor(getContext(), R.color.mah_ads_all_and_btn_text_color));
ivLoading.setImageResource(R.drawable.ic_loading_mah);
lstProgram.setVisibility(View.GONE);
lytErrorF1.setVisibility(View.GONE);
ivLoading.setVisibility(View.GONE);
startLoading();
setUI(mahRequestResult, true);
if (savedInstanceState == null) {
//Call to update data from service or local
Updater.updateProgramList(getActivityMAH(), urls);
}
TextViewFontSetter.setFontTextView((TextView) view.findViewById(R.id.tvTitle), fontName);
TextViewFontSetter.setFontTextView(tvErrorResultF1, fontName);
TextViewFontSetter.setFontTextView((TextView) view.findViewById(R.id.btnErrorRefreshMAHAds), fontName);
return view;
} catch (MAHFragmentExeption e) {
Log.d(Constants.LOG_TAG_MAH_ADS, e.getMessage(), e);
return null;
}
}
public void setUI(final MAHRequestResult result, boolean firstTime) {
Log.i(Constants.LOG_TAG_MAH_ADS, "------Result State is " + ((result == null) ? null : result.getResultState()));
if (result != null && (result.getResultState() == MAHRequestResult.ResultState.SUCCESS
|| result.getResultState() == MAHRequestResult.ResultState.ERR_SOME_ITEMS_HAS_JSON_SYNTAX_ERROR)) {
dataHasAlreadySet = true;
final List<Program> programsExceptMyself = result.getProgramsFiltered();
items = new LinkedList<>();
for (Program c : programsExceptMyself) {
items.add(c);
}
final ProgramItmAdptPrograms adapterInit = new ProgramItmAdptPrograms(getContext(), items, urls.getUrlRootOnServer(), fontName);
lstProgram.post(new Runnable() {
@Override
public void run() {
Log.i(Constants.LOG_TAG_MAH_ADS, "lstProgram post called");
lstProgram.setAdapter(adapterInit);
lytErrorF1.setVisibility(View.GONE);
lstProgram.setVisibility(View.VISIBLE);
}
});
} else {
if (result == null || result.isReadFromWeb()) {
lstProgram.post(new Runnable() {
@Override
public void run() {
lytErrorF1.setVisibility(View.VISIBLE);
lstProgram.setVisibility(View.GONE);
tvErrorResultF1.setText(getResources().getString(
R.string.mah_ads_internet_update_error));
}
});
} else {
if (!firstTime) {
lstProgram.post(new Runnable() {
@Override
public void run() {
lytErrorF1.setVisibility(View.VISIBLE);
lstProgram.setVisibility(View.GONE);
tvErrorResultF1.setText(getResources().getString(
R.string.mah_ads_internet_update_error));
}
});
}
}
}
stopLoading();
}
public void startLoading() {
if (dataHasAlreadySet) {
return;
}
Animation animationLoading = new RotateAnimation(0.0f, 360.0f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
0.5f);
animationLoading.setDuration(350);
animationLoading.setInterpolator(new LinearInterpolator());
animationLoading.setRepeatCount(Animation.INFINITE);
ivLoading.startAnimation(animationLoading);
ivLoading.setVisibility(View.VISIBLE);
lstProgram.setVisibility(View.GONE);
lytErrorF1.setVisibility(View.GONE);
Log.i(Constants.LOG_TAG_MAH_ADS, "Animation started");
}
public void stopLoading() {
ivLoading.setVisibility(View.GONE);
lstProgram.setVisibility(View.GONE);
lytErrorF1.setVisibility(View.GONE);
ivLoading.clearAnimation();
Log.i(Constants.LOG_TAG_MAH_ADS, "Animation stopped");
}
public void onClose() {
dismissAllowingStateLoss();
}
private void showMAHlib() {
try {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(btnInfoActionURL));
getContext().startActivity(browserIntent);
} catch (ActivityNotFoundException nfe) {
String str = "You haven't set correct url to btnInfoActionURL, your url = " + btnInfoActionURL;
Toast.makeText(getContext(), str, Toast.LENGTH_LONG).show();
Log.d(Constants.LOG_TAG_MAH_ADS, str, nfe);
}
}
@Override
public void onClick(View v) {
try {
if (v.getId() == R.id.mah_ads_dlg_programs_btnCancel
|| v.getId() == R.id.mah_ads_dlg_programs_btn_close) {
onClose();
} else if (v.getId() == R.id.mah_ads_dlg_programs_btnInfo) {
if (btnInfoWithMenu) {
final int itemIdForInfo = 1;
PopupMenu popup = new PopupMenu(getContext(), v);
popup.getMenu().add(Menu.NONE, itemIdForInfo, 1, btnInfoMenuItemTitle);
// registering popup with OnMenuItemClickListener
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
if (item.getItemId() == itemIdForInfo) {
showMAHlib();
}
return true;
}
});
popup.show();// showing popup menu
} else {
showMAHlib();
}
} else if (v.getId() == R.id.btnErrorRefreshMAHAds) {
Updater.updateProgramList(getActivityMAH(), urls);
}
} catch (MAHFragmentExeption e) {
Log.d(Constants.LOG_TAG_MAH_ADS, e.getMessage(), e);
return;
}
}
}