1919import com .pspdfkit .configuration .activity .ThumbnailBarMode ;
2020import com .pspdfkit .configuration .activity .UserInterfaceViewMode ;
2121import com .pspdfkit .configuration .page .PageFitMode ;
22+ import com .pspdfkit .configuration .page .PageLayoutMode ;
2223import com .pspdfkit .configuration .page .PageScrollDirection ;
2324import com .pspdfkit .configuration .page .PageScrollMode ;
2425import com .pspdfkit .configuration .settings .SettingsMenuItemType ;
3536class ConfigurationAdapter {
3637 private static final String LOG_TAG = "ConfigurationAdapter" ;
3738
39+ private static final String PAGE_LAYOUT_MODE = "pageLayoutMode" ;
40+ private static final String PAGE_LAYOUT_MODE_SINGLE = "single" ;
41+ private static final String PAGE_LAYOUT_MODE_DOUBLE = "double" ;
42+ private static final String PAGE_LAYOUT_MODE_AUTO = "automatic" ;
3843 private static final String PAGE_SCROLL_DIRECTION = "pageScrollDirection" ;
3944 private static final String PAGE_SCROLL_DIRECTION_HORIZONTAL = "horizontal" ;
4045 private static final String PAGE_SCROLL_DIRECTION_VERTICAL = "vertical" ;
@@ -76,8 +81,9 @@ class ConfigurationAdapter {
7681 private static final String ANDROID_DARK_THEME_RESOURCE = "darkThemeResource" ;
7782 private static final String ANDROID_DEFAULT_THEME_RESOURCE = "defaultThemeResource" ;
7883 private static final String PASSWORD = "password" ;
79- private static final String SETTINGS_MENU_ITEMS = "settingsMenuItems " ;
84+ private static final String SETTINGS_MENU_ITEMS = "androidSettingsMenuItems " ;
8085 private static final String SHOW_ACTION_NAVIGATION_BUTTONS = "showActionNavigationButtons" ;
86+ private static final String IS_FIRST_PAGE_ALWAYS_SINGLE = "isFirstPageAlwaysSingle" ;
8187
8288 @ NonNull private final PdfActivityConfiguration .Builder configuration ;
8389 @ Nullable private String password = null ;
@@ -86,6 +92,9 @@ class ConfigurationAdapter {
8692 @ Nullable HashMap <String , Object > configurationMap ) {
8793 this .configuration = new PdfActivityConfiguration .Builder (context );
8894 if (configurationMap != null && !configurationMap .isEmpty ()) {
95+ if (containsKeyOfType (configurationMap , PAGE_LAYOUT_MODE , String .class )) {
96+ configurePageLayoutMode ((String ) configurationMap .get (PAGE_LAYOUT_MODE ));
97+ }
8998 if (containsKeyOfType (configurationMap , PAGE_SCROLL_DIRECTION , String .class )) {
9099 configurePageScrollDirection ((String ) configurationMap .get (PAGE_SCROLL_DIRECTION ));
91100 }
@@ -179,6 +188,9 @@ class ConfigurationAdapter {
179188 if (containsKeyOfType (configurationMap , PASSWORD , String .class )) {
180189 this .password = ((String ) configurationMap .get (PASSWORD ));
181190 }
191+ if (containsKeyOfType (configurationMap , IS_FIRST_PAGE_ALWAYS_SINGLE , Boolean .class )) {
192+ configureFirstPageAlwaysSingle ((Boolean ) configurationMap .get (IS_FIRST_PAGE_ALWAYS_SINGLE ));
193+ }
182194 }
183195 }
184196
@@ -190,6 +202,23 @@ private void configureShowPageNumberOverlay(boolean showPageNumberOverlay) {
190202 }
191203 }
192204
205+ private void configurePageLayoutMode (@ NonNull final String pageLayoutMode ) {
206+ requireNotNullNotEmpty (pageLayoutMode , "pageLayoutMode" );
207+ switch (pageLayoutMode ) {
208+ case PAGE_LAYOUT_MODE_AUTO :
209+ configuration .layoutMode (PageLayoutMode .AUTO );
210+ break ;
211+ case PAGE_LAYOUT_MODE_SINGLE :
212+ configuration .layoutMode (PageLayoutMode .SINGLE );
213+ break ;
214+ case PAGE_LAYOUT_MODE_DOUBLE :
215+ configuration .layoutMode (PageLayoutMode .DOUBLE );
216+ break ;
217+ default :
218+ throw new IllegalArgumentException ("Undefined page layout mode for " + pageLayoutMode );
219+ }
220+ }
221+
193222 private void configurePageScrollDirection (@ NonNull final String pageScrollDirection ) {
194223 requireNotNullNotEmpty (pageScrollDirection , "pageScrollDirection" );
195224 if (pageScrollDirection .equals (PAGE_SCROLL_DIRECTION_HORIZONTAL )) {
@@ -221,24 +250,22 @@ private void configureStartPage(int startPage) {
221250 private void configureUserInterfaceViewMode (@ NonNull String userInterfaceViewMode ) {
222251 requireNotNullNotEmpty (userInterfaceViewMode , "userInterfaceViewMode" );
223252
224- UserInterfaceViewMode result ;
225253 switch (userInterfaceViewMode ) {
226254 case USER_INTERFACE_VIEW_MODE_AUTOMATIC :
227- result = UserInterfaceViewMode .USER_INTERFACE_VIEW_MODE_AUTOMATIC ;
255+ configuration . setUserInterfaceViewMode ( UserInterfaceViewMode .USER_INTERFACE_VIEW_MODE_AUTOMATIC ) ;
228256 break ;
229257 case USER_INTERFACE_VIEW_MODE_AUTOMATIC_BORDER_PAGES :
230- result = UserInterfaceViewMode .USER_INTERFACE_VIEW_MODE_AUTOMATIC_BORDER_PAGES ;
258+ configuration . setUserInterfaceViewMode ( UserInterfaceViewMode .USER_INTERFACE_VIEW_MODE_AUTOMATIC_BORDER_PAGES ) ;
231259 break ;
232260 case USER_INTERFACE_VIEW_MODE_ALWAYS_VISIBLE :
233- result = UserInterfaceViewMode .USER_INTERFACE_VIEW_MODE_VISIBLE ;
261+ configuration . setUserInterfaceViewMode ( UserInterfaceViewMode .USER_INTERFACE_VIEW_MODE_VISIBLE ) ;
234262 break ;
235263 case USER_INTERFACE_VIEW_MODE_ALWAYS_HIDDEN :
236- result = UserInterfaceViewMode .USER_INTERFACE_VIEW_MODE_HIDDEN ;
264+ configuration . setUserInterfaceViewMode ( UserInterfaceViewMode .USER_INTERFACE_VIEW_MODE_HIDDEN ) ;
237265 break ;
238266 default :
239267 throw new IllegalArgumentException ("Undefined user interface view mode for " + userInterfaceViewMode );
240268 }
241- configuration .setUserInterfaceViewMode (result );
242269 }
243270
244271 private void configureShowSearchAction (boolean showSearchAction ) {
@@ -459,6 +486,10 @@ private <T> void configureSettingsMenuItems(@NonNull ArrayList<T> settingsMenuIt
459486 configuration .setSettingsMenuItems (settingsMenuItemTypes );
460487 }
461488
489+ private void configureFirstPageAlwaysSingle (final boolean firstPageAlwaysSingle ) {
490+ configuration .firstPageAlwaysSingle (firstPageAlwaysSingle );
491+ }
492+
462493 private <T > boolean containsKeyOfType (@ NonNull HashMap <String , Object > configurationMap ,
463494 @ NonNull String key ,
464495 @ NonNull Class <T > clazz ) {
0 commit comments