summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/pim/today/changelog5
-rw-r--r--core/pim/today/opie-today.control2
-rw-r--r--core/pim/today/plugins/datebook/datebookplugin.cpp3
-rw-r--r--core/pim/today/plugins/datebook/datebookplugin.h2
-rw-r--r--core/pim/today/plugins/mail/mailplugin.cpp4
-rw-r--r--core/pim/today/plugins/mail/mailplugin.h3
-rw-r--r--core/pim/today/plugins/todolist/todoplugin.cpp3
-rw-r--r--core/pim/today/plugins/todolist/todoplugin.h2
-rw-r--r--core/pim/today/today.cpp39
-rw-r--r--core/pim/today/todayconfig.cpp6
10 files changed, 59 insertions, 10 deletions
diff --git a/core/pim/today/changelog b/core/pim/today/changelog
index 93abdcb..ba3cdbc 100644
--- a/core/pim/today/changelog
+++ b/core/pim/today/changelog
@@ -1,8 +1,13 @@
+0.6
+
+* longer refresh intervals possible
+* plugins can decide now if they want to take part in refresh cycles
+
0.5.2
* refresh settings
* only launch datebook config when clicked on a date ( opie only )
* less qcop trouble on sharps retail rom
0.5.1
diff --git a/core/pim/today/opie-today.control b/core/pim/today/opie-today.control
index 267a195..acdcf8e 100644
--- a/core/pim/today/opie-today.control
+++ b/core/pim/today/opie-today.control
@@ -1,14 +1,14 @@
Files: bin/today apps/1Pim/today.desktop pics/today/*
Priority: optional
Section: opie/applications
Maintainer: Maximilian Reiß <harlekin@handhelds.org>
Architecture: arm
-Version: 0.5.2-$SUB_VERSION
+Version: 0.6-$SUB_VERSION
Depends: opie-base ($QPE_VERSION), libopie ($QPE_VERSION)
License: GPL
Description: today screen
This today screen app gives an overview of appointments
and todos.
It also shows incoming and outgoing mails from opiemail.
When using Opie (opie.handhelds.org) today can be autostarted
on resume.
diff --git a/core/pim/today/plugins/datebook/datebookplugin.cpp b/core/pim/today/plugins/datebook/datebookplugin.cpp
index cacdb65..eda84be 100644
--- a/core/pim/today/plugins/datebook/datebookplugin.cpp
+++ b/core/pim/today/plugins/datebook/datebookplugin.cpp
@@ -52,8 +52,11 @@ QString DatebookPlugin::pixmapNameConfig() const {
TodayConfigWidget* DatebookPlugin::configWidget( QWidget* wid ) {
return new DatebookPluginConfig( wid , "Datebook" );
}
QString DatebookPlugin::appName() const {
return "datebook";
}
+bool DatebookPlugin::excludeFromRefresh() const {
+ return false;
+}
diff --git a/core/pim/today/plugins/datebook/datebookplugin.h b/core/pim/today/plugins/datebook/datebookplugin.h
index 4d0f8e6..13c62a9 100644
--- a/core/pim/today/plugins/datebook/datebookplugin.h
+++ b/core/pim/today/plugins/datebook/datebookplugin.h
@@ -31,13 +31,13 @@ public:
QString pluginName() const;
double versionNumber() const;
QString pixmapNameWidget() const;
QWidget* widget( QWidget *);
QString pixmapNameConfig() const;
TodayConfigWidget* configWidget( QWidget *);
QString appName() const;
-
+ bool excludeFromRefresh() const;
};
#endif
diff --git a/core/pim/today/plugins/mail/mailplugin.cpp b/core/pim/today/plugins/mail/mailplugin.cpp
index 1c90df4..d497970 100644
--- a/core/pim/today/plugins/mail/mailplugin.cpp
+++ b/core/pim/today/plugins/mail/mailplugin.cpp
@@ -49,8 +49,12 @@ TodayConfigWidget* MailPlugin::configWidget( QWidget* wid ) {
return 0l;
}
QString MailPlugin::appName() const {
return "mail";
}
+bool MailPlugin::excludeFromRefresh() const {
+ return false;
+}
+
diff --git a/core/pim/today/plugins/mail/mailplugin.h b/core/pim/today/plugins/mail/mailplugin.h
index d2a3dcb..c937b9e 100644
--- a/core/pim/today/plugins/mail/mailplugin.h
+++ b/core/pim/today/plugins/mail/mailplugin.h
@@ -35,13 +35,12 @@ public:
QString pluginName() const;
double versionNumber() const;
QString pixmapNameWidget() const;
QWidget* widget(QWidget *);
QString pixmapNameConfig() const;
TodayConfigWidget* configWidget(QWidget *);
QString appName() const;
-
-
+ bool excludeFromRefresh() const;
};
#endif
diff --git a/core/pim/today/plugins/todolist/todoplugin.cpp b/core/pim/today/plugins/todolist/todoplugin.cpp
index 09b54af..e10b414 100644
--- a/core/pim/today/plugins/todolist/todoplugin.cpp
+++ b/core/pim/today/plugins/todolist/todoplugin.cpp
@@ -51,8 +51,11 @@ TodayConfigWidget* TodolistPlugin::configWidget( QWidget* wid ) {
return new TodolistPluginConfig( wid , "Todolist" );
}
QString TodolistPlugin::appName() const {
return "todolist";
}
+bool TodolistPlugin::excludeFromRefresh() const {
+ return false;
+}
diff --git a/core/pim/today/plugins/todolist/todoplugin.h b/core/pim/today/plugins/todolist/todoplugin.h
index 0a6669f..f98afdb 100644
--- a/core/pim/today/plugins/todolist/todoplugin.h
+++ b/core/pim/today/plugins/todolist/todoplugin.h
@@ -32,12 +32,12 @@ public:
QString pluginName() const;
double versionNumber() const;
QString pixmapNameWidget() const;
QWidget* widget(QWidget *);
QString pixmapNameConfig() const;
TodayConfigWidget* configWidget(QWidget *);
QString appName() const;
-
+ bool excludeFromRefresh() const;
};
#endif
diff --git a/core/pim/today/today.cpp b/core/pim/today/today.cpp
index 8184730..3eda5c0 100644
--- a/core/pim/today/today.cpp
+++ b/core/pim/today/today.cpp
@@ -40,16 +40,17 @@
struct TodayPlugin {
QLibrary *library;
TodayPluginInterface *iface;
TodayPluginObject *guiPart;
QWidget *guiBox;
QString name;
bool active;
+ bool excludeRefresh;
int pos;
};
static QValueList<TodayPlugin> pluginList;
Today::Today( QWidget* parent, const char* name, WFlags fl )
: TodayBase( parent, name, fl ) {
@@ -81,17 +82,22 @@ void Today::channelReceived( const QCString &msg, const QByteArray & data ) {
QString message;
stream >> message;
setOwnerField( message );
}
}
void Today::setRefreshTimer( int interval ) {
- if ( m_refreshTimerEnabled ) {
+
+ disconnect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) );
+
+ // 0 is "never" case
+ if ( !interval == 0 ) {
+ connect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) );
m_refreshTimer->changeInterval( interval );
}
}
/**
* Initialises the owner field with the default value, the username
*/
@@ -124,32 +130,42 @@ void Today::init() {
Config cfg( "today" );
cfg.setGroup( "Plugins" );
m_excludeApplets = cfg.readListEntry( "ExcludeApplets", ',' );
m_allApplets = cfg.readListEntry( "AllApplets", ',' );
cfg.setGroup( "General" );
m_iconSize = cfg.readNumEntry( "IconSize", 18 );
- m_refreshTimer->changeInterval( cfg.readNumEntry( "checkinterval", 15000 ) );
-
+ setRefreshTimer( cfg.readNumEntry( "checkinterval", 15000 ) );
}
/**
* Load the plugins
*/
void Today::loadPlugins() {
+ // extra list for plugins that exclude themself from periodic refresh
+ QMap<QString, TodayPlugin> pluginListRefreshExclude;
+
QValueList<TodayPlugin>::Iterator tit;
+ if ( !pluginList.isEmpty() ) {
for ( tit = pluginList.begin(); tit != pluginList.end(); ++tit ) {
+ if ( (*tit).excludeRefresh ) {
+ pluginListRefreshExclude.insert( (*tit).name , (*tit) );
+ qDebug( "Found an plug that does not want refresh feature" );
+ } else {
(*tit).library->unload();
delete (*tit).library;
}
+ }
pluginList.clear();
+ }
+
QString path = QPEApplication::qpeDir() + "/plugins/today";
QDir dir( path, "lib*.so" );
QStringList list = dir.entryList();
QStringList::Iterator it;
QMap<QString, TodayPlugin> tempList;
@@ -157,28 +173,37 @@ void Today::loadPlugins() {
for ( it = list.begin(); it != list.end(); ++it ) {
TodayPluginInterface *iface = 0;
QLibrary *lib = new QLibrary( path + "/" + *it );
qDebug( "querying: %s", QString( path + "/" + *it ).latin1() );
if ( lib->queryInterface( IID_TodayPluginInterface, (QUnknownInterface**)&iface ) == QS_OK ) {
qDebug( "loading: %s", QString( path + "/" + *it ).latin1() );
qDebug( QString(*it) );
+
+ // If plugin is exludes from refresh, get it in the list again here.
+
+ if ( pluginListRefreshExclude.contains( (*it) ) ) {
+ tempList.insert( pluginListRefreshExclude[(*it)].name, pluginListRefreshExclude[(*it)] );
+ qDebug( "TEST2 " + pluginListRefreshExclude[(*it)].name );
+ } else {
+
TodayPlugin plugin;
plugin.library = lib;
plugin.iface = iface;
plugin.name = QString(*it);
// find out if plugins should be shown
if ( m_excludeApplets.grep( *it ).isEmpty() ) {
plugin.active = true;
} else {
plugin.active = false;
}
plugin.guiPart = plugin.iface->guiPart();
+ plugin.excludeRefresh = plugin.guiPart->excludeFromRefresh();
// package the whole thing into a qwidget so it can be shown and hidden
plugin.guiBox = new QWidget( this );
QHBoxLayout *boxLayout = new QHBoxLayout( plugin.guiBox );
QPixmap plugPix;
plugPix.convertFromImage( Resource::loadImage( plugin.guiPart->pixmapNameWidget() ).smoothScale( m_iconSize, m_iconSize ), 0 );
OClickableLabel* plugIcon = new OClickableLabel( plugin.guiBox );
plugIcon->setPixmap( plugPix );
@@ -202,25 +227,27 @@ void Today::loadPlugins() {
// "prebuffer" it in one more list, to get the sorting done
tempList.insert( plugin.name, plugin );
// on first start the list is off course empty
if ( m_allApplets.isEmpty() ) {
layout->addWidget( plugin.guiBox );
pluginList.append( plugin );
}
+ }
} else {
qDebug( "could not recognize %s", QString( path + "/" + *it ).latin1() );
delete lib;
}
}
if ( !m_allApplets.isEmpty() ) {
TodayPlugin tempPlugin;
QStringList::Iterator stringit;
+
for( stringit = m_allApplets.begin(); stringit != m_allApplets.end(); ++stringit ) {
tempPlugin = ( tempList.find( *stringit ) ).data();
if ( !( (tempPlugin.name).isEmpty() ) ) {
layout->addWidget( tempPlugin.guiBox );
pluginList.append( tempPlugin );
}
}
}
@@ -263,16 +290,19 @@ void Today::draw() {
}
/**
* The method for the configuration dialog.
*/
void Today::startConfig() {
+ // disconnect timer to prevent problems while being on config dialog
+ disconnect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) );
+
TodayConfig conf( this, "dialog", true );
TodayPlugin plugin;
QList<TodayConfigWidget> configWidgetList;
for ( int i = pluginList.count() - 1 ; i >= 0; i-- ) {
plugin = pluginList[i];
@@ -291,16 +321,19 @@ void Today::startConfig() {
if ( conf.exec() == QDialog::Accepted ) {
conf.writeConfig();
TodayConfigWidget *confWidget;
for ( confWidget = configWidgetList.first(); confWidget != 0;
confWidget = configWidgetList.next() ) {
confWidget->writeConfig();
}
refresh();
+ } else {
+ // since refresh is not called in that case , reconnect the signal
+ connect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) );
}
}
/**
* Refresh for the view. Reload all applets
*
*/
diff --git a/core/pim/today/todayconfig.cpp b/core/pim/today/todayconfig.cpp
index db1141a..8d0b069 100644
--- a/core/pim/today/todayconfig.cpp
+++ b/core/pim/today/todayconfig.cpp
@@ -99,18 +99,20 @@ TodayConfig::TodayConfig( QWidget* parent, const char* name, bool modal )
SpinBoxIconSize->setMaxValue( 32 );
QWhatsThis::add( SpinBoxIconSize, tr( "Set the icon size in pixel" ) );
QHBox *hbox_refresh = new QHBox( tab_3 );
QLabel *refreshLabel = new QLabel( hbox_refresh );
refreshLabel->setText( tr( "Refresh" ) );
QWhatsThis::add( refreshLabel, tr( "How often should Today refresh itself" ) );
SpinRefresh = new QSpinBox( hbox_refresh );
- SpinRefresh->setMinValue( 2 );
- SpinRefresh->setSuffix( tr( " seconds" ) );
+ SpinRefresh->setMinValue( 0 );
+ SpinRefresh->setSuffix( tr( " sec" ) );
+ SpinRefresh->setMaxValue ( 7200 );
+ SpinRefresh->setSpecialValueText ( tr("never") );
QWhatsThis::add( SpinRefresh, tr( "How often should Today refresh itself" ) );
tab3Layout->addWidget( hbox_auto );
tab3Layout->addWidget( hbox_inactive );
tab3Layout->addWidget( hbox_iconSize );
tab3Layout->addWidget( hbox_refresh );
TabWidget3->addTab( tab_3, "SettingsIcon", tr( "Misc" ) );