author | sandman <sandman> | 2002-09-12 01:16:41 (UTC) |
---|---|---|
committer | sandman <sandman> | 2002-09-12 01:16:41 (UTC) |
commit | 151987f8e0b7a179cf45032cc2ec5b4360023890 (patch) (side-by-side diff) | |
tree | ea750ecfe96f7a30759d9bee7151602f02dec8cf /core/launcher | |
parent | b89a7559465274c3efb0a8258cecf22a185b123f (diff) | |
download | opie-151987f8e0b7a179cf45032cc2ec5b4360023890.zip opie-151987f8e0b7a179cf45032cc2ec5b4360023890.tar.gz opie-151987f8e0b7a179cf45032cc2ec5b4360023890.tar.bz2 |
- really remove mrulist
- new version of systray, which supports the Exclude list to hide applets
-rw-r--r-- | core/launcher/launcher.pro | 2 | ||||
-rw-r--r-- | core/launcher/main.cpp | 0 | ||||
-rw-r--r-- | core/launcher/systray.cpp | 93 | ||||
-rw-r--r-- | core/launcher/systray.h | 13 | ||||
-rw-r--r-- | core/launcher/taskbar.cpp | 4 |
5 files changed, 77 insertions, 35 deletions
diff --git a/core/launcher/launcher.pro b/core/launcher/launcher.pro index 0e557aa..dbe3820 100644 --- a/core/launcher/launcher.pro +++ b/core/launcher/launcher.pro @@ -11,3 +11,2 @@ HEADERS = background.h \ sidething.h \ - mrulist.h \ runningappbar.h \ @@ -53,3 +52,2 @@ SOURCES = background.cpp \ sidething.cpp \ - mrulist.cpp \ runningappbar.cpp \ diff --git a/core/launcher/main.cpp b/core/launcher/main.cpp index ca0bbe4..490af39 100644 --- a/core/launcher/main.cpp +++ b/core/launcher/main.cpp diff --git a/core/launcher/systray.cpp b/core/launcher/systray.cpp index ad1553f..4767150 100644 --- a/core/launcher/systray.cpp +++ b/core/launcher/systray.cpp @@ -1,5 +1,5 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** @@ -39,2 +39,3 @@ SysTray::SysTray( QWidget *parent ) : QFrame( parent ), layout(0) { + safety_tid = 0; //setFrameStyle( QFrame::Panel | QFrame::Sunken ); @@ -43,4 +44,20 @@ SysTray::SysTray( QWidget *parent ) : QFrame( parent ), layout(0) +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()); +} + void SysTray::loadApplets() { + clearApplets(); + addApplets(); +} + +void SysTray::clearApplets() +{ + hide(); #ifndef SINGLE_APP @@ -52,2 +69,3 @@ void SysTray::loadApplets() } +#endif appletList.clear(); @@ -55,3 +73,17 @@ void SysTray::loadApplets() delete layout; - layout = new QHBoxLayout( this ); + layout = new QHBoxLayout( this, 0, 1 ); + layout->setAutoAdd(TRUE); +} + +void SysTray::addApplets() +{ +#ifndef SINGLE_APP + Config cfg( "Taskbar" ); + cfg.setGroup( "Applets" ); + bool safe = cfg.readBoolEntry("SafeMode",FALSE); + if ( safe && !safety_tid ) + return; + cfg.writeEntry("SafeMode",TRUE); + cfg.write(); + QStringList exclude = cfg.readListEntry( "ExcludeApplets", ',' ); @@ -61,3 +93,7 @@ void SysTray::loadApplets() 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; @@ -65,7 +101,17 @@ void SysTray::loadApplets() if ( lib->queryInterface( IID_TaskbarApplet, (QUnknownInterface**)&iface ) == QS_OK ) { - TaskbarApplet applet; - applet.library = lib; - applet.iface = iface; - applet.applet = applet.iface->applet( this ); - positionApplet( applet ); + TaskbarApplet *applet = new TaskbarApplet; + applets[napplets++] = applet; + applet->library = lib; + applet->iface = iface; + } 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); QString lang = getenv( "LANG" ); @@ -74,3 +120,2 @@ void SysTray::loadApplets() QString tfn = QPEApplication::qpeDir()+"/i18n/"+lang+"/"+type+".qm"; - qDebug("tr fpr sysapplet: %s", tfn.latin1() ); if ( trans->load( tfn )) @@ -79,8 +124,5 @@ void SysTray::loadApplets() delete trans; - } else { - delete lib; - } } + delete applets; #else - layout = new QHBoxLayout( this ); TaskbarApplet applet; @@ -88,20 +130,19 @@ void SysTray::loadApplets() applet.applet = applet.iface->applet( this ); - positionApplet( applet ); + appletList.append( a ); #endif + show(); + + if ( !safety_tid ) + safety_tid = startTimer(2000); // TT has 5000, but this is a PITA for a developer ;) (sandman) } -void SysTray::positionApplet( const TaskbarApplet &a ) +void SysTray::timerEvent(QTimerEvent* e) { - int p = 0; - QValueList<TaskbarApplet>::Iterator it; - for ( it = appletList.begin(); it != appletList.end(); ++it ) { - if ( (*it).iface->position() > a.iface->position() ) - break; - p += 2; + if ( e->timerId() == safety_tid ) { + Config cfg( "Taskbar" ); + cfg.setGroup( "Applets" ); + cfg.writeEntry( "SafeMode", FALSE ); + killTimer(safety_tid); + safety_tid = 0; } - - appletList.insert( it, a ); - layout->insertWidget( p, a.applet ); - layout->insertSpacing( p, 1 ); } - diff --git a/core/launcher/systray.h b/core/launcher/systray.h index 0aed348..5a6849a 100644 --- a/core/launcher/systray.h +++ b/core/launcher/systray.h @@ -1,5 +1,5 @@ /********************************************************************** -** Copyright (C) 2000 Trolltech AS. All rights reserved. +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** -** This file is part of Qtopia Environment. +** This file is part of the Qtopia Environment. ** @@ -45,8 +45,11 @@ public: - void loadApplets(); + void clearApplets(); + void addApplets(); -private: - void positionApplet( const TaskbarApplet &a ); +protected: + void timerEvent(QTimerEvent* e); private: + void loadApplets(); + int safety_tid; QHBoxLayout *layout; diff --git a/core/launcher/taskbar.cpp b/core/launcher/taskbar.cpp index 988d072..1feae4a 100644 --- a/core/launcher/taskbar.cpp +++ b/core/launcher/taskbar.cpp @@ -22,3 +22,2 @@ #include "inputmethods.h" -#include "mrulist.h" #include "runningappbar.h" @@ -275,3 +274,4 @@ void TaskBar::receive( const QCString &msg, const QByteArray &data ) } else if ( msg == "reloadApplets()" ) { - sysTray->loadApplets(); + sysTray->clearApplets(); + sysTray->addApplets(); } else if ( msg == "soundAlarm()" ) { |