summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher2/Launcher.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher2/Launcher.java')
-rw-r--r--src/com/android/launcher2/Launcher.java53
1 files changed, 52 insertions, 1 deletions
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index a0601e0..41fb185 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -40,6 +40,7 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
@@ -72,8 +73,8 @@ import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.Surface;
import android.view.View;
-import android.view.ViewGroup;
import android.view.View.OnLongClickListener;
+import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import android.view.animation.DecelerateInterpolator;
import android.view.inputmethod.InputMethodManager;
@@ -155,6 +156,7 @@ public final class Launcher extends Activity
static final int APPWIDGET_HOST_ID = 1024;
private static final int EXIT_SPRINGLOADED_MODE_SHORT_TIMEOUT = 300;
private static final int EXIT_SPRINGLOADED_MODE_LONG_TIMEOUT = 600;
+ private static final int DISMISS_CLING_DURATION = 300;
private static final Object sLock = new Object();
private static int sScreen = DEFAULT_SCREEN;
@@ -264,6 +266,7 @@ public final class Launcher extends Activity
checkForLocaleChange();
setContentView(R.layout.launcher);
setupViews();
+ enableClingsIfNecessary();
registerContentObservers();
@@ -2960,6 +2963,54 @@ public final class Launcher extends Activity
}, mRestoreScreenOrientationDelay);
}
+ /* Cling related */
+ private static final String WORKSPACE_CLING_DISMISSED_KEY = "cling.workspace.dismissed";
+ private static final String ALLAPPS_CLING_DISMISSED_KEY = "cling.allapps.dismissed";
+ private void enableClingsIfNecessary() {
+ // TEMPORARY: DISABLE CLINGS ON LARGE UI
+ if (LauncherApplication.isScreenLarge()) return;
+
+ // Enable the clings only if they have not been dismissed before
+ SharedPreferences prefs =
+ getSharedPreferences("com.android.launcher2.prefs", Context.MODE_PRIVATE);
+ if (!prefs.getBoolean(WORKSPACE_CLING_DISMISSED_KEY, false)) {
+ Cling cling = (Cling) findViewById(R.id.workspace_cling);
+ cling.init(this);
+ cling.setVisibility(View.VISIBLE);
+ }
+ if (!prefs.getBoolean(ALLAPPS_CLING_DISMISSED_KEY, false)) {
+ Cling cling = (Cling) findViewById(R.id.all_apps_cling);
+ cling.init(this);
+ cling.setVisibility(View.VISIBLE);
+ }
+ }
+ private void dismissCling(final Cling cling, final String flag) {
+ if (cling != null) {
+ ObjectAnimator anim = ObjectAnimator.ofFloat(cling, "alpha", 0f);
+ anim.setDuration(DISMISS_CLING_DURATION);
+ anim.addListener(new AnimatorListenerAdapter() {
+ public void onAnimationEnd(Animator animation) {
+ cling.setVisibility(View.GONE);
+ cling.cleanup();
+ SharedPreferences prefs =
+ getSharedPreferences("com.android.launcher2.prefs", Context.MODE_PRIVATE);
+ SharedPreferences.Editor editor = prefs.edit();
+ editor.putBoolean(flag, true);
+ editor.commit();
+ };
+ });
+ anim.start();
+ }
+ }
+ public void dismissWorkspaceCling(View v) {
+ Cling cling = (Cling) findViewById(R.id.workspace_cling);
+ dismissCling(cling, WORKSPACE_CLING_DISMISSED_KEY);
+ }
+ public void dismissAllAppsCling(View v) {
+ Cling cling = (Cling) findViewById(R.id.all_apps_cling);
+ dismissCling(cling, ALLAPPS_CLING_DISMISSED_KEY);
+ }
+
/**
* Prints out out state for debugging.
*/