Make a branch to make krunner Good Enough For Aaron™.
[kdebase/uwolfer.git] / workspace / plasma / applets / tasks / future / abstractgroupingstrategy.h
blobf287222904c27ec272538b14d2d61b0ac8f58c9a
1 /*
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
23 /**
24 * Base class for strategies which can be used to
25 * automatically group tasks.
27 class AbstractGroupingStrategy
29 public:
30 virtual ~AbstractGroupingStrategy() {};
32 /**
33 * Specifies a suggested grouping of tasks
35 class GroupSuggestion
37 public:
38 /**
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. */
46 QString name() const;
47 /** The tasks to group. */
48 QSet<AbstractTaskItem*> tasks() const;
49 private:
50 QString _name;
51 QSet<AbstractTaskItem*> _tasks;
54 /**
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
59 * @p tasks set.
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;
67 #endif