summaryrefslogtreecommitdiff
path: root/core/pim
authoralwin <alwin>2005-03-18 16:57:24 (UTC)
committer alwin <alwin>2005-03-18 16:57:24 (UTC)
commit977193cc46768da220ddb01aca74286b28e6b7ee (patch) (unidiff)
treeeff59fc4011b0b3a6fd610b2b04e934eb21a0687 /core/pim
parentf32b76432aeb554204f06ca15ed1ec8d5387fb12 (diff)
downloadopie-977193cc46768da220ddb01aca74286b28e6b7ee.zip
opie-977193cc46768da220ddb01aca74286b28e6b7ee.tar.gz
opie-977193cc46768da220ddb01aca74286b28e6b7ee.tar.bz2
work on plugins finished.
these plugins now may have a config-widget (sorry guys - I had to change the plugininterface and so the UUID again.) the plugin for nationalholidays now has such a widget, the datebook will insert configwidgets into its settingsdialog. corrected the .pro file of opiepim2/ui so it contains the header/cpp files for that pluginsystem.
Diffstat (limited to 'core/pim') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/datebook/datebook.cpp1
-rw-r--r--core/pim/datebook/datebooksettings.cpp28
-rw-r--r--core/pim/datebook/datebooksettings.h6
-rw-r--r--core/pim/datebook/holiday/national/national-holidays.pro4
-rw-r--r--core/pim/datebook/holiday/national/nationalcfg.cpp11
-rw-r--r--core/pim/datebook/holiday/national/nationalcfgwidget.cpp99
-rw-r--r--core/pim/datebook/holiday/national/nationalcfgwidget.h39
-rw-r--r--core/pim/datebook/holiday/national/nationalholiday.cpp13
-rw-r--r--core/pim/datebook/holiday/national/nationalholiday.h2
9 files changed, 189 insertions, 14 deletions
diff --git a/core/pim/datebook/datebook.cpp b/core/pim/datebook/datebook.cpp
index 8ae4f84..70dd7b5 100644
--- a/core/pim/datebook/datebook.cpp
+++ b/core/pim/datebook/datebook.cpp
@@ -263,6 +263,7 @@ void DateBook::slotSettings()
263 frmSettings.comboCategory->setCategories(defaultCategories,"Calendar", tr("Calendar")); 263 frmSettings.comboCategory->setCategories(defaultCategories,"Calendar", tr("Calendar"));
264 264
265 if ( QPEApplication::execDialog( &frmSettings ) ) { 265 if ( QPEApplication::execDialog( &frmSettings ) ) {
266 frmSettings.savePlugins();
266 db_holiday->pluginManager()->save(); 267 db_holiday->pluginManager()->save();
267 db_holiday->reloadPlugins(); 268 db_holiday->reloadPlugins();
268 269
diff --git a/core/pim/datebook/datebooksettings.cpp b/core/pim/datebook/datebooksettings.cpp
index 861e266..561dc38 100644
--- a/core/pim/datebook/datebooksettings.cpp
+++ b/core/pim/datebook/datebooksettings.cpp
@@ -22,6 +22,9 @@
22 22
23#include <opie2/opluginloader.h> 23#include <opie2/opluginloader.h>
24#include <opie2/odebug.h> 24#include <opie2/odebug.h>
25#include <opie2/oholidaypluginif.h>
26#include <opie2/oholidayplugin.h>
27#include <opie2/oholidayplugincfgwidget.h>
25 28
26#include <qpe/qpeapplication.h> 29#include <qpe/qpeapplication.h>
27 30
@@ -29,6 +32,8 @@
29#include <qcheckbox.h> 32#include <qcheckbox.h>
30#include <qlistview.h> 33#include <qlistview.h>
31#include <qheader.h> 34#include <qheader.h>
35#include <qtabwidget.h>
36#include <qlayout.h>
32 37
33DateBookSettings::DateBookSettings( bool whichClock, QWidget *parent, 38DateBookSettings::DateBookSettings( bool whichClock, QWidget *parent,
34 const char *name, bool modal, WFlags fl ) 39 const char *name, bool modal, WFlags fl )
@@ -90,6 +95,29 @@ void DateBookSettings::setPluginList(Opie::Core::OPluginManager*aManager,Opie::C
90 for ( Opie::Core::OPluginItem::List::Iterator it = inLst.begin(); it != inLst.end(); ++it ) { 95 for ( Opie::Core::OPluginItem::List::Iterator it = inLst.begin(); it != inLst.end(); ++it ) {
91 pitem = new QCheckListItem(m_PluginListView,(*it).name(),QCheckListItem::CheckBox); 96 pitem = new QCheckListItem(m_PluginListView,(*it).name(),QCheckListItem::CheckBox);
92 pitem->setOn( (*it).isEnabled() ); 97 pitem->setOn( (*it).isEnabled() );
98
99 Opie::Datebook::HolidayPluginIf*hif = m_loader->load<Opie::Datebook::HolidayPluginIf>(*it,IID_HOLIDAY_PLUGIN);
100 if (!hif) continue;
101 Opie::Datebook::HolidayPlugin*pl = hif->plugin();
102 if (!pl) continue;
103 Opie::Datebook::HolidayPluginConfigWidget*cfg = pl->configWidget();
104 if (!cfg) continue;
105 QWidget * dtab = new QWidget(TabWidget,pl->description());
106 QVBoxLayout*dlayout = new QVBoxLayout(dtab);
107 dlayout->setMargin(2);
108 dlayout->setSpacing(2);
109 cfg->reparent(dtab,0,QPoint(0,0));
110 dlayout->addWidget(cfg);
111 TabWidget->insertTab(dtab,pl->description());
112
113 m_cfgWidgets.append(cfg);
114 }
115}
116void DateBookSettings::savePlugins()
117{
118 QValueList<Opie::Datebook::HolidayPluginConfigWidget*>::Iterator it;
119 for (it=m_cfgWidgets.begin();it!=m_cfgWidgets.end();++it) {
120 (*it)->saveConfig();
93 } 121 }
94} 122}
95 123
diff --git a/core/pim/datebook/datebooksettings.h b/core/pim/datebook/datebooksettings.h
index df7d32c..912088f 100644
--- a/core/pim/datebook/datebooksettings.h
+++ b/core/pim/datebook/datebooksettings.h
@@ -22,6 +22,7 @@
22#define DATEBOOKSETTINGS_H 22#define DATEBOOKSETTINGS_H
23#include "datebooksettingsbase.h" 23#include "datebooksettingsbase.h"
24#include <qpe/categoryselect.h> 24#include <qpe/categoryselect.h>
25#include <qvaluelist.h>
25 26
26namespace Opie { 27namespace Opie {
27namespace Core { 28namespace Core {
@@ -32,6 +33,9 @@ namespace Core {
32namespace Ui { 33namespace Ui {
33 class OPluginConfigWidget; 34 class OPluginConfigWidget;
34} 35}
36namespace Datebook {
37 class HolidayPluginConfigWidget;
38}
35} 39}
36 40
37class DateBookSettings : public DateBookSettingsBase 41class DateBookSettings : public DateBookSettingsBase
@@ -55,6 +59,7 @@ public:
55 int rowStyle() const; 59 int rowStyle() const;
56 60
57 void setPluginList(Opie::Core::OPluginManager*,Opie::Core::OPluginLoader*); 61 void setPluginList(Opie::Core::OPluginManager*,Opie::Core::OPluginLoader*);
62 void savePlugins();
58private slots: 63private slots:
59 void slot12Hour( int ); 64 void slot12Hour( int );
60 void slotChangeClock( bool ); 65 void slotChangeClock( bool );
@@ -67,5 +72,6 @@ protected:
67 int oldtime; 72 int oldtime;
68 Opie::Core::OPluginManager*m_manager; 73 Opie::Core::OPluginManager*m_manager;
69 Opie::Core::OPluginLoader*m_loader; 74 Opie::Core::OPluginLoader*m_loader;
75 QValueList<Opie::Datebook::HolidayPluginConfigWidget*> m_cfgWidgets;
70}; 76};
71#endif 77#endif
diff --git a/core/pim/datebook/holiday/national/national-holidays.pro b/core/pim/datebook/holiday/national/national-holidays.pro
index 8b2b33e..3da9c3b 100644
--- a/core/pim/datebook/holiday/national/national-holidays.pro
+++ b/core/pim/datebook/holiday/national/national-holidays.pro
@@ -3,8 +3,8 @@ CONFIG -= moc
3CONFIG += qt plugin 3CONFIG += qt plugin
4 4
5# Input 5# Input
6HEADERS = nationalholiday.h nationalcfg.h 6HEADERS = nationalholiday.h nationalcfg.h nationalcfgwidget.h
7SOURCES = nationalholiday.cpp nationalcfg.cpp 7SOURCES = nationalholiday.cpp nationalcfg.cpp nationalcfgwidget.cpp
8INTERFACES= 8INTERFACES=
9 9
10INCLUDEPATH += $(OPIEDIR)/include \ 10INCLUDEPATH += $(OPIEDIR)/include \
diff --git a/core/pim/datebook/holiday/national/nationalcfg.cpp b/core/pim/datebook/holiday/national/nationalcfg.cpp
index a293251..52c453f 100644
--- a/core/pim/datebook/holiday/national/nationalcfg.cpp
+++ b/core/pim/datebook/holiday/national/nationalcfg.cpp
@@ -25,25 +25,20 @@ bool NHcfg::load(const QString&aPath)
25 _path=aPath; 25 _path=aPath;
26 stage = 0; 26 stage = 0;
27 _content.clear(); 27 _content.clear();
28 odebug << "Start loading file "<<_path<<oendl;
29 QFile *f=new QFile(_path); 28 QFile *f=new QFile(_path);
30 if (!f) { 29 if (!f) {
31 oerr << "Could not open file" << oendl; 30 oerr << "Could not open file" << oendl;
32 return false; 31 return false;
33 } 32 }
34 odebug << "Source" << oendl;
35 QXmlInputSource is(*f); 33 QXmlInputSource is(*f);
36 odebug << "Reader" << oendl;
37 QXmlSimpleReader reader; 34 QXmlSimpleReader reader;
38 odebug << "Handler" << oendl;
39 reader.setContentHandler(this); 35 reader.setContentHandler(this);
40 odebug << "Error handler" << oendl;
41 reader.setErrorHandler(this); 36 reader.setErrorHandler(this);
42 37
43 err = ""; 38 err = "";
44 odebug << "parse it" << oendl;
45 bool ret = reader.parse(is); 39 bool ret = reader.parse(is);
46 odebug << "Errors: " << err << oendl; 40 if (err.length()>0)
41 odebug << "Errors: " << err << oendl;
47 return ret; 42 return ret;
48} 43}
49 44
@@ -91,7 +86,6 @@ bool NHcfg::fatalError(const QXmlParseException& e)
91bool NHcfg::startElement(const QString&, const QString&,const QString& name, const QXmlAttributes& attr) 86bool NHcfg::startElement(const QString&, const QString&,const QString& name, const QXmlAttributes& attr)
92{ 87{
93 bool ret = false; 88 bool ret = false;
94 odebug << "startElement: " << name << oendl;
95 if (name==_key_doc) { 89 if (name==_key_doc) {
96 stage = 1; 90 stage = 1;
97 return true; 91 return true;
@@ -144,6 +138,5 @@ bool NHcfg::setName(const QXmlAttributes&attr)
144 return false; 138 return false;
145 } 139 }
146 _contentname = attr.value(nindx); 140 _contentname = attr.value(nindx);
147 odebug << "Contentname = " << _contentname<<oendl;
148 return true; 141 return true;
149} 142}
diff --git a/core/pim/datebook/holiday/national/nationalcfgwidget.cpp b/core/pim/datebook/holiday/national/nationalcfgwidget.cpp
new file mode 100644
index 0000000..6e3dd7d
--- a/dev/null
+++ b/core/pim/datebook/holiday/national/nationalcfgwidget.cpp
@@ -0,0 +1,99 @@
1#include "nationalcfgwidget.h"
2
3#include <opie2/odebug.h>
4
5#include <qpe/config.h>
6#include <qpe/qpeapplication.h>
7
8#include <qheader.h>
9#include <qlabel.h>
10#include <qlistview.h>
11#include <qpushbutton.h>
12#include <qlayout.h>
13#include <qvariant.h>
14#include <qtooltip.h>
15#include <qwhatsthis.h>
16#include <qheader.h>
17#include <qdir.h>
18
19/*
20 * Constructs a NationalHolidayConfig which is a child of 'parent', with the
21 * name 'name' and widget flags set to 'f'
22 */
23NationalHolidayConfigWidget::NationalHolidayConfigWidget( QWidget* parent, const char* name, WFlags fl )
24 : Opie::Datebook::HolidayPluginConfigWidget( parent, name, fl )
25{
26 if ( !name )
27 setName( "NationalHolidayConfig" );
28 resize( 206, 210 );
29 setCaption( tr( "Select national config" ) );
30 NationalHolidayConfigLayout = new QVBoxLayout( this );
31 NationalHolidayConfigLayout->setSpacing( 2 );
32 NationalHolidayConfigLayout->setMargin( 2 );
33
34 m_headLabel = new QLabel( this, "m_headLabel" );
35 m_headLabel->setText( tr( "Select one or more configs to load" ) );
36 m_headLabel->setAlignment( int( QLabel::AlignCenter ) );
37 NationalHolidayConfigLayout->addWidget( m_headLabel );
38
39 m_Configlist = new QListView( this, "m_Configlist" );
40 m_Configlist->addColumn( tr( "configfiles" ) );
41 QWhatsThis::add( m_Configlist, tr( "List of found xml-files which may load." ) );
42 NationalHolidayConfigLayout->addWidget( m_Configlist );
43
44 // signals and slots connections
45 connect( m_Configlist, SIGNAL( clicked(QListViewItem*) ), this, SLOT( listItemClicked(QListViewItem*) ) );
46 init();
47}
48
49void NationalHolidayConfigWidget::init()
50{
51 m_Configlist->header()->hide();
52 m_Configlist->setSorting(-1);
53
54 QString path = QPEApplication::qpeDir() + "etc/nationaldays";
55 QDir dir( path, "*.xml" );
56 QStringList list = dir.entryList();
57 QStringList::Iterator it;
58 Config cfg("nationaldays");
59 cfg.setGroup("entries");
60 files = cfg.readListEntry("files");
61 QCheckListItem *pitem = 0;
62
63 for (it=list.begin();it!=list.end();++it) {
64 pitem = new QCheckListItem(m_Configlist,(*it),QCheckListItem::CheckBox);
65 if (files.find((*it)) != files.end()) {
66 pitem->setOn(true);
67 } else {
68 pitem->setOn(false);
69 }
70 }
71}
72
73/*
74 * Destroys the object and frees any allocated resources
75 */
76NationalHolidayConfigWidget::~NationalHolidayConfigWidget()
77{
78 // no need to delete child widgets, Qt does it all for us
79}
80
81void NationalHolidayConfigWidget::listItemClicked(QListViewItem*item)
82{
83 if (!item) return;
84 QCheckListItem*pitem = ((QCheckListItem*)item);
85 QStringList::Iterator it = files.find(pitem->text(0));
86 if (pitem->isOn()&&it==files.end()) {
87 files.append(pitem->text(0));
88 } else if (!pitem->isOn() && it!=files.end()) {
89 files.remove(it);
90 }
91}
92
93void NationalHolidayConfigWidget::saveConfig()
94{
95 Config cfg("nationaldays");
96 cfg.setGroup("entries");
97 cfg.writeEntry("files",files);
98}
99
diff --git a/core/pim/datebook/holiday/national/nationalcfgwidget.h b/core/pim/datebook/holiday/national/nationalcfgwidget.h
new file mode 100644
index 0000000..9f16aa4
--- a/dev/null
+++ b/core/pim/datebook/holiday/national/nationalcfgwidget.h
@@ -0,0 +1,39 @@
1#ifndef NATIONALHOLIDAYCONFIGWIDGET_H
2#define NATIONALHOLIDAYCONFIGWIDGET_H
3
4#include <opie2/oholidayplugincfgwidget.h>
5
6#include <qvariant.h>
7#include <qwidget.h>
8#include <qstringlist.h>
9
10class QVBoxLayout;
11class QHBoxLayout;
12class QGridLayout;
13class QLabel;
14class QListView;
15class QListViewItem;
16
17class NationalHolidayConfigWidget : public Opie::Datebook::HolidayPluginConfigWidget
18{
19 Q_OBJECT
20
21public:
22 NationalHolidayConfigWidget( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
23 virtual ~NationalHolidayConfigWidget();
24
25 virtual void saveConfig();
26
27protected slots:
28 virtual void listItemClicked(QListViewItem*);
29
30protected:
31 void init();
32
33 QVBoxLayout* NationalHolidayConfigLayout;
34 QLabel* m_headLabel;
35 QListView* m_Configlist;
36 QStringList files;
37};
38
39#endif // NATIONALHOLIDAYCONFIG_H
diff --git a/core/pim/datebook/holiday/national/nationalholiday.cpp b/core/pim/datebook/holiday/national/nationalholiday.cpp
index 26cd913..52f3489 100644
--- a/core/pim/datebook/holiday/national/nationalholiday.cpp
+++ b/core/pim/datebook/holiday/national/nationalholiday.cpp
@@ -1,5 +1,6 @@
1#include "nationalholiday.h" 1#include "nationalholiday.h"
2#include "nationalcfg.h" 2#include "nationalcfg.h"
3#include "nationalcfgwidget.h"
3 4
4#include <opie2/odebug.h> 5#include <opie2/odebug.h>
5 6
@@ -26,18 +27,19 @@ void NationalHoliday::init()
26 Config cfg("nationaldays"); 27 Config cfg("nationaldays");
27 cfg.setGroup("entries"); 28 cfg.setGroup("entries");
28 files = cfg.readListEntry("files"); 29 files = cfg.readListEntry("files");
29 odebug << "Read " << files << oendl;
30} 30}
31 31
32void NationalHoliday::load_days() 32void NationalHoliday::load_days()
33{ 33{
34 if (init_done) return; 34 if (init_done) return;
35 Config cfg("nationaldays");
36 cfg.setGroup("entries");
35 QStringList::ConstIterator it; 37 QStringList::ConstIterator it;
36 NHcfg readit; 38 NHcfg readit;
37 for (it=files.begin();it!=files.end();++it) { 39 for (it=files.begin();it!=files.end();++it) {
38 odebug << QPEApplication::qpeDir()+"/etc/nationaldays/"+(*it) << oendl; 40 if (!readit.load(QPEApplication::qpeDir()+"/etc/nationaldays/"+(*it))) {
39 if (!readit.load(QPEApplication::qpeDir()+"/etc/nationaldays/"+(*it)))
40 continue; 41 continue;
42 }
41 tholidaylist::ConstIterator it; 43 tholidaylist::ConstIterator it;
42 for (it=readit.days().begin();it!=readit.days().end();++it) { 44 for (it=readit.days().begin();it!=readit.days().end();++it) {
43 _days[it.key()]+=(it.data()); 45 _days[it.key()]+=(it.data());
@@ -120,4 +122,9 @@ QValueList<EffectiveEvent> NationalHoliday::events(const QDate&start,const QDate
120 return ret; 122 return ret;
121} 123}
122 124
125Opie::Datebook::HolidayPluginConfigWidget*NationalHoliday::configWidget(QWidget *parent, const char *name, QWidget::WFlags fl)
126{
127 return new NationalHolidayConfigWidget(parent,name,fl);
128}
129
123EXPORT_HOLIDAY_PLUGIN(NationalHoliday); 130EXPORT_HOLIDAY_PLUGIN(NationalHoliday);
diff --git a/core/pim/datebook/holiday/national/nationalholiday.h b/core/pim/datebook/holiday/national/nationalholiday.h
index 6581263..afce3f4 100644
--- a/core/pim/datebook/holiday/national/nationalholiday.h
+++ b/core/pim/datebook/holiday/national/nationalholiday.h
@@ -5,6 +5,7 @@
5 5
6#include <opie2/oholidayplugin.h> 6#include <opie2/oholidayplugin.h>
7#include <opie2/oholidaypluginif.h> 7#include <opie2/oholidaypluginif.h>
8#include <opie2/oholidayplugincfgwidget.h>
8 9
9#include <qmap.h> 10#include <qmap.h>
10#include <qstringlist.h> 11#include <qstringlist.h>
@@ -21,6 +22,7 @@ public:
21 virtual QStringList entries(unsigned year, unsigned month, unsigned day); 22 virtual QStringList entries(unsigned year, unsigned month, unsigned day);
22 virtual QMap<QDate,QStringList> entries(const QDate&,const QDate&); 23 virtual QMap<QDate,QStringList> entries(const QDate&,const QDate&);
23 virtual QValueList<EffectiveEvent> events(const QDate&,const QDate&); 24 virtual QValueList<EffectiveEvent> events(const QDate&,const QDate&);
25 virtual Opie::Datebook::HolidayPluginConfigWidget*configWidget(QWidget *parent=0, const char *name = 0, QWidget::WFlags fl = 0);
24 26
25protected: 27protected:
26 void init(); 28 void init();