Browse Source

refactor button options

Guy Carmeli 7 years ago
parent
commit
a25ecf86bc

+ 16
- 0
lib/android/app/src/main/java/com/reactnativenavigation/utils/ButtonOptionsPresenter.java View File

@@ -7,6 +7,10 @@ import android.graphics.Typeface;
7 7
 import android.graphics.drawable.Drawable;
8 8
 import android.support.annotation.NonNull;
9 9
 import android.support.v7.widget.Toolbar;
10
+import android.text.Spannable;
11
+import android.text.SpannableString;
12
+import android.text.style.AbsoluteSizeSpan;
13
+import android.view.MenuItem;
10 14
 import android.view.View;
11 15
 import android.widget.TextView;
12 16
 
@@ -36,6 +40,18 @@ public class ButtonOptionsPresenter {
36 40
         });
37 41
     }
38 42
 
43
+    public void setFontSize(MenuItem menuItem) {
44
+        SpannableString spanString = new SpannableString(button.title.get());
45
+        if (this.button.fontSize.hasValue())
46
+            spanString.setSpan(
47
+                    new AbsoluteSizeSpan(button.fontSize.get(), true),
48
+                    0,
49
+                    button.title.get().length(),
50
+                    Spannable.SPAN_INCLUSIVE_INCLUSIVE
51
+            );
52
+        menuItem.setTitleCondensed(spanString);
53
+    }
54
+
39 55
     public void setTextColor() {
40 56
         UiUtils.runOnPreDrawOnce(toolbar, () -> {
41 57
             ArrayList<View> buttons = findActualTextViewInMenu();

+ 1
- 16
lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/TopBarButtonController.java View File

@@ -6,9 +6,6 @@ import android.graphics.drawable.Drawable;
6 6
 import android.support.annotation.NonNull;
7 7
 import android.support.v7.widget.ActionMenuView;
8 8
 import android.support.v7.widget.Toolbar;
9
-import android.text.Spannable;
10
-import android.text.SpannableString;
11
-import android.text.style.AbsoluteSizeSpan;
12 9
 import android.util.Log;
13 10
 import android.view.MenuItem;
14 11
 import android.widget.ImageButton;
@@ -128,7 +125,7 @@ public class TopBarButtonController extends ViewController<TitleBarReactButtonVi
128 125
                 });
129 126
             } else {
130 127
                 optionsPresenter.setTextColor();
131
-                setFontSize(menuItem);
128
+                if (button.fontSize.hasValue()) optionsPresenter.setFontSize(menuItem);
132 129
                 optionsPresenter.setTypeFace(button.fontFamily);
133 130
             }
134 131
         }
@@ -148,18 +145,6 @@ public class TopBarButtonController extends ViewController<TitleBarReactButtonVi
148 145
         }
149 146
     }
150 147
 
151
-    private void setFontSize(MenuItem menuItem) {
152
-        SpannableString spanString = new SpannableString(button.title.get());
153
-        if (this.button.fontSize.hasValue())
154
-            spanString.setSpan(
155
-                    new AbsoluteSizeSpan(button.fontSize.get(), true),
156
-                    0,
157
-                    button.title.get().length(),
158
-                    Spannable.SPAN_INCLUSIVE_INCLUSIVE
159
-            );
160
-        menuItem.setTitleCondensed(spanString);
161
-    }
162
-
163 148
     private void setTestId(Toolbar toolbar, Text testId) {
164 149
         if (!testId.hasValue()) return;
165 150
         UiUtils.runOnPreDrawOnce(toolbar, () -> {

+ 13
- 0
lib/android/app/src/test/java/com/reactnativenavigation/viewcontrollers/TopBarButtonControllerTest.java View File

@@ -15,6 +15,7 @@ import com.reactnativenavigation.parse.params.Bool;
15 15
 import com.reactnativenavigation.parse.params.Button;
16 16
 import com.reactnativenavigation.parse.params.Color;
17 17
 import com.reactnativenavigation.parse.params.NullText;
18
+import com.reactnativenavigation.parse.params.Number;
18 19
 import com.reactnativenavigation.parse.params.Text;
19 20
 import com.reactnativenavigation.utils.ButtonOptionsPresenter;
20 21
 import com.reactnativenavigation.viewcontrollers.topbar.TopBarBackgroundViewController;
@@ -109,6 +110,18 @@ public class TopBarButtonControllerTest extends BaseTest {
109 110
         verify(optionsPresenter, times(1)).setTypeFace(Typeface.MONOSPACE);
110 111
     }
111 112
 
113
+    @Test
114
+    public void fontSize() {
115
+        setTextButton();
116
+        uut.addToMenu(getTitleBar(), 0);
117
+        verify(optionsPresenter, times(0)).setFontSize(getTitleBar().getMenu().getItem(0));
118
+
119
+        getTitleBar().getMenu().clear();
120
+        button.fontSize = new Number(10);
121
+        uut.addToMenu(getTitleBar(), 0);
122
+        verify(optionsPresenter, times(1)).setFontSize(getTitleBar().getMenu().getItem(0));
123
+    }
124
+
112 125
     private Toolbar getTitleBar() {
113 126
         return stackController.getTopBar().getTitleBar();
114 127
     }