Skip to content

Commit

Permalink
#303: Fix for incorrect screen rotation detection on the OPPO Fin X2 …
Browse files Browse the repository at this point in the history
…Lite
  • Loading branch information
Keidan committed Apr 5, 2024
1 parent 7ee8d42 commit 5448920
Show file tree
Hide file tree
Showing 12 changed files with 81 additions and 10 deletions.
11 changes: 11 additions & 0 deletions app/src/main/java/fr/ralala/hexviewer/ApplicationCtx.java
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ public class ApplicationCtx extends Application {
private boolean mSequential = false;
private String mDefaultMemoryThreshold;
private boolean mDefaultPartialOpenButWholeFileIsOpened;
private Configuration mConfiguration = null;

@Override
public void onCreate() {
Expand Down Expand Up @@ -153,6 +154,16 @@ public void onCreate() {
setApplicationLanguage(mLanguage);
}

public void setConfiguration(Configuration cfg) {
mConfiguration = cfg;
}

public Configuration getConfiguration() {
if (mConfiguration == null)
mConfiguration = getResources().getConfiguration();
return mConfiguration;
}

public Queue<String> getLogBuffer() {
if (mLogs == null)
mLogs = new CircularFifoQueue<>(CIRCULAR_BUFFER_DEPTH);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import android.app.SearchManager;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.os.Build;
import android.os.Bundle;
import android.text.InputType;
Expand All @@ -12,6 +13,7 @@
import android.widget.SearchView;

import androidx.activity.OnBackPressedCallback;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
Expand Down Expand Up @@ -84,7 +86,7 @@ protected void onCreate(final Bundle savedInstanceState) {
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE
}, 1);

getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
Expand All @@ -93,6 +95,17 @@ public void handleOnBackPressed() {
});
}

/**
* Called by the system when the device configuration changes while your activity is running.
*
* @param newConfig The new device configuration. This value cannot be null.
*/
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mApp.setConfiguration(newConfig);
}

protected void setSearchView(MenuItem si) {
// Searchable configuration
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,8 @@ protected void onCreate(final Bundle savedInstanceState) {

mEtInputHex = findViewById(R.id.etInputHex);
mTilInputHex = findViewById(R.id.tilInputHex);
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
Configuration cfg = mApp.getConfiguration();
if (cfg.orientation == Configuration.ORIENTATION_LANDSCAPE) {
mEtInputHex.setTextSize(mApp.getListSettingsLineEditLandscape().getFontSize());
} else {
mEtInputHex.setTextSize(mApp.getListSettingsLineEditPortrait().getFontSize());
Expand Down Expand Up @@ -233,6 +234,7 @@ public void onDestroy() {
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mApp.setConfiguration(newConfig);
mAdapterSource.notifyDataSetChanged();
mAdapterResult.notifyDataSetChanged();
// Checks the orientation of the screen
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@

import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;

Expand Down Expand Up @@ -37,6 +39,7 @@ public class LogsActivity extends AppCompatActivity {
private CircularFifoQueue<String> mCfq = null;
private String mContent = null;
private ListView mLogs = null;
private ApplicationCtx mApp = null;

/**
* Starts an activity.
Expand All @@ -55,7 +58,7 @@ public static void startActivity(final Context c) {
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_logs);
ApplicationCtx app = (ApplicationCtx) getApplicationContext();
mApp = (ApplicationCtx) getApplicationContext();

ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
Expand All @@ -65,7 +68,7 @@ public void onCreate(final Bundle savedInstanceState) {

mLogs = findViewById(R.id.logs);

mCfq = (CircularFifoQueue<String>) app.getLogBuffer();
mCfq = (CircularFifoQueue<String>) mApp.getLogBuffer();
final String[] lines = mCfq.toArray(new String[]{});
final StringBuilder sb = new StringBuilder();
for (final String s : lines)
Expand All @@ -76,6 +79,17 @@ public void onCreate(final Bundle savedInstanceState) {
R.layout.listview_simple_row, R.id.label1, lines));
}

/**
* Detects the configuration changed.
*
* @param newConfig The new device configuration.
*/
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mApp.setConfiguration(newConfig);
}

/**
* Called when the options menu is created.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ protected void onCreate(final Bundle savedInstanceState) {
ApplicationCtx.addLog(this, "Main", "Application started with language: '" +
((ApplicationCtx) getApplicationContext()).getApplicationLanguage(this) + "'");

mApp.setConfiguration(getResources().getConfiguration());
mUnDoRedo = new UnDoRedo(this);

mPopup = new MainPopupWindow(this, mUnDoRedo, this::onPopupItemClick);
Expand Down Expand Up @@ -311,6 +312,7 @@ public void refreshTitle() {
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mApp.setConfiguration(newConfig);
if (mPayloadPlainSwipe.isVisible()) {
mPayloadPlainSwipe.refresh();
} else if (mPayloadHexHelper.isVisible())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Typeface;
import android.os.Bundle;
import android.text.Editable;
Expand All @@ -20,6 +21,7 @@
import android.widget.TextView;

import androidx.activity.result.ActivityResultLauncher;
import androidx.annotation.NonNull;
import androidx.annotation.StringRes;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
Expand Down Expand Up @@ -236,6 +238,17 @@ protected void onCreate(final Bundle savedInstanceState) {
evaluateSize();
}

/**
* Called by the system when the device configuration changes while your activity is running.
*
* @param newConfig The new device configuration. This value cannot be null.
*/
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
((ApplicationCtx) getApplicationContext()).setConfiguration(newConfig);
}

/**
* Called when the options menu is clicked.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.MenuItem;

Expand Down Expand Up @@ -100,6 +101,17 @@ protected void onCreate(final Bundle savedInstanceState) {
setTitle(getString(R.string.action_recently_open_title));
}

/**
* Called by the system when the device configuration changes while your activity is running.
*
* @param newConfig The new device configuration. This value cannot be null.
*/
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mApp.setConfiguration(newConfig);
}

/**
* Called when the options item is clicked (home).
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ private void applyUpdated(final TextView tv, final LineEntry fd) {
*/
protected String getTextAccordingToUserConfig(final String text) {
String txt;
Configuration cfg = getContext().getResources().getConfiguration();
Configuration cfg = mApp.getConfiguration();
if (mUserConfigLandscape != null && cfg.orientation == Configuration.ORIENTATION_LANDSCAPE && mUserConfigLandscape.isDataColumnNotDisplayed())
txt = text.substring(0, mApp.getNbBytesPerLine() == SysHelper.MAX_BY_ROW_16 ? SysHelper.MAX_BYTES_ROW_16 : SysHelper.MAX_BYTES_ROW_8);
else if (mUserConfigPortrait != null && cfg.orientation == Configuration.ORIENTATION_PORTRAIT && mUserConfigPortrait.isDataColumnNotDisplayed())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ View inflateView(final View convertView) {
* @param tv TextView
*/
private void applyUserConfig(final TextView tv) {
Configuration cfg = getContext().getResources().getConfiguration();
Configuration cfg = mApp.getConfiguration();
ListSettings landscape = mApp.getListSettingsLineEditLandscape();
ListSettings portrait = mApp.getListSettingsLineEditPortrait();
if (landscape != null && cfg.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import java.util.List;
import java.util.Set;

import fr.ralala.hexviewer.ApplicationCtx;
import fr.ralala.hexviewer.models.LineEntries;
import fr.ralala.hexviewer.models.LineEntry;
import fr.ralala.hexviewer.ui.adapters.config.UserConfig;
Expand Down Expand Up @@ -208,7 +209,7 @@ public void addAll(@NonNull Collection<? extends LineEntry> collection) {
* @param tv TextView
*/
protected void applyUserConfig(final TextView tv) {
Configuration cfg = getContext().getResources().getConfiguration();
Configuration cfg = ((ApplicationCtx) getContext().getApplicationContext()).getConfiguration();
if (mUserConfigLandscape != null && cfg.orientation == Configuration.ORIENTATION_LANDSCAPE) {
tv.setTextSize(mUserConfigLandscape.getFontSize());
ViewGroup.LayoutParams lp = tv.getLayoutParams();
Expand Down
4 changes: 3 additions & 1 deletion app/src/main/java/fr/ralala/hexviewer/ui/utils/UIHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.textfield.TextInputLayout;

import fr.ralala.hexviewer.ApplicationCtx;
import fr.ralala.hexviewer.R;
import fr.ralala.hexviewer.models.FileData;
import fr.ralala.hexviewer.ui.adapters.config.UserConfig;
Expand Down Expand Up @@ -147,7 +148,8 @@ public static int getTextWidth(final Context context, final UserConfig landscape
TextView tv = new TextView(context);
tv.setText(text);
tv.setTypeface(monospace);
Configuration cfg = context.getResources().getConfiguration();
ApplicationCtx app = (ApplicationCtx) context.getApplicationContext();
Configuration cfg = app.getConfiguration();
if (landscape != null && cfg.orientation == Configuration.ORIENTATION_LANDSCAPE) {
fontSize = landscape.getFontSize();
} else if (portrait != null) {
Expand Down
5 changes: 3 additions & 2 deletions app/src/main/java/fr/ralala/hexviewer/utils/SysHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;

import fr.ralala.hexviewer.ApplicationCtx;
import fr.ralala.hexviewer.R;
import fr.ralala.hexviewer.models.LineEntry;

Expand Down Expand Up @@ -68,8 +69,8 @@ public static boolean isRTL(final View view) {
* @return boolean
*/
public static boolean isRTL(final Context context) {
final Configuration config = context.getResources().getConfiguration();
return config.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
Configuration cfg = ((ApplicationCtx) context.getApplicationContext()).getConfiguration();
return cfg.getLayoutDirection() == View.LAYOUT_DIRECTION_RTL;
}

/**
Expand Down

0 comments on commit 5448920

Please sign in to comment.