Skip to content

Commit f718ba8

Browse files
committed
Add pageLayoutMode and isFirstPageAlwaysSingle
Implement pageLayoutMode and isFirstPageAlwaysSingle configuration option for the Android part. Signed-off-by: Simone Arpe <[email protected]>
1 parent a6b4b20 commit f718ba8

File tree

3 files changed

+41
-10
lines changed

3 files changed

+41
-10
lines changed

android/src/main/java/com/pspdfkit/flutter/pspdfkit/ConfigurationAdapter.java

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.pspdfkit.configuration.activity.ThumbnailBarMode;
2020
import com.pspdfkit.configuration.activity.UserInterfaceViewMode;
2121
import com.pspdfkit.configuration.page.PageFitMode;
22+
import com.pspdfkit.configuration.page.PageLayoutMode;
2223
import com.pspdfkit.configuration.page.PageScrollDirection;
2324
import com.pspdfkit.configuration.page.PageScrollMode;
2425
import com.pspdfkit.configuration.settings.SettingsMenuItemType;
@@ -35,6 +36,10 @@
3536
class 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) {

example/lib/main.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ class _MyAppState extends State<MyApp> {
113113

114114
Pspdfkit.present(tempDocumentPath, {
115115
pageScrollDirection: pageScrollDirectionVertical,
116-
pageScrollContinuous: true,
116+
pageScrollContinuous: false,
117117
fitPageToWidth: true,
118118
androidImmersiveMode: false,
119119
userInterfaceViewMode: userInterfaceViewModeAutomaticBorderPages,
@@ -147,7 +147,7 @@ class _MyAppState extends State<MyApp> {
147147
showActionNavigationButtons: false,
148148
iOSShowActionNavigationButtonLabels: false,
149149
pageLayoutMode: 'double',
150-
isFirstPageAlwaysSingle: false
150+
isFirstPageAlwaysSingle: true
151151
});
152152
} on PlatformException catch (e) {
153153
print("Failed to present document: '${e.message}'.");

lib/configuration_options.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ const String iOSAllowToolbarTitleChange = "allowToolbarTitleChange";
8888

8989
const String toolbarTitle = "toolbarTitle";
9090

91-
const String androidSettingsMenuItems = "settingsMenuItems";
91+
const String androidSettingsMenuItems = "androidSettingsMenuItems";
9292
const String iOSSettingsMenuItems = "iOSSettingsMenuItems";
9393

9494
const String showActionNavigationButtons = "showActionNavigationButtons";

0 commit comments

Comments
 (0)