Skip to content

Commit c982eda

Browse files
darrenchanngithub-actions[bot]dluco
authored
Add ability to add custom buttons to application navigation bar (#266)
* initial implementation added config KEY_CONFIG_CUSTOM_APP_NAV_BAR(android) and PTCustomAppNavBarKey(iOS) dart implementation as well * dart implementation changed to customTopToolbar in dart for clarity of what's being implemented * updated config.dart no more needed customTopToolbar (there is topAppRightNavBar) * added android partial implementation added rightbaritems and plugin utils, initial implementation of custom item added to android app bar removed some ios classes due to having available api * iOS implementation of customToolbarItems in topnavbarrightbar * Updating package version * fixed some naming conventions in applyViewerSettings fixed some naming conventions in applyViewerSettings * Updating pubspec.yaml * Updating package version * removed random blank lines and removed empty class button also removed commented code and fixed return on getter of getAppNavBarRightBarItems() * Updating pubspec.yaml * Updating package version * hygen generated appBarButtonPressed eventlistener * Updating pubspec.yaml * Updating package version * handleAppBarButtonItemPressed w/ event sink android side of handling app bar button event pressed * Updating pubspec.yaml * Updating package version * iOS appbarbutton event sink changes * Updating pubspec.yaml * Updating package version * update config.dart * Updating package version * handle orientation bug * Updating package version * Updating pubspec.yaml * Updating package version * ios naming to seperate barButtonItems and appBarButtonItems * Updating pubspec.yaml * Updating package version * unified function for handling custom app bar button unified function for handling custom app bar button * Updating pubspec.yaml * Updating package version * update handleCustomAppBarButton visibility change to private * Updating pubspec.yaml * Updating package version * Set tag on bar button item * Updating package version * Updating pubspec.yaml * Updating package version * formatting fix blank spaces * Updating pubspec.yaml * Updating package version Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: dluco <[email protected]>
1 parent 7d2436e commit c982eda

18 files changed

+330
-37
lines changed

.dart_tool/version

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.0.5
1+
3.3.2

android/src/main/java/com/pdftron/pdftronflutter/FlutterDocumentActivity.java

+25
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import android.content.Context;
44
import android.content.Intent;
5+
import android.content.res.Configuration;
56
import android.net.Uri;
67
import android.os.Bundle;
78
import android.view.MenuItem;
@@ -38,6 +39,7 @@
3839
import io.flutter.plugin.common.MethodChannel.Result;
3940

4041
import static com.pdftron.pdftronflutter.helpers.PluginUtils.handleAnnotationCustomToolbarItemPressed;
42+
import static com.pdftron.pdftronflutter.helpers.PluginUtils.handleAppBarButtonPressed;
4143
import static com.pdftron.pdftronflutter.helpers.PluginUtils.handleLeadingNavButtonPressed;
4244

4345
public class FlutterDocumentActivity extends DocumentActivity implements ViewerComponent {
@@ -86,6 +88,7 @@ public class FlutterDocumentActivity extends DocumentActivity implements ViewerC
8688
private static AtomicReference<EventSink> sScrollChangedEventEmitter = new AtomicReference<>();
8789

8890
// Hygen Generated Event Listeners (1)
91+
private static AtomicReference<EventSink> sAppBarButtonPressedEventEmitter = new AtomicReference<>();
8992

9093
private static HashMap<Annot, Integer> mSelectedAnnots;
9194

@@ -259,6 +262,10 @@ public static void setScrollChangedEventEmitter(EventSink emitter) {
259262
}
260263

261264
// Hygen Generated Event Listeners (2)
265+
public static void setAppBarButtonPressedEventEmitter(EventSink emitter) {
266+
sAppBarButtonPressedEventEmitter.set(emitter);
267+
}
268+
262269

263270
public static void setFlutterLoadResult(Result result) {
264271
sFlutterLoadResult.set(result);
@@ -346,6 +353,11 @@ public EventSink getAnnotationToolbarItemPressedEventEmitter() {
346353
public EventSink getScrollChangedEventEmitter() { return sScrollChangedEventEmitter.get(); }
347354

348355
// Hygen Generated Event Listeners (3)
356+
@Override
357+
public EventSink getAppBarButtonPressedEventEmitter() {
358+
return sAppBarButtonPressedEventEmitter.get();
359+
}
360+
349361

350362
@Override
351363
public Result getFlutterLoadResult() {
@@ -387,13 +399,24 @@ public ArrayList<String> getAnnotationMenuOverrideItems() {
387399
return mAnnotationMenuOverrideItems;
388400
}
389401

402+
@Override
403+
public ArrayList<String> getAppNavRightBarItems() {
404+
return new ArrayList<>();
405+
}
406+
390407
@Override
391408
protected void onCreate(@Nullable Bundle savedInstanceState) {
392409
super.onCreate(savedInstanceState);
393410

394411
attachActivity();
395412
}
396413

414+
@Override
415+
public void onConfigurationChanged(@NonNull Configuration newConfig) {
416+
PluginUtils.handleOnConfigurationChanged(this);
417+
super.onConfigurationChanged(newConfig);
418+
}
419+
397420
@Override
398421
protected void onDestroy() {
399422
PluginUtils.handleOnDetach(this);
@@ -417,6 +440,7 @@ protected void onDestroy() {
417440
sScrollChangedEventEmitter.set(null);
418441

419442
// Hygen Generated Event Listeners (4)
443+
sAppBarButtonPressedEventEmitter.set(null);
420444

421445
detachActivity();
422446
}
@@ -468,6 +492,7 @@ public void onNavButtonPressed() {
468492
@Override
469493
public boolean onToolbarOptionsItemSelected(MenuItem item) {
470494
handleAnnotationCustomToolbarItemPressed(this, item);
495+
handleAppBarButtonPressed(this, item);
471496
return super.onToolbarOptionsItemSelected(item);
472497
}
473498

android/src/main/java/com/pdftron/pdftronflutter/FlutterDocumentView.java

+13
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import static com.pdftron.pdftronflutter.helpers.PluginUtils.EVENT_ANNOTATION_TOOLBAR_ITEM_PRESSED;
3434

3535
// Hygen Generated Event Listeners (1)
36+
import static com.pdftron.pdftronflutter.helpers.PluginUtils.EVENT_APP_BAR_BUTTON_PRESSED;
3637

3738
import static com.pdftron.pdftronflutter.helpers.PluginUtils.FUNCTION_OPEN_DOCUMENT;
3839
import static com.pdftron.pdftronflutter.helpers.PluginUtils.FUNCTION_SET_LEADING_NAV_BUTTON_ICON;
@@ -272,6 +273,18 @@ public void onCancel(Object arguments) {
272273
});
273274

274275
// Hygen Generated Event Listeners (2)
276+
final EventChannel appBarButtonPressedEventChannel = new EventChannel(messenger, EVENT_APP_BAR_BUTTON_PRESSED);
277+
appBarButtonPressedEventChannel.setStreamHandler(new EventChannel.StreamHandler() {
278+
@Override
279+
public void onListen(Object arguments, EventChannel.EventSink emitter) {
280+
documentView.setAppBarButtonPressedEventEmitter(emitter);
281+
}
282+
283+
@Override
284+
public void onCancel(Object arguments) {
285+
documentView.setAppBarButtonPressedEventEmitter(null);
286+
}
287+
});
275288
}
276289

277290
@Override

android/src/main/java/com/pdftron/pdftronflutter/helpers/PluginMethodCallHandler.java

+15
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
1313
import io.flutter.plugin.common.MethodChannel.Result;
1414

15+
import static com.pdftron.pdftronflutter.helpers.PluginUtils.EVENT_APP_BAR_BUTTON_PRESSED;
1516
import static com.pdftron.pdftronflutter.helpers.PluginUtils.EVENT_SCROLL_CHANGED;
1617
import static com.pdftron.pdftronflutter.helpers.PluginUtils.FUNCTION_GET_PLATFORM_VERSION;
1718
import static com.pdftron.pdftronflutter.helpers.PluginUtils.FUNCTION_GET_VERSION;
@@ -257,6 +258,20 @@ public void onCancel(Object arguments) {
257258
FlutterDocumentActivity.setScrollChangedEventEmitter(null);
258259
}
259260
});
261+
262+
final EventChannel appBarButtonPressedPressedEventChannel = new EventChannel(messenger,
263+
EVENT_APP_BAR_BUTTON_PRESSED);
264+
appBarButtonPressedPressedEventChannel.setStreamHandler(new EventChannel.StreamHandler() {
265+
@Override
266+
public void onListen(Object arguments, EventChannel.EventSink emitter) {
267+
FlutterDocumentActivity.setAppBarButtonPressedEventEmitter(emitter);
268+
}
269+
270+
@Override
271+
public void onCancel(Object arguments) {
272+
FlutterDocumentActivity.setAppBarButtonPressedEventEmitter(null);
273+
}
274+
});
260275
}
261276

262277
@Override

0 commit comments

Comments
 (0)