summaryrefslogtreecommitdiff
authorharlekin <harlekin>2003-02-12 11:40:53 (UTC)
committer harlekin <harlekin>2003-02-12 11:40:53 (UTC)
commitd5ca5bf9f6fc8d47c2786af80342b13036f14d36 (patch) (unidiff)
tree83b131e59306b2a387f893bc13491fbae6357702
parentd9f46624eff7817ea46a4cb2f9bd4e908308df45 (diff)
downloadopie-d5ca5bf9f6fc8d47c2786af80342b13036f14d36.zip
opie-d5ca5bf9f6fc8d47c2786af80342b13036f14d36.tar.gz
opie-d5ca5bf9f6fc8d47c2786af80342b13036f14d36.tar.bz2
now plugins should be translatable too
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/today/plugins/datebook/datebookevent.cpp4
-rw-r--r--core/pim/today/today.cpp25
2 files changed, 24 insertions, 5 deletions
diff --git a/core/pim/today/plugins/datebook/datebookevent.cpp b/core/pim/today/plugins/datebook/datebookevent.cpp
index 48f204e..3c1e97a 100644
--- a/core/pim/today/plugins/datebook/datebookevent.cpp
+++ b/core/pim/today/plugins/datebook/datebookevent.cpp
@@ -35,48 +35,48 @@ DateBookEvent::DateBookEvent(const EffectiveEvent &ev,
35 35
36 // setAlignment( AlignTop ); 36 // setAlignment( AlignTop );
37 37
38 QString msg; 38 QString msg;
39 39
40 Config config( "qpe" ); 40 Config config( "qpe" );
41 config.setGroup( "Time" ); 41 config.setGroup( "Time" );
42 // if 24 h format 42 // if 24 h format
43 ampm = config.readBoolEntry( "AMPM", TRUE ); 43 ampm = config.readBoolEntry( "AMPM", TRUE );
44 44
45 msg += "<B>" + (ev).description() + "</B>"; 45 msg += "<B>" + (ev).description() + "</B>";
46 if ( (ev).event().hasAlarm() ) { 46 if ( (ev).event().hasAlarm() ) {
47 msg += " <b>[with alarm]</b>"; 47 msg += " <b>" + tr("[with alarm]") +"</b>";
48 } 48 }
49 49
50 // include location or not 50 // include location or not
51 if ( show_location ) { 51 if ( show_location ) {
52 msg += "<BR><i>" + (ev).location() + "</i>"; 52 msg += "<BR><i>" + (ev).location() + "</i>";
53 } 53 }
54 54
55 if ( ( TimeString::timeString( QTime( (ev).event().start().time() ) ) == "00:00" ) 55 if ( ( TimeString::timeString( QTime( (ev).event().start().time() ) ) == "00:00" )
56 && ( TimeString::timeString( QTime( (ev).event().end().time() ) ) == "23:59" ) ) { 56 && ( TimeString::timeString( QTime( (ev).event().end().time() ) ) == "23:59" ) ) {
57 msg += "<br>All day"; 57 msg += "<br>All day";
58 } else { 58 } else {
59 // start time of event 59 // start time of event
60 QDate tempDate = (ev).event().start().date(); 60 QDate tempDate = (ev).event().start().date();
61 msg += "<br>" 61 msg += "<br>"
62 + ampmTime( QTime( (ev).event().start().time() ) ) 62 + ampmTime( QTime( (ev).event().start().time() ) )
63 // end time of event 63 // end time of event
64 + "<b> - </b>" + ampmTime( QTime( (ev).event().end().time() ) ) 64 + "<b> - </b>" + ampmTime( QTime( (ev).event().end().time() ) )
65 + differDate( tempDate ); 65 + differDate( tempDate );
66 } 66 }
67 67
68 // include possible note or not 68 // include possible note or not
69 if ( show_notes ) { 69 if ( show_notes ) {
70 msg += "<br> <i>note</i>:" +( (ev).notes() ).mid( 0, maxCharClip ); 70 msg += "<br> <i>" + tr("note") + "</i>:" +( (ev).notes() ).mid( 0, maxCharClip );
71 } 71 }
72 setText( msg ); 72 setText( msg );
73 connect( this, SIGNAL( clicked() ), this, SLOT( editMe() ) ); 73 connect( this, SIGNAL( clicked() ), this, SLOT( editMe() ) );
74} 74}
75 75
76DateBookEvent::~DateBookEvent() { 76DateBookEvent::~DateBookEvent() {
77} 77}
78 78
79/** 79/**
80 * AM/PM timestring conversion. 80 * AM/PM timestring conversion.
81 * @param tm the timestring 81 * @param tm the timestring
82 * @return formatted to am/pm is system is set to it 82 * @return formatted to am/pm is system is set to it
diff --git a/core/pim/today/today.cpp b/core/pim/today/today.cpp
index 2f6907d..2497ee1 100644
--- a/core/pim/today/today.cpp
+++ b/core/pim/today/today.cpp
@@ -6,46 +6,49 @@
6 * 6 *
7 */ 7 */
8/*************************************************************************** 8/***************************************************************************
9 * * 9 * *
10 * This program is free software; you can redistribute it and/or modify * 10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by * 11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or * 12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. * 13 * (at your option) any later version. *
14 * * 14 * *
15 ***************************************************************************/ 15 ***************************************************************************/
16 16
17 17
18
19#define QTOPIA_INTERNAL_LANGLIST
20
18#include "today.h" 21#include "today.h"
19#include <opie/todayconfigwidget.h> 22#include <opie/todayconfigwidget.h>
20 23
21#include <qpe/config.h> 24#include <qpe/config.h>
22#include <qpe/qcopenvelope_qws.h> 25#include <qpe/qcopenvelope_qws.h>
23#include <qpe/resource.h> 26#include <qpe/resource.h>
24#include <qpe/global.h> 27#include <qpe/global.h>
25#include <qpe/qpeapplication.h> 28#include <qpe/qpeapplication.h>
26#include <qpe/contact.h> 29#include <qpe/contact.h>
27 30
28#include <qdir.h> 31#include <qdir.h>
29#include <qfile.h> 32#include <qfile.h>
30#include <qpushbutton.h> 33#include <qpushbutton.h>
31#include <qlabel.h> 34#include <qlabel.h>
32#include <qtimer.h> 35#include <qtimer.h>
33#include <qpixmap.h> 36#include <qpixmap.h>
34#include <qlayout.h> 37#include <qlayout.h>
35#include <qhbox.h> 38#include <qhbox.h>
36#include <opie/otabwidget.h> 39#include <opie/otabwidget.h>
37#include <qdialog.h> 40#include <qdialog.h>
38#include <qwhatsthis.h> 41#include <qwhatsthis.h>
39 42#include <qtranslator.h>
40 43
41struct TodayPlugin { 44struct TodayPlugin {
42 TodayPlugin() : library( 0 ), iface( 0 ), guiPart( 0 ), guiBox( 0 ) {} 45 TodayPlugin() : library( 0 ), iface( 0 ), guiPart( 0 ), guiBox( 0 ) {}
43 QLibrary *library; 46 QLibrary *library;
44 QInterfacePtr<TodayPluginInterface> iface; 47 QInterfacePtr<TodayPluginInterface> iface;
45 TodayPluginObject *guiPart; 48 TodayPluginObject *guiPart;
46 QWidget *guiBox; 49 QWidget *guiBox;
47 QString name; 50 QString name;
48 bool active; 51 bool active;
49 bool excludeRefresh; 52 bool excludeRefresh;
50 int pos; 53 int pos;
51}; 54};
@@ -152,26 +155,26 @@ void Today::init() {
152 155
153/** 156/**
154 * Load the plugins 157 * Load the plugins
155 */ 158 */
156void Today::loadPlugins() { 159void Today::loadPlugins() {
157 160
158 init(); 161 init();
159 QValueList<TodayPlugin>::Iterator tit; 162 QValueList<TodayPlugin>::Iterator tit;
160 if ( !pluginList.isEmpty() ) { 163 if ( !pluginList.isEmpty() ) {
161 for ( tit = pluginList.begin(); tit != pluginList.end(); ++tit ) { 164 for ( tit = pluginList.begin(); tit != pluginList.end(); ++tit ) {
162 (*tit).guiBox->hide(); 165 (*tit).guiBox->hide();
163 (*tit).guiBox->reparent( 0, QPoint( 0, 0 ) ); 166 (*tit).guiBox->reparent( 0, QPoint( 0, 0 ) );
164 (*tit).library->unload();
165 delete (*tit).guiBox; 167 delete (*tit).guiBox;
168 (*tit).library->unload();
166 delete (*tit).library; 169 delete (*tit).library;
167 } 170 }
168 pluginList.clear(); 171 pluginList.clear();
169 } 172 }
170 173
171 QString path = QPEApplication::qpeDir() + "/plugins/today"; 174 QString path = QPEApplication::qpeDir() + "/plugins/today";
172 QDir dir( path, "lib*.so" ); 175 QDir dir( path, "lib*.so" );
173 176
174 QStringList list = dir.entryList(); 177 QStringList list = dir.entryList();
175 QStringList::Iterator it; 178 QStringList::Iterator it;
176 179
177 QMap<QString, TodayPlugin> tempList; 180 QMap<QString, TodayPlugin> tempList;
@@ -181,24 +184,38 @@ void Today::loadPlugins() {
181 QLibrary *lib = new QLibrary( path + "/" + *it ); 184 QLibrary *lib = new QLibrary( path + "/" + *it );
182 185
183 qDebug( "querying: %s", QString( path + "/" + *it ).latin1() ); 186 qDebug( "querying: %s", QString( path + "/" + *it ).latin1() );
184 if ( lib->queryInterface( IID_TodayPluginInterface, (QUnknownInterface**)&iface ) == QS_OK ) { 187 if ( lib->queryInterface( IID_TodayPluginInterface, (QUnknownInterface**)&iface ) == QS_OK ) {
185 qDebug( "accepted: %s", QString( path + "/" + *it ).latin1() ); 188 qDebug( "accepted: %s", QString( path + "/" + *it ).latin1() );
186 qDebug( QString(*it) ); 189 qDebug( QString(*it) );
187 190
188 TodayPlugin plugin; 191 TodayPlugin plugin;
189 plugin.library = lib; 192 plugin.library = lib;
190 plugin.iface = iface; 193 plugin.iface = iface;
191 plugin.name = QString(*it); 194 plugin.name = QString(*it);
192 195
196 QString type = (*it).left( (*it).find(".") );
197 QStringList langs = Global::languageList();
198 for (QStringList::ConstIterator lit = langs.begin(); lit!=langs.end(); ++lit) {
199 QString lang = *lit;
200 qDebug( "Languages: " + lang );
201 QTranslator * trans = new QTranslator( qApp );
202 QString tfn = QPEApplication::qpeDir()+"/i18n/" + lang + "/" + type + ".qm";
203 if ( trans->load( tfn ) ) {
204 qApp->installTranslator( trans );
205 } else {
206 delete trans;
207 }
208 }
209
193 // find out if plugins should be shown 210 // find out if plugins should be shown
194 if ( m_excludeApplets.grep( *it ).isEmpty() ) { 211 if ( m_excludeApplets.grep( *it ).isEmpty() ) {
195 plugin.active = true; 212 plugin.active = true;
196 } else { 213 } else {
197 plugin.active = false; 214 plugin.active = false;
198 } 215 }
199 216
200 plugin.guiPart = plugin.iface->guiPart(); 217 plugin.guiPart = plugin.iface->guiPart();
201 plugin.excludeRefresh = plugin.guiPart->excludeFromRefresh(); 218 plugin.excludeRefresh = plugin.guiPart->excludeFromRefresh();
202 219
203 // package the whole thing into a qwidget so it can be shown and hidden 220 // package the whole thing into a qwidget so it can be shown and hidden
204 plugin.guiBox = new QWidget( this ); 221 plugin.guiBox = new QWidget( this );
@@ -294,24 +311,25 @@ void Today::draw() {
294 } 311 }
295 layout->addStretch(0); 312 layout->addStretch(0);
296} 313}
297 314
298 315
299/** 316/**
300 * The method for the configuration dialog. 317 * The method for the configuration dialog.
301 */ 318 */
302void Today::startConfig() { 319void Today::startConfig() {
303 320
304 // disconnect timer to prevent problems while being on config dialog 321 // disconnect timer to prevent problems while being on config dialog
305 disconnect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) ); 322 disconnect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) );
323 m_refreshTimer->stop( );
306 324
307 TodayConfig conf( this, "dialog", true ); 325 TodayConfig conf( this, "dialog", true );
308 326
309 TodayPlugin plugin; 327 TodayPlugin plugin;
310 QList<TodayConfigWidget> configWidgetList; 328 QList<TodayConfigWidget> configWidgetList;
311 329
312 for ( int i = pluginList.count() - 1 ; i >= 0; i-- ) { 330 for ( int i = pluginList.count() - 1 ; i >= 0; i-- ) {
313 plugin = pluginList[i]; 331 plugin = pluginList[i];
314 332
315 // load the config widgets in the tabs 333 // load the config widgets in the tabs
316 if ( plugin.guiPart->configWidget( this ) != 0l ) { 334 if ( plugin.guiPart->configWidget( this ) != 0l ) {
317 TodayConfigWidget* widget = plugin.guiPart->configWidget( conf.TabWidget3 ); 335 TodayConfigWidget* widget = plugin.guiPart->configWidget( conf.TabWidget3 );
@@ -325,25 +343,26 @@ void Today::startConfig() {
325 } 343 }
326 344
327 if ( conf.exec() == QDialog::Accepted ) { 345 if ( conf.exec() == QDialog::Accepted ) {
328 conf.writeConfig(); 346 conf.writeConfig();
329 TodayConfigWidget *confWidget; 347 TodayConfigWidget *confWidget;
330 for ( confWidget = configWidgetList.first(); confWidget != 0; 348 for ( confWidget = configWidgetList.first(); confWidget != 0;
331 confWidget = configWidgetList.next() ) { 349 confWidget = configWidgetList.next() ) {
332 confWidget->writeConfig(); 350 confWidget->writeConfig();
333 } 351 }
334 loadPlugins(); 352 loadPlugins();
335 } else { 353 } else {
336 // since refresh is not called in that case , reconnect the signal 354 // since refresh is not called in that case , reconnect the signal
337 connect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) ); 355 m_refreshTimer->start( 15000 ); // get the config value in here later
356 connect( m_refreshTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) );
338 } 357 }
339} 358}
340 359
341 360
342/** 361/**
343 * Refresh for the view. Reload all applets 362 * Refresh for the view. Reload all applets
344 * 363 *
345 */ 364 */
346void Today::refresh() { 365void Today::refresh() {
347 366
348 init(); 367 init();
349 368