Skip to content

Commit

Permalink
Fix sliding in man page view fragment
Browse files Browse the repository at this point in the history
  • Loading branch information
Kaned1as committed Apr 3, 2016
1 parent baf4106 commit e29cca5
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 8 deletions.
14 changes: 8 additions & 6 deletions app/src/main/java/com/adonai/manman/ManPageDialogFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import com.adonai.manman.entities.ManPage;
import com.adonai.manman.misc.AbstractNetworkAsyncLoader;
import com.adonai.manman.parser.Man2Html;
import com.adonai.manman.views.PassiveSlidingPane;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
Expand Down Expand Up @@ -79,7 +80,7 @@ public class ManPageDialogFragment extends Fragment {
private String mCommandName;

private LinearLayout mLinkContainer;
private SlidingPaneLayout mSlider;
private PassiveSlidingPane mSlider;
private ViewFlipper mFlipper;
private WebView mContent;

Expand Down Expand Up @@ -116,22 +117,23 @@ public void onCreate(Bundle savedInstanceState) {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
setHasOptionsMenu(true);

View root = inflater.inflate(R.layout.fragment_man_page_show, container, false);
mLinkContainer = (LinearLayout) root.findViewById(R.id.link_list);
mSlider = (SlidingPaneLayout) root.findViewById(R.id.sliding_pane);
mFlipper = (ViewFlipper) root.findViewById(R.id.flipper);
mContent = (WebView) root.findViewById(R.id.man_content_web);
mContent.setWebViewClient(new ManPageChromeClient());
mContent.getSettings().setJavaScriptEnabled(true);

mSlider = (PassiveSlidingPane) root.findViewById(R.id.sliding_pane);
mSlider.setTrackedView(mContent);

// search-specific
mSearchContainer = (LinearLayout) root.findViewById(R.id.search_bar_layout);
mSearchEdit = (EditText) mSearchContainer.findViewById(R.id.search_edit);
mCloseSearchBar = (ImageView) mSearchContainer.findViewById(R.id.close_search_bar);
mFindNext = (ImageView) mSearchContainer.findViewById(R.id.find_next_occurrence);
mFindPrevious = (ImageView) mSearchContainer.findViewById(R.id.find_previous_occurrence);

mCloseSearchBar.setOnClickListener(new SearchBarCloser());
mSearchEdit.addTextChangedListener(new SearchExecutor());
mFindNext.setOnClickListener(new SearchFurtherExecutor(true));
Expand All @@ -152,7 +154,7 @@ public void onResume() {
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mContent.getWindowToken(), 0);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import android.support.v4.widget.SlidingPaneLayout;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

/**
* Extension for sliding pane layout class
Expand All @@ -15,6 +16,8 @@ public class PassiveSlidingPane extends SlidingPaneLayout {

private static final int LEFT = -1;

private View mTrackedView;

public PassiveSlidingPane(Context context) {
super(context);
init();
Expand All @@ -33,12 +36,16 @@ public PassiveSlidingPane(Context context, AttributeSet attrs, int defStyle) {
private void init() {
}

public void setTrackedView(View v) {
mTrackedView = v;
}

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if(isOpen()) // we're open, do whatever we want
return super.onInterceptTouchEvent(ev);
else if(getChildCount() > 1) {
if (getChildAt(1).canScrollHorizontally(LEFT)) { // if we can scroll left in child, don't even try to open pane!
else if(mTrackedView != null) {
if (mTrackedView.canScrollHorizontally(LEFT)) { // if we can scroll left in child, don't even try to open pane!
return false;
}
}
Expand Down

0 comments on commit e29cca5

Please sign in to comment.