source: psi/trunk/libpsi/psiwidgets/fancypopuplist.h

Last change on this file was 2, checked in by dmik, 19 years ago

Imported original Psi 0.10 sources from Affinix

File size: 1.6 KB
Line 
1/*
2 * fancypopuplist.h - the list class to hold all the FancyPopups
3 * Copyright (C) 2003 Michail Pishchagin
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library 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 GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; 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 POPUPLIST_H
22#define POPUPLIST_H
23
24#include <qobject.h>
25#include <qptrlist.h>
26#include "fancypopup.h"
27
28class FancyPopupList : public QObject, public QPtrList<FancyPopup>
29{
30 Q_OBJECT
31
32public:
33 FancyPopupList()
34 {
35 setAutoDelete(true);
36 }
37
38 FancyPopup *last()
39 {
40 if ( !count() )
41 return 0;
42 return QPtrList<FancyPopup>::first();
43 }
44
45 void prepend(const FancyPopup *d)
46 {
47 if ( isEmpty() )
48 emit started();
49
50 connect(d, SIGNAL(destroyed(QObject *)), SLOT(popupDestroyed(QObject *)));
51 QPtrList<FancyPopup>::prepend(d);
52 }
53
54signals:
55 void started();
56 void finished();
57
58private slots:
59 void popupDestroyed(QObject *p)
60 {
61 setAutoDelete(false);
62 remove((FancyPopup *)p);
63 setAutoDelete(true);
64
65 if ( isEmpty() )
66 emit finished();
67 }
68};
69
70#endif
71
Note: See TracBrowser for help on using the repository browser.