summaryrefslogtreecommitdiff
path: root/core
authorharlekin <harlekin>2002-10-05 20:46:18 (UTC)
committer harlekin <harlekin>2002-10-05 20:46:18 (UTC)
commitd7f9d00fcc9261db9c4af4f1b4afde9d50e8a2a2 (patch) (side-by-side diff)
tree3afa0409bea98ca92ebfa269485f0845b3c96b6a /core
parentab196dbed05f9e534709a9c0b7f44eca65a72929 (diff)
downloadopie-d7f9d00fcc9261db9c4af4f1b4afde9d50e8a2a2.zip
opie-d7f9d00fcc9261db9c4af4f1b4afde9d50e8a2a2.tar.gz
opie-d7f9d00fcc9261db9c4af4f1b4afde9d50e8a2a2.tar.bz2
buttons resizable and clickable again
Diffstat (limited to 'core') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/today/changelog4
-rw-r--r--core/pim/today/opie-today.control2
-rw-r--r--core/pim/today/plugins/datebook/datebookplugin.cpp4
-rw-r--r--core/pim/today/plugins/mail/mailplugin.cpp6
-rw-r--r--core/pim/today/plugins/todolist/todoplugin.cpp4
-rw-r--r--core/pim/today/plugins/todolist/todopluginwidget.cpp2
-rw-r--r--core/pim/today/today.cpp14
-rw-r--r--core/pim/today/today.h6
-rw-r--r--core/pim/today/todayconfig.cpp22
-rw-r--r--core/pim/today/todayconfig.h2
10 files changed, 49 insertions, 17 deletions
diff --git a/core/pim/today/changelog b/core/pim/today/changelog
index 5fd3284..25d63ef 100644
--- a/core/pim/today/changelog
+++ b/core/pim/today/changelog
@@ -1,101 +1,105 @@
+0.5.1
+
+* icons scalable and clickable again
+
0.5
* now fully plugin based
0.3.4
* "fill our business card now a clickable label"
* Several bugfixes regarding todo section.
0.3.3
* Changed the logo so it better scales to bigger display and also
made the "Today" string translatable.
* some am/pm fixes
* clickable labels now in libopie
0.3.2
* Autostart is now more configurable. You can decide how long
the ipaq has to has been suspended, before autostart is triggered.(Opie
only)
* am/pm time optinal (autodetect)
0.3.1
* fixed the wrong color of the buttons
* better translation (thanks carsten and others)
* fixes memory leaks
* bugfixes in calendar part, now location and note are working again.
0.3.0
* today uses now tododb from libopie. So major changes in the todo part:
- overdue items on top
- then sorted by date, then by priority
* some cleanups
* speed optimisations
0.2.9
* Many bugfixes.
* Today now apparently sorts the dates _allways_ right, i would assume it
to be a qt bug
0.2.8
* Appointments are now clickable (connection to datebook still missing)
* autostart support (opie only)
0.2.7
* check if todolist.xml was changed before parsing it
* check only every 30 sec for changes.
* some visual stuff
* as usual many little improvements .-)
0.2.6
* added scrollbars to dates and todo
* all day detection
* some smaller bugfixes
0.2.5
* some other minor fixes regarding autoupdate
* fixed segfault with todolist > 7 entries
* fixed the "ugly grey border around buttons" issue
* fixed the "empty calendar field" "bug"
* shown only later appointments as option
0.2.4
* added support for email
* autoupdates after 1 min
* QCopEnvelope instead of system()
* starting to use qvbox in gui
0.2.3
* the 4 am release
* several bugfixes
0.2.2
* started working on calling other apps
* and finished it
0.2.1
* images no more inline
* config dialog
0.1.1
* started changelog.
* fixed segfault on empty/nonexistant todolist.xml
* better handling for file location
diff --git a/core/pim/today/opie-today.control b/core/pim/today/opie-today.control
index 6ea5090..28087f9 100644
--- a/core/pim/today/opie-today.control
+++ b/core/pim/today/opie-today.control
@@ -1,16 +1,16 @@
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-$SUB_VERSION
+Version: 0.5.1-$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.
It is highly configurable.
diff --git a/core/pim/today/plugins/datebook/datebookplugin.cpp b/core/pim/today/plugins/datebook/datebookplugin.cpp
index 4ebb178..cacdb65 100644
--- a/core/pim/today/plugins/datebook/datebookplugin.cpp
+++ b/core/pim/today/plugins/datebook/datebookplugin.cpp
@@ -1,59 +1,59 @@
/*
* datebookplugin.cpp
*
* copyright : (c) 2002 by Maximilian Reiß
* email : harlekin@handhelds.org
*
*/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
#include "datebookevent.h"
#include "datebookplugin.h"
#include "datebookpluginwidget.h"
#include "datebookpluginconfig.h"
DatebookPlugin::DatebookPlugin() {
}
DatebookPlugin::~DatebookPlugin() {
}
QString DatebookPlugin::pluginName() const {
- return "Datebook plugin";
+ return QObject::tr( "Datebook plugin");
}
double DatebookPlugin::versionNumber() const {
return 1.0;
}
QString DatebookPlugin::pixmapNameWidget() const {
return "DateBook";
}
QWidget* DatebookPlugin::widget( QWidget* wid ) {
return new DatebookPluginWidget( wid, "Datebook" );
}
QString DatebookPlugin::pixmapNameConfig() const {
return "DateBook";
}
TodayConfigWidget* DatebookPlugin::configWidget( QWidget* wid ) {
return new DatebookPluginConfig( wid , "Datebook" );
}
QString DatebookPlugin::appName() const {
- return QObject::tr( "Datebook" );
+ return "datebook";
}
diff --git a/core/pim/today/plugins/mail/mailplugin.cpp b/core/pim/today/plugins/mail/mailplugin.cpp
index 3ddf16e..1c90df4 100644
--- a/core/pim/today/plugins/mail/mailplugin.cpp
+++ b/core/pim/today/plugins/mail/mailplugin.cpp
@@ -1,56 +1,56 @@
/*
* mailplugin.cpp
*
* copyright : (c) 2002 by Maximilian Reiß
* email : harlekin@handhelds.org
*
*/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
#include "mailplugin.h"
#include "mailpluginwidget.h"
MailPlugin::MailPlugin() {
}
MailPlugin::~MailPlugin() {
}
QString MailPlugin::pluginName() const {
- return "Mail plugin";
+ return QObject::tr( "Mail plugin" );
}
double MailPlugin::versionNumber() const {
- return 0.5;
+ return 0.6;
}
QString MailPlugin::pixmapNameWidget() const {
return "mail/desktopicon";
}
QWidget* MailPlugin::widget( QWidget * wid ) {
return new MailPluginWidget( wid, "Mail" );
}
QString MailPlugin::pixmapNameConfig() const {
return 0l;
}
TodayConfigWidget* MailPlugin::configWidget( QWidget* wid ) {
return 0l;
}
QString MailPlugin::appName() const {
- return "Mail";
+ return "mail";
}
diff --git a/core/pim/today/plugins/todolist/todoplugin.cpp b/core/pim/today/plugins/todolist/todoplugin.cpp
index 19d9f37..09b54af 100644
--- a/core/pim/today/plugins/todolist/todoplugin.cpp
+++ b/core/pim/today/plugins/todolist/todoplugin.cpp
@@ -1,58 +1,58 @@
/*
* todoplugin.cpp
*
* copyright : (c) 2002 by Maximilian Reiß
* email : harlekin@handhelds.org
*
*/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
#include "todoplugin.h"
#include "todopluginconfig.h"
#include "todopluginwidget.h"
TodolistPlugin::TodolistPlugin() {
}
TodolistPlugin::~TodolistPlugin() {
}
QString TodolistPlugin::pluginName() const {
- return "Todolist plugin";
+ return QObject::tr( "Todolist plugin" );
}
double TodolistPlugin::versionNumber() const {
return 0.7;
}
QString TodolistPlugin::pixmapNameWidget() const {
return "TodoList";
}
QWidget* TodolistPlugin::widget( QWidget *wid ) {
return new TodolistPluginWidget( wid, "Todolist" );
}
QString TodolistPlugin::pixmapNameConfig() const {
return "TodoList";
}
TodayConfigWidget* TodolistPlugin::configWidget( QWidget* wid ) {
return new TodolistPluginConfig( wid , "Todolist" );
}
QString TodolistPlugin::appName() const {
- return QObject::tr( "Todolist" );
+ return "todolist";
}
diff --git a/core/pim/today/plugins/todolist/todopluginwidget.cpp b/core/pim/today/plugins/todolist/todopluginwidget.cpp
index d793aae..320969e 100644
--- a/core/pim/today/plugins/todolist/todopluginwidget.cpp
+++ b/core/pim/today/plugins/todolist/todopluginwidget.cpp
@@ -1,134 +1,134 @@
/*
* todopluginwidget.cpp
*
* copyright : (c) 2002 by Maximilian Reiß
* email : harlekin@handhelds.org
*
*/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
#include "todopluginwidget.h"
#include <qvaluelist.h>
#include <qtl.h>
#include <qstring.h>
#include <qscrollview.h>
#include <qobject.h>
#include <qlayout.h>
#include <qpe/config.h>
#include <qpe/timestring.h>
#include <qpe/qcopenvelope_qws.h>
TodolistPluginWidget::TodolistPluginWidget( QWidget *parent, const char* name )
: QWidget( parent, name ) {
- todoLabel= 0l;
+ todoLabel = 0l;
todo = 0l;
if ( todo ) {
delete todo;
}
todo = new ToDoDB();
readConfig();
getTodo();
}
TodolistPluginWidget::~TodolistPluginWidget() {
delete todo;
}
void TodolistPluginWidget::readConfig() {
Config cfg( "todaytodoplugin" );
cfg.setGroup( "config" );
m_maxLinesTask = cfg.readNumEntry( "maxlinestask", 5 );
m_maxCharClip = cfg.readNumEntry( "maxcharclip", 38 );
}
/**
* Get the todos
*/
void TodolistPluginWidget::getTodo() {
QVBoxLayout* layoutTodo = new QVBoxLayout( this );
if ( todoLabel ) {
delete todoLabel;
}
todoLabel = new OClickableLabel( this );
todoLabel->setSizePolicy( QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum ) );
connect( todoLabel, SIGNAL( clicked() ), this, SLOT( startTodolist() ) );
QString output;
QString tmpout;
int count = 0;
int ammount = 0;
// get overdue todos first
QValueList<ToDoEvent> overDueList = todo->overDue();
qBubbleSort( overDueList );
for ( QValueList<ToDoEvent>::Iterator it = overDueList.begin();
it != overDueList.end(); ++it ) {
if (!(*it).isCompleted() && ( ammount < m_maxLinesTask ) ) {
QString desc = (*it).summary();
if( desc.isEmpty() ) {
desc = (*it).description();
}
tmpout += "<font color=#e00000><b>-" + desc.mid( 0, m_maxCharClip ) + "</b></font><br>";
ammount++;
}
}
// get total number of still open todos
QValueList<ToDoEvent> openTodo = todo->rawToDos();
qBubbleSort( openTodo );
for ( QValueList<ToDoEvent>::Iterator it = openTodo.begin();
it != openTodo.end(); ++it ) {
if ( !(*it).isCompleted() ){
count +=1;
// not the overdues, we allready got them, and not if we are
// over the maxlines
if ( !(*it).isOverdue() && ( ammount < m_maxLinesTask ) ) {
QString desc = (*it).summary();
if( desc.isEmpty() ) {
desc = (*it).description();
}
tmpout += "<b>-</b>" + desc.mid( 0, m_maxCharClip ) + "<br>";
ammount++;
}
}
}
if ( count > 0 ) {
if( count == 1 ) {
output += QObject::tr( "There is <b> 1</b> active task: <br>" );
} else {
output += QObject::tr( "There are <b> %1</b> active tasks: <br>" ).arg( count );
}
output += tmpout;
} else {
output = QObject::tr( "No active tasks" );
}
todoLabel->setText( output );
layoutTodo->addWidget( todoLabel );
}
/**
* start the todolist
*/
void TodolistPluginWidget::startTodolist() {
QCopEnvelope e( "QPE/System", "execute(QString)" );
e << QString( "todolist" );
}
diff --git a/core/pim/today/today.cpp b/core/pim/today/today.cpp
index 35758d5..34ec3cb 100644
--- a/core/pim/today/today.cpp
+++ b/core/pim/today/today.cpp
@@ -1,327 +1,335 @@
/*
* today.cpp
*
* copyright : (c) 2002 by Maximilian Reiß
* email : harlekin@handhelds.org
*
*/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
#include "today.h"
#include <opie/todayconfigwidget.h>
#include <qpe/config.h>
#include <qpe/qcopenvelope_qws.h>
#include <qpe/resource.h>
#include <qpe/global.h>
#include <qpe/qpeapplication.h>
#include <qpe/contact.h>
#include <qdir.h>
#include <qfile.h>
#include <qpushbutton.h>
#include <qlabel.h>
#include <qtimer.h>
#include <qpixmap.h>
#include <qlayout.h>
#include <qhbox.h>
#include <opie/otabwidget.h>
#include <qdialog.h>
struct TodayPlugin {
QLibrary *library;
TodayPluginInterface *iface;
TodayPluginObject *guiPart;
QWidget *guiBox;
QString name;
bool active;
int pos;
};
static QValueList<TodayPlugin> pluginList;
Today::Today( QWidget* parent, const char* name, WFlags fl )
: TodayBase( parent, name, fl ) {
QObject::connect( (QObject*)ConfigButton, SIGNAL( clicked() ), this, SLOT( startConfig() ) );
QObject::connect( (QObject*)OwnerField, SIGNAL( clicked() ), this, SLOT( editCard() ) );
#if defined(Q_WS_QWS)
#if !defined(QT_NO_COP)
QCopChannel *todayChannel = new QCopChannel( "QPE/Today" , this );
connect ( todayChannel, SIGNAL( received( const QCString &, const QByteArray &) ),
this, SLOT ( channelReceived( const QCString &, const QByteArray &) ) );
#endif
#endif
setOwnerField();
refresh();
showMaximized();
}
/**
* Qcop receive method.
*/
void Today::channelReceived( const QCString &msg, const QByteArray & data ) {
QDataStream stream( data, IO_ReadOnly );
if ( msg == "message(QString)" ) {
QString message;
stream >> message;
setOwnerField( message );
}
}
/**
* Initialises the owner field with the default value, the username
*/
void Today::setOwnerField() {
QString file = Global::applicationFileName( "addressbook", "businesscard.vcf" );
if ( QFile::exists( file ) ) {
Contact cont = Contact::readVCard( file )[0];
QString returnString = cont.fullName();
OwnerField->setText( "<b>" + tr ( "Owned by " ) + returnString + "</b>" );
} else {
OwnerField->setText( "<b>" + tr ( "Please fill out the business card" ) + " </b>" );
}
}
/**
* Set the owner field with a given QString, for example per qcop.
*/
void Today::setOwnerField( QString &message ) {
if ( !message.isEmpty() ) {
OwnerField->setText( "<b>" + message + "</b>" );
}
}
/**
* Init stuff needed for today. Reads the config file.
*/
void Today::init() {
// read config
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 );
}
/**
* Load the plugins
*/
void Today::loadPlugins() {
QValueList<TodayPlugin>::Iterator tit;
for ( tit = pluginList.begin(); tit != pluginList.end(); ++tit ) {
(*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;
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) );
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();
// 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( 18, 18 ), 0 );
+ plugPix.convertFromImage( Resource::loadImage( plugin.guiPart->pixmapNameWidget() ).smoothScale( m_iconSize, m_iconSize ), 0 );
OClickableLabel* plugIcon = new OClickableLabel( plugin.guiBox );
plugIcon->setPixmap( plugPix );
+ plugIcon->setName( plugin.guiPart->appName() );
+ connect( plugIcon, SIGNAL( clicked() ), this, SLOT( startApplication() ) );
// a scrollview for each plugin
QScrollView* sv = new QScrollView( plugin.guiBox );
QWidget *plugWidget = plugin.guiPart->widget( sv->viewport() );
// not sure if that is good .-)
sv->setMinimumHeight( 10 );
sv->setResizePolicy( QScrollView::AutoOneFit );
sv->setHScrollBarMode( QScrollView::AlwaysOff );
sv->setFrameShape( QFrame::NoFrame );
sv->addChild( plugWidget );
// make sure the icon is on the top alligned
boxLayout->addWidget( plugIcon, 0, AlignTop );
boxLayout->addWidget( sv, 0, AlignTop );
boxLayout->setStretchFactor( plugIcon, 1 );
boxLayout->setStretchFactor( sv, 9 );
// "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 );
}
}
}
}
/**
* Repaint method. Reread all fields.
*/
void Today::draw() {
if ( pluginList.count() == 0 ) {
QLabel *noPlugins = new QLabel( this );
noPlugins->setText( tr( "No plugins found" ) );
layout->addWidget( noPlugins );
return;
}
uint count = 0;
TodayPlugin plugin;
for ( uint i = 0; i < pluginList.count(); i++ ) {
plugin = pluginList[i];
if ( plugin.active ) {
// qDebug( plugin.name + " is ACTIVE " );
plugin.guiBox->show();
} else {
// qDebug( plugin.name + " is INACTIVE" );
plugin.guiBox->hide();
}
count++;
}
if ( count == 0 ) {
QLabel *noPluginsActive = new QLabel( this );
noPluginsActive->setText( tr( "No plugins activated" ) );
layout->addWidget( noPluginsActive );
}
layout->addStretch(0);
}
/**
* The method for the configuration dialog.
*/
void Today::startConfig() {
TodayConfig conf( this, "dialog", true );
- TodayPlugin plugin;
+ TodayPlugin plugin;
QList<TodayConfigWidget> configWidgetList;
for ( int i = pluginList.count() - 1 ; i >= 0; i-- ) {
plugin = pluginList[i];
// load the config widgets in the tabs
if ( plugin.guiPart->configWidget( this ) != 0l ) {
TodayConfigWidget* widget = plugin.guiPart->configWidget( conf.TabWidget3 );
configWidgetList.append( widget );
conf.TabWidget3->addTab( widget, plugin.guiPart->pixmapNameConfig()
, plugin.guiPart->appName() );
}
// set the order/activate tab
conf.pluginManagement( plugin.name, plugin.guiPart->pluginName(),
Resource::loadPixmap( plugin.guiPart->pixmapNameWidget() ) );
}
if ( conf.exec() == QDialog::Accepted ) {
conf.writeConfig();
TodayConfigWidget *confWidget;
for ( confWidget = configWidgetList.first(); confWidget != 0;
confWidget = configWidgetList.next() ) {
confWidget->writeConfig();
}
refresh();
}
}
/**
* Refresh for the view. Reload all applets
*
*/
void Today::refresh() {
init();
// set the date in top label
QDate date = QDate::currentDate();
QString time = ( tr( date.toString() ) );
DateLabel->setText( QString( "<font color=#FFFFFF>" + time + "</font>" ) );
if ( layout ) {
delete layout;
}
layout = new QVBoxLayout( this );
layout->addWidget( Frame );
layout->addWidget( OwnerField );
loadPlugins();
draw();
}
void Today::startAddressbook() {
QCopEnvelope e( "QPE/System", "execute(QString)" );
e << QString( "addressbook" );
}
+void Today::startApplication() {
+ QCopEnvelope e( "QPE/System", "execute(QString)" );
+ e << QString( sender()->name() );
+}
+
/**
* launch addressbook (personal card)
*/
void Today::editCard() {
startAddressbook();
while( !QCopChannel::isRegistered( "QPE/Addressbook" ) ) {
qApp->processEvents();
}
QCopEnvelope v( "QPE/Addressbook", "editPersonalAndClose()" );
}
Today::~Today() {
}
diff --git a/core/pim/today/today.h b/core/pim/today/today.h
index 92512b9..6f13df6 100644
--- a/core/pim/today/today.h
+++ b/core/pim/today/today.h
@@ -1,73 +1,73 @@
/*
* today.h
*
* copyright : (c) 2002 by Maximilian Reiß
* email : harlekin@handhelds.org
*
*/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
#ifndef TODAY_H
#define TODAY_H
#include <opie/tododb.h>
#include <qdatetime.h>
#include <qlist.h>
#include <qhbox.h>
#include <qpe/qlibrary.h>
#include <qpe/event.h>
#include "todayconfig.h"
#include "todaybase.h"
#include <opie/todayplugininterface.h>
class QVBoxLayout;
-
+class OClickableLabel;
class Today : public TodayBase {
Q_OBJECT
public:
Today( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
~Today();
private slots:
void startConfig();
void startAddressbook();
+ void startApplication();
void editCard();
void refresh();
private:
void init();
void setOwnerField();
void setOwnerField(QString &string);
void loadPlugins();
void draw();
private slots:
void channelReceived(const QCString &msg, const QByteArray & data);
private:
TodayConfig *conf;
QStringList m_excludeApplets;
QStringList m_allApplets;
- // QString m_autoStartTimer;
int m_newStart;
- // int m_autoStart;
+ int m_iconSize;
int m_maxCharClip;
};
#endif
diff --git a/core/pim/today/todayconfig.cpp b/core/pim/today/todayconfig.cpp
index 3fc5830..097965b 100644
--- a/core/pim/today/todayconfig.cpp
+++ b/core/pim/today/todayconfig.cpp
@@ -1,222 +1,240 @@
/*
* todayconfig.cpp
*
* copyright : (c) 2002 by Maximilian Reiß
* email : harlekin@handhelds.org
*
*/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
#include "todayconfig.h"
#include <qpe/config.h>
#include <qpe/resource.h>
#include <qpe/qcopenvelope_qws.h>
#include <qcheckbox.h>
#include <qlabel.h>
#include <qspinbox.h>
#include <qtabwidget.h>
#include <qlayout.h>
#include <qheader.h>
#include <qhbox.h>
#include <qvbox.h>
#include <qtoolbutton.h>
+#include <qtooltip.h>
class ToolButton : public QToolButton {
public:
ToolButton( QWidget *parent, const char *name, const QString& icon, QObject *handler, const QString& slot, bool t = FALSE )
: QToolButton( parent, name ) {
setPixmap( Resource::loadPixmap( icon ) );
setAutoRaise( TRUE );
setFocusPolicy( QWidget::NoFocus );
setToggleButton( t );
connect( this, t ? SIGNAL( toggled(bool) ) : SIGNAL( clicked() ), handler, slot );
}
};
/**
* The class has currently quite some duplicate code.
* By that way it would be real easy to have it as seperate app in settings tab
*
*/
TodayConfig::TodayConfig( QWidget* parent, const char* name, bool modal, WFlags fl )
: QDialog( parent, name, modal, fl ) {
setCaption( tr( "Today config" ) );
QVBoxLayout *layout = new QVBoxLayout( this );
TabWidget3 = new OTabWidget ( this, "tabwidget", OTabWidget::Global, OTabWidget::Bottom );
layout->addWidget( TabWidget3 );
tab_2 = new QWidget( TabWidget3, "tab_2" );
QVBoxLayout *tab2Layout = new QVBoxLayout( tab_2, 4 ,4 );
QLabel *l = new QLabel( tr( "Load which plugins in what order:" ), tab_2 );
tab2Layout->addWidget( l );
QHBox *hbox1 = new QHBox( tab_2 );
m_appletListView = new QListView( hbox1 );
m_appletListView->addColumn( "PluginList" );
m_appletListView->header()->hide();
m_appletListView->setSorting( -1 );
QVBox *vbox1 = new QVBox( hbox1 );
new ToolButton( vbox1, tr( "Move Up" ), "up", this , SLOT( moveSelectedUp() ) );
new ToolButton( vbox1, tr( "Move Down" ), "down", this , SLOT( moveSelectedDown() ) );
tab2Layout->addWidget( hbox1 );
TabWidget3->addTab( tab_2, "pass", tr( "active/order" ) );
tab_3 = new QWidget( TabWidget3, "tab_3" );
QVBoxLayout *tab3Layout = new QVBoxLayout( tab_3 );
tab3Layout->setMargin( 20 );
QHBox *hbox_auto = new QHBox( tab_3 );
TextLabel2 = new QLabel( hbox_auto, "AutoStart" );
TextLabel2->setText( tr( "autostart on \nresume?\n (Opie only)" ) );
CheckBoxAuto = new QCheckBox( hbox_auto, "CheckBoxAuto" );
QHBox *hbox_inactive = new QHBox( tab_3 );
- TimeLabel = new QLabel( hbox_inactive , "TimeLabel" );
+ TimeLabel = new QLabel( hbox_inactive, "TimeLabel" );
TimeLabel->setText( tr( "minutes inactive" ) );
SpinBoxTime = new QSpinBox( hbox_inactive, "TimeSpinner" );
+ QHBox *hbox_iconSize = new QHBox( tab_3 );
+ QLabel *iconSizeLabel = new QLabel( hbox_iconSize, "iconSizeLabel" );
+ iconSizeLabel->setText( tr( "Icon size" ) );
+ // iconSizeLabel->setToolTip( tr( "Set the icon size in pixel" ) );
+ SpinBoxIconSize = new QSpinBox( hbox_iconSize, "TimeSpinner" );
+ SpinBoxIconSize->setMaxValue( 32 );
+
tab3Layout->addWidget( hbox_auto );
tab3Layout->addWidget( hbox_inactive );
+ tab3Layout->addWidget( hbox_iconSize );
TabWidget3->addTab( tab_3, "SettingsIcon", tr( "Misc" ) );
m_applets_changed = false;
connect ( m_appletListView , SIGNAL( clicked ( QListViewItem * ) ), this, SLOT( appletChanged ( ) ) );
readConfig();
showMaximized();
}
/**
* Autostart, uses the new (opie only) autostart method in the launcher code.
* If registered against that today ist started on each resume.
*/
void TodayConfig::setAutoStart() {
Config cfg( "today" );
cfg.setGroup( "Autostart" );
if ( m_autoStart ) {
QCopEnvelope e( "QPE/System", "autoStart(QString,QString,QString)" );
e << QString( "add" );
e << QString( "today" );
- e << QString("%1").arg( m_autoStartTimer );
+ e << QString( "%1" ).arg( m_autoStartTimer );
} else {
QCopEnvelope e( "QPE/System", "autoStart(QString,QString)" );
e << QString( "remove" );
e << QString( "today" );
}
}
/**
* Read the config part
*/
void TodayConfig::readConfig() {
Config cfg( "today" );
cfg.setGroup( "Autostart" );
m_autoStart = cfg.readNumEntry( "autostart", 1 );
CheckBoxAuto->setChecked( m_autoStart );
m_autoStartTimer = cfg.readNumEntry( "autostartdelay", 0 );
SpinBoxTime->setValue( m_autoStartTimer );
+ cfg.setGroup( "General" );
+ m_iconSize = cfg.readNumEntry( "IconSize", 18 );
+ SpinBoxIconSize->setValue( m_iconSize );
+
cfg.setGroup( "Plugins" );
m_excludeApplets = cfg.readListEntry( "ExcludeApplets", ',' );
}
/**
* Write the config part
*/
void TodayConfig::writeConfig() {
Config cfg( "today" );
cfg.setGroup( "Plugins" );
if ( m_applets_changed ) {
QStringList exclude;
QStringList include;
QStringList all_applets;
QListViewItemIterator list_it( m_appletListView );
// this makes sure the names get saved in the order selected
for ( ; list_it.current(); ++list_it ) {
QMap <QString, QCheckListItem *>::Iterator it;
for ( it = m_applets.begin(); it != m_applets. end (); ++it ) {
if ( list_it.current() == (*it) && !(*it)-> isOn () ) {
exclude << it.key();
} else if ( list_it.current() == (*it) && (*it)-> isOn () ){
include << it.key();
}
if ( list_it.current() == (*it) ) {
all_applets << it.key();
}
}
}
cfg.writeEntry( "ExcludeApplets", exclude, ',' );
cfg.writeEntry( "IncludeApplets", include, ',' );
cfg.writeEntry( "AllApplets", all_applets, ',' );
}
cfg.setGroup( "Autostart" );
m_autoStart = CheckBoxAuto->isChecked();
cfg.writeEntry( "autostart", m_autoStart );
m_autoStartTimer = SpinBoxTime->value();
cfg.writeEntry( "autostartdelay", m_autoStartTimer );
+ m_iconSize = SpinBoxIconSize->value();
+
+ cfg.setGroup( "General" );
+ cfg.writeEntry( "IconSize", m_iconSize );
+
// set autostart settings
setAutoStart();
}
void TodayConfig::moveSelectedUp() {
QListViewItem *item = m_appletListView->selectedItem();
if ( item && item->itemAbove() ) {
item->itemAbove()->moveItem( item );
}
}
void TodayConfig::moveSelectedDown() {
QListViewItem *item = m_appletListView->selectedItem();
if ( item && item->itemBelow() ) {
item->moveItem( item->itemBelow() );
}
}
/**
* Set up the icons in the order/active tab
*/
void TodayConfig::pluginManagement( QString libName, QString name, QPixmap icon ) {
QCheckListItem *item;
item = new QCheckListItem( m_appletListView, name, QCheckListItem::CheckBox );
if ( !icon.isNull() ) {
item->setPixmap( 0, icon );
}
if ( m_excludeApplets.find( libName ) == m_excludeApplets.end() ) {
item->setOn( TRUE );
}
m_applets[libName] = item;
// kind of hack to get the first tab as default.
TabWidget3->setCurrentTab( tab_2 );
}
void TodayConfig::appletChanged() {
m_applets_changed = true;
}
TodayConfig::~TodayConfig() {
}
diff --git a/core/pim/today/todayconfig.h b/core/pim/today/todayconfig.h
index f23b850..aa227dd 100644
--- a/core/pim/today/todayconfig.h
+++ b/core/pim/today/todayconfig.h
@@ -1,71 +1,73 @@
/*
* todayconfig.h
*
* copyright : (c) 2002 by Maximilian Reiß
* email : harlekin@handhelds.org
*
*/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
#ifndef TODAYCONFIG_H
#define TODAYCONFIG_H
#include <qvariant.h>
#include <qdialog.h>
#include <qlistview.h>
#include <opie/otabwidget.h>
class QCheckBox;
class QLabel;
class QSpinBox;
class QTabWidget;
class TodayConfig : public QDialog {
Q_OBJECT
public:
TodayConfig( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
~TodayConfig();
OTabWidget* TabWidget3;
void writeConfig();
void pluginManagement( QString libName, QString name, QPixmap icon );
protected slots:
void appletChanged();
void moveSelectedUp();
void moveSelectedDown();
private:
void setAutoStart();
void readConfig();
QListView* m_appletListView;
QMap<QString,QCheckListItem*> m_applets;
int m_autoStart;
int m_autoStartTimer;
+ int m_iconSize;
QStringList m_excludeApplets;
bool m_applets_changed;
QLabel* TextLabel2;
QCheckBox* CheckBoxAuto;
QWidget* tab_2;
QWidget* tab_3;
QLabel* TextLabel1;
QSpinBox* SpinBox7;
QLabel* TimeLabel;
QSpinBox* SpinBoxTime;
+ QSpinBox* SpinBoxIconSize;
};
#endif