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}