author | zecke <zecke> | 2004-02-16 21:32:58 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-02-16 21:32:58 (UTC) |
commit | e228f4aa24ce73a49dde349544e55689cb0eccba (patch) (side-by-side diff) | |
tree | 5b9be29793b2a72f9260cb1325751d31e40c18f0 | |
parent | 38d601a7d2a975bc0cbcc4cc933844f5572ec4fa (diff) | |
download | opie-e228f4aa24ce73a49dde349544e55689cb0eccba.zip opie-e228f4aa24ce73a49dde349544e55689cb0eccba.tar.gz opie-e228f4aa24ce73a49dde349544e55689cb0eccba.tar.bz2 |
Take care of the lifetime of the EffectiveEvent/Occurence
Make sure not to keep reference on non existing objects
-rw-r--r-- | core/pim/datebook/datebookday.cpp | 10 | ||||
-rw-r--r-- | core/pim/datebook/datebookday.h | 2 | ||||
-rw-r--r-- | core/pim/datebook/datebookdayallday.cpp | 11 | ||||
-rw-r--r-- | core/pim/datebook/datebookweek.cpp | 4 |
4 files changed, 13 insertions, 14 deletions
diff --git a/core/pim/datebook/datebookday.cpp b/core/pim/datebook/datebookday.cpp index 4d64099..751a1da 100644 --- a/core/pim/datebook/datebookday.cpp +++ b/core/pim/datebook/datebookday.cpp @@ -782,47 +782,49 @@ QDate DateBookDay::findRealStart( int uid, const QDate& isIncluded , DateBookDB return fnd; } void DateBookDayWidget::mousePressEvent( QMouseEvent *e ) { DateBookDayWidget *item; item = dateBook->getSelectedWidget(); if (item) item->update(); dateBook->setSelectedWidget(this); update(); dateBook->repaint(); + Event eve = ev.event(); + QPopupMenu m; m.insertItem( tr( "Edit" ), 1 ); m.insertItem( tr( "Duplicate" ), 4 ); m.insertItem( tr( "Delete" ), 2 ); if(Ir::supported()) m.insertItem( tr( "Beam" ), 3 ); if(Ir::supported() && ev.event().doRepeat() ) m.insertItem( tr( "Beam this occurence"), 5 ); int r = m.exec( e->globalPos() ); if ( r == 1 ) { - emit editMe( ev.event() ); + emit editMe( eve ); } else if ( r == 2 ) { - emit deleteMe( ev.event() ); + emit deleteMe( eve ); } else if ( r == 3 ) { - emit beamMe( ev.event() ); + emit beamMe( eve ); } else if ( r == 4 ) { - emit duplicateMe( ev.event() ); + emit duplicateMe( eve ); } else if ( r == 5 ) { // create an Event and beam it... /* * Start with the easy stuff. If start and end date is the same we can just use * the values of effective events * If it is a multi day event we need to find the real start and end date... */ if ( ev.event().start().date() == ev.event().end().date() ) { Event event( ev.event() ); QDateTime dt( ev.date(), ev.start() ); event.setStart( dt ); dt.setTime( ev.end() ); event.setEnd( dt ); emit beamMe( event ); diff --git a/core/pim/datebook/datebookday.h b/core/pim/datebook/datebookday.h index 3898cbc..c8cb26b 100644 --- a/core/pim/datebook/datebookday.h +++ b/core/pim/datebook/datebookday.h @@ -111,33 +111,33 @@ signals: protected: void paintEvent( QPaintEvent *e ); void mousePressEvent( QMouseEvent *e ); private: /** * Sets the text for an all day Event * All day events have no time associated */ void setAllDayText( QString& text ); /** * Sets the EventText * it got a start and an end Time */ void setEventText( QString& text ); - const EffectiveEvent ev; + EffectiveEvent ev; DateBookDay *dateBook; QString text; QRect geom; }; //Marker for current time in the dayview class DateBookDayTimeMarker : public QWidget { Q_OBJECT public: DateBookDayTimeMarker( DateBookDay *db ); ~DateBookDayTimeMarker(); const QRect &geometry() { return geom; } void setGeometry( const QRect &r ); diff --git a/core/pim/datebook/datebookdayallday.cpp b/core/pim/datebook/datebookdayallday.cpp index 2294f3c..1244fd3 100644 --- a/core/pim/datebook/datebookdayallday.cpp +++ b/core/pim/datebook/datebookdayallday.cpp @@ -143,63 +143,64 @@ void DatebookAlldayDisp::beam_single_event() */ 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; 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( m_Ev.event() ); + emit editMe( ev ); break; case 2: - emit deleteMe( m_Ev.event() ); + emit deleteMe( ev ); break; case 3: - emit beamMe( m_Ev.event() ); + emit beamMe( ev ); break; case 4: - emit duplicateMe( m_Ev.event() ); + emit duplicateMe( ev ); break; case 5: beam_single_event(); break; case 6: - emit displayMe( m_Ev.event() ); + emit displayMe( ev ); break; default: break; } } DatebookEventDesc::DatebookEventDesc(QWidget*parent,const char*name) :QLabel(parent,name) { m_Timer=new QTimer(this); connect(m_Timer,SIGNAL(timeout()),this,SLOT(hide())); setFrameStyle(QFrame::Sunken|QFrame::Panel); setTextFormat(RichText); } DatebookEventDesc::~DatebookEventDesc() diff --git a/core/pim/datebook/datebookweek.cpp b/core/pim/datebook/datebookweek.cpp index 8435132..933e191 100644 --- a/core/pim/datebook/datebookweek.cpp +++ b/core/pim/datebook/datebookweek.cpp @@ -69,35 +69,32 @@ DateBookWeekView::DateBookWeekView( bool ap, bool startOnMonday, initNames(); connect( header, SIGNAL(clicked(int)), this, SIGNAL(showDay(int)) ); QObject::connect(qApp, SIGNAL(clockChanged(bool)), this, SLOT(slotChangeClock(bool))); QFontMetrics fm( font() ); rowHeight = fm.height()+2; resizeContents( width(), 24*rowHeight ); } void DateBookWeekView::initNames() { -#warning Please review this ! (eilers) - - // Ok, I am Mr. Pedantic, but shouldn't we count until 6 instead of 7, if bOnMonday is false ? (eilers) static bool bFirst = true; if ( bFirst ) { if ( bOnMonday ) { for ( int i = 1; i<=7; i++ ) { header->addLabel( Calendar::nameOfDay( i ) ); } } else { header->addLabel( Calendar::nameOfDay( 7 ) ); for ( int i = 1; i<7; i++ ) { header->addLabel( Calendar::nameOfDay( i ) ); } } bFirst = false; } else { @@ -301,33 +298,32 @@ void DateBookWeekView::drawContents( QPainter *p, int cx, int cy, int cw, int ch QListIterator<DateBookWeekItem> it(items); for ( ; it.current(); ++it ) { DateBookWeekItem *i = it.current(); if ( i->geometry().intersects( ur ) ) { p->setBrush( i->color() ); p->drawRect( i->geometry() ); } } } void DateBookWeekView::resizeEvent( QResizeEvent *e ) { const int hourWidth = 20; QScrollView::resizeEvent( e ); -#warning check the geometry i have choosen BRANCH_1_0 (waspe) //HEAD /* int avail = visibleWidth(); header->setGeometry( leftMargin()+frameWidth()+frameRect().left() , frameWidth(), visibleWidth(), header->sizeHint().height() ); setMargins( 0, header->sizeHint().height(), 0, 0 ); */ //BRANCH_1_0 int avail = width()-qApp->style().scrollBarExtent().width()-1; header->setGeometry( 0, 0, avail, header->sizeHint().height() ); setMargins( 0, header->height(), 0, 0 ); header->resizeSection( 0, hourWidth ); int sw = (avail - hourWidth) / 7; |