2 Copyright (C) 2007 Robert Knight <robertknight@gmail.com>
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the
16 Free Software Foundation, Inc.,
17 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA .
20 #ifndef ABSTRACTGROUPINGSTRATEGY_H
21 #define ABSTRACTGROUPINGSTRATEGY_H
24 * Base class for strategies which can be used to
25 * automatically group tasks.
27 class AbstractGroupingStrategy
30 virtual ~AbstractGroupingStrategy() {};
33 * Specifies a suggested grouping of tasks
39 * Constructs a new GroupSuggestion for @p tasks
40 * with a suggested @p name
42 GroupSuggestion(const QString
&name
,
43 const QSet
<AbstractTaskItem
*> &tasks
);
45 /** A suggested name for the group. */
47 /** The tasks to group. */
48 QSet
<AbstractTaskItem
*> tasks() const;
51 QSet
<AbstractTaskItem
*> _tasks
;
55 * Examines a set of @p tasks and returns a list of
56 * suggested named sub-groups of tasks.
58 * The suggested groups may include all, some or none from the
61 * Sub-classes must re-implement this method to arrange tasks
62 * into groups according to various criteria.
64 virtual QList
<GroupSuggestion
> suggestGroups(const QSet
<AbstractTaskItem
*> tasks
) = 0;