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) (side-by-side diff)
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
@@ -265,2 +265,3 @@ void DateBook::slotSettings()
if ( QPEApplication::execDialog( &frmSettings ) ) {
+ frmSettings.savePlugins();
db_holiday->pluginManager()->save();
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
@@ -24,2 +24,5 @@
#include <opie2/odebug.h>
+#include <opie2/oholidaypluginif.h>
+#include <opie2/oholidayplugin.h>
+#include <opie2/oholidayplugincfgwidget.h>
@@ -31,2 +34,4 @@
#include <qheader.h>
+#include <qtabwidget.h>
+#include <qlayout.h>
@@ -92,2 +97,25 @@ void DateBookSettings::setPluginList(Opie::Core::OPluginManager*aManager,Opie::C
pitem->setOn( (*it).isEnabled() );
+
+ Opie::Datebook::HolidayPluginIf*hif = m_loader->load<Opie::Datebook::HolidayPluginIf>(*it,IID_HOLIDAY_PLUGIN);
+ if (!hif) continue;
+ Opie::Datebook::HolidayPlugin*pl = hif->plugin();
+ if (!pl) continue;
+ Opie::Datebook::HolidayPluginConfigWidget*cfg = pl->configWidget();
+ if (!cfg) continue;
+ QWidget * dtab = new QWidget(TabWidget,pl->description());
+ QVBoxLayout*dlayout = new QVBoxLayout(dtab);
+ dlayout->setMargin(2);
+ dlayout->setSpacing(2);
+ cfg->reparent(dtab,0,QPoint(0,0));
+ dlayout->addWidget(cfg);
+ TabWidget->insertTab(dtab,pl->description());
+
+ m_cfgWidgets.append(cfg);
+ }
+}
+void DateBookSettings::savePlugins()
+{
+ QValueList<Opie::Datebook::HolidayPluginConfigWidget*>::Iterator it;
+ for (it=m_cfgWidgets.begin();it!=m_cfgWidgets.end();++it) {
+ (*it)->saveConfig();
}
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
@@ -24,2 +24,3 @@
#include <qpe/categoryselect.h>
+#include <qvaluelist.h>
@@ -34,2 +35,5 @@ namespace Ui {
}
+namespace Datebook {
+ class HolidayPluginConfigWidget;
+}
}
@@ -57,2 +61,3 @@ public:
void setPluginList(Opie::Core::OPluginManager*,Opie::Core::OPluginLoader*);
+ void savePlugins();
private slots:
@@ -69,2 +74,3 @@ protected:
Opie::Core::OPluginLoader*m_loader;
+ QValueList<Opie::Datebook::HolidayPluginConfigWidget*> m_cfgWidgets;
};
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
@@ -5,4 +5,4 @@ CONFIG += qt plugin
# Input
-HEADERS = nationalholiday.h nationalcfg.h
-SOURCES = nationalholiday.cpp nationalcfg.cpp
+HEADERS = nationalholiday.h nationalcfg.h nationalcfgwidget.h
+SOURCES = nationalholiday.cpp nationalcfg.cpp nationalcfgwidget.cpp
INTERFACES=
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
@@ -27,3 +27,2 @@ bool NHcfg::load(const QString&aPath)
_content.clear();
- odebug << "Start loading file "<<_path<<oendl;
QFile *f=new QFile(_path);
@@ -33,9 +32,5 @@ bool NHcfg::load(const QString&aPath)
}
- odebug << "Source" << oendl;
QXmlInputSource is(*f);
- odebug << "Reader" << oendl;
QXmlSimpleReader reader;
- odebug << "Handler" << oendl;
reader.setContentHandler(this);
- odebug << "Error handler" << oendl;
reader.setErrorHandler(this);
@@ -43,5 +38,5 @@ bool NHcfg::load(const QString&aPath)
err = "";
- odebug << "parse it" << oendl;
bool ret = reader.parse(is);
- odebug << "Errors: " << err << oendl;
+ if (err.length()>0)
+ odebug << "Errors: " << err << oendl;
return ret;
@@ -93,3 +88,2 @@ bool NHcfg::startElement(const QString&, const QString&,const QString& name, con
bool ret = false;
- odebug << "startElement: " << name << oendl;
if (name==_key_doc) {
@@ -146,3 +140,2 @@ bool NHcfg::setName(const QXmlAttributes&attr)
_contentname = attr.value(nindx);
- odebug << "Contentname = " << _contentname<<oendl;
return true;
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 @@
+#include "nationalcfgwidget.h"
+
+#include <opie2/odebug.h>
+
+#include <qpe/config.h>
+#include <qpe/qpeapplication.h>
+
+#include <qheader.h>
+#include <qlabel.h>
+#include <qlistview.h>
+#include <qpushbutton.h>
+#include <qlayout.h>
+#include <qvariant.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include <qheader.h>
+#include <qdir.h>
+
+/*
+ * Constructs a NationalHolidayConfig which is a child of 'parent', with the
+ * name 'name' and widget flags set to 'f'
+ */
+NationalHolidayConfigWidget::NationalHolidayConfigWidget( QWidget* parent, const char* name, WFlags fl )
+ : Opie::Datebook::HolidayPluginConfigWidget( parent, name, fl )
+{
+ if ( !name )
+ setName( "NationalHolidayConfig" );
+ resize( 206, 210 );
+ setCaption( tr( "Select national config" ) );
+ NationalHolidayConfigLayout = new QVBoxLayout( this );
+ NationalHolidayConfigLayout->setSpacing( 2 );
+ NationalHolidayConfigLayout->setMargin( 2 );
+
+ m_headLabel = new QLabel( this, "m_headLabel" );
+ m_headLabel->setText( tr( "Select one or more configs to load" ) );
+ m_headLabel->setAlignment( int( QLabel::AlignCenter ) );
+ NationalHolidayConfigLayout->addWidget( m_headLabel );
+
+ m_Configlist = new QListView( this, "m_Configlist" );
+ m_Configlist->addColumn( tr( "configfiles" ) );
+ QWhatsThis::add( m_Configlist, tr( "List of found xml-files which may load." ) );
+ NationalHolidayConfigLayout->addWidget( m_Configlist );
+
+ // signals and slots connections
+ connect( m_Configlist, SIGNAL( clicked(QListViewItem*) ), this, SLOT( listItemClicked(QListViewItem*) ) );
+ init();
+}
+
+void NationalHolidayConfigWidget::init()
+{
+ m_Configlist->header()->hide();
+ m_Configlist->setSorting(-1);
+
+ QString path = QPEApplication::qpeDir() + "etc/nationaldays";
+ QDir dir( path, "*.xml" );
+ QStringList list = dir.entryList();
+ QStringList::Iterator it;
+ Config cfg("nationaldays");
+ cfg.setGroup("entries");
+ files = cfg.readListEntry("files");
+ QCheckListItem *pitem = 0;
+
+ for (it=list.begin();it!=list.end();++it) {
+ pitem = new QCheckListItem(m_Configlist,(*it),QCheckListItem::CheckBox);
+ if (files.find((*it)) != files.end()) {
+ pitem->setOn(true);
+ } else {
+ pitem->setOn(false);
+ }
+ }
+}
+
+/*
+ * Destroys the object and frees any allocated resources
+ */
+NationalHolidayConfigWidget::~NationalHolidayConfigWidget()
+{
+ // no need to delete child widgets, Qt does it all for us
+}
+
+void NationalHolidayConfigWidget::listItemClicked(QListViewItem*item)
+{
+ if (!item) return;
+ QCheckListItem*pitem = ((QCheckListItem*)item);
+ QStringList::Iterator it = files.find(pitem->text(0));
+ if (pitem->isOn()&&it==files.end()) {
+ files.append(pitem->text(0));
+ } else if (!pitem->isOn() && it!=files.end()) {
+ files.remove(it);
+ }
+}
+
+void NationalHolidayConfigWidget::saveConfig()
+{
+ Config cfg("nationaldays");
+ cfg.setGroup("entries");
+ cfg.writeEntry("files",files);
+}
+
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 @@
+#ifndef NATIONALHOLIDAYCONFIGWIDGET_H
+#define NATIONALHOLIDAYCONFIGWIDGET_H
+
+#include <opie2/oholidayplugincfgwidget.h>
+
+#include <qvariant.h>
+#include <qwidget.h>
+#include <qstringlist.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QLabel;
+class QListView;
+class QListViewItem;
+
+class NationalHolidayConfigWidget : public Opie::Datebook::HolidayPluginConfigWidget
+{
+ Q_OBJECT
+
+public:
+ NationalHolidayConfigWidget( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+ virtual ~NationalHolidayConfigWidget();
+
+ virtual void saveConfig();
+
+protected slots:
+ virtual void listItemClicked(QListViewItem*);
+
+protected:
+ void init();
+
+ QVBoxLayout* NationalHolidayConfigLayout;
+ QLabel* m_headLabel;
+ QListView* m_Configlist;
+ QStringList files;
+};
+
+#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
@@ -2,2 +2,3 @@
#include "nationalcfg.h"
+#include "nationalcfgwidget.h"
@@ -28,3 +29,2 @@ void NationalHoliday::init()
files = cfg.readListEntry("files");
- odebug << "Read " << files << oendl;
}
@@ -34,2 +34,4 @@ void NationalHoliday::load_days()
if (init_done) return;
+ Config cfg("nationaldays");
+ cfg.setGroup("entries");
QStringList::ConstIterator it;
@@ -37,5 +39,5 @@ void NationalHoliday::load_days()
for (it=files.begin();it!=files.end();++it) {
- odebug << QPEApplication::qpeDir()+"/etc/nationaldays/"+(*it) << oendl;
- if (!readit.load(QPEApplication::qpeDir()+"/etc/nationaldays/"+(*it)))
+ if (!readit.load(QPEApplication::qpeDir()+"/etc/nationaldays/"+(*it))) {
continue;
+ }
tholidaylist::ConstIterator it;
@@ -122,2 +124,7 @@ QValueList<EffectiveEvent> NationalHoliday::events(const QDate&start,const QDate
+Opie::Datebook::HolidayPluginConfigWidget*NationalHoliday::configWidget(QWidget *parent, const char *name, QWidget::WFlags fl)
+{
+ return new NationalHolidayConfigWidget(parent,name,fl);
+}
+
EXPORT_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
@@ -7,2 +7,3 @@
#include <opie2/oholidaypluginif.h>
+#include <opie2/oholidayplugincfgwidget.h>
@@ -23,2 +24,3 @@ public:
virtual QValueList<EffectiveEvent> events(const QDate&,const QDate&);
+ virtual Opie::Datebook::HolidayPluginConfigWidget*configWidget(QWidget *parent=0, const char *name = 0, QWidget::WFlags fl = 0);