package com.nolanlawson.logcat;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;
import com.nolanlawson.logcat.data.FilterQueryWithLevel;
import com.nolanlawson.logcat.helper.DialogHelper;
import com.nolanlawson.logcat.helper.PreferenceHelper;
import com.nolanlawson.logcat.helper.WidgetHelper;
import com.nolanlawson.logcat.util.Callback;
public class ShowRecordLogDialogActivity extends Activity {
public static final String EXTRA_QUERY_SUGGESTIONS = "suggestions";
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.record_log_dialog);
getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
// grab the search suggestions, if any
final List<String> suggestions = (getIntent() != null && getIntent().hasExtra(EXTRA_QUERY_SUGGESTIONS))
? Arrays.asList(getIntent().getStringArrayExtra(EXTRA_QUERY_SUGGESTIONS))
: Collections.<String>emptyList();
// ask the user the save a file to record the log
final EditText editText = DialogHelper.createEditTextForFilenameSuggestingDialog(this);
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.record_dialog_linear_layout);
// insert the edit text below the prompt text
linearLayout.addView(editText, 2);
Button okButton = (Button) findViewById(android.R.id.button1);
Button filterButton = (Button) findViewById(android.R.id.button2);
Button cancelButton = (Button) findViewById(android.R.id.button3);
String defaultLogLevel = Character.toString(PreferenceHelper.getDefaultLogLevelPreference(this));
final StringBuilder queryFilterText = new StringBuilder();
final StringBuilder logLevelText = new StringBuilder(defaultLogLevel);
filterButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogHelper.showFilterDialogForRecording(ShowRecordLogDialogActivity.this, queryFilterText.toString(),
logLevelText.toString(), suggestions,
new Callback<FilterQueryWithLevel>() {
@Override
public void onCallback(FilterQueryWithLevel result) {
queryFilterText.replace(0, queryFilterText.length(), result.getFilterQuery());
logLevelText.replace(0, logLevelText.length(), result.getLogLevel());
}
});
}
});
okButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (DialogHelper.isInvalidFilename(editText.getText())) {
Toast.makeText(ShowRecordLogDialogActivity.this, R.string.enter_good_filename, Toast.LENGTH_SHORT).show();
} else {
String filename = editText.getText().toString();
Runnable runnable = new Runnable(){
@Override
public void run() {
finish();
}
};
DialogHelper.startRecordingWithProgressDialog(filename,
queryFilterText.toString(), logLevelText.toString(), runnable, ShowRecordLogDialogActivity.this);
}
}
});
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
@Override
public void onPause() {
super.onPause();
// update widgets when the dialog is complete
WidgetHelper.updateWidgets(this);
}
}