/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.mozstumbler.client.subactivities;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import org.acra.ACRA;
import org.mozilla.mozstumbler.R;
public class FileBugActivity extends ActionBarActivity {
private static final String SENDER_NAME = "Sender Name";
private static final String SENDER_EMAIL = "Sender Email";
private static final String BUG_TITLE_FIELD = "Bug Title";
private static final String BUG_TYPE_FIELD = "Bug Type";
private static final String BUG_DESCRIPTION_FIELD = "Bug Description";
private static final String BUG_REPRODUCTION_FIELD = "Bug Reproduction";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_file_bug);
}
@Override
protected void onStart() {
super.onStart();
TextView textView = (TextView) findViewById(R.id.bug_report_info);
String info = getString(R.string.file_bug_report_info);
String crashreporting = getString(R.string.enable_crash_reporting);
textView.setText(String.format(info, crashreporting));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return false;
}
public void sendReport(View button) {
EditText senderName = (EditText) findViewById(R.id.bug_report_sender_name);
EditText senderEmail = (EditText) findViewById(R.id.bug_report_sender_email);
EditText bugName = (EditText) findViewById(R.id.bug_report_name);
Spinner bugType = (Spinner) findViewById(R.id.bug_report_type);
EditText bugDescription = (EditText) findViewById(R.id.bug_report_description);
EditText bugReproduction = (EditText) findViewById(R.id.bug_report_reproduction);
if (verifyFieldNotEmpty(senderEmail, bugName, bugDescription, bugReproduction)) {
// Set custom data fields
ACRA.getErrorReporter().putCustomData(SENDER_NAME, senderName.getText().toString());
ACRA.getErrorReporter().putCustomData(SENDER_EMAIL, senderEmail.getText().toString());
ACRA.getErrorReporter().putCustomData(BUG_TITLE_FIELD, bugName.getText().toString());
ACRA.getErrorReporter().putCustomData(BUG_TYPE_FIELD, bugType.getSelectedItem().toString());
ACRA.getErrorReporter().putCustomData(BUG_DESCRIPTION_FIELD, bugDescription.getText().toString());
ACRA.getErrorReporter().putCustomData(BUG_REPRODUCTION_FIELD, bugReproduction.getText().toString());
// Send the report (Stack trace will say "Requested by Developer"
// That should set apart manual reports from actual crashes
ACRA.getErrorReporter().handleException(null);
// Notify the user that the report was sent
Toast toast = Toast.makeText(this, getResources().getString(R.string.file_bug_toast_success), Toast.LENGTH_LONG);
toast.show();
this.finish();
}
}
private boolean verifyFieldNotEmpty(EditText... args) {
boolean allValid = true;
for (EditText field : args) {
String input = field.getText().toString();
if (input.trim().length() == 0) {
field.setError(getResources().getString(R.string.file_bug_missing_field));
allValid = false;
}
}
return allValid;
}
}