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
 import android.graphics.drawable.Drawable;
7
 import android.graphics.drawable.Drawable;
8
 import android.support.annotation.NonNull;
8
 import android.support.annotation.NonNull;
9
 import android.support.v7.widget.Toolbar;
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
 import android.view.View;
14
 import android.view.View;
11
 import android.widget.TextView;
15
 import android.widget.TextView;
12
 
16
 
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
     public void setTextColor() {
55
     public void setTextColor() {
40
         UiUtils.runOnPreDrawOnce(toolbar, () -> {
56
         UiUtils.runOnPreDrawOnce(toolbar, () -> {
41
             ArrayList<View> buttons = findActualTextViewInMenu();
57
             ArrayList<View> buttons = findActualTextViewInMenu();

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

6
 import android.support.annotation.NonNull;
6
 import android.support.annotation.NonNull;
7
 import android.support.v7.widget.ActionMenuView;
7
 import android.support.v7.widget.ActionMenuView;
8
 import android.support.v7.widget.Toolbar;
8
 import android.support.v7.widget.Toolbar;
9
-import android.text.Spannable;
10
-import android.text.SpannableString;
11
-import android.text.style.AbsoluteSizeSpan;
12
 import android.util.Log;
9
 import android.util.Log;
13
 import android.view.MenuItem;
10
 import android.view.MenuItem;
14
 import android.widget.ImageButton;
11
 import android.widget.ImageButton;
128
                 });
125
                 });
129
             } else {
126
             } else {
130
                 optionsPresenter.setTextColor();
127
                 optionsPresenter.setTextColor();
131
-                setFontSize(menuItem);
128
+                if (button.fontSize.hasValue()) optionsPresenter.setFontSize(menuItem);
132
                 optionsPresenter.setTypeFace(button.fontFamily);
129
                 optionsPresenter.setTypeFace(button.fontFamily);
133
             }
130
             }
134
         }
131
         }
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
     private void setTestId(Toolbar toolbar, Text testId) {
148
     private void setTestId(Toolbar toolbar, Text testId) {
164
         if (!testId.hasValue()) return;
149
         if (!testId.hasValue()) return;
165
         UiUtils.runOnPreDrawOnce(toolbar, () -> {
150
         UiUtils.runOnPreDrawOnce(toolbar, () -> {

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

15
 import com.reactnativenavigation.parse.params.Button;
15
 import com.reactnativenavigation.parse.params.Button;
16
 import com.reactnativenavigation.parse.params.Color;
16
 import com.reactnativenavigation.parse.params.Color;
17
 import com.reactnativenavigation.parse.params.NullText;
17
 import com.reactnativenavigation.parse.params.NullText;
18
+import com.reactnativenavigation.parse.params.Number;
18
 import com.reactnativenavigation.parse.params.Text;
19
 import com.reactnativenavigation.parse.params.Text;
19
 import com.reactnativenavigation.utils.ButtonOptionsPresenter;
20
 import com.reactnativenavigation.utils.ButtonOptionsPresenter;
20
 import com.reactnativenavigation.viewcontrollers.topbar.TopBarBackgroundViewController;
21
 import com.reactnativenavigation.viewcontrollers.topbar.TopBarBackgroundViewController;
109
         verify(optionsPresenter, times(1)).setTypeFace(Typeface.MONOSPACE);
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
     private Toolbar getTitleBar() {
125
     private Toolbar getTitleBar() {
113
         return stackController.getTopBar().getTitleBar();
126
         return stackController.getTopBar().getTitleBar();
114
     }
127
     }