/** Returns whether the clings are enabled or should be shown */
  private boolean areClingsEnabled() {
    if (DISABLE_CLINGS) {
      return false;
    }

    // disable clings when running in a test harness
    if (ActivityManager.isRunningInTestHarness()) return false;

    // Disable clings for accessibility when explore by touch is enabled
    final AccessibilityManager a11yManager =
        (AccessibilityManager) mLauncher.getSystemService(Launcher.ACCESSIBILITY_SERVICE);
    if (a11yManager.isTouchExplorationEnabled()) {
      return false;
    }

    // Restricted secondary users (child mode) will potentially have very few apps
    // seeded when they start up for the first time. Clings won't work well with that
    boolean supportsLimitedUsers =
        android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR2;
    Account[] accounts = AccountManager.get(mLauncher).getAccounts();
    if (supportsLimitedUsers && accounts.length == 0) {
      UserManager um = (UserManager) mLauncher.getSystemService(Context.USER_SERVICE);
      Bundle restrictions = um.getUserRestrictions();
      if (restrictions.getBoolean(UserManager.DISALLOW_MODIFY_ACCOUNTS, false)) {
        return false;
      }
    }
    if (Settings.Secure.getInt(mLauncher.getContentResolver(), SKIP_FIRST_USE_HINTS, 0) == 1) {
      return false;
    }
    return true;
  }
示例#2
0
  private void deleteFromWorkspace(DragSource source, ItemInfo item) {
    // TODO Auto-generated method stub
    if (item.container == Favorites.CONTAINER_DESKTOP) {
      if (item instanceof LauncherAppWidgetInfo) {
        mLauncher.removeAppWidget((LauncherAppWidgetInfo) item);
      } else if (item instanceof CustomAppWidgetInfo) {
        if (((CustomAppWidgetInfo) item).itemType == Favorites.ITEM_TYPE_WIDGET_LOCK_SCREEN) {
          final ContentResolver cr = mLauncher.getContentResolver();
          final String where =
              BaseLauncherColumns.ITEM_TYPE + "=" + Favorites.ITEM_TYPE_WIDGET_LOCK_SCREEN;
          Cursor c = cr.query(Favorites.CONTENT_URI, null, where, null, null);
          // should remove administration when no more LOCK_SCREEN
          // widget displayed in launcher
          if (c.getCount() <= 1) {
            LockScreenUtil.getInstance(mLauncher).removeAdmin();
          }
        }
      }
    } else {
      if (source instanceof UserFolder) {
        final UserFolder userFolder = (UserFolder) source;
        final FolderInfo folderInfo = userFolder.getInfo();
        if (folderInfo instanceof UserFolderInfo) {
          // Item must be a ShortcutInfo otherwise it couldn't have
          // been in the folder
          // in the first place.
          if (item instanceof ShortcutInfo && item.container == folderInfo.id) {
            mLauncher.removeItemFromFolder((ShortcutInfo) item);
          }
        }
      }
    }
    if (item instanceof UserFolderInfo) {
      final UserFolderInfo userFolderInfo = (UserFolderInfo) item;
      if (userFolderInfo.contents.size() > 0) {
        Toast.makeText(mLauncher, R.string.folder_is_not_empty, Toast.LENGTH_SHORT).show();
        return;
      }

      LauncherModel.deleteUserFolderContentsFromDatabase(mLauncher, userFolderInfo);
      mLauncher.removeFolder(userFolderInfo);
    } else if (item instanceof LauncherAppWidgetInfo) {
      final LauncherAppWidgetInfo launcherAppWidgetInfo = (LauncherAppWidgetInfo) item;
      final LauncherAppWidgetHost appWidgetHost = mLauncher.getAppWidgetHost();
      if (appWidgetHost != null) {
        appWidgetHost.deleteAppWidgetId(launcherAppWidgetInfo.appWidgetId);
      }
      mLauncher.getWorkspace().forceToDeleteWidget((long) launcherAppWidgetInfo.appWidgetId);
    } else if (item instanceof CustomAppWidgetInfo) {
      mLauncher.getWorkspace().forceToDeleteWidget(((CustomAppWidgetInfo) item).id);
    }
    LauncherModel.deleteItemFromDatabase(mLauncher, item);
  }