author | zecke <zecke> | 2003-08-28 14:48:13 (UTC) |
---|---|---|
committer | zecke <zecke> | 2003-08-28 14:48:13 (UTC) |
commit | 6ae5aaad2dec2470940f83f1e8629aec48f284a7 (patch) (side-by-side diff) | |
tree | 4b8c3c19351966849c591a855473043448cd5d48 | |
parent | e284d63306cd3b00baff8e464a8eaf2eb64ea49a (diff) | |
download | opie-6ae5aaad2dec2470940f83f1e8629aec48f284a7.zip opie-6ae5aaad2dec2470940f83f1e8629aec48f284a7.tar.gz opie-6ae5aaad2dec2470940f83f1e8629aec48f284a7.tar.bz2 |
Plugin loading changes
-rw-r--r-- | core/launcher/systray.cpp | 64 | ||||
-rw-r--r-- | core/launcher/systray.h | 12 |
2 files changed, 32 insertions, 44 deletions
diff --git a/core/launcher/systray.cpp b/core/launcher/systray.cpp index be55791..64356ca 100644 --- a/core/launcher/systray.cpp +++ b/core/launcher/systray.cpp @@ -1,153 +1,141 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ -#include <qpe/qpeapplication.h> -#include <qpe/qlibrary.h> -#include <qpe/config.h> +#include <qtopia/qpeapplication.h> +#include <qtopia/qlibrary.h> +#include <qtopia/config.h> #include <qlayout.h> #include <qdir.h> +#include <qmessagebox.h> #include <qtranslator.h> -#include "quicklauncher.h" #include "systray.h" #include <stdlib.h> -#ifdef SINGLE_APP -#include "clockappletimpl.h" +/* ### Single build floppies ### */ +#if 0 +#ifdef QT_NO_COMPONENTS +#include "../plugins/applets/clockapplet/clockappletimpl.h" +#endif #endif SysTray::SysTray( QWidget *parent ) : QFrame( parent ), layout(0) { - safety_tid = 0; //setFrameStyle( QFrame::Panel | QFrame::Sunken ); loadApplets(); } +SysTray::~SysTray() +{ + clearApplets(); +} + static int compareAppletPositions(const void *a, const void *b) { const TaskbarApplet* aa = *(const TaskbarApplet**)a; const TaskbarApplet* ab = *(const TaskbarApplet**)b; int d = ab->iface->position() - aa->iface->position(); if ( d ) return d; - return QString::compare(ab->library->library(),aa->library->library()); + return QString::compare(ab->name,aa->name); } void SysTray::loadApplets() { + hide(); clearApplets(); addApplets(); } void SysTray::clearApplets() { - hide(); -#ifndef SINGLE_APP +#ifndef QT_NO_COMPONENTS + QValueList<TaskbarApplet>::Iterator mit; for ( mit = appletList.begin(); mit != appletList.end(); ++mit ) { (*mit).iface->release(); (*mit).library->unload(); delete (*mit).library; } + #endif appletList.clear(); if ( layout ) delete layout; layout = new QHBoxLayout( this, 0, 1 ); layout->setAutoAdd(TRUE); } void SysTray::addApplets() { -#ifndef SINGLE_APP + hide(); +#ifndef QT_NO_COMPONENTS Config cfg( "Taskbar" ); cfg.setGroup( "Applets" ); - - // SafeMode causes too much problems, so we disable it for now -- - // maybe we should reenable it for OPIE 1.0 - sandman 26.09.02 - - bool safe = false; //cfg.readBoolEntry("SafeMode",FALSE); - if ( safe && !safety_tid ) - return; - cfg.writeEntry("SafeMode",TRUE); - cfg.write(); QStringList exclude = cfg.readListEntry( "ExcludeApplets", ',' ); QString lang = getenv( "LANG" ); QString path = QPEApplication::qpeDir() + "/plugins/applets"; QDir dir( path, "lib*.so" ); QStringList list = dir.entryList(); QStringList::Iterator it; int napplets=0; TaskbarApplet* *applets = new TaskbarApplet*[list.count()]; for ( it = list.begin(); it != list.end(); ++it ) { if ( exclude.find( *it ) != exclude.end() ) continue; TaskbarAppletInterface *iface = 0; QLibrary *lib = new QLibrary( path + "/" + *it ); if (( lib->queryInterface( IID_TaskbarApplet, (QUnknownInterface**)&iface ) == QS_OK ) && iface ) { TaskbarApplet *applet = new TaskbarApplet; applets[napplets++] = applet; applet->library = lib; applet->iface = iface; QTranslator *trans = new QTranslator(qApp); QString type = (*it).left( (*it).find(".") ); QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/"+type+".qm"; if ( trans->load( tfn )) qApp->installTranslator( trans ); else delete trans; } else { exclude += *it; delete lib; } } cfg.writeEntry( "ExcludeApplets", exclude, ',' ); qsort(applets,napplets,sizeof(applets[0]),compareAppletPositions); while (napplets--) { TaskbarApplet *applet = applets[napplets]; applet->applet = applet->iface->applet( this ); appletList.append(*applet); } delete [] applets; -#else - TaskbarApplet applet; - applet.iface = new ClockAppletImpl(); - applet.applet = applet.iface->applet( this ); - appletList.append( a ); +#else /* ## FIXME single app */ + TaskbarApplet * const applet = new TaskbarApplet(); + applet->iface = new ClockAppletImpl(); + applet->applet = applet->iface->applet( this ); + appletList.append( applet ); #endif show(); - - if ( !safety_tid ) - safety_tid = startTimer(2000); // TT has 5000, but this is a PITA for a developer ;) (sandman) } -void SysTray::timerEvent(QTimerEvent* e) -{ - if ( e->timerId() == safety_tid ) { - Config cfg( "Taskbar" ); - cfg.setGroup( "Applets" ); - cfg.writeEntry( "SafeMode", FALSE ); - killTimer(safety_tid); - safety_tid = 0; - } -} diff --git a/core/launcher/systray.h b/core/launcher/systray.h index 5a6849a..77c581f 100644 --- a/core/launcher/systray.h +++ b/core/launcher/systray.h @@ -1,61 +1,61 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #ifndef __SYSTRAY_H__ #define __SYSTRAY_H__ -#include <qpe/taskbarappletinterface.h> +#ifndef QT_NO_COMPONENT +#include <qtopia/taskbarappletinterface.h> +#endif #include <qframe.h> #include <qvaluelist.h> class QHBoxLayout; class QLibrary; struct TaskbarApplet { #ifndef QT_NO_COMPONENT QLibrary *library; -#endif TaskbarAppletInterface *iface; +#endif QWidget *applet; + QString name; }; class SysTray : public QFrame { Q_OBJECT public: SysTray( QWidget *parent ); + ~SysTray(); void clearApplets(); void addApplets(); -protected: - void timerEvent(QTimerEvent* e); - private: void loadApplets(); - int safety_tid; QHBoxLayout *layout; QValueList<TaskbarApplet> appletList; }; #endif // __SYSTRAY_H__ |