Beispiel #1
0
  /** Set/get the bsp root node */
  public void setTaskStacks(ArrayList<TaskStack> stacks) {
    Log.d(TAG, "setTaskStacks: ");
    int numStacks = stacks.size();

    // Remove all/extra stack views
    int numTaskStacksToKeep = 0; // Keep no tasks if we are recreating the layout
    if (mConfig.launchedReuseTaskStackViews) {
      numTaskStacksToKeep = Math.min(mTaskStackViews.size(), numStacks);
    }
    for (int i = mTaskStackViews.size() - 1; i >= numTaskStacksToKeep; i--) {
      removeView(mTaskStackViews.remove(i));
    }

    // Update the stack views that we are keeping
    for (int i = 0; i < numTaskStacksToKeep; i++) {
      TaskStackView tsv = mTaskStackViews.get(i);
      // If onRecentsHidden is not triggered, we need to the stack view again here
      tsv.reset();
      tsv.setStack(stacks.get(i));
    }

    // Add remaining/recreate stack views
    mStacks = stacks;
    for (int i = mTaskStackViews.size(); i < numStacks; i++) {
      TaskStack stack = stacks.get(i);
      TaskStackView stackView = new TaskStackView(getContext(), stack);
      stackView.setCallbacks(this);
      addView(stackView);
      mTaskStackViews.add(stackView);
    }

    // Enable debug mode drawing on all the stacks if necessary
    if (mConfig.debugModeEnabled) {
      for (int i = mTaskStackViews.size() - 1; i >= 0; i--) {
        TaskStackView stackView = mTaskStackViews.get(i);
        stackView.setDebugOverlay(mDebugOverlay);
      }
    }

    // Trigger a new layout
    requestLayout();
  }