From 6d31e6ecb51136b090dd0a24d01d648f2b07128f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tam=C3=A1s=20Szab=C3=B3?= <tamas@szaboo.com>
Date: Wed, 2 May 2018 21:07:53 +0200
Subject: [PATCH] replace toolbar

---
 .../xkcdbrowser/ui/main/MainActivity.java     | 71 +++++++++++++------
 app/src/main/res/layout/activity_detail.xml   |  3 +-
 app/src/main/res/layout/app_bar_main.xml      | 22 +-----
 app/src/main/res/menu/main_menu.xml           | 10 +++
 app/src/main/res/values/strings.xml           |  6 +-
 app/src/main/res/values/styles.xml            |  2 +-
 6 files changed, 67 insertions(+), 47 deletions(-)
 create mode 100644 app/src/main/res/menu/main_menu.xml

diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/main/MainActivity.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/main/MainActivity.java
index 5c38712..e361178 100644
--- a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/main/MainActivity.java
+++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/main/MainActivity.java
@@ -42,7 +42,7 @@ public class MainActivity extends AppCompatActivity
 
     private ImageView imageView;
     private Comic currentComic;
-    private ImageButton favoriteButton;
+    private MenuItem favoriteButton;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -61,22 +61,13 @@ public class MainActivity extends AppCompatActivity
 
         NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
         navigationView.setNavigationItemSelectedListener(this);
-        
-        findViewById(R.id.favorite_button).setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View view) {
-                favoriteButton.setClickable(false);
-                mainPresenter.saveComic(currentComic);
-            }
-        });
 
         this.imageView = findViewById(R.id.imageView);
-        this.favoriteButton = findViewById(R.id.favorite_button);
 
         findViewById(R.id.next_button).setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                favoriteButton.setClickable(false);
+                favoriteButton.setCheckable(false);
                 mainPresenter.getNext();
             }
         });
@@ -84,7 +75,7 @@ public class MainActivity extends AppCompatActivity
         findViewById(R.id.previous_button).setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                favoriteButton.setClickable(false);
+                favoriteButton.setCheckable(false);
                 mainPresenter.getPrevious();
             }
         });
@@ -92,10 +83,37 @@ public class MainActivity extends AppCompatActivity
         findViewById(R.id.random_button).setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                favoriteButton.setClickable(false);
+                favoriteButton.setCheckable(false);
                 mainPresenter.getRandom();
             }
         });
+
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        // Inflate the menu; this adds items to the action bar if it is present.
+
+        getMenuInflater().inflate(R.menu.main_menu, menu);
+        this.favoriteButton = menu.getItem(0);
+        return true;
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        // Handle action bar item clicks here. The action bar will
+        // automatically handle clicks on the Home/Up button, so long
+        // as you specify a parent activity in AndroidManifest.xml.
+        int id = item.getItemId();
+
+        //noinspection SimplifiableIfStatement
+        if (id == R.id.favorite_button) {
+            favoriteButton.setCheckable(false);
+            mainPresenter.saveComic(currentComic);
+            return true;
+        }
+
+        return super.onOptionsItemSelected(item);
     }
 
     @Override
@@ -168,6 +186,7 @@ public class MainActivity extends AppCompatActivity
                             .setAction("Action", null).show();
                 } else {
                     imageView.setImageBitmap(finalMIcon_val);
+                    setTitle(c.getTitle());
                 }
             }
         };
@@ -181,7 +200,7 @@ public class MainActivity extends AppCompatActivity
         Runnable myRunnable = new Runnable() {
             @Override
             public void run() {
-                favoriteButton.setImageDrawable(getDrawable(R.drawable.ic_star));
+                favoriteButton.setIcon(getDrawable(R.drawable.ic_star));
                 Snackbar.make(findViewById(android.R.id.content), "Saved!", Snackbar.LENGTH_SHORT)
                     .setAction("Action", null).show();
             }
@@ -190,13 +209,23 @@ public class MainActivity extends AppCompatActivity
     }
 
     @Override
-    public void setFavorite(boolean exists) {
+    public void setFavorite(final boolean exists) {
+
+        Handler mainHandler = new Handler(getApplicationContext().getMainLooper());
+
+        Runnable myRunnable = new Runnable() {
+            @Override
+            public void run() {
+                if (exists) {
+                    favoriteButton.setIcon(getDrawable(R.drawable.ic_star));
+                } else {
+                    favoriteButton.setIcon(getDrawable(R.drawable.ic_star_border));
+                    favoriteButton.setCheckable(true);
+                }
+            }
+        };
+        mainHandler.post(myRunnable);
+
 
-        if (exists) {
-            favoriteButton.setImageDrawable(getDrawable(R.drawable.ic_star));
-        } else {
-            favoriteButton.setImageDrawable(getDrawable(R.drawable.ic_star_border));
-            favoriteButton.setClickable(true);
-        }
     }
 }
diff --git a/app/src/main/res/layout/activity_detail.xml b/app/src/main/res/layout/activity_detail.xml
index 8449463..b0c06b3 100644
--- a/app/src/main/res/layout/activity_detail.xml
+++ b/app/src/main/res/layout/activity_detail.xml
@@ -4,7 +4,8 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".ui.detail.DetailActivity">
+    tools:context=".ui.detail.DetailActivity"
+    android:fitsSystemWindows="true">
 
     <android.support.design.widget.AppBarLayout
         android:layout_width="match_parent"
diff --git a/app/src/main/res/layout/app_bar_main.xml b/app/src/main/res/layout/app_bar_main.xml
index 54bfacb..03f12f7 100644
--- a/app/src/main/res/layout/app_bar_main.xml
+++ b/app/src/main/res/layout/app_bar_main.xml
@@ -14,30 +14,10 @@
         <android.support.v7.widget.Toolbar
             android:id="@+id/toolbar"
             android:layout_width="match_parent"
-            android:layout_height="?attr/actionBarSize"
+            android:layout_height="wrap_content"
             android:background="?attr/colorPrimary"
             app:popupTheme="@style/AppTheme.PopupOverlay">
 
-            <LinearLayout
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                android:gravity="right"
-                android:orientation="vertical">
-
-                <ImageButton
-                    android:id="@+id/favorite_button"
-                    android:layout_width="50dp"
-                    android:layout_height="wrap_content"
-                    android:adjustViewBounds="false"
-                    android:background="@null"
-                    android:cropToPadding="false"
-                    android:padding="10dp"
-                    android:scaleType="centerInside"
-                    app:srcCompat="@drawable/ic_star_border"
-                    android:clickable="false"/>
-
-
-            </LinearLayout>
         </android.support.v7.widget.Toolbar>
 
     </android.support.design.widget.AppBarLayout>
diff --git a/app/src/main/res/menu/main_menu.xml b/app/src/main/res/menu/main_menu.xml
new file mode 100644
index 0000000..2bdd841
--- /dev/null
+++ b/app/src/main/res/menu/main_menu.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+    <item
+        android:id="@+id/favorite_button"
+        android:orderInCategory="100"
+        android:title="@string/action_settings"
+        android:icon="@drawable/ic_star_border"
+        app:showAsAction="ifRoom" />
+</menu>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7711ace..259fb49 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -6,7 +6,7 @@
     <string name="nav_header_title">Android Studio</string>
     <string name="nav_header_subtitle">android.studio@android.com</string>
     <string name="nav_header_desc">Navigation header</string>
-    <string name="action_settings">Settings</string>
-    <string name="title_activity_favorites">FavoritesActivity</string>
-    <string name="title_activity_detail">DetailActivity</string>
+    <string name="action_settings">Favorite</string>
+    <string name="title_activity_favorites">Favorites</string>
+    <string name="title_activity_detail">Detail</string>
 </resources>
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 545b9c6..5e399fa 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -1,7 +1,7 @@
 <resources>
 
     <!-- Base application theme. -->
-    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
+    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
         <!-- Customize your theme here. -->
         <item name="colorPrimary">@color/colorPrimary</item>
         <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
-- 
GitLab