~ubuntu-branches/ubuntu/edgy/psi/edgy

« back to all changes in this revision

Viewing changes to src/tasklist.h

  • Committer: Bazaar Package Importer
  • Author(s): Jan Niehusmann
  • Date: 2004-06-15 00:10:41 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20040615001041-enywb6pcpe4sjsw6
Tags: 0.9.2-1
* New upstream release
* Set KDEDIR for ./configure so kde specific files get installed
* Don't install libpsiwidgets.so. It got installed in /usr/share
  where it doesn't belong. May be included (at a better location)
  later.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/****************************************************************************
 
2
** tasklist.h - A small, but useful Task List
 
3
** Copyright (C) 2003  Michail Pishchagin
 
4
**
 
5
** This program is free software; you can redistribute it and/or
 
6
** modify it under the terms of the GNU General Public License
 
7
** as published by the Free Software Foundation; either version 2
 
8
** of the License, or (at your option) any later version.
 
9
**
 
10
** This program is distributed in the hope that it will be useful,
 
11
** but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
** GNU General Public License for more details.
 
14
**
 
15
** You should have received a copy of the GNU General Public License
 
16
** along with this program; if not, write to the Free Software
 
17
** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
 
18
**
 
19
****************************************************************************/
 
20
 
 
21
#ifndef TASKLIST_H
 
22
#define TASKLIST_H
 
23
 
 
24
#include <qobject.h>
 
25
#include <qptrlist.h>
 
26
 
 
27
#include "im.h"
 
28
using namespace XMPP;
 
29
 
 
30
//----------------------------------------------------------------------------
 
31
// TaskList -- read some comments inline
 
32
//----------------------------------------------------------------------------
 
33
 
 
34
class TaskList : public QObject, public QPtrList<Task>
 
35
{
 
36
        Q_OBJECT
 
37
 
 
38
public:
 
39
        TaskList()
 
40
        {
 
41
                setAutoDelete(true);
 
42
        }
 
43
 
 
44
        void append(const Task *d)
 
45
        {
 
46
                if ( isEmpty() )
 
47
                        emit started();
 
48
 
 
49
                connect(d, SIGNAL(destroyed(QObject *)), SLOT(taskDestroyed(QObject *)));
 
50
                QPtrList<Task>::append(d);
 
51
        }
 
52
 
 
53
signals:
 
54
        // started() is emitted, when TaskList doesn't have any tasks in it,
 
55
        // and append() is called, indicating, that TaskList contains at least one
 
56
        // running Task
 
57
        void started();
 
58
 
 
59
        // finished() is emitted when TaskList contains one Task, and it suddenly
 
60
        // terminates, indicating, that TaskList is empty now
 
61
        void finished();
 
62
 
 
63
private slots:
 
64
        void taskDestroyed(QObject *p)
 
65
        {
 
66
                setAutoDelete(false);
 
67
                remove((Task *)p);
 
68
                setAutoDelete(true);
 
69
 
 
70
                if ( isEmpty() )
 
71
                        emit finished();
 
72
        }
 
73
};
 
74
 
 
75
#endif