author | alwin <alwin> | 2005-03-18 12:49:14 (UTC) |
---|---|---|
committer | alwin <alwin> | 2005-03-18 12:49:14 (UTC) |
commit | b7996a25adab32e6f2e4d278a9d9801ad66f90c7 (patch) (side-by-side diff) | |
tree | f90bf3aa5cd274c467a8ff3e84566fdfa6a1a6c5 | |
parent | d7fdcc3dac4a1d8cbd823d17ea52d17cb67b16f8 (diff) | |
download | opie-b7996a25adab32e6f2e4d278a9d9801ad66f90c7.zip opie-b7996a25adab32e6f2e4d278a9d9801ad66f90c7.tar.gz opie-b7996a25adab32e6f2e4d278a9d9801ad66f90c7.tar.bz2 |
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.
-rw-r--r-- | core/pim/datebook/datebook.cpp | 50 | ||||
-rw-r--r-- | core/pim/datebook/datebookday.cpp | 7 | ||||
-rw-r--r-- | core/pim/datebook/datebookdayallday.cpp | 2 | ||||
-rw-r--r-- | core/pim/datebook/datebooksettings.cpp | 124 | ||||
-rw-r--r-- | core/pim/datebook/datebooksettings.h | 18 | ||||
-rw-r--r-- | core/pim/datebook/datebooksettingsbase.ui | 59 | ||||
-rw-r--r-- | core/pim/datebook/datebooktypes.h | 7 | ||||
-rw-r--r-- | core/pim/datebook/datebookweeklst.cpp | 5 |
8 files changed, 188 insertions, 84 deletions
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 @@ -225,64 +225,68 @@ void DateBook::receive( const QCString &msg, const QByteArray &data ) stream >> uid; Event e=db->eventByUID(uid); editEvent(e); }else if (msg == "viewDefault(QDate)"){ QDate day; stream >> day; viewDefault(day); } } DateBook::~DateBook() { delete db_holiday; } void DateBook::slotSettings() { DateBookSettings frmSettings( ampm, this ); frmSettings.setStartTime( startTime ); frmSettings.setAlarmPreset( aPreset, presetTime ); frmSettings.setJumpToCurTime( bJumpToCurTime ); 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++) { if ( frmSettings.comboLocation->text(i) == defaultLocation ) { frmSettings.comboLocation->setCurrentItem(i); found=true; break; } } if(!found) { frmSettings.comboLocation->insertItem(defaultLocation); frmSettings.comboLocation->setCurrentItem(frmSettings.comboLocation->count()-1); } 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(); bJumpToCurTime = frmSettings.jumpToCurTime(); rowStyle = frmSettings.rowStyle(); defaultView=frmSettings.comboDefaultView->currentItem()+1; weeklistviewconfig=frmSettings.comboWeekListView->currentItem(); defaultLocation=frmSettings.comboLocation->currentText(); defaultCategories=frmSettings.comboCategory->currentCategories(); if ( dayView ) { dayView->setStartViewTime( startTime ); dayView->setJumpToCurTime( bJumpToCurTime ); dayView->setRowStyle( rowStyle ); } if ( weekView ) { weekView->setStartViewTime( startTime ); } saveSettings(); // make the change obvious if ( views->visibleWidget() ) { if ( views->visibleWidget() == dayView ) dayView->redraw(); @@ -1068,124 +1072,104 @@ Event DateBookDBHack::eventByUID(int uid) { // FIXME: Dirty Hacks to get hold of the private event lists QDate start; QDate end=start.addDays(-1); QValueList<Event> myEventList=getNonRepeatingEvents(start,end); QValueList<Event> myRepeatEvents=getRawRepeats(); QValueList<Event>::ConstIterator it; for (it = myEventList.begin(); it != myEventList.end(); it++) { if ((*it).uid() == uid) return *it; } for (it = myRepeatEvents.begin(); it != myRepeatEvents.end(); it++) { if ((*it).uid() == uid) return *it; } Event ev; return ev; // return at least } 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(); } DateBookHoliday::~DateBookHoliday() { deinit(); delete m_pluginLoader; + delete m_pluginManager; } void DateBookHoliday::deinit() { -/* QValueList<HPlugin*>::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 void debugLst( const Opie::Core::OPluginItem::List& lst ) { for ( Opie::Core::OPluginItem::List::ConstIterator it = lst.begin(); it != lst.end(); ++it ) odebug << "Name " << (*it).name() << " " << (*it).path() << " " << (*it).position() << oendl; } #endif 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<Opie::Datebook::HolidayPluginIf>(*it,IID_HOLIDAY_PLUGIN); if (hif) { Opie::Datebook::HolidayPlugin*pl = hif->plugin(); if (pl) { HPlugin*_pl=new HPlugin; _pl->_plugin = pl; odebug << "Found holiday " << pl->description()<<oendl; _pluginlist.append(_pl); //_pl->_if = hif; } } } -#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()<<oendl; - _pl->_lib = lib; - _pl->_if = hif; - _pluginlist.append(_pl); - } else { - } - } else { - delete lib; - } - } -#endif } QStringList DateBookHoliday::holidaylist(const QDate&aDate) { QStringList ret; QValueList<HPlugin*>::Iterator it; for (it=_pluginlist.begin();it!=_pluginlist.end();++it) { HPlugin*_pl = *it; ret+=_pl->_plugin->entries(aDate); } return ret; } QStringList DateBookHoliday::holidaylist(unsigned year, unsigned month, unsigned day) { return holidaylist(QDate(year,month,day)); } QValueList<EffectiveEvent> DateBookHoliday::getEffectiveEvents(const QDate &from,const QDate &to ) { QValueList<EffectiveEvent> ret; QValueList<HPlugin*>::Iterator it; for (it=_pluginlist.begin();it!=_pluginlist.end();++it) { HPlugin*_pl = *it; 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 @@ -342,52 +342,53 @@ void DateBookDay::dateChanged( int y, int m, int d ) ts.expandTo( startTime, 0 ); } dayView()->addSelection( ts ); selectedWidget = 0; } void DateBookDay::redraw() { if ( isUpdatesEnabled() ) relayoutPage(); } void DateBookDay::getEvents() { widgetList.clear(); /* clear the AllDay List */ m_allDays->hide(); // just in case m_allDays->removeAllEvents(); 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<EffectiveEvent> eventList = db->getEffectiveEventsNoHoliday( currDate, currDate ); QValueListIterator<EffectiveEvent> it; for ( it = eventList.begin(); it != eventList.end(); ++it ) { EffectiveEvent ev=*it; if(!((ev.end().hour()==0) && (ev.end().minute()==0) && (ev.startDate()!=ev.date()))) { // Skip events ending at 00:00 starting at another day. if (ev.event().type() == Event::AllDay ) { object = m_allDays->addEvent( ev ); if (!object) continue; }else { DateBookDayWidget* w = new DateBookDayWidget( *it, this ); widgetList.append( w ); object = w; } connect( object, SIGNAL( deleteMe(const Event&) ), this, SIGNAL( removeEvent(const Event&) ) ); connect( object, SIGNAL( duplicateMe(const Event&) ), this, SIGNAL( duplicateEvent(const Event&) ) ); connect( object, SIGNAL( editMe(const Event&) ), this, SIGNAL( editEvent(const Event&) ) ); connect( object, SIGNAL( beamMe(const Event&) ), this, SIGNAL( beamEvent(const Event&) ) ); } } 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 @@ -171,49 +171,49 @@ void DatebookAlldayDisp::beam_single_event() * else * get to know the offset btw the real start and real end * and then add it to the new start date... */ if ( m_Ev.end() != QTime(23, 59, 59 ) ) { end.setDate( m_Ev.date() ); }else{ int days = m_Ev.event().start().date().daysTo( m_Ev.event().end().date() ); end.setDate( start.date().addDays( days ) ); } Event m_Event( m_Ev.event() ); m_Event.setStart( start ); m_Event.setEnd ( end ); emit beamMe( m_Event ); } } void DatebookAlldayDisp::mousePressEvent(QMouseEvent*e) { Event ev = m_Ev.event(); QColor b = backgroundColor(); 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 ); if(Ir::supported()) m.insertItem( DateBookDayWidget::tr( "Beam" ), 3 ); if(Ir::supported() && m_Ev.event().doRepeat() ) m.insertItem( DateBookDayWidget::tr( "Beam this occurence"), 5 ); } m.insertItem( tr( "Info"),6); int r = m.exec( e->globalPos() ); setBackgroundColor(b); update(); switch (r) { case 1: emit editMe( ev ); break; case 2: emit deleteMe( ev ); break; case 3: emit beamMe( ev ); break; case 4: emit duplicateMe( ev ); break; case 5: 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 @@ -1,155 +1,191 @@ /********************************************************************** ** Copyright (C) 2000 Trolltech AS. All rights reserved. ** ** This file is part of Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include "datebooksettings.h" +#include <opie2/opluginloader.h> +#include <opie2/odebug.h> + #include <qpe/qpeapplication.h> #include <qspinbox.h> #include <qcheckbox.h> +#include <qlistview.h> +#include <qheader.h> 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<int> categories; - comboCategory->setCategories( categories, "Calendar", tr("Calendar") ); + init(); + QObject::connect( qApp, SIGNAL( clockChanged(bool) ), this, SLOT( slotChangeClock(bool) ) ); + QArray<int> categories; + comboCategory->setCategories( categories, "Calendar", tr("Calendar") ); + m_loader = 0; + m_manager = 0; + m_PluginListView->header()->hide(); + m_PluginListView->setSorting(-1); } 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 ); } 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 { return chkAlarmPreset->isChecked(); } int DateBookSettings::presetTime() const { return spinPreset->value(); } 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") ); } } 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(); setStartTime( saveMe ); } 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 @@ -2,54 +2,70 @@ ** Copyright (C) 2000 Trolltech AS. All rights reserved. ** ** This file is part of Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #ifndef DATEBOOKSETTINGS_H #define DATEBOOKSETTINGS_H #include "datebooksettingsbase.h" #include <qpe/categoryselect.h> +namespace Opie { +namespace Core { + class OPluginManager; + class OGenericPluginLoader; + class OPluginLoader; +} +namespace Ui { + class OPluginConfigWidget; +} +} + class DateBookSettings : public DateBookSettingsBase { Q_OBJECT public: DateBookSettings( bool whichClock, QWidget *parent = 0, const char *name = 0, bool modal = TRUE, WFlags = 0 ); ~DateBookSettings(); void setStartTime( int newStartViewTime ); int startTime() const; void setAlarmPreset( bool bAlarm, int presetTime ); bool alarmPreset() const; int presetTime() const; void setAlarmType( int alarmType ); int alarmType() const; void setJumpToCurTime( bool bJump ); bool jumpToCurTime() const; 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 @@ -38,49 +38,55 @@ </property> <property stdset="1"> <name>caption</name> <string>Preferences</string> </property> <property> <name>layoutMargin</name> </property> <property> <name>layoutSpacing</name> </property> <vbox> <property stdset="1"> <name>margin</name> <number>11</number> </property> <property stdset="1"> <name>spacing</name> <number>6</number> </property> <widget> <class>QTabWidget</class> <property stdset="1"> <name>name</name> - <cstring>TabWidget2</cstring> + <cstring>TabWidget</cstring> + </property> + <property> + <name>layoutMargin</name> + </property> + <property> + <name>layoutSpacing</name> </property> <widget> <class>QWidget</class> <property stdset="1"> <name>name</name> <cstring>tab</cstring> </property> <attribute> <name>title</name> <string>Views</string> </attribute> <vbox> <property stdset="1"> <name>margin</name> <number>11</number> </property> <property stdset="1"> <name>spacing</name> <number>6</number> </property> <widget> <class>QLayoutWidget</class> <property stdset="1"> <name>name</name> @@ -647,66 +653,115 @@ <widget> <class>QLabel</class> <property stdset="1"> <name>name</name> <cstring>TextLabel2_2_2_2</cstring> </property> <property stdset="1"> <name>text</name> <string>Category:</string> </property> </widget> <widget> <class>CategorySelect</class> <property stdset="1"> <name>name</name> <cstring>comboCategory</cstring> </property> </widget> </hbox> </widget> </vbox> </widget> </vbox> </widget> + <widget> + <class>QWidget</class> + <property stdset="1"> + <name>name</name> + <cstring>plugintab</cstring> + </property> + <attribute> + <name>title</name> + <string>Plugins</string> + </attribute> + <vbox> + <property stdset="1"> + <name>margin</name> + <number>2</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>2</number> + </property> + <widget> + <class>QListView</class> + <column> + <property> + <name>text</name> + <string>Pluginlist</string> + </property> + <property> + <name>clickable</name> + <bool>true</bool> + </property> + <property> + <name>resizeable</name> + <bool>true</bool> + </property> + </column> + <property stdset="1"> + <name>name</name> + <cstring>m_PluginListView</cstring> + </property> + </widget> + </vbox> + </widget> </widget> </vbox> </widget> <customwidgets> <customwidget> <class>CategorySelect</class> <header location="global">qpe/categoryselect.h</header> <sizehint> <width>-1</width> <height>-1</height> </sizehint> <container>0</container> <sizepolicy> <hordata>7</hordata> <verdata>1</verdata> </sizepolicy> <pixmap>image0</pixmap> </customwidget> </customwidgets> <images> <image> <name>image0</name> <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data> </image> </images> <connections> <connection> <sender>chkAlarmPreset</sender> <signal>toggled(bool)</signal> <receiver>spinPreset</receiver> <slot>setEnabled(bool)</slot> </connection> <connection> <sender>spinStart</sender> <signal>valueChanged(int)</signal> <receiver>DateBookSettingsBase</receiver> <slot>slot12Hour( int )</slot> </connection> - <slot access="public">slotChangeClock( bool )</slot> + <connection> + <sender>m_PluginListView</sender> + <signal>clicked(QListViewItem*)</signal> + <receiver>DateBookSettingsBase</receiver> + <slot>pluginItemClicked(QListViewItem *)</slot> + </connection> + <slot access="protected">pluginItemClicked(QListViewItem *)</slot> <slot access="public">slot12Hour( int )</slot> + <slot access="public">slotChangeClock( bool )</slot> </connections> </UI> 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 @@ -1,63 +1,70 @@ #ifndef _DATEBOOK_TYPES_H
#define _DATEBOOK_TYPES_H
#include <qpe/datebookdb.h>
#include <qvaluelist.h>
#include <qstringlist.h>
namespace Opie {
namespace Datebook {
class HolidayPlugin;
class HolidayPluginIf;
}
namespace Core {
class OPluginLoader;
+ class OPluginManager;
}
}
class QLibrary;
class DateBookDBHack : virtual public DateBookDB {
public:
virtual ~DateBookDBHack(){}
Event eventByUID(int id);
};
class DateBookHoliday
{
public:
DateBookHoliday();
virtual ~DateBookHoliday();
QStringList holidaylist(const QDate&);
QStringList holidaylist(unsigned year, unsigned month, unsigned day);
virtual QValueList<EffectiveEvent> getEffectiveEvents(const QDate &from,const QDate &to );
virtual QValueList<EffectiveEvent> 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();
struct HPlugin {
Opie::Datebook::HolidayPlugin*_plugin;
//QLibrary*_lib;
//Opie::Datebook::HolidayPluginIf*_if;
};
QValueList<HPlugin*>_pluginlist;
Opie::Core::OPluginLoader*m_pluginLoader;
+ Opie::Core::OPluginManager*m_pluginManager;
};
class DateBookDBHoliday:virtual public DateBookDBHack {
public:
DateBookDBHoliday():DateBookDBHack(){db_holiday=0;}
virtual ~DateBookDBHoliday(){}
virtual QValueList<EffectiveEvent> getEffectiveEvents(const QDate &from,const QDate &to );
virtual QValueList<EffectiveEvent> getEffectiveEvents(const QDateTime &start);
virtual QValueList<EffectiveEvent> getEffectiveEventsNoHoliday(const QDate &from,const QDate &to );
virtual QValueList<EffectiveEvent> getEffectiveEventsNoHoliday(const QDateTime &start);
DateBookHoliday*db_holiday;
};
#endif
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 @@ -194,49 +194,54 @@ DateBookWeekLstEvent::DateBookWeekLstEvent(const EffectiveEvent &ev, s=""; } setText(QString(s) + " " + ev.description()); // connect(this, SIGNAL(clicked()), this, SLOT(editMe())); setAlignment( int( QLabel::WordBreak | QLabel::AlignLeft ) ); } void DateBookWeekLstEvent::editMe() { emit editEvent(event.event()); } void DateBookWeekLstEvent::duplicateMe() { emit duplicateEvent(event.event()); } void DateBookWeekLstEvent::deleteMe() { emit removeEvent(event.event()); emit redraw(); } void DateBookWeekLstEvent::beamMe() { emit beamEvent( event.event() ); } 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())); if(Ir::supported()) popmenue->insertItem( tr( "Beam" ), this, SLOT(beamMe())); popmenue->popup( mapToGlobal( e->pos() )); } DateBookWeekLstView::DateBookWeekLstView(QValueList<EffectiveEvent> &ev, const QDate &d, bool onM, QWidget* parent, const char* name, WFlags fl) : QWidget( parent, name, fl ) { Config config("DateBook"); config.setGroup("Main"); int weeklistviewconfig=config.readNumEntry("weeklistviewconfig", NORMAL); odebug << "weeklistviewconfig: " << weeklistviewconfig << oendl; bStartOnMonday=onM; setPalette(white); setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding)); QVBoxLayout *layout = new QVBoxLayout( this ); |