PublishProfilePictureActivity.java

  1package eu.siacs.conversations.ui;
  2
  3import android.app.PendingIntent;
  4import android.content.Intent;
  5import android.graphics.Bitmap;
  6import android.net.Uri;
  7import android.os.Bundle;
  8import android.view.MenuItem;
  9import android.view.View;
 10import android.view.View.OnClickListener;
 11import android.widget.Button;
 12import android.widget.ImageView;
 13import android.widget.TextView;
 14import eu.siacs.conversations.R;
 15import eu.siacs.conversations.entities.Account;
 16import eu.siacs.conversations.utils.PhoneHelper;
 17import eu.siacs.conversations.xmpp.pep.Avatar;
 18
 19public class PublishProfilePictureActivity extends XmppActivity {
 20
 21	private static final int REQUEST_CHOOSE_FILE = 0xac23;
 22
 23	private ImageView avatar;
 24	private TextView accountTextView;
 25	private Button cancelButton;
 26	private Button publishButton;
 27
 28	private Uri avatarUri;
 29
 30	private Account account;
 31
 32	private UiCallback<Avatar> avatarPublication = new UiCallback<Avatar>() {
 33
 34		@Override
 35		public void success(Avatar object) {
 36			finish();
 37		}
 38
 39		@Override
 40		public void error(int errorCode, Avatar object) {
 41			// TODO Auto-generated method stub
 42
 43		}
 44
 45		@Override
 46		public void userInputRequried(PendingIntent pi, Avatar object) {
 47			// TODO Auto-generated method stub
 48
 49		}
 50	};
 51
 52	@Override
 53	public void onCreate(Bundle savedInstanceState) {
 54		super.onCreate(savedInstanceState);
 55		setContentView(R.layout.activity_publish_profile_picture);
 56		this.avatar = (ImageView) findViewById(R.id.account_image);
 57		this.cancelButton = (Button) findViewById(R.id.cancel_button);
 58		this.publishButton = (Button) findViewById(R.id.publish_button);
 59		this.accountTextView = (TextView) findViewById(R.id.account);
 60		this.publishButton.setOnClickListener(new OnClickListener() {
 61
 62			@Override
 63			public void onClick(View v) {
 64				if (avatarUri != null) {
 65					disablePublishButton();
 66					xmppConnectionService.publishAvatar(account, avatarUri,
 67							avatarPublication);
 68				}
 69			}
 70		});
 71		this.cancelButton.setOnClickListener(new OnClickListener() {
 72
 73			@Override
 74			public void onClick(View v) {
 75				finish();
 76			}
 77		});
 78		this.avatar.setOnClickListener(new OnClickListener() {
 79
 80			@Override
 81			public void onClick(View v) {
 82				Intent attachFileIntent = new Intent();
 83				attachFileIntent.setType("image/*");
 84				attachFileIntent.setAction(Intent.ACTION_GET_CONTENT);
 85				Intent chooser = Intent.createChooser(attachFileIntent,
 86						getString(R.string.attach_file));
 87				startActivityForResult(chooser, REQUEST_CHOOSE_FILE);
 88			}
 89		});
 90	}
 91
 92	@Override
 93	protected void onActivityResult(int requestCode, int resultCode,
 94			final Intent data) {
 95		super.onActivityResult(requestCode, resultCode, data);
 96		if (resultCode == RESULT_OK) {
 97			if (requestCode == REQUEST_CHOOSE_FILE) {
 98				this.avatarUri = data.getData();
 99			}
100		}
101	}
102	
103	@Override
104	public boolean onOptionsItemSelected(MenuItem menuItem) {
105		super.onOptionsItemSelected(menuItem);
106		switch (menuItem.getItemId()) {
107		case android.R.id.home:
108			finish();
109			break;
110		}
111		return true;
112	}
113
114	@Override
115	protected void onBackendConnected() {
116		if (getIntent() != null) {
117			String jid = getIntent().getStringExtra("account");
118			if (jid != null) {
119				this.account = xmppConnectionService.findAccountByJid(jid);
120				if (this.avatarUri == null) {
121					avatarUri = PhoneHelper
122							.getSefliUri(getApplicationContext());
123				}
124				loadImageIntoPreview(avatarUri);
125				this.accountTextView.setText(this.account.getJid());
126			}
127		}
128
129	}
130
131	protected void loadImageIntoPreview(Uri uri) {
132		Bitmap bm = xmppConnectionService.getFileBackend().cropCenterSquare(
133				uri, 384);
134		this.avatar.setImageBitmap(bm);
135		enablePublishButton();
136	}
137
138	protected void enablePublishButton() {
139		this.publishButton.setEnabled(true);
140		this.publishButton.setTextColor(getPrimaryTextColor());
141	}
142	
143	protected void disablePublishButton() {
144		this.publishButton.setEnabled(false);
145		this.publishButton.setTextColor(getSecondaryTextColor());
146	}
147
148}