From 209810bca53b90a20d3817f729a5de25f4ca1a15 Mon Sep 17 00:00:00 2001 From: danijoo Date: Thu, 31 Dec 2015 16:43:48 +0100 Subject: [PATCH] Preference acitivty --- app/build.gradle | 2 + app/src/main/AndroidManifest.xml | 2 + .../notificationlogger/MainActivity.java | 7 +-- .../PreferenceActivity.java | 50 +++++++++++++++++++ .../PreferenceFragment.java | 46 +++++++++++++++++ app/src/main/res/layout/main_activity.xml | 11 +--- .../main/res/layout/preference_activity.xml | 14 ++++++ app/src/main/res/layout/toolbar.xml | 10 ++++ app/src/main/res/values/strings.xml | 12 +++++ app/src/main/res/values/styles.xml | 1 + app/src/main/res/xml/preferences.xml | 32 ++++++++++++ build.gradle | 5 ++ 12 files changed, 180 insertions(+), 12 deletions(-) create mode 100644 app/src/main/java/net/headlezz/notificationlogger/PreferenceActivity.java create mode 100644 app/src/main/java/net/headlezz/notificationlogger/PreferenceFragment.java create mode 100644 app/src/main/res/layout/preference_activity.xml create mode 100644 app/src/main/res/layout/toolbar.xml create mode 100644 app/src/main/res/xml/preferences.xml diff --git a/app/build.gradle b/app/build.gradle index 11bb178..cadb5a5 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,4 +1,6 @@ apply plugin: 'com.android.application' +// This does not break the build when Android Studio is missing the JRebel for Android plugin. +apply plugin: 'com.zeroturnaround.jrebel.android' apply plugin: 'com.neenbedankt.android-apt' android { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 707d673..d1ebe20 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -14,6 +14,8 @@ + diff --git a/app/src/main/java/net/headlezz/notificationlogger/MainActivity.java b/app/src/main/java/net/headlezz/notificationlogger/MainActivity.java index 2536e9f..b4ab180 100644 --- a/app/src/main/java/net/headlezz/notificationlogger/MainActivity.java +++ b/app/src/main/java/net/headlezz/notificationlogger/MainActivity.java @@ -1,11 +1,11 @@ package net.headlezz.notificationlogger; +import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.MenuItem; -import android.widget.Toast; import butterknife.Bind; import butterknife.ButterKnife; @@ -22,14 +22,15 @@ public class MainActivity extends AppCompatActivity implements Toolbar.OnMenuIte ButterKnife.bind(this); mToolbar.inflateMenu(R.menu.main_activity); + mToolbar.setTitle(getString(R.string.app_name)); mToolbar.setOnMenuItemClickListener(this); } @Override public boolean onMenuItemClick(MenuItem item) { if(item.getItemId() == R.id.menu_settings) { - Toast.makeText(this, "Not implemented", Toast.LENGTH_SHORT).show(); - return true; + Intent intent = new Intent(this, PreferenceActivity.class); + startActivity(intent); } return false; } diff --git a/app/src/main/java/net/headlezz/notificationlogger/PreferenceActivity.java b/app/src/main/java/net/headlezz/notificationlogger/PreferenceActivity.java new file mode 100644 index 0000000..1bb9c31 --- /dev/null +++ b/app/src/main/java/net/headlezz/notificationlogger/PreferenceActivity.java @@ -0,0 +1,50 @@ +package net.headlezz.notificationlogger; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; + +import com.mikepenz.aboutlibraries.LibsBuilder; +import com.mikepenz.aboutlibraries.ui.LibsSupportFragment; + +import butterknife.Bind; +import butterknife.ButterKnife; + +public class PreferenceActivity extends AppCompatActivity implements PreferenceFragment.PreferenceCallbacks { + + @Bind(R.id.toolbar) + Toolbar mToolbar; + + @SuppressWarnings("ConstantConditions") + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.preference_activity); + ButterKnife.bind(this); + setSupportActionBar(mToolbar); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setTitle(R.string.title_settings); + + if(getSupportFragmentManager().findFragmentById(R.id.fragment_holder) == null) { + PreferenceFragment pf = new PreferenceFragment(); + getSupportFragmentManager().beginTransaction() + .add(R.id.fragment_holder, pf) + .commit(); + } + } + + public void showAboutScreen() { + // TODO add other libraries + LibsSupportFragment aboutFrag = new LibsBuilder() + .withAboutAppName(getString(R.string.app_name)) + .withAboutIconShown(true) + .withAboutVersionShown(true) + .withAboutVersionShownCode(true) + .supportFragment(); + getSupportFragmentManager().beginTransaction() + .replace(R.id.fragment_holder, aboutFrag) + .addToBackStack("about") + .commit(); + } +} diff --git a/app/src/main/java/net/headlezz/notificationlogger/PreferenceFragment.java b/app/src/main/java/net/headlezz/notificationlogger/PreferenceFragment.java new file mode 100644 index 0000000..7d217ab --- /dev/null +++ b/app/src/main/java/net/headlezz/notificationlogger/PreferenceFragment.java @@ -0,0 +1,46 @@ +package net.headlezz.notificationlogger; + +import android.app.Activity; +import android.os.Bundle; +import android.support.v7.preference.Preference; +import android.support.v7.preference.PreferenceFragmentCompat; + +public class PreferenceFragment extends PreferenceFragmentCompat implements Preference.OnPreferenceClickListener { + + private PreferenceCallbacks mCallbacks; + + final String PREF_ABOUT = "pref_about"; + + + + interface PreferenceCallbacks { + void showAboutScreen(); + } + + @Override + public void onCreatePreferences(Bundle bundle, String s) { + addPreferencesFromResource(R.xml.preferences); + findPreference(PREF_ABOUT).setOnPreferenceClickListener(this); + } + + @Override + public boolean onPreferenceClick(Preference preference) { + if(preference.getKey().equals(PREF_ABOUT)) { + mCallbacks.showAboutScreen(); + return true; + } + return false; + } + + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + mCallbacks = (PreferenceCallbacks) activity; + } + + @Override + public void onDetach() { + super.onDetach(); + mCallbacks = null; + } +} diff --git a/app/src/main/res/layout/main_activity.xml b/app/src/main/res/layout/main_activity.xml index d105c66..9a9d3dd 100644 --- a/app/src/main/res/layout/main_activity.xml +++ b/app/src/main/res/layout/main_activity.xml @@ -1,15 +1,8 @@ + android:layout_height="match_parent"> - + \ No newline at end of file diff --git a/app/src/main/res/layout/preference_activity.xml b/app/src/main/res/layout/preference_activity.xml new file mode 100644 index 0000000..270301a --- /dev/null +++ b/app/src/main/res/layout/preference_activity.xml @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/app/src/main/res/layout/toolbar.xml b/app/src/main/res/layout/toolbar.xml new file mode 100644 index 0000000..0efc824 --- /dev/null +++ b/app/src/main/res/layout/toolbar.xml @@ -0,0 +1,10 @@ + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6a25aa5..52e58ae 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,4 +1,16 @@ Notification Logger Settings + Settings + + Notification Settings + Support + Notification Logging + Enable/Disable notification logging + Blacklist + Exclude apps from being logged + Clear database + Remove all logged notifications + Export to sdcard + About diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index c62b553..32871c5 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -4,6 +4,7 @@ @color/colorPrimary @color/colorPrimaryDark @color/colorAccent + @style/PreferenceThemeOverlay diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml new file mode 100644 index 0000000..1313815 --- /dev/null +++ b/app/src/main/res/xml/preferences.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index ba8c1db..06a33d2 100644 --- a/build.gradle +++ b/build.gradle @@ -3,9 +3,14 @@ buildscript { repositories { jcenter() + maven { + url 'https://repos.zeroturnaround.com/nexus/content/repositories/zt-public-releases' + } } dependencies { classpath 'com.android.tools.build:gradle:2.0.0-alpha3' + // This does not break the build when Android Studio is missing the JRebel for Android plugin. + classpath 'com.zeroturnaround.jrebel.android:jr-android-gradle:1.0.+' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.6' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files