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