Skip to content
This repository was archived by the owner on Feb 9, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
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
14 changes: 14 additions & 0 deletions hover/src/main/java/io/mattcarroll/hover/HoverView.java
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,7 @@ public static HoverView createForView(@NonNull Context context) {
boolean mIsTouchableInWindow;
boolean mIsDebugMode = false;
int mTabSize;
private PositionDock mPositionToHide;
OnExitListener mOnExitListener;
private final Set<OnStateChangeListener> mOnStateChangeListeners = new CopyOnWriteArraySet<>();
private final Set<OnInteractionListener> mOnInteractionListeners = new CopyOnWriteArraySet<>();
Expand Down Expand Up @@ -245,6 +246,19 @@ public void enableDebugMode(boolean debugMode) {
mScreen.enableDrugMode(debugMode);
}

public void setPositionToHide(Point position) {
if (position == null) {
this.mPositionToHide = null;
} else {
this.mPositionToHide = new PositionDock(position);
}
}

@Nullable
public PositionDock getPositionToHide() {
return mPositionToHide;
}

void setState(@NonNull HoverViewState newState, Runnable onStateChanged) {
if (mState != newState) {
if (mState != null) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package io.mattcarroll.hover;

import android.os.Handler;
import android.os.Looper;
import android.support.annotation.NonNull;
import android.util.Log;
import android.view.View;
Expand All @@ -8,17 +10,60 @@ class HoverViewStateHidden extends BaseHoverViewState {

private static final String TAG = "HoverViewStateHidden";

private FloatingTab mSelectedTab;

@Override
public void takeControl(@NonNull final HoverView hoverView, final Runnable onStateChanged) {
super.takeControl(hoverView, onStateChanged);
Log.d(TAG, "Taking control.");
mHoverView.makeUntouchableInWindow();
mHoverView.setVisibility(View.GONE);
mHoverView.clearFocus();

HoverMenu.Section mSelectedSection = mHoverView.mMenu.getSection(mHoverView.mSelectedSectionId);
if (mSelectedSection == null) {
mSelectedSection = mHoverView.mMenu.getSection(0);
}

mSelectedTab = mHoverView.mScreen.getChainedTab(mSelectedSection.getId());
if (mSelectedTab == null) {
mSelectedTab = mHoverView.mScreen.createChainedTab(mSelectedSection);
}

mSelectedTab.shrink();
mSelectedTab.setSelected(true);

final PositionDock positionToHide = mHoverView.getPositionToHide();
if (positionToHide == null) {
mHoverView.setVisibility(View.GONE);
onStateChanged.run();
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제가 코드를 잘 모르는데, onStateChanged가 Null일 가능성은 없을까요?

return;
}

mSelectedTab.setDock(positionToHide);
mSelectedTab.dock(new Runnable() {
@Override
public void run() {
if (!hasControl() || !mHoverView.mIsAddedToWindow) {
return;
}
onStateChanged.run();
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여기도, onStateChanged가 Null일 가능성은 없을까요?

new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
if (mHoverView != null) {
mHoverView.setVisibility(View.GONE);
}
}
}, 50);
}
});
}

@Override
public void giveUpControl(@NonNull HoverViewState nextState) {
Log.d(TAG, "Giving up control.");
mSelectedTab.setSelected(false);
mSelectedTab.expand();
mHoverView.setVisibility(View.VISIBLE);
super.giveUpControl(nextState);
}
Expand Down