Dialog changes

This commit is contained in:
世界 2020-06-18 17:39:07 +08:00
parent 4badf13e43
commit 88e35cf9b7
No known key found for this signature in database
GPG Key ID: CD109927C34A63C4
11 changed files with 602 additions and 603 deletions

View File

@ -139,6 +139,8 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import cn.hutool.core.util.StrUtil;
import kotlin.Unit;
import tw.nekomimi.nekogram.BottomBuilder;
import tw.nekomimi.nekogram.NekoConfig;
import tw.nekomimi.nekogram.NekoXConfig;
import tw.nekomimi.nekogram.utils.AlertUtil;
@ -2495,18 +2497,18 @@ public class AndroidUtilities {
}
}
if (Build.VERSION.SDK_INT >= 24) {
intent.setDataAndType(FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID + ".provider", f), realMimeType != null ? realMimeType : "text/plain");
intent.setDataAndType(FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID + ".provider", f), realMimeType != null ? realMimeType : "*/*");
} else {
intent.setDataAndType(Uri.fromFile(f), realMimeType != null ? realMimeType : "text/plain");
intent.setDataAndType(Uri.fromFile(f), realMimeType != null ? realMimeType : "*/*");
}
if (realMimeType != null) {
try {
activity.startActivityForResult(intent, 500);
} catch (Exception e) {
if (Build.VERSION.SDK_INT >= 24) {
intent.setDataAndType(FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID + ".provider", f), "text/plain");
intent.setDataAndType(FileProvider.getUriForFile(activity, BuildConfig.APPLICATION_ID + ".provider", f), "*/*");
} else {
intent.setDataAndType(Uri.fromFile(f), "text/plain");
intent.setDataAndType(Uri.fromFile(f), "*/*");
}
activity.startActivityForResult(intent, 500);
}
@ -2559,17 +2561,17 @@ public class AndroidUtilities {
}
}
if (Build.VERSION.SDK_INT >= 26 && realMimeType != null && realMimeType.equals("application/vnd.android.package-archive") && !ApplicationLoader.applicationContext.getPackageManager().canRequestPackageInstalls()) {
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle(LocaleController.getString("NekoX", R.string.NekoX));
builder.setMessage(LocaleController.getString("ApkRestricted", R.string.ApkRestricted));
builder.setPositiveButton(LocaleController.getString("PermissionOpenSettings", R.string.PermissionOpenSettings), (dialogInterface, i) -> {
BottomBuilder builder = new BottomBuilder(activity);
builder.addTitle(LocaleController.getString("ApkRestricted", R.string.ApkRestricted));
builder.addItem(LocaleController.getString("PermissionOpenSettings", R.string.PermissionOpenSettings), R.drawable.baseline_settings_24,(i) -> {
try {
activity.startActivity(new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, Uri.parse("package:" + activity.getPackageName())));
} catch (Exception e) {
FileLog.e(e);
}
return Unit.INSTANCE;
});
builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null);
builder.addCancelItem();
builder.show();
return true;
}

View File

@ -58,6 +58,7 @@ import java.util.concurrent.CountDownLatch;
import tw.nekomimi.nekogram.ExternalGcm;
import tw.nekomimi.nekogram.InternalFilters;
import tw.nekomimi.nekogram.NekoConfig;
import tw.nekomimi.nekogram.utils.AlertUtil;
import tw.nekomimi.nekogram.utils.ThreadUtil;
import tw.nekomimi.nekogram.utils.UIUtil;
@ -12622,14 +12623,7 @@ public class MessagesController extends BaseController implements NotificationCe
}
private static void showCantOpenAlert(BaseFragment fragment, String reason) {
if (fragment == null || fragment.getParentActivity() == null) {
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(fragment.getParentActivity());
builder.setTitle(LocaleController.getString("NekoX", R.string.NekoX));
builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null);
builder.setMessage(reason);
fragment.showDialog(builder.create());
AlertUtil.showToast(reason);
}
public boolean checkCanOpenChat(Bundle bundle, BaseFragment fragment) {

View File

@ -30,6 +30,8 @@ import java.util.Collections;
import java.util.Locale;
import java.util.concurrent.ConcurrentHashMap;
import tw.nekomimi.nekogram.utils.AlertUtil;
public class SecretChatHelper extends BaseController {
public static class TL_decryptedMessageHolder extends TLObject {
@ -1950,25 +1952,12 @@ public class SecretChatHelper extends BaseController {
});
} else {
delayedEncryptedChatUpdates.clear();
AndroidUtilities.runOnUIThread(() -> {
if (!((Activity) context).isFinishing()) {
startingSecretChat = false;
try {
progressDialog.dismiss();
} catch (Exception e) {
FileLog.e(e);
}
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(LocaleController.getString("NekoX", R.string.NekoX));
builder.setMessage(LocaleController.getString("CreateEncryptedChatError", R.string.CreateEncryptedChatError));
builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null);
builder.show().setCanceledOnTouchOutside(true);
}
});
AlertUtil.showToast(error);
}
}, ConnectionsManager.RequestFlagFailOnServerErrors);
} else {
delayedEncryptedChatUpdates.clear();
AlertUtil.showToast(error);
AndroidUtilities.runOnUIThread(() -> {
startingSecretChat = false;
if (!((Activity) context).isFinishing()) {

View File

@ -56,6 +56,9 @@ import org.telegram.ui.Components.URLSpanNoUnderline;
import java.util.ArrayList;
import kotlin.Unit;
import tw.nekomimi.nekogram.BottomBuilder;
@TargetApi(23)
public class ActionIntroActivity extends BaseFragment implements LocationController.LocationFetchCallback {
@ -544,11 +547,13 @@ public class ActionIntroActivity extends BaseFragment implements LocationControl
break;
}
case ACTION_TYPE_CHANGE_PHONE_NUMBER: {
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setTitle(LocaleController.getString("PhoneNumberChangeTitle", R.string.PhoneNumberChangeTitle));
builder.setMessage(LocaleController.getString("PhoneNumberAlert", R.string.PhoneNumberAlert));
builder.setPositiveButton(LocaleController.getString("Change", R.string.Change), (dialogInterface, i) -> presentFragment(new ChangePhoneActivity(), true));
builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null);
BottomBuilder builder = new BottomBuilder(getParentActivity());
builder.addTitle(LocaleController.getString("PhoneNumberAlert", R.string.PhoneNumberAlert));
builder.addItem(LocaleController.getString("Change", R.string.Change), (i) -> {
presentFragment(new ChangePhoneActivity(), true);
return Unit.INSTANCE;
});
builder.addCancelItem();
showDialog(builder.create());
break;
}

View File

@ -68,6 +68,8 @@ import org.telegram.ui.Components.UndoView;
import java.io.File;
import java.util.ArrayList;
import kotlin.Unit;
import tw.nekomimi.nekogram.BottomBuilder;
import tw.nekomimi.nekogram.transtale.TranslateDb;
import tw.nekomimi.nekogram.utils.EnvUtil;
import tw.nekomimi.nekogram.utils.FileUtil;
@ -544,13 +546,11 @@ public class CacheControlActivity extends BaseFragment {
}
private void clearDatabase() {
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setTitle(LocaleController.getString("LocalDatabaseClearTextTitle", R.string.LocalDatabaseClearTextTitle));
builder.setMessage(LocaleController.getString("LocalDatabaseClearText", R.string.LocalDatabaseClearText));
builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null);
builder.setPositiveButton(LocaleController.getString("CacheClear", R.string.CacheClear), (dialogInterface, i) -> {
BottomBuilder builder = new BottomBuilder(getParentActivity());
builder.addTitle(LocaleController.getString("LocalDatabaseClearTextTitle", R.string.LocalDatabaseClearTextTitle), LocaleController.getString("LocalDatabaseClearText", R.string.LocalDatabaseClearText));
builder.addItem(LocaleController.getString("CacheClear", R.string.CacheClear),R.drawable.baseline_delete_sweep_24, true, (i) -> {
if (getParentActivity() == null) {
return;
return Unit.INSTANCE;
}
final AlertDialog progressDialog = new AlertDialog(getParentActivity(), 3);
progressDialog.setCanCacnel(false);
@ -650,13 +650,10 @@ public class CacheControlActivity extends BaseFragment {
});
}
});
return Unit.INSTANCE;
});
AlertDialog alertDialog = builder.create();
showDialog(alertDialog);
TextView button = (TextView) alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
if (button != null) {
button.setTextColor(Theme.getColor(Theme.key_dialogTextRed2));
}
builder.addCancelItem();
builder.show();
}
@Override

View File

@ -43,6 +43,12 @@ public class HeaderCell extends LinearLayout {
}
public HeaderCell(Context context, String textColorKey, int padding, int topMargin, boolean text2) {
this(context, textColorKey, padding, topMargin, text2, false);
}
public HeaderCell(Context context, String textColorKey, int padding, int topMargin, boolean text2,boolean bigTitle) {
super(context);
setOrientation(LinearLayout.VERTICAL);
@ -50,7 +56,9 @@ public class HeaderCell extends LinearLayout {
textView = new TextView(getContext());
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
if (bigTitle) {
textView.setTypeface(AndroidUtilities.getTypeface("fonts/mw_bold.ttf"));
}
textView.setEllipsize(TextUtils.TruncateAt.END);
textView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL);
textView.setMinHeight(AndroidUtilities.dp(height - topMargin));

View File

@ -118,6 +118,7 @@ import java.util.HashMap;
import tw.nekomimi.nekogram.NekoConfig;
import tw.nekomimi.nekogram.NekoXConfig;
import tw.nekomimi.nekogram.utils.AlertUtil;
public class ChannelAdminLogActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate {
@ -1323,11 +1324,7 @@ public class ChannelAdminLogActivity extends BaseFragment implements Notificatio
selectedObject = null;
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setTitle(LocaleController.getString("NekoX", R.string.NekoX));
builder.setMessage(LocaleController.getString("IncorrectTheme", R.string.IncorrectTheme));
builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null);
showDialog(builder.create());
AlertUtil.showToast(LocaleController.getString("IncorrectTheme", R.string.IncorrectTheme));
}
} else {
if (LocaleController.getInstance().applyLanguageFile(locFile, currentAccount)) {
@ -1337,11 +1334,7 @@ public class ChannelAdminLogActivity extends BaseFragment implements Notificatio
selectedObject = null;
return;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setTitle(LocaleController.getString("NekoX", R.string.NekoX));
builder.setMessage(LocaleController.getString("IncorrectLocalization", R.string.IncorrectLocalization));
builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), null);
showDialog(builder.create());
AlertUtil.showToast(LocaleController.getString("IncorrectLocalization", R.string.IncorrectLocalization));
}
}
}

View File

@ -36,6 +36,7 @@ import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
import org.checkerframework.common.subtyping.qual.Bottom;
import org.telegram.messenger.AndroidUtilities;
import org.telegram.messenger.ApplicationLoader;
import org.telegram.messenger.ChatObject;
@ -72,6 +73,9 @@ import org.telegram.ui.Components.SizeNotifierFrameLayout;
import java.util.ArrayList;
import kotlin.Unit;
import tw.nekomimi.nekogram.BottomBuilder;
public class ChannelCreateActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate, ImageUpdater.ImageUpdaterDelegate {
private View doneButton;
@ -953,15 +957,13 @@ public class ChannelCreateActivity extends BaseFragment implements NotificationC
AdminedChannelCell adminedChannelCell = new AdminedChannelCell(getParentActivity(), view -> {
AdminedChannelCell cell = (AdminedChannelCell) view.getParent();
final TLRPC.Chat channel = cell.getCurrentChannel();
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
builder.setTitle(LocaleController.getString("NekoX", R.string.NekoX));
BottomBuilder builder = new BottomBuilder(getParentActivity());
if (channel.megagroup) {
builder.setMessage(AndroidUtilities.replaceTags(LocaleController.formatString("RevokeLinkAlert", R.string.RevokeLinkAlert, MessagesController.getInstance(currentAccount).linkPrefix + "/" + channel.username, channel.title)));
builder.addTitle(AndroidUtilities.replaceTags(LocaleController.formatString("RevokeLinkAlert", R.string.RevokeLinkAlert, MessagesController.getInstance(currentAccount).linkPrefix + "/" + channel.username, channel.title)));
} else {
builder.setMessage(AndroidUtilities.replaceTags(LocaleController.formatString("RevokeLinkAlertChannel", R.string.RevokeLinkAlertChannel, MessagesController.getInstance(currentAccount).linkPrefix + "/" + channel.username, channel.title)));
builder.addTitle(AndroidUtilities.replaceTags(LocaleController.formatString("RevokeLinkAlertChannel", R.string.RevokeLinkAlertChannel, MessagesController.getInstance(currentAccount).linkPrefix + "/" + channel.username, channel.title)));
}
builder.setNegativeButton(LocaleController.getString("Cancel", R.string.Cancel), null);
builder.setPositiveButton(LocaleController.getString("RevokeButton", R.string.RevokeButton), (dialogInterface, i) -> {
builder.addItem(LocaleController.getString("RevokeButton", R.string.RevokeButton),R.drawable.baseline_delete_forever_24, (i) -> {
TLRPC.TL_channels_updateUsername req1 = new TLRPC.TL_channels_updateUsername();
req1.channel = MessagesController.getInputChannel(channel);
req1.username = "";
@ -976,7 +978,9 @@ public class ChannelCreateActivity extends BaseFragment implements NotificationC
});
}
}, ConnectionsManager.RequestFlagInvokeAfter);
return Unit.INSTANCE;
});
builder.addCancelItem();
showDialog(builder.create());
});
adminedChannelCell.setChannel(res.chats.get(a), a == res.chats.size() - 1);

View File

@ -66,7 +66,7 @@ class BottomBuilder(val ctx: Context) {
}
@JvmOverloads
fun addTitle(title: CharSequence, bigTitle: Boolean = true): HeaderCell {
fun addTitle(title: CharSequence, bigTitle: Boolean = false): HeaderCell {
return addTitle(title, bigTitle, null)
@ -80,7 +80,7 @@ class BottomBuilder(val ctx: Context) {
fun addTitle(title: CharSequence, bigTitle: Boolean, subTitle: CharSequence?): HeaderCell {
val headerCell = if (bigTitle) HeaderCell(ctx, Theme.key_dialogTextBlue2, 21, 15, subTitle != null) else HeaderCell(ctx)
val headerCell = HeaderCell(ctx)
headerCell.setText(if (title is String) AndroidUtilities.replaceTags(title) else title)

View File

@ -7,6 +7,7 @@ import org.telegram.messenger.AndroidUtilities
import org.telegram.messenger.ApplicationLoader
import org.telegram.messenger.LocaleController
import org.telegram.messenger.R
import org.telegram.tgnet.TLRPC
import org.telegram.ui.ActionBar.AlertDialog
import org.telegram.ui.Components.EditTextBoldCursor
import org.telegram.ui.Components.NumberPicker
@ -20,6 +21,9 @@ object AlertUtil {
@JvmStatic
fun showToast(e: Throwable) = showToast(e.message ?: e.javaClass.simpleName)
@JvmStatic
fun showToast(e: TLRPC.TL_error) = showToast("${e.code}: ${e.text}")
@JvmStatic
fun showToast(text: String) = UIUtil.runOnUIThread(Runnable {
Toast.makeText(