Skip to content

Commit

Permalink
Build 34
Browse files Browse the repository at this point in the history
  • Loading branch information
tretdm committed May 18, 2023
1 parent 61d0ad2 commit 2c17133
Show file tree
Hide file tree
Showing 14 changed files with 298 additions and 59 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ android {
applicationId "uk.openvk.android.refresh"
minSdk 21
targetSdk 33
versionCode 33
versionName "0.9.33.alpha"
versionCode 34
versionName "0.9.34.alpha"
}

buildTypes {
Expand Down
5 changes: 3 additions & 2 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,9 @@
android:supportsRtl="true"
android:usesCleartextTraffic="true"
android:theme="@style/ApplicationTheme.SplashTheme"
tools:targetApi="m"
android:requestLegacyExternalStorage="true">
tools:targetApi="tiramisu"
android:requestLegacyExternalStorage="true"
android:localeConfig="@xml/locales">
<receiver android:name=".longpoll_api.receivers.LongPollReceiver"
android:exported="true"
android:permission="GET_LONGPOLL_NOTIFICATIONS">
Expand Down
12 changes: 12 additions & 0 deletions app/src/main/java/uk/openvk/android/refresh/Global.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package uk.openvk.android.refresh;

import android.app.LocaleManager;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
Expand All @@ -14,8 +15,10 @@

import androidx.annotation.ColorInt;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.core.content.res.ResourcesCompat;
import androidx.core.graphics.TypefaceCompat;
import androidx.core.os.LocaleListCompat;
import androidx.core.view.WindowInsetsControllerCompat;
import androidx.preference.PreferenceManager;

Expand All @@ -34,6 +37,7 @@
import uk.openvk.android.refresh.api.Account;
import uk.openvk.android.refresh.api.models.OvkLink;
import uk.openvk.android.refresh.api.models.WallPost;
import uk.openvk.android.refresh.ui.core.activities.AppActivity;
import uk.openvk.android.refresh.ui.core.activities.WallPostActivity;

public class Global {
Expand Down Expand Up @@ -361,4 +365,12 @@ public static ColorStateList getMonetRippleColorList(
}
return new ColorStateList(states, colors);
}

public static void setPerAppLanguage(Context ctx) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
LocaleManager localeManager =
(LocaleManager) ctx.getSystemService(Context.LOCALE_SERVICE);
AppCompatDelegate.setApplicationLocales(OvkApplication.getLocaleList(ctx));
}
}
}
60 changes: 47 additions & 13 deletions app/src/main/java/uk/openvk/android/refresh/OvkApplication.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
package uk.openvk.android.refresh;

import android.app.Application;
import android.app.LocaleManager;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.os.Build;
import android.os.LocaleList;
import android.preference.PreferenceManager;
import android.util.Log;

import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.core.os.LocaleListCompat;

import com.kieronquinn.monetcompat.core.MonetCompat;

Expand Down Expand Up @@ -91,22 +94,53 @@ public static Locale getLocale(Context ctx) {
SharedPreferences global_prefs = PreferenceManager.getDefaultSharedPreferences(ctx);
String language = global_prefs.getString("ui_language", "System");
String language_code = "en";
if(language.equals("English")) {
language_code = "en";
} else if(language.equals("Русский")) {
language_code = "ru";
// } else if(language.equals("Украïнська")) {
// language_code = "uk"; (later)
} else {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
language_code = ctx.getResources().getConfiguration().getLocales().get(0).getLanguage();
} else {
language_code = ctx.getResources().getConfiguration().locale.getLanguage();
}
switch (language) {
case "English":
language_code = "en";
break;
case "Русский":
language_code = "ru";
break;
case "Украïнська":
language_code = "uk";
break;
default:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
language_code = ctx.getResources().getConfiguration().getLocales().get(0).getLanguage();
} else {
language_code = ctx.getResources().getConfiguration().locale.getLanguage();
}
break;
}


return new Locale(language_code);
}

@RequiresApi(api = Build.VERSION_CODES.TIRAMISU)
public static LocaleListCompat getLocaleList(Context ctx) {
SharedPreferences global_prefs = PreferenceManager.getDefaultSharedPreferences(ctx);
LocaleList currentAppLocales =
ctx.getSystemService(LocaleManager.class).getApplicationLocales();
SharedPreferences.Editor editor = global_prefs.edit();
if(currentAppLocales.toLanguageTags().startsWith("en")) {
editor.putString("ui_language", "English");
} else if(currentAppLocales.toLanguageTags().startsWith("ru")) {
editor.putString("ui_language", "Russian");
} else if(currentAppLocales.toLanguageTags().startsWith("uk")) {
editor.putString("ui_language", "Украïнська");
} else if(currentAppLocales.toLanguageTags().startsWith("und")) {
editor.putString("ui_language", "System");
}

editor.apply();
if(!currentAppLocales.toLanguageTags().startsWith("und")) {
return LocaleListCompat.wrap(
new LocaleList(Locale.forLanguageTag(currentAppLocales.toLanguageTags())));
} else {
return LocaleListCompat.wrap(
new LocaleList(ctx.getResources().getConfiguration().locale));
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import android.annotation.SuppressLint;
import android.app.AlarmManager;
import android.app.LocaleManager;
import android.app.Notification;
import android.app.PendingIntent;
import android.content.ComponentName;
Expand Down Expand Up @@ -34,6 +35,7 @@
import androidx.appcompat.app.AppCompatDelegate;
import androidx.appcompat.widget.AppCompatSpinner;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.os.LocaleListCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
Expand Down Expand Up @@ -158,6 +160,7 @@ protected void onCreate(Bundle savedInstanceState) {
Global.setColorTheme(this, global_prefs.getString("theme_color", "blue"), getWindow());
Global.setInterfaceFont(this);
isDarkTheme = global_prefs.getBoolean("dark_theme", false);

notifMan = new NotificationManager(this, true, true, true, "");
if (savedInstanceState == null) {
Bundle extras = getIntent().getExtras();
Expand All @@ -176,6 +179,7 @@ protected void onCreate(Bundle savedInstanceState) {
protected void attachBaseContext(Context newBase) {
Locale languageType = OvkApplication.getLocale(newBase);
super.attachBaseContext(LocaleContextWrapper.wrap(newBase, languageType));
Global.setPerAppLanguage(this);
}

private void createFragments() {
Expand Down Expand Up @@ -839,13 +843,15 @@ private void receiveState(int message, Bundle data) {
|| message == HandlerMessages.WALL_AVATARS
|| message == HandlerMessages.WALL_ATTACHMENTS) {
if(selectedFragment == newsfeedFragment) {
if(message == HandlerMessages.NEWSFEED_AVATARS) {
newsfeedFragment.newsfeedAdapter.setAvatarLoadState(true);
} else {
newsfeedFragment.newsfeedAdapter.setPhotoLoadState(true);
newsfeedFragment.disableLoadState();
if(newsfeedFragment.newsfeedAdapter != null) {
if (message == HandlerMessages.NEWSFEED_AVATARS) {
newsfeedFragment.newsfeedAdapter.setAvatarLoadState(true);
} else {
newsfeedFragment.newsfeedAdapter.setPhotoLoadState(true);
newsfeedFragment.disableLoadState();
}
newsfeedFragment.refreshAdapter();
}
newsfeedFragment.refreshAdapter();
} else if(selectedFragment == profileFragment) {
if(profileFragment.getWallAdapter() == null) {
profileFragment.createWallAdapter(this, wall.getWallItems());
Expand Down Expand Up @@ -1163,7 +1169,7 @@ public void openCommunityPage(int position) {
}
}

private ServiceConnection lpConnection = new ServiceConnection() {
private final ServiceConnection lpConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {
LongPollService.LongPollBinder binder = (LongPollService.LongPollBinder) service;
longPollService = binder.getService();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,26 +90,28 @@ public void onRefresh() {

@SuppressLint("NotifyDataSetChanged")
public void createAdapter(Context ctx, ArrayList<Conversation> conversations, Account account) {
this.conversations = conversations;
conversationsView = (RecyclerView) view.findViewById(R.id.conversations_rv);
if(conversationsAdapter == null) {
conversationsAdapter = new ConversationsAdapter(requireActivity(), this.conversations,
account);
llm = new LinearLayoutManager(ctx);
llm.setOrientation(LinearLayoutManager.VERTICAL);
if(OvkApplication.isTablet) {
glm = new GridLayoutManager(getContext(), 2);
conversationsView.setLayoutManager(glm);
if(view != null) {
this.conversations = conversations;
conversationsView = (RecyclerView) view.findViewById(R.id.conversations_rv);
if (conversationsAdapter == null) {
conversationsAdapter = new ConversationsAdapter(requireActivity(), this.conversations,
account);
llm = new LinearLayoutManager(ctx);
llm.setOrientation(LinearLayoutManager.VERTICAL);
if (OvkApplication.isTablet) {
glm = new GridLayoutManager(getContext(), 2);
conversationsView.setLayoutManager(glm);
} else {
conversationsView.setLayoutManager(llm);
}
conversationsView.setAdapter(conversationsAdapter);
} else {
conversationsView.setLayoutManager(llm);
//conversationsAdapter.setArray(wallPosts);
conversationsAdapter.notifyDataSetChanged();
}
conversationsView.setAdapter(conversationsAdapter);
} else {
//conversationsAdapter.setArray(wallPosts);
conversationsAdapter.notifyDataSetChanged();
((ProgressLayout) view.findViewById(R.id.progress_layout)).setVisibility(View.GONE);
((SwipeRefreshLayout) view.findViewById(R.id.messages_swipe_layout)).setVisibility(View.VISIBLE);
}
((ProgressLayout) view.findViewById(R.id.progress_layout)).setVisibility(View.GONE);
((SwipeRefreshLayout) view.findViewById(R.id.messages_swipe_layout)).setVisibility(View.VISIBLE);
}

public void disableUpdateState() {
Expand All @@ -118,8 +120,10 @@ public void disableUpdateState() {

@SuppressLint("NotifyDataSetChanged")
public void loadAvatars(ArrayList<Conversation> conversations) {
Context ctx = requireContext();
conversationsAdapter.notifyDataSetChanged();
if(view != null) {
Context ctx = requireContext();
conversationsAdapter.notifyDataSetChanged();
}
}

@SuppressLint("NotifyDataSetChanged")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,10 @@ public void onRefresh() {
}

public void setFriendsCount(int count) {
((Button) header.findViewById(R.id.show_friends_btn))
.setText(String.format(getResources().getStringArray(R.array.friends_count)[2], count));
if(view != null) {
((Button) header.findViewById(R.id.show_friends_btn))
.setText(String.format(getResources().getStringArray(R.array.friends_count)[2], count));
}
}

// Setting ViewPagers with embedded fragments: WallFragment and AboutFragment
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.provider.Settings;
import android.text.Html;
import android.text.method.LinkMovementMethod;
import android.view.View;
Expand Down Expand Up @@ -87,8 +88,15 @@ public boolean onPreferenceClick(Preference preference) {
assert ui_language != null;
ui_language.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
showUiLanguageSelectionDialog();
public boolean onPreferenceClick(@NonNull Preference preference) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
Intent intent = new Intent(Settings.ACTION_APP_LOCALE_SETTINGS);
Uri uri = Uri.fromParts("package", requireContext().getPackageName(), null);
intent.setData(uri);
startActivity(intent);
} else {
showUiLanguageSelectionDialog();
}
return false;
}
});
Expand Down Expand Up @@ -140,7 +148,7 @@ private void showUiLanguageSelectionDialog() {
case "Русский":
valuePos = 2;
break;
case "Українська":
case "Украïнська":
valuePos = 3;
break;
}
Expand All @@ -167,7 +175,7 @@ public void onMenuItemClicked(String[] list, int which) {
} else if(which == 2) {
editor.putString("ui_language", "Русский");
} else if(which == 3) {
editor.putString("ui_language", "Українська");
editor.putString("ui_language", "Украïнська");
}
editor.apply();
}
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/values-ru/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
<string name="date_at">в</string>

<string name="online">Онлайн</string>
<string name="offline">Оффлайн</string>
<string name="offline">Не в сети</string>
<string name="last_seen_profile_m">был в сети %s</string>
<string name="last_seen_profile_f">была в сети %s</string>
<string name="date_just_now">только что</string>
Expand Down
Loading

0 comments on commit 2c17133

Please sign in to comment.