Nagram/TMessagesProj/src/main/java/org/telegram/ui/UserProfileActivity.java
DrKLO 507d05aaf1 update to 1.3.21
Ability to delete add rename contacts, proper handling of new contacts
in phone book
New photo crop
Ability to disable automatic photo download
Ability to disable notifications about new registered contacts
Updated Spanish localization
Bug fixes
2014-02-11 18:32:09 +04:00

903 lines
44 KiB
Java

/*
* This is the source code of Telegram for Android v. 1.3.2.
* It is licensed under GNU GPL v. 2 or later.
* You should have received a copy of the license in this archive (see LICENSE).
*
* Copyright Nikolai Kudashov, 2013.
*/
package org.telegram.ui;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Typeface;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import org.telegram.PhoneFormat.PhoneFormat;
import org.telegram.TL.TLObject;
import org.telegram.TL.TLRPC;
import org.telegram.messenger.ConnectionsManager;
import org.telegram.messenger.ContactsController;
import org.telegram.messenger.FileLog;
import org.telegram.messenger.MessagesController;
import org.telegram.messenger.MessagesStorage;
import org.telegram.messenger.NotificationCenter;
import org.telegram.messenger.R;
import org.telegram.messenger.RPCRequest;
import org.telegram.messenger.Utilities;
import org.telegram.ui.Views.BackupImageView;
import org.telegram.ui.Views.BaseFragment;
import org.telegram.ui.Views.IdenticonView;
import org.telegram.ui.Views.OnSwipeTouchListener;
import java.util.ArrayList;
public class UserProfileActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate, MessagesActivity.MessagesActivityDelegate {
private ListView listView;
private ListAdapter listAdapter;
private int user_id;
private String selectedPhone;
private int totalMediaCount = -1;
private boolean creatingChat = false;
private long dialog_id;
private TLRPC.EncryptedChat currentEncryptedChat;
@Override
public boolean onFragmentCreate() {
super.onFragmentCreate();
NotificationCenter.Instance.addObserver(this, MessagesController.updateInterfaces);
NotificationCenter.Instance.addObserver(this, MessagesController.contactsDidLoaded);
NotificationCenter.Instance.addObserver(this, MessagesController.mediaCountDidLoaded);
NotificationCenter.Instance.addObserver(this, MessagesController.encryptedChatCreated);
NotificationCenter.Instance.addObserver(this, MessagesController.encryptedChatUpdated);
user_id = getArguments().getInt("user_id", 0);
dialog_id = getArguments().getLong("dialog_id", 0);
if (dialog_id != 0) {
currentEncryptedChat = MessagesController.Instance.encryptedChats.get((int)(dialog_id >> 32));
}
return MessagesController.Instance.users.get(user_id) != null;
}
@Override
public void onFragmentDestroy() {
super.onFragmentDestroy();
NotificationCenter.Instance.removeObserver(this, MessagesController.updateInterfaces);
NotificationCenter.Instance.removeObserver(this, MessagesController.contactsDidLoaded);
NotificationCenter.Instance.removeObserver(this, MessagesController.mediaCountDidLoaded);
NotificationCenter.Instance.removeObserver(this, MessagesController.encryptedChatCreated);
NotificationCenter.Instance.removeObserver(this, MessagesController.encryptedChatUpdated);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (fragmentView == null) {
fragmentView = inflater.inflate(R.layout.user_profile_layout, container, false);
listAdapter = new ListAdapter(parentActivity);
View startSecretButton = fragmentView.findViewById(R.id.start_secret_button);
startSecretButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
creatingChat = true;
MessagesController.Instance.startSecretChat(parentActivity, MessagesController.Instance.users.get(user_id));
}
});
if (dialog_id == 0) {
startSecretButton.setVisibility(View.VISIBLE);
} else {
startSecretButton.setVisibility(View.GONE);
}
listView = (ListView)fragmentView.findViewById(R.id.listView);
listView.setAdapter(listAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
if (i == 4 && dialog_id == 0 ||
dialog_id != 0 && (i == 6 && currentEncryptedChat instanceof TLRPC.TL_encryptedChat ||
i == 4 && !(currentEncryptedChat instanceof TLRPC.TL_encryptedChat))) {
SharedPreferences preferences = parentActivity.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
String key;
if (dialog_id == 0) {
key = "notify_" + user_id;
} else {
key = "notify_" + dialog_id;
}
boolean value = preferences.getBoolean(key, true);
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean(key, !value);
editor.commit();
listView.invalidateViews();
} else if (i == 5 && dialog_id == 0 ||
dialog_id != 0 && (i == 7 && currentEncryptedChat instanceof TLRPC.TL_encryptedChat ||
i == 5 && !(currentEncryptedChat instanceof TLRPC.TL_encryptedChat))) {
try {
Intent tmpIntent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
tmpIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
tmpIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, false);
SharedPreferences preferences = parentActivity.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
Uri currentSound = null;
String defaultPath = null;
Uri defaultUri = Settings.System.DEFAULT_NOTIFICATION_URI;
if (defaultUri != null) {
defaultPath = defaultUri.getPath();
}
String path = preferences.getString("sound_path_" + user_id, defaultPath);
if (path != null && !path.equals("NoSound")) {
if (path.equals(defaultPath)) {
currentSound = defaultUri;
} else {
currentSound = Uri.parse(path);
}
}
tmpIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, currentSound);
startActivityForResult(tmpIntent, 0);
} catch (Exception e) {
FileLog.e("tmessages", e);
}
} else if (i == 7 && dialog_id == 0 ||
dialog_id != 0 && (i == 9 && currentEncryptedChat instanceof TLRPC.TL_encryptedChat ||
i == 7 && !(currentEncryptedChat instanceof TLRPC.TL_encryptedChat))) {
MediaActivity fragment = new MediaActivity();
Bundle bundle = new Bundle();
if (dialog_id != 0) {
bundle.putLong("dialog_id", dialog_id);
} else {
bundle.putLong("dialog_id", user_id);
}
fragment.setArguments(bundle);
((ApplicationActivity)parentActivity).presentFragment(fragment, "media_user_" + user_id, false);
} else if (i == 5 && dialog_id != 0 && currentEncryptedChat instanceof TLRPC.TL_encryptedChat) {
IdenticonActivity fragment = new IdenticonActivity();
Bundle bundle = new Bundle();
bundle.putInt("chat_id", (int)(dialog_id >> 32));
fragment.setArguments(bundle);
((ApplicationActivity)parentActivity).presentFragment(fragment, "key_" + dialog_id, false);
} else if (i == 4 && dialog_id != 0 && currentEncryptedChat instanceof TLRPC.TL_encryptedChat) {
AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity);
builder.setTitle(getStringEntry(R.string.MessageLifetime));
builder.setItems(new CharSequence[]{
getStringEntry(R.string.ShortMessageLifetimeForever),
getStringEntry(R.string.ShortMessageLifetime2s),
getStringEntry(R.string.ShortMessageLifetime5s),
getStringEntry(R.string.ShortMessageLifetime1m),
getStringEntry(R.string.ShortMessageLifetime1h),
getStringEntry(R.string.ShortMessageLifetime1d),
getStringEntry(R.string.ShortMessageLifetime1w)
}, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
int oldValue = currentEncryptedChat.ttl;
if (which == 0) {
currentEncryptedChat.ttl = 0;
} else if (which == 1) {
currentEncryptedChat.ttl = 2;
} else if (which == 2) {
currentEncryptedChat.ttl = 5;
} else if (which == 3) {
currentEncryptedChat.ttl = 60;
} else if (which == 4) {
currentEncryptedChat.ttl = 60 * 60;
} else if (which == 5) {
currentEncryptedChat.ttl = 60 * 60 * 24;
} else if (which == 6) {
currentEncryptedChat.ttl = 60 * 60 * 24 * 7;
}
if (oldValue != currentEncryptedChat.ttl) {
if (listView != null) {
listView.invalidateViews();
}
MessagesController.Instance.sendTTLMessage(currentEncryptedChat);
MessagesStorage.Instance.updateEncryptedChat(currentEncryptedChat);
}
}
});
builder.setNegativeButton(getStringEntry(R.string.Cancel), null);
builder.show().setCanceledOnTouchOutside(true);
}
}
});
if (dialog_id != 0) {
MessagesController.Instance.getMediaCount(dialog_id, classGuid, true);
} else {
MessagesController.Instance.getMediaCount(user_id, classGuid, true);
}
listView.setOnTouchListener(new OnSwipeTouchListener() {
public void onSwipeRight() {
finishFragment(true);
}
});
} else {
ViewGroup parent = (ViewGroup)fragmentView.getParent();
if (parent != null) {
parent.removeView(fragmentView);
}
}
return fragmentView;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
if (data == null) {
return;
}
Uri ringtone = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
String name = null;
if (ringtone != null) {
Ringtone rng = RingtoneManager.getRingtone(ApplicationLoader.applicationContext, ringtone);
if (rng != null) {
name = rng.getTitle(ApplicationLoader.applicationContext);
rng.stop();
}
}
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
if (requestCode == 0) {
if (name != null && ringtone != null) {
editor.putString("sound_" + user_id, name);
editor.putString("sound_path_" + user_id, ringtone.toString());
} else {
editor.putString("sound_" + user_id, "NoSound");
editor.putString("sound_path_" + user_id, "NoSound");
}
}
editor.commit();
listView.invalidateViews();
}
}
public void didReceivedNotification(int id, Object... args) {
if (id == MessagesController.updateInterfaces) {
int mask = (Integer)args[0];
if ((mask & MessagesController.UPDATE_MASK_AVATAR) != 0 || (mask & MessagesController.UPDATE_MASK_NAME) != 0) {
if (listView != null) {
listView.invalidateViews();
}
}
} else if (id == MessagesController.contactsDidLoaded) {
if (parentActivity != null) {
parentActivity.supportInvalidateOptionsMenu();
}
} else if (id == MessagesController.mediaCountDidLoaded) {
long uid = (Long)args[0];
if (uid > 0 && user_id == uid && dialog_id == 0 || dialog_id != 0 && dialog_id == uid) {
totalMediaCount = (Integer)args[1];
if (listView != null) {
listView.invalidateViews();
}
}
} else if (id == MessagesController.encryptedChatCreated) {
if (creatingChat) {
NotificationCenter.Instance.postNotificationName(MessagesController.closeChats);
TLRPC.EncryptedChat encryptedChat = (TLRPC.EncryptedChat)args[0];
ChatActivity fragment = new ChatActivity();
Bundle bundle = new Bundle();
bundle.putInt("enc_id", encryptedChat.id);
fragment.setArguments(bundle);
((ApplicationActivity)parentActivity).presentFragment(fragment, "chat" + Math.random(), true, false);
}
} else if (id == MessagesController.encryptedChatUpdated) {
TLRPC.EncryptedChat chat = (TLRPC.EncryptedChat)args[0];
if (currentEncryptedChat != null && chat.id == currentEncryptedChat.id) {
currentEncryptedChat = chat;
if (listAdapter != null) {
listAdapter.notifyDataSetChanged();
}
}
}
}
@Override
public void applySelfActionBar() {
if (parentActivity == null) {
return;
}
ActionBar actionBar = parentActivity.getSupportActionBar();
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setSubtitle(null);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayUseLogoEnabled(false);
actionBar.setDisplayShowCustomEnabled(false);
actionBar.setCustomView(null);
if (dialog_id != 0) {
actionBar.setTitle(getStringEntry(R.string.SecretTitle));
} else {
actionBar.setTitle(getStringEntry(R.string.ContactInfo));
}
TextView title = (TextView)parentActivity.findViewById(R.id.action_bar_title);
if (title == null) {
final int subtitleId = parentActivity.getResources().getIdentifier("action_bar_title", "id", "android");
title = (TextView)parentActivity.findViewById(subtitleId);
}
if (title != null) {
if (dialog_id != 0) {
title.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_lock_white, 0, 0, 0);
title.setCompoundDrawablePadding(Utilities.dp(4));
} else {
title.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
title.setCompoundDrawablePadding(0);
}
}
}
@Override
public void onResume() {
super.onResume();
if (isFinish) {
return;
}
if (getActivity() == null) {
return;
}
if (!firstStart && listAdapter != null) {
listAdapter.notifyDataSetChanged();
}
firstStart = false;
((ApplicationActivity)parentActivity).showActionBar();
((ApplicationActivity)parentActivity).updateActionBar();
fixLayout();
}
@Override
public void onConfigurationChanged(android.content.res.Configuration newConfig) {
super.onConfigurationChanged(newConfig);
fixLayout();
}
private void fixLayout() {
if (listView != null) {
ViewTreeObserver obs = listView.getViewTreeObserver();
obs.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
listView.getViewTreeObserver().removeOnPreDrawListener(this);
if (dialog_id != 0) {
TextView title = (TextView)parentActivity.findViewById(R.id.action_bar_title);
if (title == null) {
final int subtitleId = ApplicationLoader.applicationContext.getResources().getIdentifier("action_bar_title", "id", "android");
title = (TextView)parentActivity.findViewById(subtitleId);
}
if (title != null) {
title.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_lock_white, 0, 0, 0);
title.setCompoundDrawablePadding(Utilities.dp(4));
}
}
return false;
}
});
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int itemId = item.getItemId();
switch (itemId) {
case android.R.id.home:
finishFragment();
break;
case R.id.block_contact: {
TLRPC.User user = MessagesController.Instance.users.get(user_id);
if (user == null) {
break;
}
TLRPC.TL_contacts_block req = new TLRPC.TL_contacts_block();
req.id = MessagesController.getInputUser(user);
TLRPC.TL_contactBlocked blocked = new TLRPC.TL_contactBlocked();
blocked.user_id = user_id;
blocked.date = (int)(System.currentTimeMillis() / 1000);
ConnectionsManager.Instance.performRpc(req, new RPCRequest.RPCRequestDelegate() {
@Override
public void run(TLObject response, TLRPC.TL_error error) {
}
}, null, true, RPCRequest.RPCRequestClassGeneric);
break;
}
case R.id.add_contact: {
TLRPC.User user = MessagesController.Instance.users.get(user_id);
ContactAddActivity fragment = new ContactAddActivity();
Bundle args = new Bundle();
args.putInt("user_id", user.id);
fragment.setArguments(args);
((ApplicationActivity)parentActivity).presentFragment(fragment, "add_contact_" + user.id, false);
break;
}
case R.id.share_contact: {
MessagesActivity fragment = new MessagesActivity();
Bundle args = new Bundle();
args.putBoolean("onlySelect", true);
args.putBoolean("serverOnly", true);
fragment.setArguments(args);
fragment.delegate = this;
((ApplicationActivity)parentActivity).presentFragment(fragment, "chat_select", false);
break;
}
case R.id.edit_contact: {
ContactAddActivity fragment = new ContactAddActivity();
Bundle args = new Bundle();
args.putInt("user_id", user_id);
fragment.setArguments(args);
((ApplicationActivity)parentActivity).presentFragment(fragment, "add_contact_" + user_id, false);
break;
}
case R.id.delete_contact: {
final TLRPC.User user = MessagesController.Instance.users.get(user_id);
if (user == null) {
break;
}
AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity);
builder.setMessage(getStringEntry(R.string.AreYouSure));
builder.setTitle(getStringEntry(R.string.AppName));
builder.setPositiveButton(getStringEntry(R.string.OK), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
ArrayList<TLRPC.User> arrayList = new ArrayList<TLRPC.User>();
arrayList.add(user);
ContactsController.Instance.deleteContact(arrayList);
}
});
builder.setNegativeButton(getStringEntry(R.string.Cancel), null);
builder.show().setCanceledOnTouchOutside(true);
break;
}
}
return true;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
if (ContactsController.Instance.contactsDict.get(user_id) == null) {
TLRPC.User user = MessagesController.Instance.users.get(user_id);
if (user == null) {
return;
}
if (user.phone != null && user.phone.length() != 0) {
inflater.inflate(R.menu.user_profile_menu, menu);
} else {
inflater.inflate(R.menu.user_profile_block_menu, menu);
}
} else {
inflater.inflate(R.menu.user_profile_contact_menu, menu);
}
}
@Override
public void didSelectDialog(MessagesActivity messageFragment, long dialog_id) {
if (dialog_id != 0) {
ChatActivity fragment = new ChatActivity();
Bundle bundle = new Bundle();
int lower_part = (int)dialog_id;
if (lower_part != 0) {
if (lower_part > 0) {
NotificationCenter.Instance.postNotificationName(MessagesController.closeChats);
bundle.putInt("user_id", lower_part);
fragment.setArguments(bundle);
fragment.scrollToTopOnResume = true;
((ApplicationActivity)parentActivity).presentFragment(fragment, "chat" + Math.random(), true, false);
removeSelfFromStack();
messageFragment.removeSelfFromStack();
} else if (lower_part < 0) {
NotificationCenter.Instance.postNotificationName(MessagesController.closeChats);
bundle.putInt("chat_id", -lower_part);
fragment.setArguments(bundle);
fragment.scrollToTopOnResume = true;
((ApplicationActivity)parentActivity).presentFragment(fragment, "chat" + Math.random(), true, false);
messageFragment.removeSelfFromStack();
removeSelfFromStack();
}
} else {
NotificationCenter.Instance.postNotificationName(MessagesController.closeChats);
int id = (int)(dialog_id >> 32);
bundle.putInt("enc_id", id);
fragment.setArguments(bundle);
fragment.scrollToTopOnResume = true;
((ApplicationActivity)parentActivity).presentFragment(fragment, "chat" + Math.random(), false);
messageFragment.removeSelfFromStack();
removeSelfFromStack();
}
TLRPC.User user = MessagesController.Instance.users.get(user_id);
MessagesController.Instance.sendMessage(user, dialog_id);
}
}
private class ListAdapter extends BaseAdapter {
private Context mContext;
public ListAdapter(Context context) {
mContext = context;
}
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int i) {
if (dialog_id == 0) {
return i == 2 || i == 4 || i == 5 || i == 7;
} else {
if (currentEncryptedChat instanceof TLRPC.TL_encryptedChat) {
return i == 2 || i == 4 || i == 5 || i == 6 || i == 7 || i == 9;
} else {
return i == 2 || i == 4 || i == 5 || i == 9;
}
}
}
@Override
public int getCount() {
if (dialog_id == 0) {
return 8;
} else {
if (currentEncryptedChat instanceof TLRPC.TL_encryptedChat) {
return 10;
} else {
return 8;
}
}
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
int type = getItemViewType(i);
if (type == 0) {
BackupImageView avatarImage;
TextView onlineText;
TLRPC.User user = MessagesController.Instance.users.get(user_id);
if (view == null) {
LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = li.inflate(R.layout.user_profile_avatar_layout, viewGroup, false);
onlineText = (TextView)view.findViewById(R.id.settings_online);
avatarImage = (BackupImageView)view.findViewById(R.id.settings_avatar_image);
avatarImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TLRPC.User user = MessagesController.Instance.users.get(user_id);
if (user.photo != null && user.photo.photo_big != null) {
NotificationCenter.Instance.addToMemCache(56, user_id);
NotificationCenter.Instance.addToMemCache(53, user.photo.photo_big);
Intent intent = new Intent(parentActivity, GalleryImageViewer.class);
startActivity(intent);
}
}
});
} else {
avatarImage = (BackupImageView)view.findViewById(R.id.settings_avatar_image);
onlineText = (TextView)view.findViewById(R.id.settings_online);
}
TextView textView = (TextView)view.findViewById(R.id.settings_name);
Typeface typeface = Utilities.getTypeface("fonts/rmedium.ttf");
textView.setTypeface(typeface);
textView.setText(Utilities.formatName(user.first_name, user.last_name));
if (user.status == null) {
onlineText.setText(getStringEntry(R.string.Offline));
} else {
int currentTime = ConnectionsManager.Instance.getCurrentTime();
if (user.status.expires > currentTime || user.status.was_online > currentTime) {
onlineText.setText(getStringEntry(R.string.Online));
} else {
if (user.status.was_online <= 10000 && user.status.expires <= 10000) {
onlineText.setText(getStringEntry(R.string.Invisible));
} else {
int value = user.status.was_online;
if (value == 0) {
value = user.status.expires;
}
onlineText.setText(Utilities.formatDateOnline(value));
}
}
}
TLRPC.FileLocation photo = null;
if (user.photo != null) {
photo = user.photo.photo_small;
}
avatarImage.setImage(photo, "50_50", Utilities.getUserAvatarForId(user.id));
return view;
} else if (type == 1) {
if (view == null) {
LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = li.inflate(R.layout.settings_section_layout, viewGroup, false);
}
TextView textView = (TextView)view.findViewById(R.id.settings_section_text);
if (i == 1) {
textView.setText(getStringEntry(R.string.PHONE));
} else if (i == 3) {
textView.setText(getStringEntry(R.string.SETTINGS));
} else if (i == 6 && dialog_id == 0 ||
dialog_id != 0 && (i == 8 && currentEncryptedChat instanceof TLRPC.TL_encryptedChat ||
i == 6 && !(currentEncryptedChat instanceof TLRPC.TL_encryptedChat))) {
textView.setText(getStringEntry(R.string.SHAREDMEDIA));
}
} else if (type == 2) {
final TLRPC.User user = MessagesController.Instance.users.get(user_id);
if (view == null) {
LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = li.inflate(R.layout.user_profile_phone_layout, viewGroup, false);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (user.phone == null || user.phone.length() == 0) {
return;
}
selectedPhone = user.phone;
AlertDialog.Builder builder = new AlertDialog.Builder(parentActivity);
builder.setItems(new CharSequence[] {getStringEntry(R.string.Copy), getStringEntry(R.string.Call)}, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if (i == 1) {
try {
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:+" + selectedPhone));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
} catch (Exception e) {
FileLog.e("tmessages", e);
}
} else if (i == 0) {
ActionBarActivity inflaterActivity = parentActivity;
if (inflaterActivity == null) {
inflaterActivity = (ActionBarActivity)getActivity();
}
if (inflaterActivity == null) {
return;
}
int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager)inflaterActivity.getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(selectedPhone);
} else {
android.content.ClipboardManager clipboard = (android.content.ClipboardManager)inflaterActivity.getSystemService(Context.CLIPBOARD_SERVICE);
android.content.ClipData clip = android.content.ClipData.newPlainText("label", selectedPhone);
clipboard.setPrimaryClip(clip);
}
}
}
});
builder.show().setCanceledOnTouchOutside(true);
}
});
}
ImageButton button = (ImageButton)view.findViewById(R.id.settings_edit_name);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
TLRPC.User user = MessagesController.Instance.users.get(user_id);
if (user == null || user instanceof TLRPC.TL_userEmpty) {
return;
}
NotificationCenter.Instance.postNotificationName(MessagesController.closeChats);
ChatActivity fragment = new ChatActivity();
Bundle bundle = new Bundle();
bundle.putInt("user_id", user_id);
fragment.setArguments(bundle);
((ApplicationActivity)parentActivity).presentFragment(fragment, "chat" + Math.random(), true, false);
}
});
TextView textView = (TextView)view.findViewById(R.id.settings_row_text);
TextView detailTextView = (TextView)view.findViewById(R.id.settings_row_text_detail);
View divider = view.findViewById(R.id.settings_row_divider);
if (i == 2) {
if (user.phone != null && user.phone.length() != 0) {
textView.setText(PhoneFormat.Instance.format("+" + user.phone));
} else {
textView.setText("Unknown");
}
divider.setVisibility(View.INVISIBLE);
detailTextView.setText(getStringEntry(R.string.PhoneMobile));
}
} else if (type == 3) {
if (view == null) {
LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = li.inflate(R.layout.settings_row_check_layout, viewGroup, false);
}
TextView textView = (TextView)view.findViewById(R.id.settings_row_text);
View divider = view.findViewById(R.id.settings_row_divider);
if (i == 4 && dialog_id == 0 ||
dialog_id != 0 && (i == 6 && currentEncryptedChat instanceof TLRPC.TL_encryptedChat ||
i == 4 && !(currentEncryptedChat instanceof TLRPC.TL_encryptedChat))) {
SharedPreferences preferences = mContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
String key;
if (dialog_id == 0) {
key = "notify_" + user_id;
} else {
key = "notify_" + dialog_id;
}
boolean value = preferences.getBoolean(key, true);
ImageView checkButton = (ImageView)view.findViewById(R.id.settings_row_check_button);
if (value) {
checkButton.setImageResource(R.drawable.btn_check_on);
} else {
checkButton.setImageResource(R.drawable.btn_check_off);
}
textView.setText(getStringEntry(R.string.Notifications));
divider.setVisibility(View.VISIBLE);
}
} else if (type == 4) {
if (view == null) {
LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = li.inflate(R.layout.user_profile_leftright_row_layout, viewGroup, false);
}
TextView textView = (TextView)view.findViewById(R.id.settings_row_text);
TextView detailTextView = (TextView)view.findViewById(R.id.settings_row_text_detail);
View divider = view.findViewById(R.id.settings_row_divider);
if (i == 5 && dialog_id == 0 ||
dialog_id != 0 && (i == 7 && currentEncryptedChat instanceof TLRPC.TL_encryptedChat ||
i == 5 && !(currentEncryptedChat instanceof TLRPC.TL_encryptedChat))) {
SharedPreferences preferences = mContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
String name = preferences.getString("sound_" + user_id, getStringEntry(R.string.Default));
if (name.equals("NoSound")) {
detailTextView.setText(getStringEntry(R.string.NoSound));
} else {
detailTextView.setText(name);
}
textView.setText(R.string.Sound);
divider.setVisibility(View.INVISIBLE);
} else if (i == 7 && dialog_id == 0 ||
dialog_id != 0 && (i == 9 && currentEncryptedChat instanceof TLRPC.TL_encryptedChat ||
i == 7 && !(currentEncryptedChat instanceof TLRPC.TL_encryptedChat))) {
textView.setText(R.string.SharedMedia);
if (totalMediaCount == -1) {
detailTextView.setText(getStringEntry(R.string.Loading));
} else {
detailTextView.setText(String.format("%d", totalMediaCount));
}
divider.setVisibility(View.INVISIBLE);
} else if (i == 4 && dialog_id != 0) {
TLRPC.EncryptedChat encryptedChat = MessagesController.Instance.encryptedChats.get((int)(dialog_id >> 32));
textView.setText(R.string.MessageLifetime);
divider.setVisibility(View.VISIBLE);
if (encryptedChat.ttl == 0) {
detailTextView.setText(getStringEntry(R.string.ShortMessageLifetimeForever));
} else if (encryptedChat.ttl == 2) {
detailTextView.setText(getStringEntry(R.string.ShortMessageLifetime2s));
} else if (encryptedChat.ttl == 5) {
detailTextView.setText(getStringEntry(R.string.ShortMessageLifetime5s));
} else if (encryptedChat.ttl == 60) {
detailTextView.setText(getStringEntry(R.string.ShortMessageLifetime1m));
} else if (encryptedChat.ttl == 60 * 60) {
detailTextView.setText(getStringEntry(R.string.ShortMessageLifetime1h));
} else if (encryptedChat.ttl == 60 * 60 * 24) {
detailTextView.setText(getStringEntry(R.string.ShortMessageLifetime1d));
} else if (encryptedChat.ttl == 60 * 60 * 24 * 7) {
detailTextView.setText(getStringEntry(R.string.ShortMessageLifetime1w));
} else {
detailTextView.setText(String.format("%d", encryptedChat.ttl));
}
}
} else if (type == 5) {
if (view == null) {
LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = li.inflate(R.layout.user_profile_identicon_layout, viewGroup, false);
}
TextView textView = (TextView)view.findViewById(R.id.settings_row_text);
View divider = view.findViewById(R.id.settings_row_divider);
divider.setVisibility(View.VISIBLE);
IdenticonView identiconView = (IdenticonView)view.findViewById(R.id.identicon_view);
TLRPC.EncryptedChat encryptedChat = MessagesController.Instance.encryptedChats.get((int)(dialog_id >> 32));
identiconView.setBytes(encryptedChat.auth_key);
textView.setText(getStringEntry(R.string.EncryptionKey));
}
return view;
}
@Override
public int getItemViewType(int i) {
if (dialog_id != 0) {
if (currentEncryptedChat instanceof TLRPC.TL_encryptedChat) {
if (i == 0) {
return 0;
} else if (i == 1 || i == 3 || i == 8) {
return 1;
} else if (i == 2) {
return 2;
} else if (i == 6) {
return 3;
} else if (i == 7 || i == 9 || i == 4) {
return 4;
} else if (i == 5) {
return 5;
}
} else {
if (i == 0) {
return 0;
} else if (i == 1 || i == 3 || i == 6) {
return 1;
} else if (i == 2) {
return 2;
} else if (i == 4) {
return 3;
} else if (i == 5 || i == 7) {
return 4;
}
}
} else {
if (i == 0) {
return 0;
} else if (i == 1 || i == 3 || i == 6) {
return 1;
} else if (i == 2) {
return 2;
} else if (i == 4) {
return 3;
} else if (i == 5 || i == 7) {
return 4;
}
}
return 0;
}
@Override
public int getViewTypeCount() {
return 6;
}
@Override
public boolean isEmpty() {
return false;
}
}
}