summaryrefslogtreecommitdiff
authorsandman <sandman>2002-09-12 01:16:41 (UTC)
committer sandman <sandman>2002-09-12 01:16:41 (UTC)
commit151987f8e0b7a179cf45032cc2ec5b4360023890 (patch) (side-by-side diff)
treeea750ecfe96f7a30759d9bee7151602f02dec8cf
parentb89a7559465274c3efb0a8258cecf22a185b123f (diff)
downloadopie-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
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/launcher/launcher.pro2
-rw-r--r--core/launcher/main.cpp0
-rw-r--r--core/launcher/systray.cpp93
-rw-r--r--core/launcher/systray.h13
-rw-r--r--core/launcher/taskbar.cpp4
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()" ) {