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