author | alwin <alwin> | 2005-03-17 14:01:23 (UTC) |
---|---|---|
committer | alwin <alwin> | 2005-03-17 14:01:23 (UTC) |
commit | 8752141a5341877369f89a42fa1f0b5d08f56dbd (patch) (side-by-side diff) | |
tree | 63dc48ee207a4e9fbb6b9e8abddb239ec724c155 | |
parent | afee05f4b4c1e8dab8463e3423fcfc8f9d45aa8b (diff) | |
download | opie-8752141a5341877369f89a42fa1f0b5d08f56dbd.zip opie-8752141a5341877369f89a42fa1f0b5d08f56dbd.tar.gz opie-8752141a5341877369f89a42fa1f0b5d08f56dbd.tar.bz2 |
1. datebookweeklist - a week has SEVEN days, not SIX. I'm wondering why
events on sunday never showed there ;)
2. extra file datebooktypes contains some special classes used by datebook
so other classes must not include the big mainheader file.
3. added support for holiday-plugins to week-views. Month view is a little
bit more tricky 'cause TT has never heard about virtual methods and so
I have the choice between complete copy the monthview and make the modifications
or changing the interface of datebookdb-class to virtual. both isn't nice.
-rw-r--r-- | core/pim/datebook/datebook.cpp | 45 | ||||
-rw-r--r-- | core/pim/datebook/datebook.h | 37 | ||||
-rw-r--r-- | core/pim/datebook/datebookday.cpp | 5 | ||||
-rw-r--r-- | core/pim/datebook/datebookday.h | 6 | ||||
-rw-r--r-- | core/pim/datebook/datebookdayallday.cpp | 12 | ||||
-rw-r--r-- | core/pim/datebook/datebooktypes.h | 59 | ||||
-rw-r--r-- | core/pim/datebook/datebookweek.cpp | 3 | ||||
-rw-r--r-- | core/pim/datebook/datebookweek.h | 5 | ||||
-rw-r--r-- | core/pim/datebook/datebookweeklst.cpp | 9 | ||||
-rw-r--r-- | core/pim/datebook/datebookweeklst.h | 5 |
10 files changed, 135 insertions, 51 deletions
diff --git a/core/pim/datebook/datebook.cpp b/core/pim/datebook/datebook.cpp index f6aab0c..36c4bd7 100644 --- a/core/pim/datebook/datebook.cpp +++ b/core/pim/datebook/datebook.cpp @@ -72,15 +72,16 @@ DateBook::DateBook( QWidget *parent, const char *, WFlags f ) inSearch(FALSE), alarmCounter(0) { bool needEvilHack= false; // if we need an Evil Hack QTime t; t.start(); - db = new DateBookDBHack; + db = new DateBookDBHoliday; odebug << "loading db t=" << t.elapsed() << oendl; db_holiday = new DateBookHoliday(); + db->db_holiday=db_holiday; loadSettings(); setCaption( tr("Calendar") ); setIcon( Resource::loadPixmap( "datebook_icon" ) ); setToolBarsMovable( FALSE ); @@ -1146,6 +1147,48 @@ QStringList DateBookHoliday::holidaylist(const QDate&aDate) 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; + ret+=_pl->_plugin->events(from,to); + } + return ret; +} + +QValueList<EffectiveEvent> DateBookDBHoliday::getEffectiveEventsNoHoliday(const QDate &from,const QDate &to ) +{ + return DateBookDBHack::getEffectiveEvents(from,to); +} + +QValueList<EffectiveEvent> DateBookDBHoliday::getEffectiveEventsNoHoliday(const QDateTime &start) +{ + return DateBookDBHack::getEffectiveEvents(start); +} + +QValueList<EffectiveEvent> DateBookHoliday::getEffectiveEvents(const QDateTime &start) +{ + return getEffectiveEvents(start.date(),start.date()); +} + +QValueList<EffectiveEvent> DateBookDBHoliday::getEffectiveEvents(const QDate &from,const QDate &to ) +{ + QValueList<EffectiveEvent> ret; + odebug << "Ueberlagert 1" << oendl; + if (db_holiday) { + ret+=db_holiday->getEffectiveEvents(from,to); + } + ret+=getEffectiveEventsNoHoliday(from,to); + return ret; +} + +QValueList<EffectiveEvent> DateBookDBHoliday::getEffectiveEvents( const QDateTime &start) +{ + odebug << "Ueberlagert 2" << oendl; + return DateBookDBHack::getEffectiveEvents(start); +} diff --git a/core/pim/datebook/datebook.h b/core/pim/datebook/datebook.h index 54ffcfb..3d7f5b5 100644 --- a/core/pim/datebook/datebook.h +++ b/core/pim/datebook/datebook.h @@ -17,12 +17,14 @@ ** not clear to you. ** **********************************************************************/ #ifndef DATEBOOK_H #define DATEBOOK_H +#include "datebooktypes.h" + #include <qpe/datebookdb.h> #include <qmainwindow.h> enum { DAY=1,WEEK,WEEKLST,MONTH }; // defaultView values enum { NONE=0,NORMAL,EXTENDED }; // WeekLstView's modes. @@ -33,45 +35,12 @@ class DateBookDay; class DateBookWeek; class DateBookWeekLst; class DateBookMonth; class Event; class QDate; class Ir; -class QLibrary; - -namespace Opie { -namespace Datebook { - class HolidayPlugin; - class HolidayPluginIf; -} -} - -class DateBookDBHack : public DateBookDB { - public: - Event eventByUID(int id); -}; - -class DateBookHoliday -{ -public: - DateBookHoliday(); - virtual ~DateBookHoliday(); - - QStringList holidaylist(const QDate&); - QStringList holidaylist(unsigned year, unsigned month, unsigned day); -protected: - void init(); - void deinit(); - - struct HPlugin { - Opie::Datebook::HolidayPlugin*_plugin; - QLibrary*_lib; - Opie::Datebook::HolidayPluginIf*_if; - }; - QValueList<HPlugin*>_pluginlist; -}; class DateBook : public QMainWindow { Q_OBJECT public: @@ -134,13 +103,13 @@ private: void initWeekLst(); void initMonth(); void loadSettings(); void saveSettings(); private: - DateBookDBHack *db; + DateBookDBHoliday *db; DateBookHoliday*db_holiday; QWidgetStack *views; DateBookDay *dayView; DateBookWeek *weekView; DateBookMonth *monthView; DateBookWeekLst *weekLstView; diff --git a/core/pim/datebook/datebookday.cpp b/core/pim/datebook/datebookday.cpp index dfe39e5..00ddd05 100644 --- a/core/pim/datebook/datebookday.cpp +++ b/core/pim/datebook/datebookday.cpp @@ -16,12 +16,13 @@ ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include "datebookday.h" +#include "datebooktypes.h" #include "datebookdayheaderimpl.h" #include "datebookdayallday.h" #include <opie2/oholidayplugin.h> #include <qpe/resource.h> #include <qpe/qpeapplication.h> @@ -224,13 +225,13 @@ void DateBookDayViewQuickLineEdit::focusOutEvent ( QFocusEvent* /* e */) { slotReturnPressed(); // Reuse code to add event and close this widget. } //=========================================================================== -DateBookDay::DateBookDay( bool ampm, bool startOnMonday, DateBookDB *newDb, DateBookHoliday*newHdb, QWidget *parent, const char *name ) +DateBookDay::DateBookDay( bool ampm, bool startOnMonday, DateBookDBHoliday *newDb, DateBookHoliday*newHdb, QWidget *parent, const char *name ) : QVBox( parent, name ), currDate( QDate::currentDate() ), db( newDb ), startTime( 0 ) { widgetList.setAutoDelete( true ); _holiday_db = newHdb; header = new DateBookDayHeader( startOnMonday, this, "day header" ); header->setDate( currDate.year(), currDate.month(), currDate.day() ); @@ -364,13 +365,13 @@ void DateBookDay::getEvents() QObject* object = 0; for (sit=hdays.begin();sit!=hdays.end();++sit) { object = m_allDays->addHoliday(*sit); if (!object) continue; /* not to do something with it */ } - QValueList<EffectiveEvent> eventList = db->getEffectiveEvents( currDate, currDate ); + 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 ) { diff --git a/core/pim/datebook/datebookday.h b/core/pim/datebook/datebookday.h index 3e44364..3b75eba 100644 --- a/core/pim/datebook/datebookday.h +++ b/core/pim/datebook/datebookday.h @@ -25,16 +25,18 @@ #include <qdatetime.h> #include <qtable.h> #include <qvbox.h> #include <qlist.h> #include "datebook.h" +#include "datebooktypes.h" #include <qlineedit.h> class DateBookDayHeader; class DateBookDB; +class DateBookDBHoliday; class DatebookdayAllday; class QDateTime; class QMouseEvent; class QPaintEvent; class QResizeEvent; @@ -177,13 +179,13 @@ class WidgetListClass : public QList<DateBookDayWidget> class DateBookDay : public QVBox { Q_OBJECT friend class DateBookDayWidget; // for beam this occurence and access to DateBookDB public: - DateBookDay( bool ampm, bool startOnMonday, DateBookDB *newDb,DateBookHoliday*newHdb, + DateBookDay( bool ampm, bool startOnMonday, DateBookDBHoliday *newDb,DateBookHoliday*newHdb, QWidget *parent, const char *name ); void selectedDates( QDateTime &start, QDateTime &end ); QDate date() const; DateBookDayView *dayView() const { return view; } void setStartViewTime( int startHere ); @@ -222,13 +224,13 @@ private: void relayoutPage( bool fromResize = false ); DateBookDayWidget *intersects( const DateBookDayWidget *item, const QRect &geom ); QDate currDate; DateBookDayView *view; DateBookDayHeader *header; DatebookdayAllday *m_allDays; - DateBookDB *db; + DateBookDBHoliday *db; WidgetListClass widgetList; //reimplemented QList for sorting widgets by height int startTime; bool jumpToCurTime; //should we jump to current time in dayview? int rowStyle; DateBookDayWidget *selectedWidget; //actual selected widget (obviously) DateBookDayTimeMarker *timeMarker; //marker for current time diff --git a/core/pim/datebook/datebookdayallday.cpp b/core/pim/datebook/datebookdayallday.cpp index 3c3f482..5b40246 100644 --- a/core/pim/datebook/datebookdayallday.cpp +++ b/core/pim/datebook/datebookdayallday.cpp @@ -27,13 +27,14 @@ DatebookdayAllday::DatebookdayAllday(DateBookDB* db, QWidget* parent, const cha setMinimumSize( QSize( 0, 0 ) ); setMaximumHeight(3* (QFontMetrics(font()).height()+4) ); m_MainFrame = new QFrame(viewport()); m_MainFrame->setFrameStyle(QFrame::NoFrame|QFrame::Plain); setFrameStyle(QFrame::NoFrame|QFrame::Plain); - setResizePolicy( QScrollView::Default ); + //setResizePolicy( QScrollView::Default ); + setResizePolicy(QScrollView::AutoOneFit); setHScrollBarMode( AlwaysOff ); addChild(m_MainFrame); datebookdayalldayLayout = new QVBoxLayout( m_MainFrame ); datebookdayalldayLayout->setSpacing( 0 ); datebookdayalldayLayout->setMargin( 0 ); @@ -108,19 +109,24 @@ DatebookAlldayDisp::DatebookAlldayDisp(const QString&aholiday,QWidget* parent,co QString strDesc = aholiday; strDesc = strDesc.replace(QRegExp("<"),"<"); Event ev; ev.setDescription(strDesc); ev.setAllDay(true); m_Ev.setEvent(ev); - setBackgroundColor(yellow); setText(strDesc); - setFrameStyle(QFrame::Raised|QFrame::Panel); + + setAlignment(AlignHCenter); + setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Minimum)); + + //setFrameStyle(QFrame::Raised|QFrame::Panel); + //setBackgroundColor(yellow); int s = QFontMetrics(font()).height()+4; setMaximumHeight( s ); setMinimumSize( QSize( 0, s ) ); + m_holiday = true; } DatebookAlldayDisp::~DatebookAlldayDisp() { } diff --git a/core/pim/datebook/datebooktypes.h b/core/pim/datebook/datebooktypes.h new file mode 100644 index 0000000..9eb7e89 --- a/dev/null +++ b/core/pim/datebook/datebooktypes.h @@ -0,0 +1,59 @@ +#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;
+}
+}
+
+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);
+
+protected:
+ void init();
+ void deinit();
+
+ struct HPlugin {
+ Opie::Datebook::HolidayPlugin*_plugin;
+ QLibrary*_lib;
+ Opie::Datebook::HolidayPluginIf*_if;
+ };
+ QValueList<HPlugin*>_pluginlist;
+};
+
+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/datebookweek.cpp b/core/pim/datebook/datebookweek.cpp index 7503751..a509d89 100644 --- a/core/pim/datebook/datebookweek.cpp +++ b/core/pim/datebook/datebookweek.cpp @@ -16,12 +16,13 @@ ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #include "datebookweek.h" #include "datebookweekheaderimpl.h" +#include "datebooktypes.h" #include <qpe/datebookdb.h> #include <qpe/qpeapplication.h> #include <qpe/calendar.h> #include <qheader.h> @@ -337,13 +338,13 @@ void DateBookWeekView::setStartOfWeek( bool bStartOnMonday ) bOnMonday = bStartOnMonday; initNames(); } //------------------------------------------------------------------- -DateBookWeek::DateBookWeek( bool ap, bool startOnMonday, DateBookDB *newDB, +DateBookWeek::DateBookWeek( bool ap, bool startOnMonday, DateBookDBHoliday *newDB, QWidget *parent, const char *name ) : QWidget( parent, name ), db( newDB ), startTime( 0 ), ampm( ap ), bStartOnMonday( startOnMonday ) diff --git a/core/pim/datebook/datebookweek.h b/core/pim/datebook/datebookweek.h index c273e30..ddf54ed 100644 --- a/core/pim/datebook/datebookweek.h +++ b/core/pim/datebook/datebookweek.h @@ -25,12 +25,13 @@ #include <qlist.h> #include <qscrollview.h> #include <qstring.h> #include <qvaluelist.h> class DateBookDB; +class DateBookDBHoliday; class DateBookWeekHeader; class QDate; class QLabel; class QResizeEvent; class QSpinBox; class QTimer; @@ -97,13 +98,13 @@ private: class DateBookWeek : public QWidget { Q_OBJECT public: - DateBookWeek( bool ampm, bool weekOnMonday, DateBookDB *newDB, + DateBookWeek( bool ampm, bool weekOnMonday, DateBookDBHoliday *newDB, QWidget *parent = 0, const char *name = 0 ); void setDate( int y, int m, int d ); void setDate( QDate d ); QDate date() const; DateBookWeekView *weekView() const { return view; } void setStartViewTime( int startHere ); @@ -150,13 +151,13 @@ private: int year; int _week; int dow; QDate bdate; DateBookWeekHeader *header; DateBookWeekView *view; - DateBookDB *db; + DateBookDBHoliday *db; QLabel *lblDesc; QTimer *tHide; int startTime; bool ampm; bool bStartOnMonday; }; diff --git a/core/pim/datebook/datebookweeklst.cpp b/core/pim/datebook/datebookweeklst.cpp index 771aa00..0555bc7 100644 --- a/core/pim/datebook/datebookweeklst.cpp +++ b/core/pim/datebook/datebookweeklst.cpp @@ -1,10 +1,11 @@ #include "namespace_hack.h" #include "datebookweeklst.h" #include "datebook.h" +#include "datebooktypes.h" #include <opie2/odebug.h> #include <qpe/datebookmonth.h> #include <qpe/config.h> #include <qpe/ir.h> @@ -314,13 +315,13 @@ DateBookWeekLstDblView::DateBookWeekLstDblView(QValueList<EffectiveEvent> &ev1, connect (w, SIGNAL(redraw()), this, SIGNAL(redraw())); connect (w, SIGNAL(showDate(int,int,int)), this, SIGNAL(showDate(int,int,int))); connect (w, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&)), this, SIGNAL(addEvent(const QDateTime&,const QDateTime&,const QString&,const QString&))); } -DateBookWeekLst::DateBookWeekLst( bool ap, bool onM, DateBookDB *newDB, +DateBookWeekLst::DateBookWeekLst( bool ap, bool onM, DateBookDBHoliday *newDB, QWidget *parent, const char *name ) : QWidget( parent, name ), db( newDB ), startTime( 0 ), ampm( ap ), @@ -380,19 +381,19 @@ QDate DateBookWeekLst::weekDate() const return d.addDays(-dayoffset); } void DateBookWeekLst::getEvents() { QDate start = weekDate(); //date(); - QDate stop = start.addDays(6); + QDate stop = start.addDays(7); QValueList<EffectiveEvent> el = db->getEffectiveEvents(start, stop); if (view) delete view; if (dbl) { - QDate start2=start.addDays(7); - stop=start2.addDays(6); + QDate start2=start.addDays(8); + stop=start2.addDays(7); QValueList<EffectiveEvent> el2 = db->getEffectiveEvents(start2, stop); view=new DateBookWeekLstDblView(el,el2,start,bStartOnMonday,scroll); } else { view=new DateBookWeekLstView(el,start,bStartOnMonday,scroll); } diff --git a/core/pim/datebook/datebookweeklst.h b/core/pim/datebook/datebookweeklst.h index 3bc7f2f..38d7777 100644 --- a/core/pim/datebook/datebookweeklst.h +++ b/core/pim/datebook/datebookweeklst.h @@ -11,12 +11,13 @@ #include "datebookweeklstdayhdr.h" #include <opie2/oclickablelabel.h> class QDateTime; class DateBookDB; +class DateBookDBHoliday; class DateBookWeekLstHeader: public DateBookWeekLstHeaderBase { Q_OBJECT public: DateBookWeekLstHeader(bool onM, QWidget* parent = 0, const char* name = 0, @@ -127,13 +128,13 @@ signals: class DateBookWeekLst : public QWidget { Q_OBJECT public: - DateBookWeekLst( bool ampm, bool onM, DateBookDB *newDB, + DateBookWeekLst( bool ampm, bool onM, DateBookDBHoliday *newDB, QWidget *parent = 0, const char *name = 0 ); ~DateBookWeekLst(); void setDate( int y, int w ); void setDate(const QDate &d ); int week() const { return _week; }; @@ -155,13 +156,13 @@ signals: void editEvent(const Event &e); void duplicateEvent(const Event &e); void removeEvent(const Event &e); void beamEvent(const Event &e); private: - DateBookDB *db; + DateBookDBHoliday *db; int startTime; bool ampm; bool bStartOnMonday; bool dbl; QDate bdate; int year, _week,dow; |