mirror of https://github.com/NekoX-Dev/NekoX.git
757 lines
44 KiB
Java
757 lines
44 KiB
Java
/*
|
||
* 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),
|
||
};
|
||
}
|
||
}
|