package com.khmelenko.lab.varis.fragment;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.khmelenko.lab.varis.R;
import butterknife.Bind;
import butterknife.ButterKnife;
/**
* Shows raw logs
*
* @author Dmytro Khmelenko
*/
public class RawLogFragment extends Fragment {
private static final String LOG_URL = "LogUrl";
@Bind(R.id.raw_log_webview)
WebView mWebView;
@Bind(R.id.progressbar)
ProgressBar mProgressBar;
@Bind(R.id.empty_text)
TextView mEmptyText;
private OnRawLogFragmentListener mListener;
/**
* Creates an instance of the fragment
*
* @return Fragment instance
*/
public static RawLogFragment newInstance() {
RawLogFragment fragment = new RawLogFragment();
return fragment;
}
public RawLogFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_raw_log, container, false);
ButterKnife.bind(this, view);
showProgress(true);
showError(false);
return view;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnRawLogFragmentListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnRawLogFragmentListener");
}
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
/**
* Shows the loading progress of the fragment
*
* @param inProgress True, if the progress should be shown. False otherwise
*/
public void showProgress(boolean inProgress) {
if (inProgress) {
mProgressBar.setVisibility(View.VISIBLE);
mWebView.setVisibility(View.GONE);
} else {
mProgressBar.setVisibility(View.GONE);
mWebView.setVisibility(View.VISIBLE);
}
}
/**
* Shows the error message
*
* @param isError True, if error text should be shown. False otherwise
*/
public void showError(boolean isError) {
if (isError) {
mEmptyText.setVisibility(View.VISIBLE);
mEmptyText.setText(R.string.build_details_empty);
} else {
mEmptyText.setVisibility(View.GONE);
}
}
/**
* Loads URL for showing in web view
*
* @param url URL
*/
public void loadUrl(String url) {
showError(false);
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (mListener != null) {
mListener.onLogLoaded();
}
showProgress(false);
}
});
mWebView.loadUrl(url);
}
/**
* Interface for communication with this fragment
*/
public interface OnRawLogFragmentListener {
/**
* Raised when raw log loaded
*/
void onLogLoaded();
}
}