package com.paphus.sdk.activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import com.paphus.sdk.activity.R;
import com.paphus.sdk.activity.actions.HttpAction;
import com.paphus.sdk.activity.actions.HttpChangeUserIconAction;
import com.paphus.sdk.activity.actions.HttpFlagUserAction;
import com.paphus.sdk.activity.actions.HttpGetImageAction;
import com.paphus.sdk.config.UserConfig;
import com.paphus.sdk.config.WebMediumConfig;
/**
* Activity for viewing a user's details.
*/
public class ViewUserActivity extends CreateUserActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_user);
resetView();
}
public void resetView() {
UserConfig user = MainActivity.viewUser;
if (user == null) {
return;
}
setTitle(user.user);
TextView text = (TextView) findViewById(R.id.userText);
text.setText(user.user);
text = (TextView) findViewById(R.id.nameText);
if (user.showName) {
text.setText(user.name);
} else {
text.setVisibility(View.GONE);
text = (TextView) findViewById(R.id.nameLabel);
text.setVisibility(View.GONE);
}
text = (TextView) findViewById(R.id.websiteText);
if (user.website == null || user.website.length() == 0) {
text.setVisibility(View.GONE);
text = (TextView) findViewById(R.id.websiteLabel);
text.setVisibility(View.GONE);
} else {
text.setText(user.website);
}
text = (TextView) findViewById(R.id.joinedText);
text.setText(user.joined);
text = (TextView) findViewById(R.id.connectsText);
text.setText(user.connects);
text = (TextView) findViewById(R.id.lastConnectText);
text.setText(user.lastConnect);
text = (TextView) findViewById(R.id.botsText);
text.setText(user.bots);
text = (TextView) findViewById(R.id.postsText);
text.setText(user.posts);
text = (TextView) findViewById(R.id.messagesText);
text.setText(user.messages);
WebView web = (WebView) findViewById(R.id.bioText);
web.loadDataWithBaseURL(null, user.bio, "text/html", "utf-8", null);
web.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
try {
view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
} catch (Exception failed) {
return false;
}
return true;
}
});
HttpGetImageAction.fetchImage(this, MainActivity.viewUser.avatar, (ImageView)findViewById(R.id.imageView));
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.layout.menu_view_user, menu);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
for (int index = 0; index < menu.size(); index++) {
menu.getItem(index).setEnabled(true);
}
if (MainActivity.user == null || MainActivity.user == MainActivity.viewUser) {
menu.findItem(R.id.menuFlag).setEnabled(false);
}
if (MainActivity.user != MainActivity.viewUser) {
menu.findItem(R.id.menuChangeIcon).setEnabled(false);
menu.findItem(R.id.menuEditUser).setEnabled(false);
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.menuChangeIcon:
changeIcon();
return true;
case R.id.menuEditUser:
editUser();
return true;
case R.id.menuFlag:
flag();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public void editUser() {
Intent intent = new Intent(this, EditUserActivity.class);
startActivity(intent);
}
public void flag() {
if (MainActivity.user == null) {
MainActivity.showMessage("You must sign in to flag a user", this);
return;
}
final EditText text = new EditText(this);
MainActivity.prompt("Enter reason for flagging the user", this, text, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
WebMediumConfig instance = MainActivity.instance.credentials();
instance.flaggedReason = text.getText().toString();
if (instance.flaggedReason.trim().length() == 0) {
MainActivity.error("You must enter a valid reason for flagging the user", null, ViewUserActivity.this);
return;
}
HttpAction action = new HttpFlagUserAction(ViewUserActivity.this, MainActivity.viewUser);
action.execute();
}
});
}
public void changeIcon() {
Intent upload = new Intent(Intent.ACTION_GET_CONTENT);
upload.setType("image/*");
startActivityForResult(upload, 1);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK) {
return;
}
try {
String file = MainActivity.getFilePathFromURI(this, data.getData());
HttpAction action = new HttpChangeUserIconAction(this, file, MainActivity.user);
action.execute().get();
if (action.getException() != null) {
throw action.getException();
}
} catch (Exception exception) {
MainActivity.error(exception.getMessage(), exception, this);
return;
}
}
public void menu(View view) {
openOptionsMenu();
}
}