diff --git a/app/build.gradle b/app/build.gradle
index 1805baa3..fe5804db 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -38,6 +38,7 @@ dependencies {
compile "org.androidannotations:androidannotations-api:$AAVersion"
compile 'com.android.support:appcompat-v7:24.2.0'
compile 'com.android.support:design:24.2.0'
+ compile 'com.android.support:preference-v7:24.2.0'
compile 'org.jsoup:jsoup:1.9.2'
compile 'com.squareup:otto:1.3.8'
compile 'com.google.code.gson:gson:2.7'
diff --git a/app/src/main/java/com/apkupdater/activity/MainActivity.java b/app/src/main/java/com/apkupdater/activity/MainActivity.java
index e65815f8..dd559063 100644
--- a/app/src/main/java/com/apkupdater/activity/MainActivity.java
+++ b/app/src/main/java/com/apkupdater/activity/MainActivity.java
@@ -9,11 +9,14 @@
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
+import android.view.View;
+import android.widget.FrameLayout;
import com.apkupdater.adapter.MainActivityPageAdapter;
import com.apkupdater.R;
import com.apkupdater.event.InstalledAppTitleChange;
import com.apkupdater.event.UpdaterTitleChange;
+import com.apkupdater.fragment.SettingsFragment;
import com.apkupdater.receiver.BootReceiver_;
import com.apkupdater.service.UpdaterService_;
import com.apkupdater.util.ColorUtitl;
@@ -54,12 +57,17 @@ public class MainActivity
@Bean
AppState mAppState;
+ @ViewById(R.id.settings_container)
+ FrameLayout mSettingsLayout;
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
+ public void onCreate(
+ Bundle savedInstanceState
+ ) {
setThemeFromOptions();
+ super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@@ -96,6 +104,32 @@ void init(
ColorUtitl.getColorFromTheme(getTheme(), android.R.attr.windowBackground)
);
}
+
+ // Add the settings fragment and configure the correct state
+ getSupportFragmentManager().beginTransaction().replace(R.id.settings_container, new SettingsFragment()).commit();
+ switchSettings(mAppState.getSettingsActive());
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ private void switchSettings(
+ boolean b
+ ) {
+ if (b) {
+ mTabLayout.setVisibility(View.GONE);
+ mViewPager.setVisibility(View.GONE);
+ mSettingsLayout.setVisibility(View.VISIBLE);
+ getSupportActionBar().setTitle(getString(R.string.action_settings));
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ } else {
+ mTabLayout.setVisibility(View.VISIBLE);
+ mViewPager.setVisibility(View.VISIBLE);
+ mSettingsLayout.setVisibility(View.GONE);
+ getSupportActionBar().setTitle(getString(R.string.app_name));
+ getSupportActionBar().setDisplayHomeAsUpEnabled(false);
+ }
+
+ mAppState.setSettingsActive(b);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -111,7 +145,8 @@ private void checkFirstStart(
new BootReceiver_().onReceive(getBaseContext(), null);
// Set the first start flag to false
- mAppState.setmFirstStart(false);
+ mAppState.setFirstStart(false);
+ mAppState.setSettingsActive(false);
}
}
@@ -132,7 +167,7 @@ private void selectTab(
@OptionsItem(R.id.action_settings)
void onSettingsClick(
) {
- SettingsActivity_.intent(this).start();
+ switchSettings(!mAppState.getSettingsActive());
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -145,6 +180,14 @@ void onUpdateClick(
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ @OptionsItem(android.R.id.home)
+ void onHomeClick(
+ ) {
+ switchSettings(!mAppState.getSettingsActive());
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
@Override
protected void onDestroy() {
super.onDestroy();
diff --git a/app/src/main/java/com/apkupdater/activity/PreferenceActivityCompat.java b/app/src/main/java/com/apkupdater/activity/PreferenceActivityCompat.java
deleted file mode 100644
index eeb0ef2d..00000000
--- a/app/src/main/java/com/apkupdater/activity/PreferenceActivityCompat.java
+++ /dev/null
@@ -1,182 +0,0 @@
-package com.apkupdater.activity;
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-import android.content.res.Configuration;
-import android.os.Bundle;
-import android.preference.PreferenceActivity;
-import android.support.annotation.LayoutRes;
-import android.support.annotation.Nullable;
-import android.support.v7.app.ActionBar;
-import android.support.v7.app.AppCompatDelegate;
-import android.support.v7.widget.Toolbar;
-import android.view.MenuInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-/**
- * A {@link android.preference.PreferenceActivity} which implements and proxies the necessary calls
- * to be used with AppCompat.
- *
- * This technique can be used with an {@link android.app.Activity} class, not just
- * {@link android.preference.PreferenceActivity}.
- */
-public abstract class PreferenceActivityCompat
- extends PreferenceActivity
-{
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- private AppCompatDelegate mDelegate;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- @Override
- protected void onCreate(
- Bundle savedInstanceState
- ) {
- getDelegate().installViewFactory();
- getDelegate().onCreate(savedInstanceState);
- super.onCreate(savedInstanceState);
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- @Override
- protected void onPostCreate(
- Bundle savedInstanceState
- ) {
- super.onPostCreate(savedInstanceState);
- getDelegate().onPostCreate(savedInstanceState);
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- public ActionBar getSupportActionBar(
- ) {
- return getDelegate().getSupportActionBar();
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- public void setSupportActionBar(
- @Nullable Toolbar toolbar
- ) {
- getDelegate().setSupportActionBar(toolbar);
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- @Override
- public MenuInflater getMenuInflater(
- ) {
- return getDelegate().getMenuInflater();
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- @Override
- public void setContentView(
- @LayoutRes int layoutResID
- ) {
- getDelegate().setContentView(layoutResID);
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- @Override
- public void setContentView(
- View view
- ) {
- getDelegate().setContentView(view);
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- @Override
- public void setContentView(
- View view,
- ViewGroup.LayoutParams params
- ) {
- getDelegate().setContentView(view, params);
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- @Override
- public void addContentView(
- View view,
- ViewGroup.LayoutParams params
- ) {
- getDelegate().addContentView(view, params);
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- @Override
- protected void onPostResume(
- ) {
- super.onPostResume();
- getDelegate().onPostResume();
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- @Override
- protected void onTitleChanged(
- CharSequence title,
- int color
- ) {
- super.onTitleChanged(title, color);
- getDelegate().setTitle(title);
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- @Override
- public void onConfigurationChanged(
- Configuration newConfig
- ) {
- super.onConfigurationChanged(newConfig);
- getDelegate().onConfigurationChanged(newConfig);
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- @Override
- protected void onStop(
- ) {
- super.onStop();
- getDelegate().onStop();
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- @Override
- protected void onDestroy(
- ) {
- super.onDestroy();
- getDelegate().onDestroy();
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- public void invalidateOptionsMenu(
- ) {
- getDelegate().invalidateOptionsMenu();
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- private AppCompatDelegate getDelegate() {
- if (mDelegate == null) {
- mDelegate = AppCompatDelegate.create(this, null);
- }
- return mDelegate;
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-}
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
\ No newline at end of file
diff --git a/app/src/main/java/com/apkupdater/activity/SettingsActivity.java b/app/src/main/java/com/apkupdater/activity/SettingsActivity.java
deleted file mode 100644
index ff669b4d..00000000
--- a/app/src/main/java/com/apkupdater/activity/SettingsActivity.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package com.apkupdater.activity;
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.graphics.Color;
-import android.graphics.PorterDuff;
-import android.graphics.drawable.Drawable;
-import android.os.Bundle;
-import android.preference.PreferenceActivity;
-import android.preference.PreferenceManager;
-import android.support.annotation.MainThread;
-import android.support.v7.app.ActionBar;
-import android.support.v7.widget.Toolbar;
-import android.view.LayoutInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.LinearLayout;
-
-import com.apkupdater.R;
-import com.apkupdater.util.AlarmUtil;
-import com.apkupdater.util.ColorUtitl;
-import com.apkupdater.util.ThemeUtil;
-
-import org.androidannotations.annotations.EActivity;
-
-import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP;
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-@EActivity
-public class SettingsActivity
- extends PreferenceActivityCompat
-{
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- private Context mContext;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- SharedPreferences.OnSharedPreferenceChangeListener mChanges = new SharedPreferences.OnSharedPreferenceChangeListener() {
- @Override
- public void onSharedPreferenceChanged(
- SharedPreferences sharedPreferences,
- String key
- ) {
- // Change alarm
- if (key.equals(getString(R.string.preferences_general_alarm_key))) {
- AlarmUtil alarmUtil = new AlarmUtil(mContext);
- alarmUtil.setAlarmFromOptions();
- } else if (key.equals(getString(R.string.preferences_general_theme_key))) {
- changeTheme();
- }
- }
- };
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- @Override
- public boolean onOptionsItemSelected(
- MenuItem menuItem
- ) {
- // Exit activity if click on arrow
- if (menuItem.getItemId() == android.R.id.home) {
- finish();
- }
- return super.onOptionsItemSelected(menuItem);
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- protected void setupToolbar(
- ) {
- ViewGroup rootView = (ViewGroup)findViewById(R.id.action_bar_root);
-
- if (rootView != null) {
- View view = getLayoutInflater().inflate(R.layout.app_toolbar, rootView, false);
- rootView.addView(view, 0);
-
- // Configure the toolbar
- Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
- toolbar.setTitle(getString(R.string.action_settings));
- toolbar.setTitleTextColor(ColorUtitl.getColorFromTheme(getTheme(), R.attr.tabIndicatorColor));
- setSupportActionBar(toolbar);
- }
-
- // Display back arrow
- ActionBar actionBar = getSupportActionBar();
- if (actionBar != null) {
- Drawable upArrow = getResources().getDrawable(R.drawable.ic_arrow_back_white_24dp);
- upArrow.setColorFilter(ColorUtitl.getColorFromTheme(getTheme(), R.attr.tabIndicatorColor), PorterDuff.Mode.SRC_ATOP);
- getSupportActionBar().setHomeAsUpIndicator(upArrow);
- actionBar.setDisplayHomeAsUpEnabled(true);
- }
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- @MainThread
- private void changeTheme(
- ) {
- SettingsActivity_.intent(this).flags(FLAG_ACTIVITY_CLEAR_TOP).start();
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- @Override
- public void onCreate(
- Bundle savedInstanceState
- ) {
- mContext = getBaseContext();
- setTheme(ThemeUtil.getSettingsThemeFromOptions(mContext));
- super.onCreate(savedInstanceState);
- setupToolbar();
- PreferenceManager.getDefaultSharedPreferences(mContext).registerOnSharedPreferenceChangeListener(mChanges);
- addPreferencesFromResource(R.xml.preferences);
- }
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-}
-
-////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
\ No newline at end of file
diff --git a/app/src/main/java/com/apkupdater/fragment/AboutFragment.java b/app/src/main/java/com/apkupdater/fragment/AboutFragment.java
index 11177350..c463083b 100644
--- a/app/src/main/java/com/apkupdater/fragment/AboutFragment.java
+++ b/app/src/main/java/com/apkupdater/fragment/AboutFragment.java
@@ -46,9 +46,12 @@ protected void onInit(
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
- mWebView.loadUrl(
- "javascript:document.body.style.setProperty(\"color\", \"" + color + "\");"
- );
+ try {
+ mWebView.loadUrl(
+ "javascript:document.body.style.setProperty(\"color\", \"" + color + "\");"
+ );
+ } catch (Exception ignored) {
+ }
}
});
}
diff --git a/app/src/main/java/com/apkupdater/model/AppState.java b/app/src/main/java/com/apkupdater/model/AppState.java
index c5bf9d35..1e2784d5 100644
--- a/app/src/main/java/com/apkupdater/model/AppState.java
+++ b/app/src/main/java/com/apkupdater/model/AppState.java
@@ -26,6 +26,7 @@ public class AppState
final static String SELECTED_TAB_KEY = "selected_tab_key";
final static String CURRENT_THEME_KEY = "current_theme_key";
final static String UPDATE_LIST_KEY = "update_list_key";
+ final static String SETTINGS_ACTIVE_KEY ="settings_active_key";
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -51,6 +52,13 @@ public int getSelectedTab(
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ public boolean getSettingsActive(
+ ) {
+ return getSettingsActiveFromSharedPrefs(mContext);
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
public boolean getFirstStart(
) {
return mFirstStart;
@@ -80,6 +88,14 @@ public void setSelectedTab(
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ public void setSettingsActive(
+ boolean active
+ ) {
+ setSettingsActiveToSharedPrefs(mContext, active);
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
public void setCurrentTheme(
int currentTheme
) {
@@ -103,7 +119,7 @@ public void clearUpdates(
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- public void setmFirstStart(
+ public void setFirstStart(
boolean firstStart
) {
mFirstStart = firstStart;
@@ -130,6 +146,25 @@ private void setSelectedTabToSharedPrefs(
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ private boolean getSettingsActiveFromSharedPrefs(
+ Context context
+ ) {
+ SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
+ return sharedPref.getBoolean(SETTINGS_ACTIVE_KEY, false);
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ private void setSettingsActiveToSharedPrefs(
+ Context context,
+ boolean active
+ ) {
+ SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
+ sharedPref.edit().putBoolean(SETTINGS_ACTIVE_KEY, active).apply();
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
private int getCurrentThemeFromSharedPrefs(
Context context
) {
diff --git a/app/src/main/java/com/apkupdater/receiver/NotificationClickReceiver.java b/app/src/main/java/com/apkupdater/receiver/NotificationClickReceiver.java
index 22b2849a..b61f5e19 100644
--- a/app/src/main/java/com/apkupdater/receiver/NotificationClickReceiver.java
+++ b/app/src/main/java/com/apkupdater/receiver/NotificationClickReceiver.java
@@ -30,7 +30,7 @@ public void onReceive(
Context context,
Intent intent
) {
- mAppState.setmFirstStart(false);
+ mAppState.setFirstStart(false);
mAppState.setSelectedTab(1);
MainActivity_.intent(context).flags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP).start();
}
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index f6961ec3..54242416 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -43,6 +43,12 @@
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
/>
+
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index fd3b22ef..ac4f1fa6 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -5,9 +5,9 @@
- #0D47A1
- #092b61
- #6dabf7
- - #6dabf7
- #FFFFFF
- #99FFFFFF
+ - @style/PreferenceThemeBlue