Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix two navigation buttons being shown while the search is open #347

Merged
merged 1 commit into from
Feb 12, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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