summaryrefslogtreecommitdiff
authoralwin <alwin>2005-03-18 12:49:14 (UTC)
committer alwin <alwin>2005-03-18 12:49:14 (UTC)
commitb7996a25adab32e6f2e4d278a9d9801ad66f90c7 (patch) (side-by-side diff)
treef90bf3aa5cd274c467a8ff3e84566fdfa6a1a6c5
parentd7fdcc3dac4a1d8cbd823d17ea52d17cb67b16f8 (diff)
downloadopie-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.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/datebook/datebook.cpp50
-rw-r--r--core/pim/datebook/datebookday.cpp7
-rw-r--r--core/pim/datebook/datebookdayallday.cpp2
-rw-r--r--core/pim/datebook/datebooksettings.cpp124
-rw-r--r--core/pim/datebook/datebooksettings.h18
-rw-r--r--core/pim/datebook/datebooksettingsbase.ui59
-rw-r--r--core/pim/datebook/datebooktypes.h7
-rw-r--r--core/pim/datebook/datebookweeklst.cpp5
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 );