NekoX/TMessagesProj/src/main/java/org/telegram/ui/ChannelRightsEditActivity.java

757 lines
44 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* This is the source code of Telegram for Android v. 3.x.x.
* 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-2017.
*/
package org.telegram.ui;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.DatePicker;
import android.widget.FrameLayout;
import android.widget.TimePicker;
import org.telegram.messenger.AndroidUtilities;
import org.telegram.messenger.FileLog;
import org.telegram.messenger.LocaleController;
import org.telegram.messenger.MessagesController;
import org.telegram.messenger.R;
import org.telegram.messenger.support.widget.LinearLayoutManager;
import org.telegram.messenger.support.widget.RecyclerView;
import org.telegram.tgnet.TLRPC;
import org.telegram.ui.ActionBar.ActionBar;
import org.telegram.ui.ActionBar.ActionBarMenu;
import org.telegram.ui.ActionBar.BaseFragment;
import org.telegram.ui.ActionBar.Theme;
import org.telegram.ui.ActionBar.ThemeDescription;
import org.telegram.ui.Cells.HeaderCell;
import org.telegram.ui.Cells.ShadowSectionCell;
import org.telegram.ui.Cells.TextCheckCell2;
import org.telegram.ui.Cells.TextInfoPrivacyCell;
import org.telegram.ui.Cells.TextSettingsCell;
import org.telegram.ui.Cells.UserCell;
import org.telegram.ui.Components.LayoutHelper;
import org.telegram.ui.Components.RecyclerListView;
import java.util.Calendar;
public class ChannelRightsEditActivity extends BaseFragment {
private ListAdapter listViewAdapter;
private RecyclerListView listView;
private int chatId;
private TLRPC.User currentUser;
private int currentType;
private boolean isMegagroup;
private boolean canEdit;
private boolean isDemocracy;
private TLRPC.TL_channelAdminRights adminRights;
private TLRPC.TL_channelAdminRights myAdminRights;
private TLRPC.TL_channelBannedRights bannedRights;
private int rowCount;
private int changeInfoRow;
private int postMessagesRow;
private int editMesagesRow;
private int deleteMessagesRow;
private int addAdminsRow;
private int banUsersRow;
private int addUsersRow;
private int pinMessagesRow;
private int rightsShadowRow;
private int removeAdminRow;
private int removeAdminShadowRow;
private int cantEditInfoRow;
private int viewMessagesRow;
private int sendMessagesRow;
private int sendMediaRow;
private int sendStickersRow;
private int embedLinksRow;
private int untilDateRow;
private ChannelRightsEditActivityDelegate delegate;
public interface ChannelRightsEditActivityDelegate {
void didSetRights(int rights, TLRPC.TL_channelAdminRights rightsAdmin, TLRPC.TL_channelBannedRights rightsBanned);
}
private final static int done_button = 1;
public ChannelRightsEditActivity(int userId, int channelId, TLRPC.TL_channelAdminRights rightsAdmin, TLRPC.TL_channelBannedRights rightsBanned, int type, boolean edit) {
super();
chatId = channelId;
currentUser = MessagesController.getInstance().getUser(userId);
currentType = type;
canEdit = edit;
boolean initialIsSet;
TLRPC.Chat chat = MessagesController.getInstance().getChat(chatId);
if (chat != null) {
isMegagroup = chat.megagroup;
myAdminRights = chat.admin_rights;
}
if (myAdminRights == null) {
myAdminRights = new TLRPC.TL_channelAdminRights();
myAdminRights.change_info = myAdminRights.post_messages = myAdminRights.edit_messages =
myAdminRights.delete_messages = myAdminRights.ban_users = myAdminRights.invite_users =
myAdminRights.invite_link = myAdminRights.pin_messages = myAdminRights.add_admins = true;
}
if (type == 0) {
adminRights = new TLRPC.TL_channelAdminRights();
if (rightsAdmin == null) {
adminRights.change_info = myAdminRights.change_info;
adminRights.post_messages = myAdminRights.post_messages;
adminRights.edit_messages = myAdminRights.edit_messages;
adminRights.delete_messages = myAdminRights.delete_messages;
adminRights.ban_users = myAdminRights.ban_users;
adminRights.invite_users = myAdminRights.invite_users;
adminRights.invite_link = myAdminRights.invite_link;
adminRights.pin_messages = myAdminRights.pin_messages;
initialIsSet = false;
} else {
adminRights.change_info = rightsAdmin.change_info;
adminRights.post_messages = rightsAdmin.post_messages;
adminRights.edit_messages = rightsAdmin.edit_messages;
adminRights.delete_messages = rightsAdmin.delete_messages;
adminRights.ban_users = rightsAdmin.ban_users;
adminRights.invite_users = rightsAdmin.invite_users;
adminRights.invite_link = rightsAdmin.invite_link;
adminRights.pin_messages = rightsAdmin.pin_messages;
adminRights.add_admins = rightsAdmin.add_admins;
initialIsSet = adminRights.change_info || adminRights.post_messages || adminRights.edit_messages ||
adminRights.delete_messages || adminRights.ban_users || adminRights.invite_users ||
adminRights.invite_link || adminRights.pin_messages || adminRights.add_admins;
}
} else {
bannedRights = new TLRPC.TL_channelBannedRights();
if (rightsBanned == null) {
bannedRights.view_messages = bannedRights.send_media = bannedRights.send_messages =
bannedRights.embed_links = bannedRights.send_stickers = bannedRights.send_gifs =
bannedRights.send_games = bannedRights.send_inline = true;
} else {
bannedRights.view_messages = rightsBanned.view_messages;
bannedRights.send_messages = rightsBanned.send_messages;
bannedRights.send_media = rightsBanned.send_media;
bannedRights.send_stickers = rightsBanned.send_stickers;
bannedRights.send_gifs = rightsBanned.send_gifs;
bannedRights.send_games = rightsBanned.send_games;
bannedRights.send_inline = rightsBanned.send_inline;
bannedRights.embed_links = rightsBanned.embed_links;
bannedRights.until_date = rightsBanned.until_date;
}
initialIsSet = rightsBanned == null || !rightsBanned.view_messages;
}
rowCount += 3;
if (type == 0) {
if (isMegagroup) {
changeInfoRow = rowCount++;
deleteMessagesRow = rowCount++;
banUsersRow = rowCount++;
addUsersRow = rowCount++;
pinMessagesRow = rowCount++;
addAdminsRow = rowCount++;
isDemocracy = chat.democracy;
} else {
changeInfoRow = rowCount++;
postMessagesRow = rowCount++;
editMesagesRow = rowCount++;
deleteMessagesRow = rowCount++;
addUsersRow = rowCount++;
addAdminsRow = rowCount++;
}
} else if (type == 1) {
viewMessagesRow = rowCount++;
sendMessagesRow = rowCount++;
sendMediaRow = rowCount++;
sendStickersRow = rowCount++;
embedLinksRow = rowCount++;
untilDateRow = rowCount++;
}
if (canEdit && initialIsSet) {
rightsShadowRow = rowCount++;
removeAdminRow = rowCount++;
removeAdminShadowRow = rowCount++;
cantEditInfoRow = -1;
} else {
removeAdminRow = -1;
removeAdminShadowRow = -1;
if (type == 0 && !canEdit) {
rightsShadowRow = -1;
cantEditInfoRow = rowCount++;
} else {
rightsShadowRow = rowCount++;
}
}
}
@Override
public View createView(Context context) {
actionBar.setBackButtonImage(R.drawable.ic_ab_back);
actionBar.setAllowOverlayTitle(true);
if (currentType == 0) {
actionBar.setTitle(LocaleController.getString("EditAdmin", R.string.EditAdmin));
} else {
actionBar.setTitle(LocaleController.getString("UserRestrictions", R.string.UserRestrictions));
}
actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() {
@Override
public void onItemClick(int id) {
if (id == -1) {
finishFragment();
} else if (id == done_button) {
if (currentType == 0) {
if (isMegagroup) {
adminRights.post_messages = adminRights.edit_messages = false;
} else {
adminRights.pin_messages = adminRights.ban_users = false;
}
MessagesController.setUserAdminRole(chatId, currentUser, adminRights, isMegagroup, getFragmentForAlert(1));
if (delegate != null) {
delegate.didSetRights(
adminRights.change_info || adminRights.post_messages || adminRights.edit_messages ||
adminRights.delete_messages || adminRights.ban_users || adminRights.invite_users ||
adminRights.invite_link || adminRights.pin_messages || adminRights.add_admins ? 1 : 0, adminRights, bannedRights);
}
} else if (currentType == 1) {
MessagesController.setUserBannedRole(chatId, currentUser, bannedRights, isMegagroup, getFragmentForAlert(1));
int rights;
if (bannedRights.view_messages) {
rights = 0;
} else if (bannedRights.send_messages || bannedRights.send_stickers || bannedRights.embed_links || bannedRights.send_media ||
bannedRights.send_gifs || bannedRights.send_games || bannedRights.send_inline) {
rights = 1;
} else {
bannedRights.until_date = 0;
rights = 2;
}
if (delegate != null) {
delegate.didSetRights(rights, adminRights, bannedRights);
}
}
finishFragment();
}
}
});
if (canEdit) {
ActionBarMenu menu = actionBar.createMenu();
menu.addItemWithWidth(done_button, R.drawable.ic_done, AndroidUtilities.dp(56));
}
fragmentView = new FrameLayout(context);
fragmentView.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundGray));
FrameLayout frameLayout = (FrameLayout) fragmentView;
listView = new RecyclerListView(context);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) {
@Override
public boolean supportsPredictiveItemAnimations() {
return false;
}
};
listView.setItemAnimator(null);
listView.setLayoutAnimation(null);
listView.setLayoutManager(linearLayoutManager);
listView.setAdapter(listViewAdapter = new ListAdapter(context));
listView.setVerticalScrollbarPosition(LocaleController.isRTL ? RecyclerListView.SCROLLBAR_POSITION_LEFT : RecyclerListView.SCROLLBAR_POSITION_RIGHT);
frameLayout.addView(listView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT));
listView.setOnItemClickListener(new RecyclerListView.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
if (!canEdit) {
return;
}
if (position == 0) {
Bundle args = new Bundle();
args.putInt("user_id", currentUser.id);
presentFragment(new ProfileActivity(args));
} else if (position == removeAdminRow) {
if (currentType == 0) {
MessagesController.setUserAdminRole(chatId, currentUser, new TLRPC.TL_channelAdminRights(), isMegagroup, getFragmentForAlert(0));
} else if (currentType == 1) {
bannedRights = new TLRPC.TL_channelBannedRights();
bannedRights.view_messages = true;
bannedRights.send_media = true;
bannedRights.send_messages = true;
bannedRights.send_stickers = true;
bannedRights.send_gifs = true;
bannedRights.send_games = true;
bannedRights.send_inline = true;
bannedRights.embed_links = true;
bannedRights.until_date = 0;
MessagesController.setUserBannedRole(chatId, currentUser, bannedRights, isMegagroup, getFragmentForAlert(0));
}
if (delegate != null) {
delegate.didSetRights(0, adminRights, bannedRights);
}
finishFragment();
} else if (position == untilDateRow) {
if (getParentActivity() == null) {
return;
}
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int monthOfYear = calendar.get(Calendar.MONTH);
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
try {
DatePickerDialog dialog = new DatePickerDialog(getParentActivity(), new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(year, month, dayOfMonth);
final int time = (int) (calendar.getTime().getTime() / 1000);
try {
TimePickerDialog dialog = new TimePickerDialog(getParentActivity(), new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
bannedRights.until_date = time + hourOfDay * 3600 + minute * 60;
listViewAdapter.notifyItemChanged(untilDateRow);
}
}, 0, 0, true);
dialog.setButton(DialogInterface.BUTTON_POSITIVE, LocaleController.getString("Set", R.string.Set), dialog);
dialog.setButton(DialogInterface.BUTTON_NEGATIVE, LocaleController.getString("Cancel", R.string.Cancel), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
showDialog(dialog);
} catch (Exception e) {
FileLog.e(e);
}
}
}, year, monthOfYear, dayOfMonth);
final DatePicker datePicker = dialog.getDatePicker();
Calendar date = Calendar.getInstance();
date.setTimeInMillis(System.currentTimeMillis());
date.set(Calendar.HOUR_OF_DAY, date.getMinimum(Calendar.HOUR_OF_DAY));
date.set(Calendar.MINUTE, date.getMinimum(Calendar.MINUTE));
date.set(Calendar.SECOND, date.getMinimum(Calendar.SECOND));
date.set(Calendar.MILLISECOND, date.getMinimum(Calendar.MILLISECOND));
datePicker.setMinDate(date.getTimeInMillis());
date.setTimeInMillis(System.currentTimeMillis() + 31536000000L);
date.set(Calendar.HOUR_OF_DAY, date.getMaximum(Calendar.HOUR_OF_DAY));
date.set(Calendar.MINUTE, date.getMaximum(Calendar.MINUTE));
date.set(Calendar.SECOND, date.getMaximum(Calendar.SECOND));
date.set(Calendar.MILLISECOND, date.getMaximum(Calendar.MILLISECOND));
datePicker.setMaxDate(date.getTimeInMillis());
dialog.setButton(DialogInterface.BUTTON_POSITIVE, LocaleController.getString("Set", R.string.Set), dialog);
dialog.setButton(DialogInterface.BUTTON_NEUTRAL, LocaleController.getString("UserRestrictionsUntilForever", R.string.UserRestrictionsUntilForever), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
bannedRights.until_date = 0;
listViewAdapter.notifyItemChanged(untilDateRow);
}
});
dialog.setButton(DialogInterface.BUTTON_NEGATIVE, LocaleController.getString("Cancel", R.string.Cancel), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
if (Build.VERSION.SDK_INT >= 21) {
dialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
int count = datePicker.getChildCount();
for (int a = 0; a < count; a++) {
View child = datePicker.getChildAt(a);
ViewGroup.LayoutParams layoutParams = child.getLayoutParams();
layoutParams.width = LayoutHelper.MATCH_PARENT;
child.setLayoutParams(layoutParams);
}
}
});
}
showDialog(dialog);
} catch (Exception e) {
FileLog.e(e);
}
} else if (view instanceof TextCheckCell2) {
TextCheckCell2 checkCell = (TextCheckCell2) view;
if (!checkCell.isEnabled()) {
return;
}
checkCell.setChecked(!checkCell.isChecked());
if (position == changeInfoRow) {
adminRights.change_info = !adminRights.change_info;
} else if (position == postMessagesRow) {
adminRights.post_messages = !adminRights.post_messages;
} else if (position == editMesagesRow) {
adminRights.edit_messages = !adminRights.edit_messages;
} else if (position == deleteMessagesRow) {
adminRights.delete_messages = !adminRights.delete_messages;
} else if (position == addAdminsRow) {
adminRights.add_admins = !adminRights.add_admins;
} else if (position == banUsersRow) {
adminRights.ban_users = !adminRights.ban_users;
} else if (position == addUsersRow) {
adminRights.invite_users = adminRights.invite_link = !adminRights.invite_users;
} else if (position == pinMessagesRow) {
adminRights.pin_messages = !adminRights.pin_messages;
} else if (bannedRights != null) {
boolean disabled = !checkCell.isChecked();
if (position == viewMessagesRow) {
bannedRights.view_messages = !bannedRights.view_messages;
} else if (position == sendMessagesRow) {
bannedRights.send_messages = !bannedRights.send_messages;
} else if (position == sendMediaRow) {
bannedRights.send_media = !bannedRights.send_media;
}else if (position == sendStickersRow) {
bannedRights.send_stickers = bannedRights.send_games = bannedRights.send_gifs = bannedRights.send_inline = !bannedRights.send_stickers;
} else if (position == embedLinksRow) {
bannedRights.embed_links = !bannedRights.embed_links;
}
if (disabled) {
if (bannedRights.view_messages && !bannedRights.send_messages) {
bannedRights.send_messages = true;
RecyclerListView.ViewHolder holder = listView.findViewHolderForAdapterPosition(sendMessagesRow);
if (holder != null) {
((TextCheckCell2) holder.itemView).setChecked(false);
}
}
if ((bannedRights.view_messages || bannedRights.send_messages) && !bannedRights.send_media) {
bannedRights.send_media = true;
RecyclerListView.ViewHolder holder = listView.findViewHolderForAdapterPosition(sendMediaRow);
if (holder != null) {
((TextCheckCell2) holder.itemView).setChecked(false);
}
}
if ((bannedRights.view_messages || bannedRights.send_messages || bannedRights.send_media) && !bannedRights.send_stickers) {
bannedRights.send_stickers = bannedRights.send_games = bannedRights.send_gifs = bannedRights.send_inline = true;
RecyclerListView.ViewHolder holder = listView.findViewHolderForAdapterPosition(sendStickersRow);
if (holder != null) {
((TextCheckCell2) holder.itemView).setChecked(false);
}
}
if ((bannedRights.view_messages || bannedRights.send_messages || bannedRights.send_media) && !bannedRights.embed_links) {
bannedRights.embed_links = true;
RecyclerListView.ViewHolder holder = listView.findViewHolderForAdapterPosition(embedLinksRow);
if (holder != null) {
((TextCheckCell2) holder.itemView).setChecked(false);
}
}
} else {
if ((!bannedRights.send_messages || !bannedRights.embed_links || !bannedRights.send_inline || !bannedRights.send_media) && bannedRights.view_messages) {
bannedRights.view_messages = false;
RecyclerListView.ViewHolder holder = listView.findViewHolderForAdapterPosition(viewMessagesRow);
if (holder != null) {
((TextCheckCell2) holder.itemView).setChecked(true);
}
}
if ((!bannedRights.embed_links || !bannedRights.send_inline || !bannedRights.send_media) && bannedRights.send_messages) {
bannedRights.send_messages = false;
RecyclerListView.ViewHolder holder = listView.findViewHolderForAdapterPosition(sendMessagesRow);
if (holder != null) {
((TextCheckCell2) holder.itemView).setChecked(true);
}
}
if ((!bannedRights.send_inline || !bannedRights.embed_links) && bannedRights.send_media) {
bannedRights.send_media = false;
RecyclerListView.ViewHolder holder = listView.findViewHolderForAdapterPosition(sendMediaRow);
if (holder != null) {
((TextCheckCell2) holder.itemView).setChecked(true);
}
}
}
}
}
}
});
return fragmentView;
}
@Override
public void onResume() {
super.onResume();
if (listViewAdapter != null) {
listViewAdapter.notifyDataSetChanged();
}
}
public void setDelegate(ChannelRightsEditActivityDelegate channelRightsEditActivityDelegate) {
delegate = channelRightsEditActivityDelegate;
}
private class ListAdapter extends RecyclerListView.SelectionAdapter {
private Context mContext;
public ListAdapter(Context context) {
mContext = context;
}
@Override
public boolean isEnabled(RecyclerView.ViewHolder holder) {
if (!canEdit) {
return false;
}
int type = holder.getItemViewType();
if (currentType == 0 && type == 4) {
int position = holder.getAdapterPosition();
if (position == changeInfoRow) {
return myAdminRights.change_info;
} else if (position == postMessagesRow) {
return myAdminRights.post_messages;
} else if (position == editMesagesRow) {
return myAdminRights.edit_messages;
} else if (position == deleteMessagesRow) {
return myAdminRights.delete_messages;
} else if (position == addAdminsRow) {
return myAdminRights.add_admins;
} else if (position == banUsersRow) {
return myAdminRights.ban_users;
} else if (position == addUsersRow) {
return myAdminRights.invite_users;
} else if (position == pinMessagesRow) {
return myAdminRights.pin_messages;
}
}
return type != 3 && type != 1 && type != 5;
}
@Override
public int getItemCount() {
return rowCount;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view;
switch (viewType) {
case 0:
view = new UserCell(mContext, 1, 0, false);
view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
break;
case 1:
view = new TextInfoPrivacyCell(mContext);
view.setBackgroundDrawable(Theme.getThemedDrawable(mContext, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow));
break;
case 2:
view = new TextSettingsCell(mContext);
view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
break;
case 3:
view = new HeaderCell(mContext);
view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
break;
case 4:
view = new TextCheckCell2(mContext);
view.setBackgroundColor(Theme.getColor(Theme.key_windowBackgroundWhite));
break;
case 5:
default:
view = new ShadowSectionCell(mContext);
break;
}
return new RecyclerListView.Holder(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
switch (holder.getItemViewType()) {
case 0:
UserCell userCell = (UserCell) holder.itemView;
userCell.setData(currentUser, null, null, 0);
break;
case 1:
TextInfoPrivacyCell privacyCell = (TextInfoPrivacyCell) holder.itemView;
if (position == cantEditInfoRow) {
privacyCell.setText(LocaleController.getString("EditAdminCantEdit", R.string.EditAdminCantEdit));
}
break;
case 2:
TextSettingsCell actionCell = (TextSettingsCell) holder.itemView;
if (position == removeAdminRow) {
actionCell.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteRedText3));
actionCell.setTag(Theme.key_windowBackgroundWhiteRedText3);
if (currentType == 0) {
actionCell.setText(LocaleController.getString("EditAdminRemoveAdmin", R.string.EditAdminRemoveAdmin), false);
} else if (currentType == 1) {
actionCell.setText(LocaleController.getString("UserRestrictionsBlock", R.string.UserRestrictionsBlock), false);
}
} else if (position == untilDateRow) {
actionCell.setTextColor(Theme.getColor(Theme.key_windowBackgroundWhiteBlackText));
actionCell.setTag(Theme.key_windowBackgroundWhiteBlackText);
String value;
if (bannedRights.until_date == 0 || Math.abs(bannedRights.until_date - System.currentTimeMillis() / 1000) > 10 * 365 * 24 * 60 * 60) {
value = LocaleController.getString("UserRestrictionsUntilForever", R.string.UserRestrictionsUntilForever);
} else {
value = LocaleController.formatDateForBan(bannedRights.until_date);
}
actionCell.setTextAndValue(LocaleController.getString("UserRestrictionsUntil", R.string.UserRestrictionsUntil), value, false);
}
break;
case 3:
HeaderCell headerCell = (HeaderCell) holder.itemView;
if (currentType == 0) {
headerCell.setText(LocaleController.getString("EditAdminWhatCanDo", R.string.EditAdminWhatCanDo));
} else if (currentType == 1) {
headerCell.setText(LocaleController.getString("UserRestrictionsCanDo", R.string.UserRestrictionsCanDo));
}
break;
case 4:
TextCheckCell2 checkCell = (TextCheckCell2) holder.itemView;
if (position == changeInfoRow) {
if (isMegagroup) {
checkCell.setTextAndCheck(LocaleController.getString("EditAdminChangeGroupInfo", R.string.EditAdminChangeGroupInfo), adminRights.change_info, true);
} else {
checkCell.setTextAndCheck(LocaleController.getString("EditAdminChangeChannelInfo", R.string.EditAdminChangeChannelInfo), adminRights.change_info, true);
}
} else if (position == postMessagesRow) {
checkCell.setTextAndCheck(LocaleController.getString("EditAdminPostMessages", R.string.EditAdminPostMessages), adminRights.post_messages, true);
} else if (position == editMesagesRow) {
checkCell.setTextAndCheck(LocaleController.getString("EditAdminEditMessages", R.string.EditAdminEditMessages), adminRights.edit_messages, true);
} else if (position == deleteMessagesRow) {
if (isMegagroup) {
checkCell.setTextAndCheck(LocaleController.getString("EditAdminGroupDeleteMessages", R.string.EditAdminGroupDeleteMessages), adminRights.delete_messages, true);
} else {
checkCell.setTextAndCheck(LocaleController.getString("EditAdminDeleteMessages", R.string.EditAdminDeleteMessages), adminRights.delete_messages, true);
}
} else if (position == addAdminsRow) {
checkCell.setTextAndCheck(LocaleController.getString("EditAdminAddAdmins", R.string.EditAdminAddAdmins), adminRights.add_admins, false);
} else if (position == banUsersRow) {
checkCell.setTextAndCheck(LocaleController.getString("EditAdminBanUsers", R.string.EditAdminBanUsers), adminRights.ban_users, true);
} else if (position == addUsersRow) {
if (!isDemocracy) {
checkCell.setTextAndCheck(LocaleController.getString("EditAdminAddUsers", R.string.EditAdminAddUsers), adminRights.invite_users, true);
} else {
checkCell.setTextAndCheck(LocaleController.getString("EditAdminAddUsersViaLink", R.string.EditAdminAddUsersViaLink), adminRights.invite_users, true);
}
} else if (position == pinMessagesRow) {
checkCell.setTextAndCheck(LocaleController.getString("EditAdminPinMessages", R.string.EditAdminPinMessages), adminRights.pin_messages, true);
} else if (position == viewMessagesRow) {
checkCell.setTextAndCheck(LocaleController.getString("UserRestrictionsRead", R.string.UserRestrictionsRead), !bannedRights.view_messages, true);
} else if (position == sendMessagesRow) {
checkCell.setTextAndCheck(LocaleController.getString("UserRestrictionsSend", R.string.UserRestrictionsSend), !bannedRights.send_messages, true);
} else if (position == sendMediaRow) {
checkCell.setTextAndCheck(LocaleController.getString("UserRestrictionsSendMedia", R.string.UserRestrictionsSendMedia), !bannedRights.send_media, true);
} else if (position == sendStickersRow) {
checkCell.setTextAndCheck(LocaleController.getString("UserRestrictionsSendStickers", R.string.UserRestrictionsSendStickers), !bannedRights.send_stickers, true);
} else if (position == embedLinksRow) {
checkCell.setTextAndCheck(LocaleController.getString("UserRestrictionsEmbedLinks", R.string.UserRestrictionsEmbedLinks), !bannedRights.embed_links, true);
}
if (position == sendMediaRow || position == sendStickersRow || position == embedLinksRow) {
checkCell.setEnabled(!bannedRights.send_messages && !bannedRights.view_messages);
} else if (position == sendMessagesRow) {
checkCell.setEnabled(!bannedRights.view_messages);
}
break;
case 5:
ShadowSectionCell shadowCell = (ShadowSectionCell) holder.itemView;
if (position == rightsShadowRow) {
shadowCell.setBackgroundDrawable(Theme.getThemedDrawable(mContext, removeAdminRow == -1 ? R.drawable.greydivider_bottom : R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow));
} else if (position == removeAdminShadowRow) {
shadowCell.setBackgroundDrawable(Theme.getThemedDrawable(mContext, R.drawable.greydivider_bottom, Theme.key_windowBackgroundGrayShadow));
} else {
shadowCell.setBackgroundDrawable(Theme.getThemedDrawable(mContext, R.drawable.greydivider, Theme.key_windowBackgroundGrayShadow));
}
break;
}
}
@Override
public int getItemViewType(int position) {
if (position == 0) {
return 0;
} else if (position == 1 || position == rightsShadowRow || position == removeAdminShadowRow) {
return 5;
} else if (position == 2) {
return 3;
} else if (position == changeInfoRow || position == postMessagesRow || position == editMesagesRow || position == deleteMessagesRow || position == addAdminsRow ||
position == banUsersRow || position == addUsersRow || position == pinMessagesRow ||
position == viewMessagesRow || position == sendMessagesRow || position == sendMediaRow || position == sendStickersRow || position == embedLinksRow) {
return 4;
} else if (position == cantEditInfoRow) {
return 1;
} else {
return 2;
}
}
}
@Override
public ThemeDescription[] getThemeDescriptions() {
ThemeDescription.ThemeDescriptionDelegate сellDelegate = new ThemeDescription.ThemeDescriptionDelegate() {
@Override
public void didSetColor(int color) {
int count = listView.getChildCount();
for (int a = 0; a < count; a++) {
View child = listView.getChildAt(a);
if (child instanceof UserCell) {
((UserCell) child).update(0);
}
}
}
};
return new ThemeDescription[]{
new ThemeDescription(listView, ThemeDescription.FLAG_CELLBACKGROUNDCOLOR, new Class[]{UserCell.class, TextSettingsCell.class, TextCheckCell2.class, HeaderCell.class}, null, null, null, Theme.key_windowBackgroundWhite),
new ThemeDescription(fragmentView, ThemeDescription.FLAG_BACKGROUND, null, null, null, null, Theme.key_windowBackgroundGray),
new ThemeDescription(actionBar, ThemeDescription.FLAG_BACKGROUND, null, null, null, null, Theme.key_actionBarDefault),
new ThemeDescription(listView, ThemeDescription.FLAG_LISTGLOWCOLOR, null, null, null, null, Theme.key_actionBarDefault),
new ThemeDescription(actionBar, ThemeDescription.FLAG_AB_ITEMSCOLOR, null, null, null, null, Theme.key_actionBarDefaultIcon),
new ThemeDescription(actionBar, ThemeDescription.FLAG_AB_TITLECOLOR, null, null, null, null, Theme.key_actionBarDefaultTitle),
new ThemeDescription(actionBar, ThemeDescription.FLAG_AB_SELECTORCOLOR, null, null, null, null, Theme.key_actionBarDefaultSelector),
new ThemeDescription(listView, ThemeDescription.FLAG_SELECTOR, null, null, null, null, Theme.key_listSelector),
new ThemeDescription(listView, 0, new Class[]{View.class}, Theme.dividerPaint, null, null, Theme.key_divider),
new ThemeDescription(listView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{TextInfoPrivacyCell.class}, null, null, null, Theme.key_windowBackgroundGrayShadow),
new ThemeDescription(listView, 0, new Class[]{TextInfoPrivacyCell.class}, new String[]{"textView"}, null, null, null, Theme.key_windowBackgroundWhiteGrayText4),
new ThemeDescription(listView, ThemeDescription.FLAG_CHECKTAG, new Class[]{TextSettingsCell.class}, new String[]{"textView"}, null, null, null, Theme.key_windowBackgroundWhiteRedText3),
new ThemeDescription(listView, ThemeDescription.FLAG_CHECKTAG, new Class[]{TextSettingsCell.class}, new String[]{"textView"}, null, null, null, Theme.key_windowBackgroundWhiteBlackText),
new ThemeDescription(listView, 0, new Class[]{TextSettingsCell.class}, new String[]{"valueTextView"}, null, null, null, Theme.key_windowBackgroundWhiteValueText),
new ThemeDescription(listView, 0, new Class[]{TextSettingsCell.class}, new String[]{"valueImageView"}, null, null, null, Theme.key_windowBackgroundWhiteGrayIcon),
new ThemeDescription(listView, 0, new Class[]{TextCheckCell2.class}, new String[]{"textView"}, null, null, null, Theme.key_windowBackgroundWhiteBlackText),
new ThemeDescription(listView, 0, new Class[]{TextCheckCell2.class}, new String[]{"valueTextView"}, null, null, null, Theme.key_windowBackgroundWhiteGrayText2),
new ThemeDescription(listView, 0, new Class[]{TextCheckCell2.class}, new String[]{"checkBox"}, null, null, null, Theme.key_switchThumb),
new ThemeDescription(listView, 0, new Class[]{TextCheckCell2.class}, new String[]{"checkBox"}, null, null, null, Theme.key_switchTrack),
new ThemeDescription(listView, 0, new Class[]{TextCheckCell2.class}, new String[]{"checkBox"}, null, null, null, Theme.key_switchThumbChecked),
new ThemeDescription(listView, 0, new Class[]{TextCheckCell2.class}, new String[]{"checkBox"}, null, null, null, Theme.key_switchTrackChecked),
new ThemeDescription(listView, ThemeDescription.FLAG_BACKGROUNDFILTER, new Class[]{ShadowSectionCell.class}, null, null, null, Theme.key_windowBackgroundGrayShadow),
new ThemeDescription(listView, 0, new Class[]{HeaderCell.class}, new String[]{"textView"}, null, null, null, Theme.key_windowBackgroundWhiteBlueHeader),
new ThemeDescription(listView, 0, new Class[]{UserCell.class}, new String[]{"nameTextView"}, null, null, null, Theme.key_windowBackgroundWhiteBlackText),
new ThemeDescription(listView, 0, new Class[]{UserCell.class}, new String[]{"statusColor"}, null, null, сellDelegate, Theme.key_windowBackgroundWhiteGrayText),
new ThemeDescription(listView, 0, new Class[]{UserCell.class}, new String[]{"statusOnlineColor"}, null, null, сellDelegate, Theme.key_windowBackgroundWhiteBlueText),
new ThemeDescription(listView, 0, new Class[]{UserCell.class}, null, new Drawable[]{Theme.avatar_photoDrawable, Theme.avatar_broadcastDrawable, Theme.avatar_savedDrawable}, null, Theme.key_avatar_text),
new ThemeDescription(null, 0, null, null, null, сellDelegate, Theme.key_avatar_backgroundRed),
new ThemeDescription(null, 0, null, null, null, сellDelegate, Theme.key_avatar_backgroundOrange),
new ThemeDescription(null, 0, null, null, null, сellDelegate, Theme.key_avatar_backgroundViolet),
new ThemeDescription(null, 0, null, null, null, сellDelegate, Theme.key_avatar_backgroundGreen),
new ThemeDescription(null, 0, null, null, null, сellDelegate, Theme.key_avatar_backgroundCyan),
new ThemeDescription(null, 0, null, null, null, сellDelegate, Theme.key_avatar_backgroundBlue),
new ThemeDescription(null, 0, null, null, null, сellDelegate, Theme.key_avatar_backgroundPink),
};
}
}