package eu.deki.paste; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.os.Bundle; import android.widget.Spinner; import android.widget.EditText; import android.widget.ArrayAdapter; import android.view.View; import android.view.Menu; import android.view.MenuItem; import android.view.MenuInflater; import android.content.Intent; import android.content.ContentResolver; import android.net.Uri; import java.io.InputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.FileNotFoundException; import eu.deki.paste.DekiEuPaste; /* * TODO: * - change supported expiration dates based on selected paste service * - menu: open browser with url? */ public class MainActivity extends Activity { private EditText titleText; private EditText contentText; private Spinner expirationSpinner; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); titleText = (EditText) findViewById(R.id.paste_title); contentText = (EditText) findViewById(R.id.paste_content); expirationSpinner = (Spinner) findViewById(R.id.expiration); ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.expiration_array, android.R.layout.simple_spinner_item); //adapter.setDropDownViewResource(android.R.layout.simple_spinner_item); expirationSpinner.setAdapter(adapter); Intent intent = getIntent(); if(intent.hasExtra(Intent.EXTRA_TEXT)) contentText.setText(intent.getStringExtra(Intent.EXTRA_TEXT)); if(intent.hasExtra(Intent.EXTRA_STREAM)) { try { Uri uri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM); ContentResolver cr = getContentResolver(); InputStream is = cr.openInputStream(uri); ByteArrayOutputStream output = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int n = 0; while((n = is.read(buffer, 0, 1024)) != -1) output.write(buffer, 0, n); output.flush(); contentText.setText(output.toString()); } catch(FileNotFoundException ex) { } catch(IOException ex) { } catch(SecurityException ex) { // no permissions to read data (e.g. contacts/vcards) AlertDialog.Builder builder = new AlertDialog.Builder(this); String message = String.format(getResources().getString(R.string.noPermissionContent), ex.getLocalizedMessage()); builder.setMessage(message); builder.setTitle(R.string.noPermissionTitle); builder.setPositiveButton("OK", null); builder.create().show(); } } } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case R.id.clear_text: clear_text(); break; default: return super.onOptionsItemSelected(item); } return true; } private void clear_text() { titleText.setText(""); contentText.setText(""); } public void onPasteButtonClick(View view) { // TODO: check network status? new DekiEuPaste(this).execute(titleText.getText().toString(), contentText.getText().toString(), "1hour"); } }