author | hakan <hakan> | 2002-03-31 12:56:14 (UTC) |
---|---|---|
committer | hakan <hakan> | 2002-03-31 12:56:14 (UTC) |
commit | 7208583b0b7ff339e6019b188332d8bcb8f30973 (patch) (side-by-side diff) | |
tree | 4d0b064f1aa0a8553703af4f6e481393cf0ee13c | |
parent | a386e428cbd6b468d4dbff5bf2df4fdba6df9b6e (diff) | |
download | opie-7208583b0b7ff339e6019b188332d8bcb8f30973.zip opie-7208583b0b7ff339e6019b188332d8bcb8f30973.tar.gz opie-7208583b0b7ff339e6019b188332d8bcb8f30973.tar.bz2 |
Moved getEvent(uid) into some hack DateBookDBHack::eventByUID(uid) in the datbeook that might work as long as the QDate implementation are not chnaged.
-rw-r--r-- | core/pim/datebook/datebook.cpp | 25 | ||||
-rw-r--r-- | core/pim/datebook/datebook.h | 7 | ||||
-rw-r--r-- | library/datebookdb.cpp | 14 | ||||
-rw-r--r-- | library/datebookdb.h | 1 |
4 files changed, 29 insertions, 18 deletions
diff --git a/core/pim/datebook/datebook.cpp b/core/pim/datebook/datebook.cpp index 97c305c..c23129a 100644 --- a/core/pim/datebook/datebook.cpp +++ b/core/pim/datebook/datebook.cpp @@ -55,65 +55,65 @@ #include <qmessagebox.h> #include <qpopupmenu.h> #include <qpushbutton.h> #include <qtextcodec.h> #include <qtextstream.h> #include <qtl.h> #include <qwidgetstack.h> #include <qwindowsystem_qws.h> #include <sys/stat.h> #include <sys/types.h> #include <fcntl.h> #include <unistd.h> #include <stdlib.h> #define DAY 1 #define WEEK 2 #define WEEKLST 4 #define MONTH 3 DateBook::DateBook( QWidget *parent, const char *, WFlags f ) : QMainWindow( parent, "datebook", f ), aPreset( FALSE ), presetTime( -1 ), startTime( 8 ), // an acceptable default syncing(FALSE), inSearch(FALSE) { QTime t; t.start(); - db = new DateBookDB; + db = new DateBookDBHack; qDebug("loading db t=%d", t.elapsed() ); loadSettings(); setCaption( tr("Calendar") ); setIcon( Resource::loadPixmap( "datebook_icon" ) ); setToolBarsMovable( FALSE ); views = new QWidgetStack( this ); setCentralWidget( views ); dayView = 0; weekView = 0; weekLstView = 0; monthView = 0; QPEToolBar *bar = new QPEToolBar( this ); bar->setHorizontalStretchable( TRUE ); QPEMenuBar *mb = new QPEMenuBar( bar ); mb->setMargin( 0 ); QPEToolBar *sub_bar = new QPEToolBar(this); QPopupMenu *view = new QPopupMenu( this ); QPopupMenu *settings = new QPopupMenu( this ); mb->insertItem( tr( "View" ), view ); mb->insertItem( tr( "Settings" ), settings ); QActionGroup *g = new QActionGroup( this ); g->setExclusive( TRUE ); @@ -204,65 +204,65 @@ DateBook::DateBook( QWidget *parent, const char *, WFlags f ) // listen on QPE/System #if defined(Q_WS_QWS) #if !defined(QT_NO_COP) QCopChannel *channel = new QCopChannel( "QPE/System", this ); connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), this, SLOT(receive(const QCString&, const QByteArray&)) ); channel = new QCopChannel( "QPE/Datebook", this ); connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), this, SLOT(receive(const QCString&, const QByteArray&)) ); qDebug("olle\n"); #endif #endif qDebug("done t=%d", t.elapsed() ); } void DateBook::receive( const QCString &msg, const QByteArray &data ) { QDataStream stream( data, IO_ReadOnly ); if ( msg == "timeChange(QString)" ) { // update active view! if ( dayAction->isOn() ) viewDay(); else if ( weekAction->isOn() ) viewWeek(); else if ( monthAction->isOn() ) viewMonth(); } else if (msg == "editEvent(int)") { int uid; stream >> uid; - Event e=db->getEvent(uid); + Event e=db->eventByUID(uid); editEvent(e); } } DateBook::~DateBook() { } void DateBook::slotSettings() { DateBookSettings frmSettings( ampm, this ); frmSettings.setStartTime( startTime ); frmSettings.setAlarmPreset( aPreset, presetTime ); #if defined (Q_WS_QWS) || defined(_WS_QWS_) frmSettings.showMaximized(); #endif if ( frmSettings.exec() ) { aPreset = frmSettings.alarmPreset(); presetTime = frmSettings.presetTime(); startTime = frmSettings.startTime(); if ( dayView ) dayView->setStartViewTime( startTime ); if ( weekView ) weekView->setStartViewTime( startTime ); saveSettings(); // make the change obvious if ( views->visibleWidget() ) { if ( views->visibleWidget() == dayView ) dayView->redraw(); else if ( views->visibleWidget() == weekView ) @@ -936,32 +936,53 @@ void DateBook::slotDoFind( const QString& txt, const QDate &dt, } // now the for first non repeat... QValueList<Event> nonRepeats = db->getNonRepeatingEvents( dt, dtEnd.date() ); qHeapSort( nonRepeats.begin(), nonRepeats.end() ); for ( it = nonRepeats.begin(); it != nonRepeats.end(); ++it ) { if ( catComp( (*it).categories(), category ) ) { if ( (*it).start() < dtEnd ) { if ( (*it).match( r ) && !(*it <= nonrev) ) { nonrev = *it; dtEnd = nonrev.start(); candidtate = true; wrapAround = true; break; } } } } if ( candidtate ) { dayView->setStartViewTime( dtEnd.time().hour() ); dayView->setDate( dtEnd.date().year(), dtEnd.date().month(), dtEnd.date().day() ); } else { if ( wrapAround ) { emit signalWrapAround(); rev.setStart( QDateTime(QDate(1960, 1, 1), QTime(0, 0, 0)) ); nonrev.setStart( rev.start() ); } else emit signalNotFound(); wrapAround = !wrapAround; } } + +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; + } + + qDebug("Event not found: uid=%d\n", uid); +} + diff --git a/core/pim/datebook/datebook.h b/core/pim/datebook/datebook.h index 2ffcdbe..d1fe90d 100644 --- a/core/pim/datebook/datebook.h +++ b/core/pim/datebook/datebook.h @@ -5,64 +5,69 @@ ** ** 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 DATEBOOK_H #define DATEBOOK_H #include <qpe/datebookdb.h> #include <qmainwindow.h> class QAction; class QWidgetStack; class DateBookDay; class DateBookWeek; class DateBookWeekLst; class DateBookMonth; class Event; class QDate; class Ir; +class DateBookDBHack : public DateBookDB { + public: + Event eventByUID(int id); +}; + class DateBook : public QMainWindow { Q_OBJECT public: DateBook( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); ~DateBook(); signals: void newEvent(); void signalNotFound(); void signalWrapAround(); protected: QDate currentDate(); void timerEvent( QTimerEvent *e ); void closeEvent( QCloseEvent *e ); void view(int v, const QDate &d); public slots: void flush(); void reload(); private slots: void fileNew(); void slotNewEntry(const QDateTime &start, const QDateTime &end, const QString &str); void slotSettings(); void newDefaultView(QAction *a); void slotToday(); // view today void changeClock( bool newClock ); void changeWeek( bool newDay ); @@ -70,52 +75,52 @@ private slots: // handle key events in the day view... void slotNewEventFromKey( const QString &str ); void slotFind(); void slotDoFind( const QString &, const QDate &, bool, bool, int ); void viewDefault(const QDate &d); void viewDay(); void viewWeek(); void viewWeekLst(); void viewMonth(); void showDay( int y, int m, int d ); void editEvent( const Event &e ); void removeEvent( const Event &e ); void receive( const QCString &msg, const QByteArray &data ); void setDocument( const QString & ); void beamEvent( const Event &e ); void beamDone( Ir *ir ); private: void addEvent( const Event &e ); void initDay(); void initWeek(); void initWeekLst(); void initMonth(); void loadSettings(); void saveSettings(); private: - DateBookDB *db; + DateBookDBHack *db; QWidgetStack *views; DateBookDay *dayView; DateBookWeek *weekView; DateBookMonth *monthView; DateBookWeekLst *weekLstView; QAction *dayAction, *weekAction, *weekLstAction, *monthAction; bool aPreset; // have everything set to alarm? int presetTime; // the standard time for the alarm int startTime; bool ampm; bool onMonday; bool syncing; bool inSearch; QString checkEvent(const Event &); }; #endif diff --git a/library/datebookdb.cpp b/library/datebookdb.cpp index da5a797..2ac9a0c 100644 --- a/library/datebookdb.cpp +++ b/library/datebookdb.cpp @@ -558,78 +558,64 @@ QValueList<EffectiveEvent> DateBookDB::getEffectiveEvents( const QDate &from, sub_it = sub_it.addDays( 1 ); } itDate = endDate; } else { Event tmpEv = *it; effEv.setEvent( tmpEv ); tmpList.append( effEv ); itDate = repeat.date().addDays( 1 ); } } } qHeapSort( tmpList ); return tmpList; } QValueList<EffectiveEvent> DateBookDB::getEffectiveEvents( const QDateTime &dt) { QValueList<EffectiveEvent> day = getEffectiveEvents(dt.date(), dt.date()); QValueListConstIterator<EffectiveEvent> it; QValueList<EffectiveEvent> tmpList; QDateTime dtTmp; for (it = day.begin(); it != day.end(); ++it ) { dtTmp = QDateTime( (*it).date(), (*it).start() ); // at the moment we don't have second granularity, be nice about that.. if ( QABS(dt.secsTo(dtTmp)) < 60 ) tmpList.append( *it ); } return tmpList; } -Event DateBookDB::getEvent( int uid ) { - QValueList<Event>::ConstIterator it; - - for (it = eventList.begin(); it != eventList.end(); it++) { - if ((*it).uid() == uid) return *it; - } - for (it = repeatEvents.begin(); it != repeatEvents.end(); it++) { - if ((*it).uid() == uid) return *it; - } - - qDebug("Event not found: uid=%d\n", uid); -} - - void DateBookDB::addEvent( const Event &ev, bool doalarm ) { // write to the journal... saveJournalEntry( ev, ACTION_ADD, -1, false ); addJFEvent( ev, doalarm ); d->clean = false; } void DateBookDB::addJFEvent( const Event &ev, bool doalarm ) { if ( doalarm && ev.hasAlarm() ) addEventAlarm( ev ); if ( ev.hasRepeat() ) repeatEvents.append( ev ); else eventList.append( ev ); } void DateBookDB::editEvent( const Event &old, Event &editedEv ) { int oldIndex=0; bool oldHadRepeat = old.hasRepeat(); Event orig; // write to the journal... if ( oldHadRepeat ) { if ( origRepeat( old, orig ) ) // should work always... oldIndex = repeatEvents.findIndex( orig ); } else oldIndex = eventList.findIndex( old ); saveJournalEntry( editedEv, ACTION_REPLACE, oldIndex, oldHadRepeat ); diff --git a/library/datebookdb.h b/library/datebookdb.h index e4c251c..0add028 100644 --- a/library/datebookdb.h +++ b/library/datebookdb.h @@ -15,65 +15,64 @@ ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #ifndef DATEBOOKDB_H #define DATEBOOKDB_H #include <qdatetime.h> #include <qfile.h> #include <qvaluelist.h> #include <qpe/event.h> // journal actions... enum journal_action { ACTION_ADD, ACTION_REMOVE, ACTION_REPLACE }; class DateBookDBPrivate; class DateBookDB { public: DateBookDB(); ~DateBookDB(); // very depreciated now!!! QValueList<Event> getEvents( const QDate &from, const QDate &to ); QValueList<Event> getEvents( const QDateTime &start ); // USE THESE!!! QValueList<EffectiveEvent> getEffectiveEvents( const QDate &from, const QDate &to ); QValueList<EffectiveEvent> getEffectiveEvents( const QDateTime &start ); - Event getEvent( int uid ); QValueList<Event> getRawRepeats() const; QValueList<Event> getNonRepeatingEvents( const QDate &from, const QDate &to ) const; // Use these when dealing with adding removing events... void addEvent( const Event &ev, bool doalarm=TRUE ); void removeEvent( const Event &ev ); void editEvent( const Event &old, Event &ev ); // add/remove event without journaling ( these ended up in public by accident, never // use them unless you know what you are doing...), // please put them in private if we ever can change the class... void addJFEvent( const Event &ev, bool doalarm=TRUE ); void removeJFEvent( const Event &ev ); bool save(); void reload(); private: //find the real repeat... bool origRepeat( const Event &ev, Event &orig ) const; bool removeRepeat( const Event &ev ); void init(); void loadFile( const QString &strFile ); // depreciated... void saveJournalEntry( const Event &ev, journal_action action ); // new version, uncomment the "= -1" when we remove the above // function.. bool saveJournalEntry( const Event &ev, journal_action action, int key/* = -1*/, bool origHadRepeat = false ); QValueList<Event> eventList; // non-repeating events... QValueList<Event> repeatEvents; // the repeating events... |