diff --git a/app/build.gradle b/app/build.gradle index f8e519b2c..fd1c04d48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 24 - buildToolsVersion "24.0.2" + buildToolsVersion "24.0.3" defaultConfig { applicationId "com.topjohnwu.magisk" @@ -32,13 +32,11 @@ repositories { dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') - compile 'com.android.support:recyclerview-v7:24.2.1' compile 'com.android.support:cardview-v7:24.2.1' compile 'com.android.support:design:24.2.1' compile 'com.jakewharton:butterknife:8.4.0' compile 'com.github.michalis-vitos:aFileChooser:master' compile 'com.google.code.gson:gson:2.7' - compile 'com.android.support:support-v4:24.2.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index efcf4940c..b4d7d9ffe 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,8 @@ - + @@ -24,6 +25,7 @@ android:name=".MainActivity" android:configChanges="orientation|screenSize" android:exported="true"/> + - @@ -65,6 +66,9 @@ + = Build.VERSION_CODES.M) { - getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); - } ButterKnife.bind(this); setSupportActionBar(toolbar); @@ -83,7 +77,7 @@ public class AboutActivity extends AppCompatActivity { appChangelog.removeSummary(); if (theme.equals("Dark")) { - builder = new AlertDialog.Builder(this,R.style.AlertDialog_dh); + builder = new AlertDialog.Builder(this, R.style.AlertDialog_dh); } else { builder = new AlertDialog.Builder(this); } @@ -92,7 +86,7 @@ public class AboutActivity extends AppCompatActivity { } else { Spanned result; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { - result = Html.fromHtml(changes,Html.TO_HTML_PARAGRAPH_LINES_CONSECUTIVE); + result = Html.fromHtml(changes, Html.TO_HTML_PARAGRAPH_LINES_CONSECUTIVE); } else { result = Html.fromHtml(changes); } @@ -114,7 +108,7 @@ public class AboutActivity extends AppCompatActivity { appDevelopers.setOnClickListener(view -> { Spanned result; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { - result = Html.fromHtml(getString(R.string.app_developers_),Html.TO_HTML_PARAGRAPH_LINES_CONSECUTIVE); + result = Html.fromHtml(getString(R.string.app_developers_), Html.TO_HTML_PARAGRAPH_LINES_CONSECUTIVE); } else { result = Html.fromHtml(getString(R.string.app_developers_)); } @@ -148,8 +142,6 @@ public class AboutActivity extends AppCompatActivity { setFloating(); } - - public void setFloating() { boolean isTablet = getResources().getBoolean(R.bool.isTablet); if (isTablet) { @@ -164,12 +156,4 @@ public class AboutActivity extends AppCompatActivity { } } - @Override - protected void onResume() { - super.onResume(); - - setTitle("About"); - - - } } diff --git a/app/src/main/java/com/topjohnwu/magisk/LogFragment.java b/app/src/main/java/com/topjohnwu/magisk/LogFragment.java index 8d66223f3..903ab1ef2 100644 --- a/app/src/main/java/com/topjohnwu/magisk/LogFragment.java +++ b/app/src/main/java/com/topjohnwu/magisk/LogFragment.java @@ -49,20 +49,6 @@ public class LogFragment extends Fragment { private MenuItem mClickedMenuItem; - @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - setHasOptionsMenu(true); - } - - @Override - public void onResume() { - super.onResume(); - getActivity().setTitle("Log"); - setHasOptionsMenu(true); - reloadErrorLog(); - } - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.log_fragment, container, false); @@ -72,10 +58,16 @@ public class LogFragment extends Fragment { reloadErrorLog(); - setHasOptionsMenu(true); return view; } + @Override + public void onResume() { + super.onResume(); + setHasOptionsMenu(true); + reloadErrorLog(); + } + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_log, menu); diff --git a/app/src/main/java/com/topjohnwu/magisk/MagiskFragment.java b/app/src/main/java/com/topjohnwu/magisk/MagiskFragment.java index bd4c61750..148d9814b 100644 --- a/app/src/main/java/com/topjohnwu/magisk/MagiskFragment.java +++ b/app/src/main/java/com/topjohnwu/magisk/MagiskFragment.java @@ -3,13 +3,13 @@ package com.topjohnwu.magisk; import android.app.Fragment; import android.content.Intent; import android.content.SharedPreferences; -import android.content.res.TypedArray; -import android.graphics.Color; +import android.content.pm.PackageManager; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.annotation.Nullable; +import android.support.graphics.drawable.animated.BuildConfig; import android.support.v4.content.FileProvider; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.AlertDialog; @@ -55,12 +55,16 @@ public class MagiskFragment extends Fragment { @BindView(R.id.magisk_check_updates_status) TextView magiskCheckUpdatesStatus; @BindView(R.id.magisk_check_updates_progress) ProgressBar magiskCheckUpdatesProgress; - @BindColor(R.color.grey500) int grey500; + @BindColor(R.color.green500) int colorOK; + @BindColor(R.color.yellow500) int colorWarn; + @BindColor(R.color.grey500) int colorNeutral; + @BindColor(R.color.blue500) int colorInfo; + @BindColor(android.R.color.transparent) int trans; - private int colorOK, colorWarn, colorNeutral; int statusOK = R.drawable.ic_check_circle; int statusUnknown = R.drawable.ic_help; + private AlertDialog.Builder builder; private SharedPreferences prefs; @@ -71,24 +75,12 @@ public class MagiskFragment extends Fragment { public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v = inflater.inflate(R.layout.magisk_fragment, container, false); ButterKnife.bind(this, v); - int[] attrs0 = {R.attr.ColorOK}; - int[] attrs1 = {R.attr.ColorWarn}; - int[] attrs2 = {R.attr.ColorNeutral}; - TypedArray ta0 = getActivity().obtainStyledAttributes(attrs0); - TypedArray ta1 = getActivity().obtainStyledAttributes(attrs1); - TypedArray ta2 = getActivity().obtainStyledAttributes(attrs2); - colorOK = ta0.getColor(0, Color.GRAY); - colorWarn = ta1.getColor(0, Color.GRAY); - colorNeutral = ta2.getColor(0, Color.GRAY); - ta0.recycle(); - ta1.recycle(); - ta2.recycle(); if (magiskVersion == -1) { - magiskStatusContainer.setBackgroundColor(grey500); + magiskStatusContainer.setBackgroundColor(colorNeutral); magiskStatusIcon.setImageResource(statusUnknown); - magiskVersionText.setTextColor(grey500); + magiskVersionText.setTextColor(colorNeutral); magiskVersionText.setText(R.string.magisk_version_error); } else { magiskStatusContainer.setBackgroundColor(colorOK); @@ -137,7 +129,6 @@ public class MagiskFragment extends Fragment { @Override public void onResume() { super.onResume(); - getActivity().setTitle(R.string.magisk); prefs.registerOnSharedPreferenceChangeListener(listener); } @@ -169,10 +160,10 @@ public class MagiskFragment extends Fragment { magiskCheckUpdatesStatus.setTextColor(colorWarn); } else { if (remoteMagiskVersion > magiskVersion) { - magiskCheckUpdatesContainer.setBackgroundColor(colorNeutral); + magiskCheckUpdatesContainer.setBackgroundColor(colorInfo); magiskCheckUpdatesIcon.setImageResource(R.drawable.ic_file_download); magiskCheckUpdatesStatus.setText(getString(R.string.magisk_update_available, String.valueOf(remoteMagiskVersion))); - magiskCheckUpdatesStatus.setTextColor(colorNeutral); + magiskCheckUpdatesStatus.setTextColor(colorInfo); magiskUpdateView.setOnClickListener(view -> builder .setTitle(getString(R.string.update_title, getString(R.string.magisk))) .setMessage(getString(R.string.update_msg, getString(R.string.magisk), String.valueOf(remoteMagiskVersion), magiskChangelog)) @@ -213,11 +204,17 @@ public class MagiskFragment extends Fragment { .show()); } - if (remoteAppVersionCode > BuildConfig.VERSION_CODE) { - appCheckUpdatesContainer.setBackgroundColor(colorNeutral); + int appVersionCode = 0; + try { + appVersionCode = getActivity().getPackageManager().getPackageInfo(getActivity().getPackageName(), 0).versionCode; + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + } + if (remoteAppVersionCode > appVersionCode) { + appCheckUpdatesContainer.setBackgroundColor(colorInfo); appCheckUpdatesIcon.setImageResource(R.drawable.ic_file_download); appCheckUpdatesStatus.setText(getString(R.string.app_update_available, remoteAppVersion)); - appCheckUpdatesStatus.setTextColor(colorNeutral); + appCheckUpdatesStatus.setTextColor(colorInfo); appUpdateView.setOnClickListener(view -> builder .setTitle(getString(R.string.update_title, getString(R.string.app_name))) .setMessage(getString(R.string.update_msg, getString(R.string.app_name), remoteAppVersion, appChangelog)) diff --git a/app/src/main/java/com/topjohnwu/magisk/MainActivity.java b/app/src/main/java/com/topjohnwu/magisk/MainActivity.java index 3b7f91416..98acc843e 100644 --- a/app/src/main/java/com/topjohnwu/magisk/MainActivity.java +++ b/app/src/main/java/com/topjohnwu/magisk/MainActivity.java @@ -33,7 +33,6 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On private static final String SELECTED_ITEM_ID = "SELECTED_ITEM_ID"; private final Handler mDrawerHandler = new Handler(); - private String currentTitle; @BindView(R.id.toolbar) Toolbar toolbar; @BindView(R.id.drawer_layout) DrawerLayout drawer; @@ -85,22 +84,13 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On mSelectedId = savedInstanceState == null ? mSelectedId : savedInstanceState.getInt(SELECTED_ITEM_ID); navigationView.setCheckedItem(mSelectedId); + if (savedInstanceState == null) { + mDrawerHandler.removeCallbacksAndMessages(null); + mDrawerHandler.postDelayed(() -> navigate(mSelectedId), 250); + } navigationView.setNavigationItemSelectedListener(this); - Bundle extras = getIntent().getExtras(); - if (extras != null) { - String toLaunch = ""; - toLaunch = getIntent().getExtras().getString("Relaunch"); - if (toLaunch.equals("Settings")) { - Logger.dev("MainActivity: Intent has extras " + getIntent().getExtras().getString("Relaunch")); - mSelectedId = R.id.settings; - } - - } - - mDrawerHandler.removeCallbacksAndMessages(null); - navigate(mSelectedId); } @Override @@ -130,12 +120,6 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On return true; } - @Override - protected void onResume() { - super.onResume(); - setTitle(currentTitle); - } - public void navigate(final int itemId) { Fragment navFragment = null; String tag = ""; @@ -166,9 +150,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On navFragment = new LogFragment(); break; case R.id.settings: - setTitle(R.string.settings); - tag = "settings"; - navFragment = new SettingsFragment(); + startActivity(new Intent(this, SettingsActivity.class)); break; case R.id.app_about: startActivity(new Intent(this, AboutActivity.class)); @@ -176,14 +158,10 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On } if (navFragment != null) { - FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out); try { - toolbar.setElevation(navFragment instanceof ModulesFragment ? 0 : 10); - currentTitle = getTitle().toString(); - - transaction.replace(R.id.content_frame, navFragment, tag).addToBackStack(currentTitle).commit(); + transaction.replace(R.id.content_frame, navFragment, tag).commit(); } catch (IllegalStateException ignored) { } } diff --git a/app/src/main/java/com/topjohnwu/magisk/ModulesFragment.java b/app/src/main/java/com/topjohnwu/magisk/ModulesFragment.java index b8b9e4201..30430147f 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ModulesFragment.java +++ b/app/src/main/java/com/topjohnwu/magisk/ModulesFragment.java @@ -47,8 +47,6 @@ public class ModulesFragment extends Fragment { mView = inflater.inflate(R.layout.modules_fragment, container, false); ButterKnife.bind(this, mView); - mSwipeRefreshLayout.setRefreshing(true); - fabio.setOnClickListener(v -> { Intent getContentIntent = FileUtils.createGetContentIntent(null); getContentIntent.setType("application/zip"); @@ -95,7 +93,6 @@ public class ModulesFragment extends Fragment { public void onResume() { super.onResume(); mView = this.getView(); - getActivity().setTitle(R.string.modules); prefs.registerOnSharedPreferenceChangeListener(listener); } diff --git a/app/src/main/java/com/topjohnwu/magisk/ReposFragment.java b/app/src/main/java/com/topjohnwu/magisk/ReposFragment.java index 1f1263b58..3b66a86e2 100644 --- a/app/src/main/java/com/topjohnwu/magisk/ReposFragment.java +++ b/app/src/main/java/com/topjohnwu/magisk/ReposFragment.java @@ -26,15 +26,13 @@ import butterknife.ButterKnife; public class ReposFragment extends Fragment { + @BindView(R.id.recyclerView) RecyclerView recyclerView; + @BindView(R.id.empty_rv) TextView emptyTv; + @BindView(R.id.swipeRefreshLayout) SwipeRefreshLayout mSwipeRefreshLayout; private List mListRepos = new ArrayList<>(); private List mUpdateRepos = new ArrayList<>(); private List mInstalledRepos = new ArrayList<>(); private List mOthersRepos = new ArrayList<>(); - - @BindView(R.id.recyclerView) RecyclerView recyclerView; - @BindView(R.id.empty_rv) TextView emptyTv; - @BindView(R.id.swipeRefreshLayout) SwipeRefreshLayout mSwipeRefreshLayout; - private SharedPreferences.OnSharedPreferenceChangeListener listener; private SharedPreferences prefs; @@ -79,7 +77,6 @@ public class ReposFragment extends Fragment { @Override public void onResume() { super.onResume(); - getActivity().setTitle(R.string.downloads); prefs.registerOnSharedPreferenceChangeListener(listener); } diff --git a/app/src/main/java/com/topjohnwu/magisk/RootFragment.java b/app/src/main/java/com/topjohnwu/magisk/RootFragment.java index 12d4a7fac..179c87ca3 100644 --- a/app/src/main/java/com/topjohnwu/magisk/RootFragment.java +++ b/app/src/main/java/com/topjohnwu/magisk/RootFragment.java @@ -2,7 +2,6 @@ package com.topjohnwu.magisk; import android.app.Fragment; import android.content.SharedPreferences; -import android.content.res.TypedArray; import android.graphics.Color; import android.os.AsyncTask; import android.os.Bundle; @@ -24,6 +23,7 @@ import com.topjohnwu.magisk.utils.Utils; import java.io.File; import java.util.List; +import butterknife.BindColor; import butterknife.BindView; import butterknife.ButterKnife; @@ -52,8 +52,11 @@ public class RootFragment extends Fragment { int statusError = R.drawable.ic_error; int statusUnknown = R.drawable.ic_help; - private int colorOK, colorFail, colorNeutral, colorWarn; - //private boolean autoRootStatus; + @BindColor(R.color.green500) int colorOK; + @BindColor(R.color.yellow500) int colorWarn; + @BindColor(R.color.grey500) int colorNeutral; + @BindColor(R.color.red500) int colorFail; + private SharedPreferences.OnSharedPreferenceChangeListener listener; @Nullable @@ -61,22 +64,6 @@ public class RootFragment extends Fragment { public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.root_fragment, container, false); ButterKnife.bind(this, view); - int[] attrs0 = {R.attr.ColorOK}; - int[] attrs1 = {R.attr.ColorFail}; - int[] attrs2 = {R.attr.ColorNeutral}; - int[] attrs3 = {R.attr.ColorWarn}; - TypedArray ta0 = getActivity().obtainStyledAttributes(attrs0); - TypedArray ta1 = getActivity().obtainStyledAttributes(attrs1); - TypedArray ta2 = getActivity().obtainStyledAttributes(attrs2); - TypedArray ta3 = getActivity().obtainStyledAttributes(attrs3); - colorOK = ta0.getColor(0, Color.GRAY); - colorFail = ta1.getColor(0, Color.GRAY); - colorNeutral = ta2.getColor(0, Color.GRAY); - colorWarn = ta2.getColor(0, Color.GRAY); - ta0.recycle(); - ta1.recycle(); - ta2.recycle(); - ta3.recycle(); prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); @@ -115,7 +102,6 @@ public class RootFragment extends Fragment { @Override public void onResume() { super.onResume(); - getActivity().setTitle(R.string.root); listener = (pref, key) -> { if ((key.contains("autoRootEnable")) || (key.equals("root"))) { Logger.dev("RootFragmnet, keychange detected for " + key); diff --git a/app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java b/app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java new file mode 100644 index 000000000..c91ecefea --- /dev/null +++ b/app/src/main/java/com/topjohnwu/magisk/SettingsActivity.java @@ -0,0 +1,143 @@ +package com.topjohnwu.magisk; + +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.AsyncTask; +import android.os.Bundle; +import android.preference.CheckBoxPreference; +import android.preference.ListPreference; +import android.preference.PreferenceFragment; +import android.preference.PreferenceManager; +import android.support.v7.app.ActionBar; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; +import android.view.WindowManager; +import android.widget.Toast; + +import com.topjohnwu.magisk.utils.Async; +import com.topjohnwu.magisk.utils.Logger; +import com.topjohnwu.magisk.utils.Utils; + +import butterknife.BindView; +import butterknife.ButterKnife; + +public class SettingsActivity extends AppCompatActivity { + + @BindView(R.id.toolbar) Toolbar toolbar; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + String theme = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getString("theme", ""); + Logger.dev("AboutActivity: Theme is " + theme); + if (theme.equals("Dark")) { + setTheme(R.style.AppTheme_dh); + } + + setContentView(R.layout.activity_container); + ButterKnife.bind(this); + + setSupportActionBar(toolbar); + + toolbar.setNavigationOnClickListener(view -> finish()); + + ActionBar ab = getSupportActionBar(); + if (ab != null) { + ab.setTitle(R.string.settings); + ab.setDisplayHomeAsUpEnabled(true); + } + + setFloating(); + + if (savedInstanceState == null) { + getFragmentManager().beginTransaction().add(R.id.container, new SettingsFragment()).commit(); + } + + } + + public void setFloating() { + boolean isTablet = getResources().getBoolean(R.bool.isTablet); + if (isTablet) { + WindowManager.LayoutParams params = getWindow().getAttributes(); + params.height = getResources().getDimensionPixelSize(R.dimen.floating_height); + params.width = getResources().getDimensionPixelSize(R.dimen.floating_width); + params.alpha = 1.0f; + params.dimAmount = 0.6f; + params.flags |= 2; + getWindow().setAttributes(params); + setFinishOnTouchOutside(true); + } + } + + public static class SettingsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener { + + private ListPreference themePreference; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + addPreferencesFromResource(R.xml.uisettings); + PreferenceManager.setDefaultValues(getActivity(), R.xml.uisettings, false); + + themePreference = (ListPreference) findPreference("theme"); + CheckBoxPreference busyboxPreference = (CheckBoxPreference) findPreference("busybox"); + busyboxPreference.setChecked(Utils.commandExists("unzip")); + + PreferenceManager.getDefaultSharedPreferences(getActivity()).registerOnSharedPreferenceChangeListener(this); + + themePreference.setSummary(themePreference.getValue()); + + if (MagiskFragment.magiskVersion == -1) { + busyboxPreference.setEnabled(false); + } else { + busyboxPreference.setEnabled(true); + } + } + + @Override + public void onResume() { + super.onResume(); + PreferenceManager.getDefaultSharedPreferences(getActivity()).registerOnSharedPreferenceChangeListener(this); + } + + @Override + public void onDestroy() { + super.onDestroy(); + PreferenceManager.getDefaultSharedPreferences(getActivity()).unregisterOnSharedPreferenceChangeListener(this); + } + + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + Logger.dev("Settings: Prefs change " + key); + + switch (key) { + case "theme": + String theme = sharedPreferences.getString(key, ""); + + themePreference.setSummary(theme); + if (theme.equals("Dark")) { + getActivity().getApplication().setTheme(R.style.AppTheme_dh); + } else { + getActivity().getApplication().setTheme(R.style.AppTheme); + } + Intent intent = new Intent(getActivity(), MainActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + break; + case "busybox": + boolean checked = sharedPreferences.getBoolean("busybox", false); + new Async.LinkBusyBox(checked).executeOnExecutor(AsyncTask.SERIAL_EXECUTOR); + break; + case "developer_logging": + Logger.devLog = sharedPreferences.getBoolean("developer_logging", false); + break; + case "shell_logging": + Logger.logShell = sharedPreferences.getBoolean("shell_logging", false); + break; + } + + } + } + +} diff --git a/app/src/main/java/com/topjohnwu/magisk/SettingsFragment.java b/app/src/main/java/com/topjohnwu/magisk/SettingsFragment.java deleted file mode 100644 index 7aa8254e5..000000000 --- a/app/src/main/java/com/topjohnwu/magisk/SettingsFragment.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.topjohnwu.magisk; - -import android.content.Intent; -import android.content.SharedPreferences; -import android.os.AsyncTask; -import android.os.Bundle; -import android.preference.CheckBoxPreference; -import android.preference.ListPreference; -import android.preference.PreferenceFragment; -import android.preference.PreferenceManager; -import android.util.TypedValue; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.topjohnwu.magisk.utils.Async; -import com.topjohnwu.magisk.utils.Logger; -import com.topjohnwu.magisk.utils.Utils; - -public class SettingsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener { - private ListPreference themePreference; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.uisettings); - PreferenceManager.setDefaultValues(getActivity(), R.xml.uisettings, false); - } - - @Override - public void onResume() { - super.onResume(); - getActivity().setTitle(R.string.settings); - PreferenceManager.getDefaultSharedPreferences(getActivity()).registerOnSharedPreferenceChangeListener(this); - - } - - @Override - public void onDestroy() { - super.onDestroy(); - PreferenceManager.getDefaultSharedPreferences(getActivity()).unregisterOnSharedPreferenceChangeListener(this); - - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = super.onCreateView(inflater, container, savedInstanceState); - themePreference = (ListPreference) findPreference("theme"); - CheckBoxPreference busyboxPreference = (CheckBoxPreference) findPreference("busybox"); - busyboxPreference.setChecked(Utils.commandExists("unzip")); - PreferenceManager.getDefaultSharedPreferences(getActivity()).registerOnSharedPreferenceChangeListener(this); - themePreference.setSummary(themePreference.getValue()); - if (MagiskFragment.magiskVersion == -1) { - busyboxPreference.setEnabled(false); - } else { - busyboxPreference.setEnabled(true); - } - - // calculate margins - int horizontalMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 2, getResources().getDisplayMetrics()); - int verticalMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 2, getResources().getDisplayMetrics()); - TypedValue tv = new TypedValue(); - int actionBarHeight = 130; - if (getActivity().getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) { - actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, getResources().getDisplayMetrics()); - } - - view.setPadding(horizontalMargin, actionBarHeight, horizontalMargin, verticalMargin); - - return view; - - } - - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { - Logger.dev("Settings: NewValue is " + key); - - switch (key) { - case "theme": - String pref = sharedPreferences.getString(key, ""); - - themePreference.setSummary(pref); - if (pref.equals("Dark")) { - getActivity().getApplication().setTheme(R.style.AppTheme_dh); - } else { - getActivity().getApplication().setTheme(R.style.AppTheme); - } - Intent intent = new Intent(getActivity(), MainActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.putExtra("Relaunch", "Settings"); - startActivity(intent); - - Logger.dev("SettingsFragment: theme is " + pref); - - break; - case "busybox": - boolean checked = sharedPreferences.getBoolean("busybox", false); - new Async.LinkBusyBox(checked).executeOnExecutor(AsyncTask.SERIAL_EXECUTOR); - break; - case "developer_logging": - Logger.devLog = sharedPreferences.getBoolean("developer_logging", false); - break; - case "shell_logging": - Logger.logShell = sharedPreferences.getBoolean("shell_logging", false); - break; - } - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/topjohnwu/magisk/module/Module.java b/app/src/main/java/com/topjohnwu/magisk/module/Module.java index 31b89a6c2..c87ff59ec 100644 --- a/app/src/main/java/com/topjohnwu/magisk/module/Module.java +++ b/app/src/main/java/com/topjohnwu/magisk/module/Module.java @@ -28,9 +28,21 @@ public class Module extends BaseModule { Logger.dev("Creating Module, id: " + mId); - mEnable = !Utils.itemExist(mDisableFile); - mRemove = Utils.itemExist(mRemoveFile); - mUpdated = Utils.itemExist(mUpdateFile); + try { + mEnable = !Utils.itemExist(mDisableFile); + } catch (Exception e) { + mEnable = false; + } + try { + mRemove = Utils.itemExist(mRemoveFile); + } catch (Exception e) { + mRemove = false; + } + try { + mUpdated = Utils.itemExist(mUpdateFile); + } catch (Exception e) { + mUpdated = false; + } } diff --git a/app/src/main/java/com/topjohnwu/magisk/receivers/DownloadReceiver.java b/app/src/main/java/com/topjohnwu/magisk/receivers/DownloadReceiver.java index 6039f1991..d82dfb1d5 100644 --- a/app/src/main/java/com/topjohnwu/magisk/receivers/DownloadReceiver.java +++ b/app/src/main/java/com/topjohnwu/magisk/receivers/DownloadReceiver.java @@ -12,8 +12,8 @@ import com.topjohnwu.magisk.R; public abstract class DownloadReceiver extends BroadcastReceiver { public Context mContext; - long downloadID; public String mName; + long downloadID; public DownloadReceiver() {} diff --git a/app/src/main/java/com/topjohnwu/magisk/utils/Async.java b/app/src/main/java/com/topjohnwu/magisk/utils/Async.java index 41e4c10d3..d969565cd 100644 --- a/app/src/main/java/com/topjohnwu/magisk/utils/Async.java +++ b/app/src/main/java/com/topjohnwu/magisk/utils/Async.java @@ -149,10 +149,10 @@ public class Async { public static class FlashZIP extends AsyncTask { - private String mName; protected Uri mUri; - private ProgressDialog progress; protected File mFile, sdFile; + private String mName; + private ProgressDialog progress; private Context mContext; private boolean copyToSD; diff --git a/app/src/main/java/com/topjohnwu/magisk/utils/Utils.java b/app/src/main/java/com/topjohnwu/magisk/utils/Utils.java index 5881aefcd..2cbc67b11 100644 --- a/app/src/main/java/com/topjohnwu/magisk/utils/Utils.java +++ b/app/src/main/java/com/topjohnwu/magisk/utils/Utils.java @@ -91,9 +91,6 @@ public class Utils { } else { Shell.su("rm -rf /magisk/.core/bin", "setprop magisk.root 0"); } -// if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean("enable_quicktile", false)) { -// setupQuickSettingsTile(context); -// } PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean("root", b).apply(); } } diff --git a/app/src/main/res/drawable-nodpi/logo.png b/app/src/main/res/drawable-nodpi/logo.png new file mode 100644 index 000000000..78b12a509 Binary files /dev/null and b/app/src/main/res/drawable-nodpi/logo.png differ diff --git a/app/src/main/res/drawable/ic_author.xml b/app/src/main/res/drawable/ic_author.xml deleted file mode 100644 index 81cffc428..000000000 --- a/app/src/main/res/drawable/ic_author.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/ic_changelog.xml b/app/src/main/res/drawable/ic_changelog.xml index f4b1dd42b..df99d5310 100644 --- a/app/src/main/res/drawable/ic_changelog.xml +++ b/app/src/main/res/drawable/ic_changelog.xml @@ -1,4 +1,10 @@ - - + + + diff --git a/app/src/main/res/drawable/ic_splash_activity.xml b/app/src/main/res/drawable/ic_splash_activity.xml index fbc416e10..c7e7bd75e 100644 --- a/app/src/main/res/drawable/ic_splash_activity.xml +++ b/app/src/main/res/drawable/ic_splash_activity.xml @@ -1,13 +1,12 @@ - + + android:src="@drawable/logo"/> \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_support.xml b/app/src/main/res/drawable/ic_support.xml deleted file mode 100644 index 6ab452192..000000000 --- a/app/src/main/res/drawable/ic_support.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/app/src/main/res/layout/activity_container.xml b/app/src/main/res/layout/activity_container.xml new file mode 100644 index 000000000..593b14b38 --- /dev/null +++ b/app/src/main/res/layout/activity_container.xml @@ -0,0 +1,16 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/list_item_repo.xml b/app/src/main/res/layout/list_item_repo.xml index f8ae2c526..762172a50 100644 --- a/app/src/main/res/layout/list_item_repo.xml +++ b/app/src/main/res/layout/list_item_repo.xml @@ -1,6 +1,6 @@ - + card_view:cardElevation="@dimen/card_elevation" + card_view:cardUseCompatPadding="true"> + android:textStyle="bold|italic"/> @@ -68,9 +68,9 @@ android:layout_alignParentStart="true" android:layout_below="@id/author" android:layout_gravity="center_vertical" - android:textAppearance="?android:attr/textAppearanceSmall" android:text="@string/no_info_provided" - android:textIsSelectable="false" /> + android:textAppearance="?android:attr/textAppearanceSmall" + android:textIsSelectable="false"/> + android:gravity="end"/> - + android:orientation="horizontal"> + android:background="?android:attr/selectableItemBackground" + android:padding="15dp" + android:src="@drawable/ic_changelog" + android:tint="@color/icon_grey"/> + android:background="?android:attr/selectableItemBackground" + android:padding="15dp" + android:src="@drawable/ic_person" + android:tint="@color/icon_grey"/> + android:background="?android:attr/selectableItemBackground" + android:padding="15dp" + android:src="@drawable/ic_help" + android:tint="@color/icon_grey"/> @@ -143,7 +147,7 @@ android:layout_marginStart="@dimen/card_imageview_margin" android:focusable="false" android:gravity="end" - android:visibility="gone" /> + android:visibility="gone"/> diff --git a/app/src/main/res/layout/toolbar.xml b/app/src/main/res/layout/toolbar.xml index 427d51b45..f7311d812 100644 --- a/app/src/main/res/layout/toolbar.xml +++ b/app/src/main/res/layout/toolbar.xml @@ -4,5 +4,4 @@ android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" - - /> \ No newline at end of file + android:elevation="4dp"/> diff --git a/app/src/main/res/menu/drawer.xml b/app/src/main/res/menu/drawer.xml index ed0f83634..65910a30b 100644 --- a/app/src/main/res/menu/drawer.xml +++ b/app/src/main/res/menu/drawer.xml @@ -20,26 +20,30 @@ android:icon="@drawable/ic_cloud_download" android:title="@string/downloads"/> - - + + + + + + - - \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 542a451e3..21e346955 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -5,9 +5,11 @@ #00796B #FFC107 #757575 + #F44336 #4CAF50 #9E9E9E + #2196F3 #FFC107 #3F51B5 @@ -17,9 +19,5 @@ #dedede #dedede #313131 - #FF9800 - @color/dh_accent - @color/red500 - - + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index e46416ae9..c97efd694 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -11,10 +11,6 @@ false true @android:color/transparent - @color/green500 - @color/yellow500 - @color/red500 - @color/grey500 - - -