Skip to content

Commit ea2532f

Browse files
authored
Merge pull request #43 from PSPDFKit/simone/update-android-to-6.0
Update Android part to PSPDFKit for Android 6.0
2 parents 38ef9b3 + cacbba1 commit ea2532f

File tree

6 files changed

+82
-36
lines changed

6 files changed

+82
-36
lines changed

android/config.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ if (pspdfkitPassword == null || pspdfkitPassword == '') {
3636

3737
ext.pspdfkitVersion = localProperties.getProperty('pspdfkit.version')
3838
if (pspdfkitVersion == null || pspdfkitVersion == '') {
39-
ext.pspdfkitVersion = '5.5.0'
39+
ext.pspdfkitVersion = '6.0.0'
4040
}
4141

4242
def pspdfkitIsDemo = localProperties.getProperty('pspdfkit.demo')

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

Lines changed: 76 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
import java.util.EnumSet;
3030
import java.util.HashMap;
3131

32+
import static com.pspdfkit.flutter.pspdfkit.util.Preconditions.requireNotNullNotEmpty;
33+
import static io.flutter.util.Preconditions.checkNotNull;
34+
3235
class ConfigurationAdapter {
3336
private static final String LOG_TAG = "ConfigurationAdapter";
3437

@@ -46,7 +49,8 @@ class ConfigurationAdapter {
4649
private static final String ANDROID_SHOW_SEARCH_ACTION = "showSearchAction";
4750
private static final String INLINE_SEARCH = "inlineSearch";
4851
private static final String SHOW_THUMBNAIL_BAR = "showThumbnailBar";
49-
private static final String SHOW_THUMBNAIL_BAR_DEFAULT = "default";
52+
private static final String SHOW_THUMBNAIL_BAR_FLOATING = "floating";
53+
private static final String SHOW_THUMBNAIL_BAR_PINNED = "pinned";
5054
private static final String SHOW_THUMBNAIL_BAR_SCROLLABLE = "scrollable";
5155
private static final String SHOW_THUMBNAIL_BAR_NONE = "none";
5256
private static final String ANDROID_SHOW_THUMBNAIL_GRID_ACTION = "showThumbnailGridAction";
@@ -75,10 +79,9 @@ class ConfigurationAdapter {
7579
private static final String SETTINGS_MENU_ITEMS = "settingsMenuItems";
7680
private static final String SHOW_ACTION_NAVIGATION_BUTTONS = "showActionNavigationButtons";
7781

78-
private final PdfActivityConfiguration.Builder configuration;
82+
@NonNull private final PdfActivityConfiguration.Builder configuration;
7983
@Nullable private String password = null;
8084

81-
@SuppressWarnings("ConstantConditions")
8285
ConfigurationAdapter(@NonNull Context context,
8386
@Nullable HashMap<String, Object> configurationMap) {
8487
this.configuration = new PdfActivityConfiguration.Builder(context);
@@ -168,7 +171,7 @@ class ConfigurationAdapter {
168171
configureDefaultThemeRes((String) configurationMap.get(ANDROID_DEFAULT_THEME_RESOURCE), context);
169172
}
170173
if (containsKeyOfType(configurationMap, SETTINGS_MENU_ITEMS, ArrayList.class)) {
171-
configureSettingsMenuItems((ArrayList<String>) configurationMap.get(SETTINGS_MENU_ITEMS));
174+
configureSettingsMenuItems((ArrayList<?>) configurationMap.get(SETTINGS_MENU_ITEMS));
172175
}
173176
if (containsKeyOfType(configurationMap, SHOW_ACTION_NAVIGATION_BUTTONS, Boolean.class)) {
174177
configureShowNavigationButtons((Boolean) configurationMap.get(SHOW_ACTION_NAVIGATION_BUTTONS));
@@ -187,7 +190,8 @@ private void configureShowPageNumberOverlay(boolean showPageNumberOverlay) {
187190
}
188191
}
189192

190-
private void configurePageScrollDirection(final String pageScrollDirection) {
193+
private void configurePageScrollDirection(@NonNull final String pageScrollDirection) {
194+
requireNotNullNotEmpty(pageScrollDirection, "pageScrollDirection");
191195
if (pageScrollDirection.equals(PAGE_SCROLL_DIRECTION_HORIZONTAL)) {
192196
configuration.scrollDirection(PageScrollDirection.HORIZONTAL);
193197
} else if (pageScrollDirection.equals(PAGE_SCROLL_DIRECTION_VERTICAL)) {
@@ -214,16 +218,25 @@ private void configureStartPage(int startPage) {
214218
configuration.page(startPage);
215219
}
216220

217-
private void configureUserInterfaceViewMode(String userInterfaceViewMode) {
218-
UserInterfaceViewMode result = UserInterfaceViewMode.USER_INTERFACE_VIEW_MODE_AUTOMATIC;
219-
if (userInterfaceViewMode.equals(USER_INTERFACE_VIEW_MODE_AUTOMATIC)) {
220-
result = UserInterfaceViewMode.USER_INTERFACE_VIEW_MODE_AUTOMATIC;
221-
} else if (userInterfaceViewMode.equals(USER_INTERFACE_VIEW_MODE_AUTOMATIC_BORDER_PAGES)) {
222-
result = UserInterfaceViewMode.USER_INTERFACE_VIEW_MODE_AUTOMATIC_BORDER_PAGES;
223-
} else if (userInterfaceViewMode.equals(USER_INTERFACE_VIEW_MODE_ALWAYS_VISIBLE)) {
224-
result = UserInterfaceViewMode.USER_INTERFACE_VIEW_MODE_VISIBLE;
225-
} else if (userInterfaceViewMode.equals(USER_INTERFACE_VIEW_MODE_ALWAYS_HIDDEN)) {
226-
result = UserInterfaceViewMode.USER_INTERFACE_VIEW_MODE_HIDDEN;
221+
private void configureUserInterfaceViewMode(@NonNull String userInterfaceViewMode) {
222+
requireNotNullNotEmpty(userInterfaceViewMode, "userInterfaceViewMode");
223+
224+
UserInterfaceViewMode result;
225+
switch (userInterfaceViewMode) {
226+
case USER_INTERFACE_VIEW_MODE_AUTOMATIC:
227+
result = UserInterfaceViewMode.USER_INTERFACE_VIEW_MODE_AUTOMATIC;
228+
break;
229+
case USER_INTERFACE_VIEW_MODE_AUTOMATIC_BORDER_PAGES:
230+
result = UserInterfaceViewMode.USER_INTERFACE_VIEW_MODE_AUTOMATIC_BORDER_PAGES;
231+
break;
232+
case USER_INTERFACE_VIEW_MODE_ALWAYS_VISIBLE:
233+
result = UserInterfaceViewMode.USER_INTERFACE_VIEW_MODE_VISIBLE;
234+
break;
235+
case USER_INTERFACE_VIEW_MODE_ALWAYS_HIDDEN:
236+
result = UserInterfaceViewMode.USER_INTERFACE_VIEW_MODE_HIDDEN;
237+
break;
238+
default:
239+
throw new IllegalArgumentException("Undefined user interface view mode for " + userInterfaceViewMode);
227240
}
228241
configuration.setUserInterfaceViewMode(result);
229242
}
@@ -240,14 +253,25 @@ private void configureImmersiveMode(boolean immersiveMode) {
240253
configuration.useImmersiveMode(immersiveMode);
241254
}
242255

243-
private void configureShowThumbnailBar(String showThumbnailBar) {
244-
ThumbnailBarMode thumbnailBarMode = ThumbnailBarMode.THUMBNAIL_BAR_MODE_DEFAULT;
245-
if (showThumbnailBar.equals(SHOW_THUMBNAIL_BAR_DEFAULT)) {
246-
thumbnailBarMode = ThumbnailBarMode.THUMBNAIL_BAR_MODE_DEFAULT;
247-
} else if (showThumbnailBar.equals(SHOW_THUMBNAIL_BAR_SCROLLABLE)) {
248-
thumbnailBarMode = ThumbnailBarMode.THUMBNAIL_BAR_MODE_SCROLLABLE;
249-
} else if (showThumbnailBar.equals(SHOW_THUMBNAIL_BAR_NONE)) {
250-
thumbnailBarMode = ThumbnailBarMode.THUMBNAIL_BAR_MODE_NONE;
256+
private void configureShowThumbnailBar(@NonNull String showThumbnailBar) {
257+
requireNotNullNotEmpty(showThumbnailBar, "showThumbnailBar");
258+
259+
ThumbnailBarMode thumbnailBarMode;
260+
switch (showThumbnailBar) {
261+
case SHOW_THUMBNAIL_BAR_FLOATING:
262+
thumbnailBarMode = ThumbnailBarMode.THUMBNAIL_BAR_MODE_FLOATING;
263+
break;
264+
case SHOW_THUMBNAIL_BAR_PINNED:
265+
thumbnailBarMode = ThumbnailBarMode.THUMBNAIL_BAR_MODE_PINNED;
266+
break;
267+
case SHOW_THUMBNAIL_BAR_SCROLLABLE:
268+
thumbnailBarMode = ThumbnailBarMode.THUMBNAIL_BAR_MODE_SCROLLABLE;
269+
break;
270+
case SHOW_THUMBNAIL_BAR_NONE:
271+
thumbnailBarMode = ThumbnailBarMode.THUMBNAIL_BAR_MODE_NONE;
272+
break;
273+
default:
274+
throw new IllegalArgumentException("Undefined thumbnail bar mode for " + showThumbnailBar);
251275
}
252276
configuration.setThumbnailBarMode(thumbnailBarMode);
253277
}
@@ -356,24 +380,34 @@ private void configureDocumentInfoView(boolean enableDocumentInfoView) {
356380
}
357381
}
358382

359-
private void configureThemeMode(String themeMode) {
360-
ThemeMode result = ThemeMode.DEFAULT;
383+
private void configureThemeMode(@NonNull String themeMode) {
384+
requireNotNullNotEmpty(themeMode, "themeMode");
385+
386+
ThemeMode result;
361387
if (themeMode.equals(APPEARANCE_MODE_DEFAULT)) {
362388
result = ThemeMode.DEFAULT;
363389
} else if (themeMode.equals(APPEARANCE_MODE_NIGHT)) {
364390
result = ThemeMode.NIGHT;
391+
} else {
392+
throw new IllegalArgumentException("Undefined theme mode for " + themeMode);
365393
}
366394
configuration.themeMode(result);
367395
}
368396

369-
private void configureDarkThemeRes(String darkThemeResource, Context context) {
397+
private void configureDarkThemeRes(@NonNull String darkThemeResource, @NonNull Context context) {
398+
requireNotNullNotEmpty(darkThemeResource, "darkThemeResource");
399+
checkNotNull(context);
400+
370401
@StyleRes int darkThemeId = getStyleResourceId(darkThemeResource, context);
371402
if (darkThemeId != 0) {
372403
configuration.themeDark(darkThemeId);
373404
}
374405
}
375406

376-
private void configureDefaultThemeRes(String defaultThemeResource, Context context) {
407+
private void configureDefaultThemeRes(@NonNull String defaultThemeResource, @NonNull Context context) {
408+
requireNotNullNotEmpty(defaultThemeResource, "defaultThemeResource");
409+
checkNotNull(context);
410+
377411
@StyleRes int defaultThemeId = getStyleResourceId(defaultThemeResource, context);
378412
if (defaultThemeId != 0) {
379413
configuration.theme(defaultThemeId);
@@ -388,17 +422,26 @@ private void configureShowNavigationButtons(boolean showNavigationButtons) {
388422
}
389423
}
390424

391-
private static int getStyleResourceId(String styleName, Context context) {
425+
private static int getStyleResourceId(@NonNull String styleName, @NonNull Context context) {
426+
requireNotNullNotEmpty(styleName, "styleName");
427+
checkNotNull(context);
428+
392429
int resourceId = context.getResources().getIdentifier(styleName, "style", context.getPackageName());
393430
if (resourceId == 0) {
394431
Log.e(LOG_TAG, String.format("Style resource not found for %s", styleName));
395432
}
396433
return resourceId;
397434
}
398435

399-
private void configureSettingsMenuItems(ArrayList<String> settingsMenuItems) {
436+
private <T> void configureSettingsMenuItems(@NonNull ArrayList<T> settingsMenuItems) {
437+
checkNotNull(settingsMenuItems);
438+
400439
EnumSet<SettingsMenuItemType> settingsMenuItemTypes = EnumSet.noneOf(SettingsMenuItemType.class);
401-
for (String menuType : settingsMenuItems) {
440+
for (T settingsMenuItem : settingsMenuItems) {
441+
if (!(settingsMenuItem instanceof String)) {
442+
throw new IllegalArgumentException("Provided settingMenuItem " + settingsMenuItem + " must be a String.");
443+
}
444+
String menuType = (String) settingsMenuItem;
402445
if (menuType.equalsIgnoreCase("theme")) {
403446
settingsMenuItemTypes.add(SettingsMenuItemType.THEME);
404447
} else if (menuType.equalsIgnoreCase("screenAwake")) {
@@ -416,7 +459,9 @@ private void configureSettingsMenuItems(ArrayList<String> settingsMenuItems) {
416459
configuration.setSettingsMenuItems(settingsMenuItemTypes);
417460
}
418461

419-
private <T> boolean containsKeyOfType(HashMap<String, Object> configurationMap, String key, Class<T> clazz) {
462+
private <T> boolean containsKeyOfType(@NonNull HashMap<String, Object> configurationMap,
463+
@NonNull String key,
464+
@NonNull Class<T> clazz) {
420465
if (configurationMap.get(key) != null) {
421466
checkCast(configurationMap.get(key), clazz, key);
422467
return true;

example/lib/main.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ class _MyAppState extends State<MyApp> {
119119
userInterfaceViewMode: userInterfaceViewModeAutomaticBorderPages,
120120
androidShowSearchAction: true,
121121
inlineSearch: false,
122-
showThumbnailBar: showThumbnailBarScrollable,
122+
showThumbnailBar: showThumbnailBarFloating,
123123
androidShowThumbnailGridAction: true,
124124
androidShowOutlineAction: true,
125125
androidShowAnnotationListAction: true,

example/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: pspdfkit_example
22
description: Demonstrates how to use the pspdfkit plugin.
3-
version: 1.6.0
3+
version: 1.7.0
44
author: PSPDFKit
55
homepage: https://pspdfkit.com/
66
environment:

lib/configuration_options.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ const String androidShowSearchAction = "showSearchAction";
3333
const String inlineSearch = "inlineSearch";
3434

3535
const String showThumbnailBar = "showThumbnailBar";
36-
const String showThumbnailBarDefault = "default";
36+
const String showThumbnailBarFloating = "floating";
37+
const String showThumbnailBarPinned = "pinned";
3738
const String showThumbnailBarScrollable = "scrollable";
3839
const String showThumbnailBarNone = "none";
3940

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: pspdfkit_flutter
22
description: PSPDFKit flutter plugin.
3-
version: 1.6.0
3+
version: 1.7.0
44
author: PSPDFKit
55
homepage: https://pspdfkit.com/
66
environment:

0 commit comments

Comments
 (0)