Skip to content

Commit 9f3deb2

Browse files
committed
Added settings menu customizability to iOS.
1 parent f0eab54 commit 9f3deb2

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed

example/lib/main.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ class _MyAppState extends State<MyApp> {
143143
iOSAllowToolbarTitleChange: false,
144144
toolbarTitle: 'Custom Title',
145145
androidSettingsMenuItems:['theme', 'scrolldirection'],
146+
iOSSettingsMenuItems:['scrollDirection', 'pageTransition', 'appearance', 'brightness', 'pageMode', 'spreadFitting'],
146147
showActionNavigationButtons: false,
147148
iOSShowActionNavigationButtonLabels: false,
148149
pageLayoutMode: 'automatic',

ios/Classes/PspdfkitPlugin.m

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,9 @@ - (PSPDFConfiguration *)configuration:(NSDictionary *)dictionary isImageDocument
135135
if (dictionary[@"isFirstPageAlwaysSingle"]) {
136136
builder.firstPageAlwaysSingle = [dictionary[@"isFirstPageAlwaysSingle"] boolValue];
137137
}
138+
if (dictionary[@"settingsMenuItems"]) {
139+
builder.settingsOptions = [self settingsOptions:dictionary[@"settingsMenuItems"]];
140+
}
138141
}];
139142
}
140143

@@ -331,6 +334,36 @@ - (PSPDFPageMode)pageMode:(NSDictionary *)dictionary {
331334
return pageMode;
332335
}
333336

337+
- (PSPDFSettingsOptions)settingsOptions:(nullable NSArray <NSString *> *)options {
338+
if ((id)options == NSNull.null || !options || options.count == 0) {
339+
return PSPDFSettingsOptionDefault;
340+
}
341+
342+
PSPDFSettingsOptions finalOptions = 0;
343+
344+
for (NSString *option in options) {
345+
if ([option isEqualToString:@"scrollDirection"]) {
346+
finalOptions |= PSPDFSettingsOptionScrollDirection;
347+
} else if ([option isEqualToString:@"pageTransition"]) {
348+
finalOptions |= PSPDFSettingsOptionPageTransition;
349+
} else if ([option isEqualToString:@"appearance"]) {
350+
finalOptions |= PSPDFSettingsOptionAppearance;
351+
} else if ([option isEqualToString:@"brightness"]) {
352+
finalOptions |= PSPDFSettingsOptionBrightness;
353+
} else if ([option isEqualToString:@"pageMode"]) {
354+
finalOptions |= PSPDFSettingsOptionPageMode;
355+
} else if ([option isEqualToString:@"spreadFitting"]) {
356+
finalOptions |= PSPDFSettingsOptionSpreadFitting;
357+
}
358+
}
359+
360+
if (finalOptions == 0) {
361+
finalOptions = PSPDFSettingsOptionDefault;
362+
}
363+
364+
return finalOptions;
365+
}
366+
334367
- (void)setToolbarTitle:(NSString *)toolbarTitle {
335368
// Early return if the toolbar title is not explicitly set in the configuration dictionary.
336369
if (!toolbarTitle) {

lib/configuration_options.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ const String iOSAllowToolbarTitleChange = "allowToolbarTitleChange";
8989
const String toolbarTitle = "toolbarTitle";
9090

9191
const String androidSettingsMenuItems = "settingsMenuItems";
92+
const String iOSSettingsMenuItems = "settingsMenuItems";
9293

9394
const String showActionNavigationButtons = "showActionNavigationButtons";
9495
const String iOSShowActionNavigationButtonLabels = "iOSShowActionNavigationButtonLabels";

0 commit comments

Comments
 (0)