package org.bienvenidoainternet.baiparser;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.koushikdutta.async.future.FutureCallback;
import com.koushikdutta.ion.Ion;
import org.bienvenidoainternet.baiparser.structure.Board;
import org.bienvenidoainternet.baiparser.structure.BoardItem;
import org.w3c.dom.Document;
import java.io.File;
import utils.ContentProviderUtils;
public class ResponseActivity extends AppCompatActivity {
private BoardItem theReply = null;
private Board currentBoard = null;
private SharedPreferences settings;
private String password;
private String selectedFile = "";
private final int PICK_IMAGE = 1;
EditText filePath;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ThemeManager tm = new ThemeManager(this);
this.setTheme(tm.getThemeForActivity());
setContentView(R.layout.activity_response);
getSupportActionBar().setTitle("Respondiendo");
settings = PreferenceManager.getDefaultSharedPreferences(this);
password = settings.getString("pref_password", "12345678");
if (savedInstanceState != null){
this.theReply = savedInstanceState.getParcelable("theReply");
this.currentBoard = savedInstanceState.getParcelable("theBoard");
}
if (getIntent().getExtras() != null){
this.theReply = getIntent().getParcelableExtra("theReply");
this.currentBoard = getIntent().getParcelableExtra("theBoard");
}
if (theReply != null && currentBoard != null){
System.out.println(theReply.getId() + " " + theReply.getName());
}
LinearLayout layoutProcess = (LinearLayout)findViewById(R.id.layoutPostProcess);
layoutProcess.setVisibility(View.GONE);
filePath = (EditText) findViewById(R.id.txtFilePath);
Button bBold = (Button) findViewById(R.id.buttonBold);
bBold.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TextView txtMessage = (TextView) findViewById(R.id.txtResponse);
if (txtMessage.getSelectionStart() == -1){
txtMessage.setText(txtMessage.getText() + "");
}else{
String s = txtMessage.getText().toString();
String a = s.substring(0, txtMessage.getSelectionStart());
String b = s.substring(txtMessage.getSelectionStart(), txtMessage.getSelectionEnd());
String c = s.substring(txtMessage.getSelectionEnd(), txtMessage.getText().length());
txtMessage.setText(a + "" + b + "" + c);
}
}
});
Button bItalic = (Button) findViewById(R.id.buttonItalic);
bItalic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TextView txtMessage = (TextView) findViewById(R.id.txtResponse);
if (txtMessage.getSelectionStart() == -1){
txtMessage.setText(txtMessage.getText() + "");
}else{
String s = txtMessage.getText().toString();
String a = s.substring(0, txtMessage.getSelectionStart());
String b = s.substring(txtMessage.getSelectionStart(), txtMessage.getSelectionEnd());
String c = s.substring(txtMessage.getSelectionEnd(), txtMessage.getText().length());
txtMessage.setText(a + "" + b + "" + c);
}
}
});
Button select = (Button) findViewById(R.id.btnSelectFiles);
select.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Seleccionar Archivo"), PICK_IMAGE);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_replyform, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_form_reply){
TextView txtName = (TextView) findViewById(R.id.txtPosterName);
TextView txtEmail = (TextView) findViewById(R.id.txtEmail);
TextView txtMessage = (TextView) findViewById(R.id.txtResponse);
makePost(txtName.getText().toString(), txtEmail.getText().toString(), txtMessage.getText().toString());
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE && resultCode == RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String picturePath = ContentProviderUtils.getPath(getApplicationContext(), selectedImage);
selectedFile = picturePath;
filePath.setText(picturePath);
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
private void makePost(String name, String email, String message){
int parentId = theReply.getParentId();
if (theReply.getParentId() == 0 || theReply.getParentId() == -1){
parentId = theReply.getId();
}
LinearLayout layoutProcess = (LinearLayout)findViewById(R.id.layoutPostProcess);
layoutProcess.setVisibility(View.VISIBLE);
final RelativeLayout formSendPost = (RelativeLayout) findViewById(R.id.layoutForm);
formSendPost.setVisibility(View.GONE);
ProgressBar progess = (ProgressBar) findViewById(R.id.barPosting);
final TextView err = (TextView)findViewById(R.id.txtPostingState);
err.setText("");
File up = new File(selectedFile);
if (selectedFile.isEmpty()) Ion.with(getApplicationContext())
.load("http://bienvenidoainternet.org/cgi/post")
.setLogging("posting", Log.VERBOSE)
.uploadProgressBar(progess)
.setMultipartParameter("board", currentBoard.getBoardDir())
.setMultipartParameter("parent", String.valueOf(theReply.realParentId()))
.setMultipartParameter("password", password)
.setMultipartParameter("fielda", name)
.setMultipartParameter("fieldb", email)
.setMultipartParameter("name", "")
.setMultipartParameter("email", "")
.setMultipartParameter("message", message)
.asString()
.setCallback(new FutureCallback() {
@Override
public void onCompleted(Exception e, String result) {
Log.v("sendPost", result);
if (e != null){
Toast.makeText(getApplicationContext(), "Ha ocurrido un error! ;_;", Toast.LENGTH_LONG).show();
formSendPost.setVisibility(View.VISIBLE);
err.setText("Error: " + e.getMessage());
e.printStackTrace();
}else{
Toast.makeText(getApplicationContext(), "Post enviado", Toast.LENGTH_LONG).show();
finish();
}
}
});
else{
Ion.with(getApplicationContext())
.load("http://bienvenidoainternet.org/cgi/post")
.uploadProgressBar(progess)
.setMultipartParameter("board", currentBoard.getBoardDir())
.setMultipartParameter("parent", String.valueOf(parentId))
.setMultipartParameter("password", password)
.setMultipartParameter("fielda", name)
.setMultipartParameter("fieldb", email)
.setMultipartParameter("name", "")
.setMultipartParameter("email", "")
.setMultipartParameter("message", message)
.setMultipartFile("file", up)
.asDocument()
.setCallback(new FutureCallback() {
@Override
public void onCompleted(Exception e, Document result) {
if (e != null){
Toast.makeText(getApplicationContext(), "Ha ocurrido un error! ;_;", Toast.LENGTH_LONG).show();
formSendPost.setVisibility(View.VISIBLE);
err.setText("Error: " + e.getMessage());
e.printStackTrace();
}else{
Toast.makeText(getApplicationContext(), "Post enviado", Toast.LENGTH_LONG).show();
finish();
}
}
});
}
}
}