package ams.android.linkit.Fragment;
import android.app.Fragment;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Tracker;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.nostra13.universalimageloader.core.listener.ImageLoadingListener;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
import com.nostra13.universalimageloader.core.process.BitmapProcessor;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import ams.android.linkit.Activity.MainActivity;
import ams.android.linkit.Model.LinkitObject;
import ams.android.linkit.R;
import ams.android.linkit.Tools.GlobalApplication;
/**
* Created by Aidin on 2/3/2015.
*/
public class FragmentWebView extends Fragment {
private static String TAG = "linkitShopper";
private static String defaultURL = "http://www.google.com/?gws_rd=ssl";
RelativeLayout mainView;
static ImageLoader imageLoader = ImageLoader.getInstance();
static DisplayImageOptions options;
static DisplayImageOptions optionsFull;
static ImageLoadingListener imageListener;
WebView vistaWeb;
ImageButton btnBack;
ImageButton btnForward;
ImageButton btnLinkout;
LinkitObject currentItem;
String urlPhoto, urlJSON;
Boolean isInWebViewState = true;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
MainActivity.mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
((MainActivity) getActivity()).currentFragmentName = "WebView";
try {
currentItem = getArguments().getParcelable("item");
} catch (Exception ex) {
}
final View rootView = inflater.inflate(R.layout.fragment_webview, container, false);
final ProgressBar progressBarLoad = (ProgressBar) rootView.findViewById(R.id.progressBar_load);
final ImageView imgInsta = (ImageView) rootView.findViewById(R.id.img_insta_preview);
final ImageView imgInstaFull = (ImageView) rootView.findViewById(R.id.imgInstaPreviewFull);
RelativeLayout layBottomBar = (RelativeLayout) rootView.findViewById(R.id.lay_bottomBar);
Button btnDone = (Button) rootView.findViewById(R.id.btnDone);
mainView = (RelativeLayout) rootView.findViewById(R.id.lay_MainView);
vistaWeb = (WebView) rootView.findViewById(R.id.webView_Content);
btnBack = (ImageButton) rootView.findViewById(R.id.btn_back);
btnForward = (ImageButton) rootView.findViewById(R.id.btn_forward);
btnLinkout = (ImageButton) rootView.findViewById(R.id.btn_linkout);
options = new DisplayImageOptions.Builder()
.resetViewBeforeLoading(true)
.showImageOnFail(R.drawable.fail)
.showImageOnLoading(R.drawable.loading)
.showImageForEmptyUri(R.drawable.unlink)
.cacheInMemory(true)
.cacheOnDisk(true)
.preProcessor(new BitmapProcessor() {
@Override
public Bitmap process(Bitmap bitmap) {
return Bitmap.createScaledBitmap(bitmap, 100, 100, true);
}
})
.build();
optionsFull = new DisplayImageOptions.Builder()
.resetViewBeforeLoading(true)
.showImageOnFail(R.drawable.fail)
.showImageOnLoading(R.drawable.loading)
.showImageForEmptyUri(R.drawable.unlink)
.cacheInMemory(true)
.cacheOnDisk(true)
.build();
imageListener = new ImageDisplayListener();
if (!imageLoader.isInited()) {
imageLoader.init(ImageLoaderConfiguration.createDefault(getActivity().getApplicationContext()));
}
imageLoader = ImageLoader.getInstance();
ViewTreeObserver vto = layBottomBar.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
imageLoader.displayImage(currentItem.imageUrl, imgInsta, options, imageListener);
imgInsta.getViewTreeObserver().removeOnPreDrawListener(this);
imgInsta.getLayoutParams().width = imgInsta.getMeasuredHeight();
return true;
}
});
urlPhoto = getResources().getString(R.string.BASE_URL).toString() + "media/matchScreenShot/" + currentItem.mediaID;
urlJSON = getResources().getString(R.string.BASE_URL).toString() + "media/match/" + currentItem.mediaID;
btnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
vistaWeb.goBack();
}
});
btnForward.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
vistaWeb.goForward();
}
});
btnLinkout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(currentItem.productLink));
startActivity(browserIntent);
}
});
btnDone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getFragmentManager().popBackStack();
MainActivity.mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
}
});
vistaWeb.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
progressBarLoad.setVisibility(View.VISIBLE);
progressBarLoad.setProgress(0);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
progressBarLoad.setVisibility(View.INVISIBLE);
//checkNavigationButton();
}
});
vistaWeb.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
vistaWeb.getSettings().setAppCacheEnabled(true);
vistaWeb.getSettings().setJavaScriptEnabled(true);
vistaWeb.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
if (currentItem.productLink.isEmpty()) {
vistaWeb.loadUrl(defaultURL);
} else {
vistaWeb.loadUrl(currentItem.productLink);
}
imgInsta.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_POINTER_DOWN:
imgInstaFull.setVisibility(View.VISIBLE);
return true;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
imgInstaFull.setVisibility(View.INVISIBLE);
return true;
case MotionEvent.ACTION_CANCEL:
imgInstaFull.setVisibility(View.INVISIBLE);
return true;
}
return false;
}
});
imageLoader.displayImage(currentItem.imageUrl, imgInstaFull, optionsFull, imageListener);
// Get tracker.
Tracker t = ((GlobalApplication) getActivity().getApplication()).getTracker(GlobalApplication.TrackerName.APP_TRACKER);
t.setScreenName("LinkitShopper - WebView");
t.send(new HitBuilders.AppViewBuilder().build());
return rootView;
}
@Override
public void onDestroyView() {
super.onDestroyView();
mainView.removeView(vistaWeb);
vistaWeb.setFocusable(true);
vistaWeb.removeAllViews();
//vistaWeb.clearHistory();
vistaWeb.destroy();
}
private class ImageDisplayListener extends SimpleImageLoadingListener {
final List<String> displayedImages = Collections
.synchronizedList(new LinkedList<String>());
@Override
public void onLoadingStarted(String imageUri, View view) {
super.onLoadingStarted(imageUri, view);
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
super.onLoadingFailed(imageUri, view, failReason);
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
if (loadedImage != null) {
ImageView imageView = (ImageView) view;
boolean firstDisplay = !displayedImages.contains(imageUri);
if (firstDisplay) {
FadeInBitmapDisplayer.animate(imageView, 0);
displayedImages.add(imageUri);
}
}
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
super.onLoadingCancelled(imageUri, view);
}
}
public void goBack() {
vistaWeb.goBack();
}
public void backButtonWasPressed() {
vistaWeb.setDrawingCacheEnabled(false);
vistaWeb.setVisibility(View.VISIBLE);
btnBack.setVisibility(View.VISIBLE);
btnForward.setVisibility(View.VISIBLE);
isInWebViewState = true;
}
public Boolean canGoBackHistory() {
return vistaWeb.canGoBack();
}
public Boolean isReadyForExit() {
if (isInWebViewState) {
return true;
} else {
return false;
}
}
}