Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -1026,7 +1026,23 @@ private void generatePhoto (PhotoGenerationInfo info) throws Throwable {
final boolean applyLessCompression = U.isScreenshotFolder(originalPath);
boolean isTransparent = info.getAllowTransparency() || (!applyLessCompression && isTransparent(originalPath, uri));

final int maxSize = info.getResolutionLimit() != 0 ? info.getResolutionLimit() : PhotoGenerationInfo.SIZE_LIMIT;
final int maxSize;

switch (Settings.instance().getResolutionOption()) {
case Settings.RESOLUTION_OPTION_LOW:
maxSize = info.getResolutionLimit() != 0 ? info.getResolutionLimit() : 800;
break;
/*case Settings.RESOLUTION_OPTION_MEDIUM:
maxSize = info.getResolutionLimit() != 0 ? info.getResolutionLimit() : 1280;
break;*/
case Settings.RESOLUTION_OPTION_HIGH:
maxSize = info.getResolutionLimit() != 0 ? info.getResolutionLimit() : 2560;
break;
default:
maxSize = info.getResolutionLimit() != 0 ? info.getResolutionLimit() : 1280;
break;
}

final boolean saveToGallery = Settings.instance().needSaveEditedMediaToGallery() && info.isEdited();

Bitmap bitmap = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -626,6 +626,18 @@ protected void setValuedSetting (ListItem item, SettingView view, boolean isUpda
view.setData(Strings.buildSize(logSize[1]));
} else if (itemId == R.id.btn_tdlib_androidLogs) {
view.getToggler().setRadioEnabled(Settings.instance().getLogSettings().needAndroidLog(), isUpdate);
} else if (itemId == R.id.btn_resolutionOption) {
switch (Settings.instance().getResolutionOption()) {
case Settings.RESOLUTION_OPTION_LOW:
view.setData(R.string.ResolutionLow);
break;
case Settings.RESOLUTION_OPTION_MEDIUM:
view.setData(R.string.ResolutionMedium);
break;
case Settings.RESOLUTION_OPTION_HIGH:
view.setData(R.string.ResolutionHigh);
break;
}
}
}
};
Expand Down Expand Up @@ -742,6 +754,12 @@ protected void setValuedSetting (ListItem item, SettingView view, boolean isUpda
items.add(new ListItem(ListItem.TYPE_SHADOW_BOTTOM));
items.add(new ListItem(ListItem.TYPE_DESCRIPTION, 0, 0, Lang.getMarkdownStringSecure(this, R.string.Experiment_ChatFoldersInfo)));

if (testerLevel >= Tdlib.TESTER_LEVEL_TESTER || Settings.instance().isExperimentEnabled(Settings.EXPERIMENT_FLAG_SEND_HQ_PHOTO)) {
items.add(new ListItem(ListItem.TYPE_SEPARATOR_FULL));
items.add(new ListItem(ListItem.TYPE_VALUED_SETTING_COMPACT, R.id.btn_resolutionOption, 0, R.string.Experiment_ResolutionOption));
items.add(new ListItem(ListItem.TYPE_DESCRIPTION, 0, 0, Lang.getMarkdownStringSecure(this, R.string.Experiment_ResolutionInfo)));
}

if (testerLevel >= Tdlib.TESTER_LEVEL_TESTER || Settings.instance().isExperimentEnabled(Settings.EXPERIMENT_FLAG_SHOW_PEER_IDS)) {
items.add(new ListItem(ListItem.TYPE_SHADOW_TOP));
items.add(new ListItem(ListItem.TYPE_RADIO_SETTING, R.id.btn_experiment, 0, R.string.Experiment_PeerIds).setLongValue(Settings.EXPERIMENT_FLAG_SHOW_PEER_IDS));
Expand Down Expand Up @@ -1435,6 +1453,8 @@ public boolean onAcceptInput (MaterialEditTextGroup inputView, String result) {
viewTdlibLog(v, true);
} else if (viewId == R.id.btn_tdlib_androidLogs) {
Settings.instance().getLogSettings().setNeedAndroidLog(adapter.toggleView(v));
} else if (viewId == R.id.btn_resolutionOption) {
showResolutionOption();
}
}

Expand Down Expand Up @@ -1601,4 +1621,25 @@ public void onApplySettings (@IdRes int id, SparseIntArray result) {
adapter.updateValuedSettingById(R.id.btn_log_tags);
}
}

private void showResolutionOption () {
int resolutionOption = Settings.instance().getResolutionOption();
showSettings(new SettingsWrapBuilder(R.id.btn_resolutionOption).setRawItems(new ListItem[] {
new ListItem(ListItem.TYPE_RADIO_OPTION, R.id.btn_resolutionLow, 0, R.string.ResolutionLow, R.id.btn_resolutionOption, resolutionOption == Settings.RESOLUTION_OPTION_LOW),
new ListItem(ListItem.TYPE_RADIO_OPTION, R.id.btn_resolutionMedium, 0, R.string.ResolutionMedium, R.id.btn_resolutionOption, resolutionOption == Settings.RESOLUTION_OPTION_MEDIUM),
new ListItem(ListItem.TYPE_RADIO_OPTION, R.id.btn_resolutionHigh, 0, R.string.ResolutionHigh, R.id.btn_resolutionOption, resolutionOption == Settings.RESOLUTION_OPTION_HIGH),
}).setAllowResize(false).addHeaderItem(Lang.getString(R.string.Experiment_ResolutionInfo)).setIntDelegate((id, result) -> {
int newResolutionOption = Settings.instance().getResolutionOption();
int resolutionResult = result.get(R.id.btn_resolutionOption);
if (resolutionResult == R.id.btn_resolutionLow) {
newResolutionOption = Settings.RESOLUTION_OPTION_LOW;
} else if (resolutionResult == R.id.btn_resolutionMedium) {
newResolutionOption = Settings.RESOLUTION_OPTION_MEDIUM;
} else if (resolutionResult == R.id.btn_resolutionHigh) {
newResolutionOption = Settings.RESOLUTION_OPTION_HIGH;
}
Settings.instance().setResolutionOption(newResolutionOption);
adapter.updateValuedSettingById(R.id.btn_resolutionOption);
}));
}
}
24 changes: 24 additions & 0 deletions app/src/main/java/org/thunderdog/challegram/unsorted/Settings.java
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,7 @@ public static Settings instance () {
private static final String KEY_CHAT_TRANSLATE_RECENTS = "language_recents";
private static final String KEY_DEFAULT_LANGUAGE_FOR_TRANSLATE_DRAFT = "language_draft_translate";
private static final String KEY_INSTANT_VIEW = "settings_iv_mode";
private static final String KEY_RESOLUTION_OPTION = "settings_resolution_options";
private static final String KEY_RESTRICT_CONTENT = "settings_restrict_content";
private static final String KEY_CAMERA_ASPECT_RATIO = "settings_camera_ratio";
private static final String KEY_CAMERA_TYPE = "settings_camera_type";
Expand Down Expand Up @@ -418,6 +419,8 @@ private static String key (String key, int accountId) {
public static final long EXPERIMENT_FLAG_ENABLE_FOLDERS = 1 << 1;
public static final long EXPERIMENT_FLAG_SHOW_PEER_IDS = 1 << 2;

public static final long EXPERIMENT_FLAG_SEND_HQ_PHOTO = 1 << 3;

private static final @Deprecated int DISABLED_FLAG_OTHER_NEED_RAISE_TO_SPEAK = 1 << 2;
private static final @Deprecated int DISABLED_FLAG_OTHER_AUTODOWNLOAD_IN_BACKGROUND = 1 << 3;
private static final @Deprecated int DISABLED_FLAG_OTHER_DEFAULT_CRASH_MANAGER = 1 << 5;
Expand Down Expand Up @@ -771,6 +774,11 @@ public void apply (boolean async) {
public static final int INSTANT_VIEW_MODE_INTERNAL = 1;
public static final int INSTANT_VIEW_MODE_ALL = 2;

public static final int RESOLUTION_OPTION_DEFAULT = 1;
public static final int RESOLUTION_OPTION_LOW = 0;
public static final int RESOLUTION_OPTION_MEDIUM = 1;
public static final int RESOLUTION_OPTION_HIGH = 2;

@Nullable
private Float _chatFontSize;

Expand Down Expand Up @@ -2762,6 +2770,18 @@ public void setInstantViewMode (int mode) {
}
}

public int getResolutionOption () {
return getInt(KEY_RESOLUTION_OPTION, RESOLUTION_OPTION_DEFAULT);
}

public void setResolutionOption (int option) {
if (option == RESOLUTION_OPTION_DEFAULT) {
remove(KEY_RESOLUTION_OPTION);
} else {
putInt(KEY_RESOLUTION_OPTION, option);
}
}

public int getStickerMode () {
if (_stickerMode == null)
_stickerMode = pmc.getInt(KEY_STICKER_MODE, STICKER_MODE_ALL);
Expand Down Expand Up @@ -6981,4 +7001,8 @@ public boolean chatFoldersEnabled () {
public boolean showPeerIds () {
return isExperimentEnabled(EXPERIMENT_FLAG_SHOW_PEER_IDS);
}

public boolean sendHqPhotos () {
return isExperimentEnabled(EXPERIMENT_FLAG_SEND_HQ_PHOTO);
}
}
7 changes: 7 additions & 0 deletions app/src/main/res/values/ids.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1338,6 +1338,13 @@

<item type="id" name="btn_featureToggles" />

<!-- RESOLUTION ID SECTION -->

<item type="id" name="btn_resolutionLow" />
<item type="id" name="btn_resolutionMedium" />
<item type="id" name="btn_resolutionHigh" />
<item type="id" name="btn_resolutionOption" />

<!-- * -->

<item type="id" name="view_emojiPacksCount" />
Expand Down
10 changes: 9 additions & 1 deletion app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4965,6 +4965,15 @@
<string name="SuperGroupId">Supergroup ID</string>
<string name="ChannelId">Channel ID</string>

<!-- RESOLUTION STRING SECTION -->

<string name="Experiment_SendHQPhoto">Send large photo</string>
<string name="Experiment_ResolutionOption">Photo Resolution Selector</string>
<string name="Experiment_ResolutionInfo">Resolution Selector (Experimental): Possible instability or app crashes.</string>
<string name="ResolutionLow">Low (800px)</string>
<string name="ResolutionMedium">Medium (1280px)</string>
<string name="ResolutionHigh">High (2560px)</string>

<string name="BoostingGiveawayJustStarted">%1$s just started a giveaway of Telegram Premium subscriptions for its followers.</string>
<string name="BoostingGiveawayServiceWinnersSelected_one">%1$s winner of the giveaway was randomly selected by Telegram and received their gift link in a private message.</string>
<string name="BoostingGiveawayServiceWinnersSelected_other">%1$s winners of the giveaway were randomly selected by Telegram and received their gift link in a private message.</string>
Expand All @@ -4984,7 +4993,6 @@

<string name="ReplyMessageDeletedHint">This message is a reply to the message that was deleted.</string>
<string name="AnotherChatReplyHint">This message is from another chat. Tap again to view.</string>

<string name="SwipeToSwapLinkPreview">Swipe to choose specific link preview</string>

<string name="MessageRestrictedByTelegram">This is a service message from Telegram</string>
Expand Down