From 63a77e75f81676b7093ad54a3bcab552e0175191 Mon Sep 17 00:00:00 2001 From: Julius Kato Mutumba Date: Thu, 3 Aug 2023 18:24:15 +0300 Subject: [PATCH 1/3] annotation toolbar customisation --- .../pspdfkit/CustomAnnotationToolbarMenu.kt | 15 ++++++++++ .../flutter/pspdfkit/FlutterPdfUiFragment.kt | 29 ++++++++++++++++++- ios/Classes/PspdfPlatformView.m | 9 ++++++ 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 android/src/main/java/com/pspdfkit/flutter/pspdfkit/CustomAnnotationToolbarMenu.kt diff --git a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/CustomAnnotationToolbarMenu.kt b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/CustomAnnotationToolbarMenu.kt new file mode 100644 index 00000000..c27b7ff3 --- /dev/null +++ b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/CustomAnnotationToolbarMenu.kt @@ -0,0 +1,15 @@ +package com.pspdfkit.flutter.pspdfkit + +import android.content.Context +import com.pspdfkit.ui.toolbar.ContextualToolbar +import com.pspdfkit.ui.toolbar.grouping.presets.MenuItem +import com.pspdfkit.ui.toolbar.grouping.presets.PresetMenuItemGroupingRule + +class CustomAnnotationToolbarMenu(context: Context) : PresetMenuItemGroupingRule(context) { + override fun getGroupPreset(capacity: Int, itemsCount: Int): List { + return listOf( + MenuItem(com.pspdfkit.R.id.pspdf__annotation_creation_toolbar_item_highlight), + MenuItem(com.pspdfkit.R.id.pspdf__annotation_creation_toolbar_item_underline) + ) + } +} \ No newline at end of file diff --git a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt index f528bffb..55663fcc 100644 --- a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt +++ b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt @@ -1,15 +1,27 @@ package com.pspdfkit.flutter.pspdfkit +import android.os.Bundle +import android.view.View import com.pspdfkit.annotations.measurements.FloatPrecision import com.pspdfkit.annotations.measurements.Scale import com.pspdfkit.document.PdfDocument import com.pspdfkit.ui.PdfUiFragment +import com.pspdfkit.ui.toolbar.AnnotationCreationToolbar +import com.pspdfkit.ui.toolbar.ContextualToolbar +import com.pspdfkit.ui.toolbar.ToolbarCoordinatorLayout +import java.util.EnumSet -class FlutterPdfUiFragment : PdfUiFragment() { +class FlutterPdfUiFragment : PdfUiFragment(), + ToolbarCoordinatorLayout.OnContextualToolbarLifecycleListener { private var scale: Scale? = null private var precision: FloatPrecision? = null + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + setOnContextualToolbarLifecycleListener(this) + } + override fun onDocumentLoaded(document: PdfDocument) { super.onDocumentLoaded(document) // Notify the Flutter PSPDFKit plugin that the document has been loaded. @@ -31,4 +43,19 @@ class FlutterPdfUiFragment : PdfUiFragment() { this.precision = precision } + override fun onPrepareContextualToolbar(toolbar: ContextualToolbar<*>) { + if (toolbar is AnnotationCreationToolbar) { + toolbar.setMenuItemGroupingRule(CustomAnnotationToolbarMenu(requireContext())) + toolbar.layoutParams = ToolbarCoordinatorLayout.LayoutParams( + ToolbarCoordinatorLayout.LayoutParams.Position.TOP, EnumSet.of(ToolbarCoordinatorLayout.LayoutParams.Position.TOP) + ) + } + } + + override fun onDisplayContextualToolbar(p0: ContextualToolbar<*>) { + } + + override fun onRemoveContextualToolbar(p0: ContextualToolbar<*>) { + } + } \ No newline at end of file diff --git a/ios/Classes/PspdfPlatformView.m b/ios/Classes/PspdfPlatformView.m index 2297c5ee..45fbe929 100644 --- a/ios/Classes/PspdfPlatformView.m +++ b/ios/Classes/PspdfPlatformView.m @@ -95,6 +95,15 @@ - (instancetype)initWithFrame:(CGRect)frame viewIdentifier:(int64_t)viewId argum [_channel setMethodCallHandler:^(FlutterMethodCall * _Nonnull call, FlutterResult _Nonnull result) { [weakSelf handleMethodCall:call result:result]; }]; + + PSPDFAnnotationToolbarConfiguration *configuration = [[PSPDFAnnotationToolbarConfiguration alloc] initWithAnnotationGroups:@[ + [PSPDFAnnotationGroup groupWithItems:@[ + [PSPDFAnnotationGroupItem itemWithType:PSPDFAnnotationStringHighlight], + [PSPDFAnnotationGroupItem itemWithType:PSPDFAnnotationStringUnderline] + ]] + ]]; + + _pdfViewController.annotationToolbarController.annotationToolbar.configurations = @[configuration]; } return self; From a863c33a5fcfca18833084caa07073ae3baac9d6 Mon Sep 17 00:00:00 2001 From: Julius Kato Mutumba Date: Thu, 3 Aug 2023 18:40:43 +0300 Subject: [PATCH 2/3] separate ios tools --- ios/Classes/PspdfPlatformView.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ios/Classes/PspdfPlatformView.m b/ios/Classes/PspdfPlatformView.m index 45fbe929..15d9d14a 100644 --- a/ios/Classes/PspdfPlatformView.m +++ b/ios/Classes/PspdfPlatformView.m @@ -99,6 +99,8 @@ - (instancetype)initWithFrame:(CGRect)frame viewIdentifier:(int64_t)viewId argum PSPDFAnnotationToolbarConfiguration *configuration = [[PSPDFAnnotationToolbarConfiguration alloc] initWithAnnotationGroups:@[ [PSPDFAnnotationGroup groupWithItems:@[ [PSPDFAnnotationGroupItem itemWithType:PSPDFAnnotationStringHighlight], + ]], + [PSPDFAnnotationGroup groupWithItems:@[ [PSPDFAnnotationGroupItem itemWithType:PSPDFAnnotationStringUnderline] ]] ]]; From 1b45d99b2b7224cf9c054f3001fe7941414cec1e Mon Sep 17 00:00:00 2001 From: Erhard Brand Date: Fri, 22 Sep 2023 18:02:58 +0200 Subject: [PATCH 3/3] Add colour picker to Android annotation toolbar and note to both platforms --- .../flutter/pspdfkit/CustomAnnotationToolbarMenu.kt | 6 ++++-- ios/Classes/PspdfPlatformView.m | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/CustomAnnotationToolbarMenu.kt b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/CustomAnnotationToolbarMenu.kt index c27b7ff3..43799deb 100644 --- a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/CustomAnnotationToolbarMenu.kt +++ b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/CustomAnnotationToolbarMenu.kt @@ -7,9 +7,11 @@ import com.pspdfkit.ui.toolbar.grouping.presets.PresetMenuItemGroupingRule class CustomAnnotationToolbarMenu(context: Context) : PresetMenuItemGroupingRule(context) { override fun getGroupPreset(capacity: Int, itemsCount: Int): List { - return listOf( + return listOf( MenuItem(com.pspdfkit.R.id.pspdf__annotation_creation_toolbar_item_highlight), - MenuItem(com.pspdfkit.R.id.pspdf__annotation_creation_toolbar_item_underline) + MenuItem(com.pspdfkit.R.id.pspdf__annotation_creation_toolbar_item_underline), + MenuItem(com.pspdfkit.R.id.pspdf__annotation_creation_toolbar_item_picker), + MenuItem(com.pspdfkit.R.id.pspdf__annotation_creation_toolbar_item_note), ) } } \ No newline at end of file diff --git a/ios/Classes/PspdfPlatformView.m b/ios/Classes/PspdfPlatformView.m index 15d9d14a..39d1a35c 100644 --- a/ios/Classes/PspdfPlatformView.m +++ b/ios/Classes/PspdfPlatformView.m @@ -102,6 +102,9 @@ - (instancetype)initWithFrame:(CGRect)frame viewIdentifier:(int64_t)viewId argum ]], [PSPDFAnnotationGroup groupWithItems:@[ [PSPDFAnnotationGroupItem itemWithType:PSPDFAnnotationStringUnderline] + ]], + [PSPDFAnnotationGroup groupWithItems:@[ + [PSPDFAnnotationGroupItem itemWithType:PSPDFAnnotationStringNote] ]] ]];