Skip to content

Commit

Permalink
Merge pull request #347 from PSPDFKit/reinhard/duplicated-back-button
Browse files Browse the repository at this point in the history
Fix two navigation buttons being shown while the search is open
  • Loading branch information
Reinhard Hafenscher authored Feb 12, 2020
2 parents 6841c48 + d22784d commit 59916f7
Showing 1 changed file with 28 additions and 1 deletion.
29 changes: 28 additions & 1 deletion android/src/main/java/com/pspdfkit/views/PdfView.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import com.pspdfkit.forms.ComboBoxFormElement;
import com.pspdfkit.forms.EditableButtonFormElement;
import com.pspdfkit.forms.TextFormElement;
import com.pspdfkit.listeners.OnVisibilityChangedListener;
import com.pspdfkit.listeners.SimpleDocumentListener;
import com.pspdfkit.react.events.PdfViewAnnotationChangedEvent;
import com.pspdfkit.react.events.PdfViewAnnotationTappedEvent;
Expand All @@ -41,6 +42,8 @@
import com.pspdfkit.ui.PdfFragment;
import com.pspdfkit.ui.PdfUiFragment;
import com.pspdfkit.ui.PdfUiFragmentBuilder;
import com.pspdfkit.ui.search.PdfSearchView;
import com.pspdfkit.ui.search.PdfSearchViewInline;
import com.pspdfkit.ui.toolbar.grouping.MenuItemGroupingRule;

import org.json.JSONArray;
Expand Down Expand Up @@ -106,6 +109,11 @@ public class PdfView extends FrameLayout {
/** An internal id we generate so we can track if fragments found belong to this specific PdfView instance. */
private int internalId;

/** We keep track if the navigation button should be shown so we can show it when the inline search view is closed. */
private boolean isNavigationButtonShown = false;
/** We keep track if the inline search view is shown since we don't want to add a second navigation button while it is shown. */
private boolean isSearchViewShown = false;

public PdfView(@NonNull Context context) {
super(context);
init();
Expand Down Expand Up @@ -224,10 +232,13 @@ public void setMenuItemGroupingRule(@NonNull MenuItemGroupingRule groupingRule)
}

public void setShowNavigationButtonInToolbar(final boolean showNavigationButtonInToolbar) {
isNavigationButtonShown = showNavigationButtonInToolbar;
pendingFragmentActions.add(getCurrentPdfUiFragment()
.observeOn(Schedulers.io())
.subscribe(pdfUiFragment -> {
((ReactPdfUiFragment) pdfUiFragment).setShowNavigationButtonInToolbar(showNavigationButtonInToolbar);
if (!isSearchViewShown) {
((ReactPdfUiFragment) pdfUiFragment).setShowNavigationButtonInToolbar(showNavigationButtonInToolbar);
}
}));
}

Expand Down Expand Up @@ -304,6 +315,22 @@ public void onNavigationButtonClicked(@NonNull PdfUiFragment pdfUiFragment) {
}
});

PdfSearchView searchView = pdfUiFragment.getPSPDFKitViews().getSearchView();
if (searchView instanceof PdfSearchViewInline) {
// The inline search view provides its own back button hide ours if it becomes visible.
searchView.addOnVisibilityChangedListener(new OnVisibilityChangedListener() {
@Override
public void onShow(@NonNull View view) {
((ReactPdfUiFragment) pdfUiFragment).setShowNavigationButtonInToolbar(false);
}

@Override
public void onHide(@NonNull View view) {
((ReactPdfUiFragment) pdfUiFragment).setShowNavigationButtonInToolbar(isNavigationButtonShown);
}
});
}

// After attaching the PdfUiFragment we can access the PdfFragment.
preparePdfFragment(pdfUiFragment.getPdfFragment());
}
Expand Down

0 comments on commit 59916f7

Please sign in to comment.