package io.evercam.androidapp;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.EditText;
import io.evercam.User;
import io.evercam.androidapp.custom.CustomToast;
import io.evercam.androidapp.custom.CustomedDialog;
import io.evercam.androidapp.dto.AppData;
import io.evercam.androidapp.dto.AppUser;
import io.evercam.androidapp.feedback.FeedbackSender;
import io.evercam.androidapp.utils.Constants;
public class FeedbackActivity extends ParentActivity
{
private final String TAG = "FeedbackActivity";
private EditText feedbackEditText;
private String cameraId;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
if(this.getActionBar() != null)
{
this.getActionBar().setDisplayHomeAsUpEnabled(true);
}
setContentView(R.layout.activity_feedback);
Bundle bundle = getIntent().getExtras();
if(bundle != null)
{
cameraId = bundle.getString(Constants.BUNDLE_KEY_CAMERA_ID);
}
feedbackEditText = (EditText) findViewById(R.id.feedback_edit_text);
fillUserDetail();
}
@Override
protected void onRestart()
{
super.onRestart();
if(!MainActivity.isUserLogged(this))
{
finish();
}
else
{
//Re-fill user details because user account could be changed
fillUserDetail();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.menu_feedback, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
int id = item.getItemId();
if(id == R.id.action_send)
{
final String feedbackString = feedbackEditText.getText().toString().trim();
if(feedbackString.isEmpty())
{
//Do nothing
}
else
{
feedbackEditText.setText("");
CustomToast.showInCenterLong(this, R.string.msg_feedback_sent);
new Thread(new Runnable()
{
@Override
public void run()
{
FeedbackSender feedbackSender = new FeedbackSender(FeedbackActivity.this);
feedbackSender.send(feedbackString, cameraId);
}
}).start();
finish();
}
return true;
}
else if(id == android.R.id.home)
{
showConfirmQuitDialog();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed()
{
showConfirmQuitDialog();
}
private void showConfirmQuitDialog()
{
String feedbackString = feedbackEditText.getText().toString();
if(!feedbackString.isEmpty())
{
CustomedDialog.getConfirmQuitFeedbackDialog(this, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
finish();
}
}).show();
}
else
{
finish();
}
}
private void fillUserDetail()
{
Runnable requestUserRunnable = new Runnable()
{
@Override
public void run()
{
AppUser user = AppData.defaultUser;
if(user != null)
{
try
{
User evercamUser = new User(user.getUsername());
String fullName = evercamUser.getFirstName() + " " + evercamUser
.getLastName();
String userEmail = evercamUser.getEmail();
fill(fullName, userEmail);
}
catch(Exception e)
{
EvercamPlayApplication.sendCaughtException(FeedbackActivity.this, e);
Log.e(TAG, e.toString());
}
}
}
};
new Thread(requestUserRunnable).start();
}
private void fill(final String fullName, final String email)
{
runOnUiThread(new Runnable()
{
@Override
public void run()
{
final EditText nameEditText = (EditText) findViewById(R.id.feedback_name_edit);
final EditText emailEditText = (EditText) findViewById(R.id.feedback_email_edit);
nameEditText.setText(fullName);
emailEditText.setText(email);
}
});
}
}