Fixing issue with overview panel buttons.

Bug: 22699895
Change-Id: I8a2f05a6008343327e34cbd3169e4056729e0b75
This commit is contained in:
Winson
2015-10-13 10:47:51 -07:00
parent a295048a69
commit e9f2727385
+85 -52
View File
@@ -46,7 +46,6 @@ import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
@@ -1268,7 +1267,7 @@ public class Launcher extends Activity
if (mState == State.WORKSPACE && !mWorkspace.isInOverviewMode() &&
!mWorkspace.isSwitchingState()) {
mOverviewPanel.requestFocus();
showOverviewMode(true);
showOverviewMode(true, true /* requestButtonFocus */);
}
}
return true;
@@ -1370,55 +1369,8 @@ public class Launcher extends Activity
mHotseat.setOnLongClickListener(this);
}
mOverviewPanel = (ViewGroup) findViewById(R.id.overview_panel);
// Long-clicking buttons in the overview panel does the same thing as clicking them.
OnLongClickListener performClickOnLongClick = new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
return v.performClick();
}
};
mWidgetsButton = findViewById(R.id.widget_button);
mWidgetsButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if (!mWorkspace.isSwitchingState()) {
onClickAddWidgetButton(view);
}
}
});
mWidgetsButton.setOnLongClickListener(performClickOnLongClick);
mWidgetsButton.setOnTouchListener(getHapticFeedbackTouchListener());
View wallpaperButton = findViewById(R.id.wallpaper_button);
wallpaperButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if (!mWorkspace.isSwitchingState()) {
onClickWallpaperPicker(view);
}
}
});
wallpaperButton.setOnLongClickListener(performClickOnLongClick);
wallpaperButton.setOnTouchListener(getHapticFeedbackTouchListener());
View settingsButton = findViewById(R.id.settings_button);
if (hasSettings()) {
settingsButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if (!mWorkspace.isSwitchingState()) {
onClickSettingsButton(view);
}
}
});
settingsButton.setOnLongClickListener(performClickOnLongClick);
settingsButton.setOnTouchListener(getHapticFeedbackTouchListener());
} else {
settingsButton.setVisibility(View.GONE);
}
mOverviewPanel.setAlpha(0f);
// Setup the overview panel
setupOverviewPanel();
// Setup the workspace
mWorkspace.setHapticFeedbackEnabled(false);
@@ -1454,6 +1406,64 @@ public class Launcher extends Activity
}
}
private void setupOverviewPanel() {
mOverviewPanel = (ViewGroup) findViewById(R.id.overview_panel);
// Long-clicking buttons in the overview panel does the same thing as clicking them.
OnLongClickListener performClickOnLongClick = new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
return v.performClick();
}
};
// Bind wallpaper button actions
View wallpaperButton = findViewById(R.id.wallpaper_button);
wallpaperButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if (!mWorkspace.isSwitchingState()) {
onClickWallpaperPicker(view);
}
}
});
wallpaperButton.setOnLongClickListener(performClickOnLongClick);
wallpaperButton.setOnTouchListener(getHapticFeedbackTouchListener());
// Bind widget button actions
mWidgetsButton = findViewById(R.id.widget_button);
mWidgetsButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if (!mWorkspace.isSwitchingState()) {
onClickAddWidgetButton(view);
}
}
});
mWidgetsButton.setOnLongClickListener(performClickOnLongClick);
mWidgetsButton.setOnTouchListener(getHapticFeedbackTouchListener());
// Bind settings actions
View settingsButton = findViewById(R.id.settings_button);
boolean hasSettings = hasSettings();
if (hasSettings) {
settingsButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if (!mWorkspace.isSwitchingState()) {
onClickSettingsButton(view);
}
}
});
settingsButton.setOnLongClickListener(performClickOnLongClick);
settingsButton.setOnTouchListener(getHapticFeedbackTouchListener());
} else {
settingsButton.setVisibility(View.GONE);
}
mOverviewPanel.setAlpha(0f);
}
/**
* Sets the all apps button. This method is called from {@link Hotseat}.
*/
@@ -3352,12 +3362,35 @@ public class Launcher extends Activity
return changed;
}
/**
* Shows the overview button.
*/
void showOverviewMode(boolean animated) {
showOverviewMode(animated, false);
}
/**
* Shows the overview button, and if {@param requestButtonFocus} is set, will force the focus
* onto one of the overview panel buttons.
*/
void showOverviewMode(boolean animated, boolean requestButtonFocus) {
Runnable postAnimRunnable = null;
if (requestButtonFocus) {
postAnimRunnable = new Runnable() {
@Override
public void run() {
// Hitting the menu button when in touch mode does not trigger touch mode to
// be disabled, so if requested, force focus on one of the overview panel
// buttons.
mOverviewPanel.requestFocusFromTouch();
}
};
}
mWorkspace.setVisibility(View.VISIBLE);
mStateTransitionAnimation.startAnimationToWorkspace(mState, mWorkspace.getState(),
Workspace.State.OVERVIEW,
WorkspaceStateTransitionAnimation.SCROLL_TO_CURRENT_PAGE, animated,
null /* onCompleteRunnable */);
postAnimRunnable);
mState = State.WORKSPACE;
}