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