TaskGrouping.java revision a433fa9c17772f563163ff7db177d091d6aebd5b
1package com.android.systemui.recents.model; 2 3import java.util.ArrayList; 4import java.util.HashMap; 5 6/** Represents a grouping of tasks witihin a stack. */ 7public class TaskGrouping { 8 9 String affiliation; 10 long latestActiveTimeInGroup; 11 12 ArrayList<Task.TaskKey> mTasks = new ArrayList<Task.TaskKey>(); 13 HashMap<Task.TaskKey, Integer> mTaskIndices = new HashMap<Task.TaskKey, Integer>(); 14 15 /** Creates a group with a specified affiliation. */ 16 public TaskGrouping(String affiliation) { 17 this.affiliation = affiliation; 18 } 19 20 /** Adds a new task to this group. */ 21 void addTask(Task t) { 22 mTasks.add(t.key); 23 if (t.key.lastActiveTime > latestActiveTimeInGroup) { 24 latestActiveTimeInGroup = t.key.lastActiveTime; 25 } 26 t.setGroup(this); 27 updateTaskIndices(); 28 } 29 30 /** Removes a task from this group. */ 31 void removeTask(Task t) { 32 mTasks.remove(t.key); 33 latestActiveTimeInGroup = 0; 34 int taskCount = mTasks.size(); 35 for (int i = 0; i < taskCount; i++) { 36 long lastActiveTime = mTasks.get(i).lastActiveTime; 37 if (lastActiveTime > latestActiveTimeInGroup) { 38 latestActiveTimeInGroup = lastActiveTime; 39 } 40 } 41 t.setGroup(null); 42 updateTaskIndices(); 43 } 44 45 /** Gets the front task */ 46 public boolean isFrontMostTask(Task t) { 47 return t.key.equals(mTasks.get(mTasks.size() - 1)); 48 } 49 50 /** Finds the index of a given task in a group. */ 51 public int indexOf(Task t) { 52 return mTaskIndices.get(t.key); 53 } 54 55 /** Returns the number of tasks in this group. */ 56 public int getTaskCount() { return mTasks.size(); } 57 58 /** Updates the mapping of tasks to indices. */ 59 private void updateTaskIndices() { 60 mTaskIndices.clear(); 61 int taskCount = mTasks.size(); 62 for (int i = 0; i < taskCount; i++) { 63 Task.TaskKey k = mTasks.get(i); 64 mTaskIndices.put(k, i); 65 } 66 } 67} 68