From b7996a25adab32e6f2e4d278a9d9801ad66f90c7 Mon Sep 17 00:00:00 2001 From: alwin Date: Fri, 18 Mar 2005 12:49:14 +0000 Subject: made plugins configureable, eg, if them will load or not (or switch on/off at runtime) events generated from plugins will not editable and so on (check for a wrong Uid) so them are just text inside datebook. --- (limited to 'core/pim') diff --git a/core/pim/datebook/datebook.cpp b/core/pim/datebook/datebook.cpp index a7f6691..8ae4f84 100644 --- a/core/pim/datebook/datebook.cpp +++ b/core/pim/datebook/datebook.cpp @@ -246,6 +246,7 @@ void DateBook::slotSettings() frmSettings.setRowStyle( rowStyle ); frmSettings.comboDefaultView->setCurrentItem(defaultView-1); frmSettings.comboWeekListView->setCurrentItem(weeklistviewconfig); + frmSettings.setPluginList(db_holiday->pluginManager(),db_holiday->pluginLoader()); bool found=false; for (int i=0; i<(frmSettings.comboLocation->count()); i++) { @@ -262,6 +263,9 @@ void DateBook::slotSettings() frmSettings.comboCategory->setCategories(defaultCategories,"Calendar", tr("Calendar")); if ( QPEApplication::execDialog( &frmSettings ) ) { + db_holiday->pluginManager()->save(); + db_holiday->reloadPlugins(); + aPreset = frmSettings.alarmPreset(); presetTime = frmSettings.presetTime(); startTime = frmSettings.startTime(); @@ -1089,6 +1093,15 @@ DateBookHoliday::DateBookHoliday() _pluginlist.clear(); m_pluginLoader = new Opie::Core::OPluginLoader("holidays",false); m_pluginLoader->setAutoDelete(true); + m_pluginManager = new Opie::Core::OPluginManager(m_pluginLoader); + m_pluginManager->load(); + + init(); +} + +void DateBookHoliday::reloadPlugins() +{ + deinit(); init(); } @@ -1096,22 +1109,18 @@ DateBookHoliday::~DateBookHoliday() { deinit(); delete m_pluginLoader; + delete m_pluginManager; } void DateBookHoliday::deinit() { -/* QValueList::Iterator it; for (it=_pluginlist.begin();it!=_pluginlist.end();++it) { HPlugin*_pl = *it; - // destructs itself? - _pl->_if->release(); - _pl->_lib->unload(); - delete _pl->_lib; + *it = 0; delete _pl; } _pluginlist.clear(); -*/ } #if 0 @@ -1123,10 +1132,9 @@ void debugLst( const Opie::Core::OPluginItem::List& lst ) { void DateBookHoliday::init() { -#if 0 deinit(); -#endif - Opie::Core::OPluginItem::List lst = m_pluginLoader->allAvailable( false ); + + Opie::Core::OPluginItem::List lst = m_pluginLoader->filtered(true); // debugLst( lst ); for( Opie::Core::OPluginItem::List::Iterator it = lst.begin(); it != lst.end(); ++it ){ Opie::Datebook::HolidayPluginIf*hif = m_pluginLoader->load(*it,IID_HOLIDAY_PLUGIN); @@ -1141,30 +1149,6 @@ void DateBookHoliday::init() } } } -#if 0 - QString path = QPEApplication::qpeDir() + "plugins/datebook/holiday"; - QDir dir( path, "lib*.so" ); - QStringList list = dir.entryList(); - QStringList::Iterator it; - for (it=list.begin();it!=list.end();++it) { - Opie::Datebook::HolidayPluginIf*hif = 0; - QLibrary*lib=new QLibrary(path+"/"+*it); - if ((lib->queryInterface(IID_HOLIDAY_PLUGIN,(QUnknownInterface**)&hif) == QS_OK) && hif) { - Opie::Datebook::HolidayPlugin*pl = hif->plugin(); - if (pl) { - HPlugin*_pl=new HPlugin; - _pl->_plugin = pl; - odebug << "Found holiday " << pl->description()<_lib = lib; - _pl->_if = hif; - _pluginlist.append(_pl); - } else { - } - } else { - delete lib; - } - } -#endif } QStringList DateBookHoliday::holidaylist(const QDate&aDate) diff --git a/core/pim/datebook/datebookday.cpp b/core/pim/datebook/datebookday.cpp index 00ddd05..26f0303 100644 --- a/core/pim/datebook/datebookday.cpp +++ b/core/pim/datebook/datebookday.cpp @@ -363,10 +363,11 @@ void DateBookDay::getEvents() QStringList hdays = _holiday_db->holidaylist(currDate); QStringList::Iterator sit; QObject* object = 0; + + /* this way we make sure that holiday dummy events are always + on top of the widgetlist. */ for (sit=hdays.begin();sit!=hdays.end();++sit) { - object = m_allDays->addHoliday(*sit); - if (!object) continue; - /* not to do something with it */ + m_allDays->addHoliday(*sit); } QValueList eventList = db->getEffectiveEventsNoHoliday( currDate, currDate ); QValueListIterator it; diff --git a/core/pim/datebook/datebookdayallday.cpp b/core/pim/datebook/datebookdayallday.cpp index 5b40246..27fce44 100644 --- a/core/pim/datebook/datebookdayallday.cpp +++ b/core/pim/datebook/datebookdayallday.cpp @@ -192,7 +192,7 @@ void DatebookAlldayDisp::mousePressEvent(QMouseEvent*e) setBackgroundColor(green); update(); QPopupMenu m; - if (!m_holiday) { + if (ev.isValidUid()) { m.insertItem( DateBookDayWidget::tr( "Edit" ), 1 ); m.insertItem( DateBookDayWidget::tr( "Duplicate" ), 4 ); m.insertItem( DateBookDayWidget::tr( "Delete" ), 2 ); diff --git a/core/pim/datebook/datebooksettings.cpp b/core/pim/datebook/datebooksettings.cpp index cb4b73b..861e266 100644 --- a/core/pim/datebook/datebooksettings.cpp +++ b/core/pim/datebook/datebooksettings.cpp @@ -20,20 +20,29 @@ #include "datebooksettings.h" +#include +#include + #include #include #include +#include +#include DateBookSettings::DateBookSettings( bool whichClock, QWidget *parent, const char *name, bool modal, WFlags fl ) : DateBookSettingsBase( parent, name, modal, fl ), ampm( whichClock ) { - init(); - QObject::connect( qApp, SIGNAL( clockChanged(bool) ), this, SLOT( slotChangeClock(bool) ) ); - QArray categories; - comboCategory->setCategories( categories, "Calendar", tr("Calendar") ); + init(); + QObject::connect( qApp, SIGNAL( clockChanged(bool) ), this, SLOT( slotChangeClock(bool) ) ); + QArray categories; + comboCategory->setCategories( categories, "Calendar", tr("Calendar") ); + m_loader = 0; + m_manager = 0; + m_PluginListView->header()->hide(); + m_PluginListView->setSorting(-1); } DateBookSettings::~DateBookSettings() @@ -43,17 +52,17 @@ DateBookSettings::~DateBookSettings() void DateBookSettings::setStartTime( int newStartViewTime ) { if ( ampm ) { - if ( newStartViewTime >= 12 ) { - newStartViewTime %= 12; - if ( newStartViewTime == 0 ) - newStartViewTime = 12; - spinStart->setSuffix( tr(":00 PM") ); - } - else if ( newStartViewTime == 0 ) { - newStartViewTime = 12; - spinStart->setSuffix( tr(":00 AM") ); - } - oldtime = newStartViewTime; + if ( newStartViewTime >= 12 ) { + newStartViewTime %= 12; + if ( newStartViewTime == 0 ) + newStartViewTime = 12; + spinStart->setSuffix( tr(":00 PM") ); + } + else if ( newStartViewTime == 0 ) { + newStartViewTime = 12; + spinStart->setSuffix( tr(":00 AM") ); + } + oldtime = newStartViewTime; } spinStart->setValue( newStartViewTime ); } @@ -62,20 +71,47 @@ int DateBookSettings::startTime() const { int returnMe = spinStart->value(); if ( ampm ) { - if ( returnMe != 12 && spinStart->suffix().contains(tr("PM"), FALSE) ) - returnMe += 12; - else if (returnMe == 12 && spinStart->suffix().contains(tr("AM"), TRUE)) - returnMe = 0; + if ( returnMe != 12 && spinStart->suffix().contains(tr("PM"), FALSE) ) + returnMe += 12; + else if (returnMe == 12 && spinStart->suffix().contains(tr("AM"), TRUE)) + returnMe = 0; } return returnMe; } +void DateBookSettings::setPluginList(Opie::Core::OPluginManager*aManager,Opie::Core::OPluginLoader*aLoader) +{ + m_manager = aManager; + m_loader = aLoader; + if (!aManager||!aLoader) return; + Opie::Core::OPluginItem::List inLst = m_loader->allAvailable(true); + QCheckListItem *pitem = 0; + + for ( Opie::Core::OPluginItem::List::Iterator it = inLst.begin(); it != inLst.end(); ++it ) { + pitem = new QCheckListItem(m_PluginListView,(*it).name(),QCheckListItem::CheckBox); + pitem->setOn( (*it).isEnabled() ); + } +} + +void DateBookSettings::pluginItemClicked(QListViewItem *aItem) +{ + if (!aItem||!m_manager||!m_loader) return; + QCheckListItem*pitem = ((QCheckListItem*)aItem); + + Opie::Core::OPluginItem::List lst = m_loader->allAvailable( true ); + for ( Opie::Core::OPluginItem::List::Iterator it = lst.begin(); it != lst.end(); ++it ) { + if ( QString::compare( (*it).name() , pitem->text(0) ) == 0 ) { + m_manager->setEnabled((*it),pitem->isOn()); + break; + } + } +} void DateBookSettings::setAlarmPreset( bool bAlarm, int presetTime ) { chkAlarmPreset->setChecked( bAlarm ); if ( presetTime >=5 ) - spinPreset->setValue( presetTime ); + spinPreset->setValue( presetTime ); } bool DateBookSettings::alarmPreset() const @@ -92,29 +128,29 @@ int DateBookSettings::presetTime() const void DateBookSettings::slot12Hour( int i ) { if ( ampm ) { - if ( spinStart->suffix().contains( tr("AM"), FALSE ) ) { - if ( oldtime == 12 && i == 11 || oldtime == 11 && i == 12 ) - spinStart->setSuffix( tr(":00 PM") ); - } else { - if ( oldtime == 12 && i == 11 || oldtime == 11 && i == 12 ) - spinStart->setSuffix( tr(":00 AM") ); - } - oldtime = i; + if ( spinStart->suffix().contains( tr("AM"), FALSE ) ) { + if ( oldtime == 12 && i == 11 || oldtime == 11 && i == 12 ) + spinStart->setSuffix( tr(":00 PM") ); + } else { + if ( oldtime == 12 && i == 11 || oldtime == 11 && i == 12 ) + spinStart->setSuffix( tr(":00 AM") ); + } + oldtime = i; } } void DateBookSettings::init() { if ( ampm ) { - spinStart->setMinValue( 1 ); - spinStart->setMaxValue( 12 ); - spinStart->setValue( 12 ); - spinStart->setSuffix( tr(":00 AM") ); - oldtime = 12; + spinStart->setMinValue( 1 ); + spinStart->setMaxValue( 12 ); + spinStart->setValue( 12 ); + spinStart->setSuffix( tr(":00 AM") ); + oldtime = 12; } else { - spinStart->setMinValue( 0 ); - spinStart->setMaxValue( 23 ); - spinStart->setSuffix( tr(":00") ); + spinStart->setMinValue( 0 ); + spinStart->setMaxValue( 23 ); + spinStart->setSuffix( tr(":00") ); } } @@ -123,11 +159,11 @@ void DateBookSettings::slotChangeClock( bool whichClock ) int saveMe; saveMe = spinStart->value(); if ( ampm && spinStart->suffix().contains( tr("AM"), FALSE ) ) { - if ( saveMe == 12 ) - saveMe = 0; + if ( saveMe == 12 ) + saveMe = 0; } else if ( ampm && spinStart->suffix().contains( tr("PM"), FALSE ) ) { - if ( saveMe != 12 ) - saveMe += 12; + if ( saveMe != 12 ) + saveMe += 12; } ampm = whichClock; init(); @@ -136,20 +172,20 @@ void DateBookSettings::slotChangeClock( bool whichClock ) void DateBookSettings::setJumpToCurTime( bool bJump ) { - chkJumpToCurTime->setChecked( bJump ); + chkJumpToCurTime->setChecked( bJump ); } bool DateBookSettings::jumpToCurTime() const { - return chkJumpToCurTime->isChecked(); + return chkJumpToCurTime->isChecked(); } void DateBookSettings::setRowStyle( int style ) { - comboRowStyle->setCurrentItem( style ); + comboRowStyle->setCurrentItem( style ); } int DateBookSettings::rowStyle() const { - return comboRowStyle->currentItem(); + return comboRowStyle->currentItem(); } diff --git a/core/pim/datebook/datebooksettings.h b/core/pim/datebook/datebooksettings.h index cf8a0ff..df7d32c 100644 --- a/core/pim/datebook/datebooksettings.h +++ b/core/pim/datebook/datebooksettings.h @@ -23,6 +23,17 @@ #include "datebooksettingsbase.h" #include +namespace Opie { +namespace Core { + class OPluginManager; + class OGenericPluginLoader; + class OPluginLoader; +} +namespace Ui { + class OPluginConfigWidget; +} +} + class DateBookSettings : public DateBookSettingsBase { Q_OBJECT @@ -43,13 +54,18 @@ public: void setRowStyle( int style ); int rowStyle() const; + void setPluginList(Opie::Core::OPluginManager*,Opie::Core::OPluginLoader*); private slots: void slot12Hour( int ); void slotChangeClock( bool ); +protected slots: + virtual void pluginItemClicked(QListViewItem *); -private: +protected: void init(); bool ampm; int oldtime; + Opie::Core::OPluginManager*m_manager; + Opie::Core::OPluginLoader*m_loader; }; #endif diff --git a/core/pim/datebook/datebooksettingsbase.ui b/core/pim/datebook/datebooksettingsbase.ui index e613db1..7b3e591 100644 --- a/core/pim/datebook/datebooksettingsbase.ui +++ b/core/pim/datebook/datebooksettingsbase.ui @@ -59,7 +59,13 @@ QTabWidget name - TabWidget2 + TabWidget + + + layoutMargin + + + layoutSpacing QWidget @@ -668,6 +674,48 @@ + + QWidget + + name + plugintab + + + title + Plugins + + + + margin + 2 + + + spacing + 2 + + + QListView + + + text + Pluginlist + + + clickable + true + + + resizeable + true + + + + name + m_PluginListView + + + + @@ -706,7 +754,14 @@ DateBookSettingsBase slot12Hour( int ) - slotChangeClock( bool ) + + m_PluginListView + clicked(QListViewItem*) + DateBookSettingsBase + pluginItemClicked(QListViewItem *) + + pluginItemClicked(QListViewItem *) slot12Hour( int ) + slotChangeClock( bool ) diff --git a/core/pim/datebook/datebooktypes.h b/core/pim/datebook/datebooktypes.h index f944e84..2966814 100644 --- a/core/pim/datebook/datebooktypes.h +++ b/core/pim/datebook/datebooktypes.h @@ -13,6 +13,7 @@ namespace Datebook { } namespace Core { class OPluginLoader; + class OPluginManager; } } @@ -35,6 +36,11 @@ public: virtual QValueList getEffectiveEvents(const QDate &from,const QDate &to ); virtual QValueList getEffectiveEvents(const QDateTime &start); + void reloadPlugins(); + + Opie::Core::OPluginLoader*pluginLoader(){return m_pluginLoader;} + Opie::Core::OPluginManager*pluginManager(){return m_pluginManager;} + protected: void init(); void deinit(); @@ -46,6 +52,7 @@ protected: }; QValueList_pluginlist; Opie::Core::OPluginLoader*m_pluginLoader; + Opie::Core::OPluginManager*m_pluginManager; }; class DateBookDBHoliday:virtual public DateBookDBHack { diff --git a/core/pim/datebook/datebookweeklst.cpp b/core/pim/datebook/datebookweeklst.cpp index b0e78f1..3c871ea 100644 --- a/core/pim/datebook/datebookweeklst.cpp +++ b/core/pim/datebook/datebookweeklst.cpp @@ -215,7 +215,12 @@ void DateBookWeekLstEvent::beamMe() } void DateBookWeekLstEvent::mousePressEvent( QMouseEvent *e ) { + if (!event.event().isValidUid()) { + // this is just such a holiday event. + return; + } popmenue = new QPopupMenu; + popmenue->insertItem( tr( "Edit" ), this, SLOT(editMe())); popmenue->insertItem( tr( "Duplicate" ), this, SLOT(duplicateMe())); popmenue->insertItem( tr( "Delete" ), this, SLOT(deleteMe())); -- cgit v0.9.0.2