package com.door43.translationstudio.dialogs;
import android.app.Dialog;
import android.app.DialogFragment;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.door43.tools.reporting.Logger;
import com.door43.translationstudio.R;
import com.door43.util.tasks.ThreadableUI;
import java.util.ArrayList;
import java.util.List;
/**
* This dialog display a list of all the error logs
*/
public class ErrorLogDialog extends DialogFragment{
public static final String ARG_LOG_TEXT = "arg_log_text";
private LogAdapter mAdapter;
private ThreadableUI mThread;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
getDialog().setTitle("Logs");
View v = inflater.inflate(R.layout.dialog_error_log, container, false);
ListView list = (ListView)v.findViewById(R.id.errorLogListView);
mAdapter = new LogAdapter();
list.setAdapter(mAdapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String details = mAdapter.getItem(i).getDetails();
if(ErrorLogDialog.this.getActivity() != null && details != null && !details.isEmpty()) {
Dialog dialog = new Dialog(ErrorLogDialog.this.getActivity());
TextView text = new TextView(ErrorLogDialog.this.getActivity());
text.setText(details);
text.setVerticalScrollBarEnabled(true);
text.setPadding(10, 0, 10, 0);
text.setMovementMethod(ScrollingMovementMethod.getInstance());
text.canScrollVertically(View.SCROLL_AXIS_VERTICAL);
dialog.setContentView(text);
dialog.setTitle("Log Details");
dialog.show();
}
}
});
// close
Button dismissButton = (Button)v.findViewById(R.id.dismissButton);
dismissButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dismiss();
}
});
// empty log
Button emtpyButton = (Button)v.findViewById(R.id.emptyLogButton);
emtpyButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Logger.flush();
dismiss();
}
});
init();
return v;
}
/**
* Loads the error logs from the disk
*/
private void init() {
if(mThread != null) {
mThread.stop();
}
if(getActivity() == null) {
dismiss();
return;
}
mThread = new ThreadableUI(getActivity()) {
private List<Logger.Entry> mLogs = new ArrayList<>();
@Override
public void onStop() {
}
@Override
public void run() {
mLogs = Logger.getLogEntries();
}
@Override
public void onPostExecute() {
if(mLogs.size() > 0) {
mAdapter.setItems(mLogs);
} else {
Toast toast = Toast.makeText(getActivity(), "There are no logs", Toast.LENGTH_LONG);
toast.setGravity(Gravity.TOP, 0, 0);
toast.show();
dismiss();
}
}
};
mThread.start();
}
}