diff --git a/app/src/main/java/net/headlezz/notificationlogger/MainActivity.java b/app/src/main/java/net/headlezz/notificationlogger/MainActivity.java index b4ab180..fbd0349 100644 --- a/app/src/main/java/net/headlezz/notificationlogger/MainActivity.java +++ b/app/src/main/java/net/headlezz/notificationlogger/MainActivity.java @@ -3,35 +3,77 @@ package net.headlezz.notificationlogger; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; +import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; +import android.view.Menu; import android.view.MenuItem; +import android.view.View; import butterknife.Bind; import butterknife.ButterKnife; -public class MainActivity extends AppCompatActivity implements Toolbar.OnMenuItemClickListener { +public class MainActivity extends AppCompatActivity { @Bind(R.id.toolbar) Toolbar mToolbar; + @Bind(R.id.main_menu_fab_add_notification) + FloatingActionButton mFAB; + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); ButterKnife.bind(this); - mToolbar.inflateMenu(R.menu.main_activity); - mToolbar.setTitle(getString(R.string.app_name)); - mToolbar.setOnMenuItemClickListener(this); + setSupportActionBar(mToolbar); + + mFAB.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + openNotificationCreationScreen(); + } + }); + + if(getSupportFragmentManager().findFragmentById(R.id.main_menu_fragment_container) == null) { + getSupportFragmentManager().beginTransaction() + .add(R.id.main_menu_fragment_container, new NotificationListFragment()) + .commit(); + } } @Override - public boolean onMenuItemClick(MenuItem item) { + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.main_activity, menu); + return super.onCreateOptionsMenu(menu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { if(item.getItemId() == R.id.menu_settings) { Intent intent = new Intent(this, PreferenceActivity.class); startActivity(intent); + return true; } - return false; + return super.onOptionsItemSelected(item); + } + + + @SuppressWarnings("ConstantConditions") + void openNotificationCreationScreen() { + getSupportFragmentManager().beginTransaction() + .replace(R.id.main_menu_fragment_container, new NotificationCreationFragment()) + .addToBackStack(NotificationCreationFragment.class.getSimpleName()) + .commit(); + mFAB.setVisibility(View.GONE); + } + + @Override + public void onBackPressed() { + // make fab visible if we come back to first fragment + if(getSupportFragmentManager().getBackStackEntryCount() == 1) + mFAB.setVisibility(View.VISIBLE); + super.onBackPressed(); } } diff --git a/app/src/main/java/net/headlezz/notificationlogger/NotificationCreationFragment.java b/app/src/main/java/net/headlezz/notificationlogger/NotificationCreationFragment.java new file mode 100644 index 0000000..024841f --- /dev/null +++ b/app/src/main/java/net/headlezz/notificationlogger/NotificationCreationFragment.java @@ -0,0 +1,31 @@ +package net.headlezz.notificationlogger; + +import android.app.Activity; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.support.v7.app.AppCompatActivity; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +public class NotificationCreationFragment extends Fragment { + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + TextView textView = new TextView(getContext()); + textView.setGravity(Gravity.CENTER); + textView.setText(getClass().getSimpleName()); + return textView; + } + + @SuppressWarnings("ConstantConditions") + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + ((AppCompatActivity) activity).getSupportActionBar().setTitle(getString(R.string.title_create_notification)); + } +} diff --git a/app/src/main/java/net/headlezz/notificationlogger/NotificationListFragment.java b/app/src/main/java/net/headlezz/notificationlogger/NotificationListFragment.java new file mode 100644 index 0000000..31ced62 --- /dev/null +++ b/app/src/main/java/net/headlezz/notificationlogger/NotificationListFragment.java @@ -0,0 +1,31 @@ +package net.headlezz.notificationlogger; + +import android.app.Activity; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.support.v7.app.AppCompatActivity; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +public class NotificationListFragment extends Fragment { + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + TextView textView = new TextView(getContext()); + textView.setGravity(Gravity.CENTER); + textView.setText(getClass().getSimpleName()); + return textView; + } + + @SuppressWarnings("ConstantConditions") + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + ((AppCompatActivity) activity).getSupportActionBar().setTitle(getString(R.string.app_name)); + } +} diff --git a/app/src/main/res/drawable-hdpi/ic_action_add.png b/app/src/main/res/drawable-hdpi/ic_action_add.png new file mode 100644 index 0000000..ca13239 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_action_add.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_action_add.png b/app/src/main/res/drawable-mdpi/ic_action_add.png new file mode 100644 index 0000000..06ff3a5 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_action_add.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_action_add.png b/app/src/main/res/drawable-xhdpi/ic_action_add.png new file mode 100644 index 0000000..e5dd67b Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_action_add.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_add.png b/app/src/main/res/drawable-xxhdpi/ic_action_add.png new file mode 100644 index 0000000..ed6a26c Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_action_add.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_action_add.png b/app/src/main/res/drawable-xxxhdpi/ic_action_add.png new file mode 100644 index 0000000..0d2d217 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_action_add.png differ diff --git a/app/src/main/res/layout/main_activity.xml b/app/src/main/res/layout/main_activity.xml index 9a9d3dd..aa59ec8 100644 --- a/app/src/main/res/layout/main_activity.xml +++ b/app/src/main/res/layout/main_activity.xml @@ -1,8 +1,33 @@ - - + + + - \ No newline at end of file + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/toolbar.xml b/app/src/main/res/layout/toolbar.xml index 0efc824..6ee75d9 100644 --- a/app/src/main/res/layout/toolbar.xml +++ b/app/src/main/res/layout/toolbar.xml @@ -7,4 +7,5 @@ app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" android:layout_width="match_parent" - android:layout_height="?attr/actionBarSize" /> + android:layout_height="?attr/actionBarSize" + app:layout_scrollFlags="scroll|enterAlways"/> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 52e58ae..dd48606 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -13,4 +13,6 @@ Remove all logged notifications Export to sdcard About + FAB: Create notification + Create notification