From 2bda8f7717adf28da4af0d34fb82f63d2868c31d Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeutils@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- ksim/baselist.h | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 ksim/baselist.h (limited to 'ksim/baselist.h') diff --git a/ksim/baselist.h b/ksim/baselist.h new file mode 100644 index 0000000..b55ab3b --- /dev/null +++ b/ksim/baselist.h @@ -0,0 +1,97 @@ +/* ksim - a system monitor for kde + * + * Copyright (C) 2001 Robbie Ward + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef BASELIST_H +#define BASELIST_H + +#include +#include +#include + +namespace KSim +{ + class BaseList + { + public: + static void add(KSim::Base *object) + { + if (!m_baseList) { + m_baseList = new QPtrList; + m_baseList->setAutoDelete(false); + + // Make sure our m_baseList instance gets + // deleted when KSim exits + qAddPostRoutine(cleanup); + } + + if (!object) + return; + + m_baseList->append(object); + } + + static bool remove(KSim::Base *object) + { + if (!m_baseList) + return false; + + // Find our object and remove it from the list + if (m_baseList->findRef(object) >= 0) + return m_baseList->remove(); + + return false; + } + + static void configureObjects(bool themeChanged) + { + if (!m_baseList) + return; + + QPtrListIterator object(*m_baseList); + for (; object.current(); ++object) { + // Call processEvents() so our ui doesn't block + if (!object.current()->isThemeConfigOnly() || themeChanged) { + qApp->processEvents(); + object.current()->configureObject(true); + } + } + } + + private: + // Protect the class from being able to be created/deleted + BaseList(); + BaseList(const BaseList &); + BaseList &operator=(const BaseList &); + ~BaseList(); + + static void cleanup() + { + if (!m_baseList) + return; + + delete m_baseList; + m_baseList = 0L; + } + + static QPtrList *m_baseList; + }; + + QPtrList *BaseList::m_baseList = 0L; +} +#endif // BASELIST_H -- cgit v1.2.1