author | zautrix <zautrix> | 2005-04-17 12:17:07 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-04-17 12:17:07 (UTC) |
commit | 2d81c75c4ffb8f144ae58e90e68496500d07a19e (patch) (side-by-side diff) | |
tree | 1b27958fdc2948c1235579029188b1de78d7b820 | |
parent | f64384edcc1e3b3f7511480866b0900aa1ebdda6 (diff) | |
download | kdepimpi-2d81c75c4ffb8f144ae58e90e68496500d07a19e.zip kdepimpi-2d81c75c4ffb8f144ae58e90e68496500d07a19e.tar.gz kdepimpi-2d81c75c4ffb8f144ae58e90e68496500d07a19e.tar.bz2 |
fixx
-rw-r--r-- | bin/kdepim/WhatsNew.txt | 4 | ||||
-rw-r--r-- | korganizer/koagenda.cpp | 236 | ||||
-rw-r--r-- | korganizer/koagenda.h | 2 | ||||
-rw-r--r-- | korganizer/koagendaview.cpp | 20 |
4 files changed, 31 insertions, 231 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt index 44bf20b..03895fd 100644 --- a/bin/kdepim/WhatsNew.txt +++ b/bin/kdepim/WhatsNew.txt @@ -1,10 +1,14 @@ Info about the changes in new versions of KDE-Pim/Pi ********** VERSION 2.0.28 ************ +KO/Pi: +Fixed two problems in KO/Pi timetracking. +Added context menu to month view for creating new events/todos. +Fixed some other small bugs. ********** VERSION 2.0.27 ************ More bugfixes. Added possibility to clone in KO/Pi a todo with all its subtodos. diff --git a/korganizer/koagenda.cpp b/korganizer/koagenda.cpp index 114ed75..355f4bb 100644 --- a/korganizer/koagenda.cpp +++ b/korganizer/koagenda.cpp @@ -471,21 +471,14 @@ bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me) mPopupKind = 1; if (me->button() == RightButton) { popupMenu(); } else if (me->button() == LeftButton) { mActionItem = (KOAgendaItem *)object; if (mActionItem) { - if ( mSelectionHeight > 0 ) { - int selectionCellX = mSelectionCellX * mGridSpacingX; - int selectionYTop = mSelectionYTop; - int gridSpacingX = mGridSpacingX; - int selectionHeight = mSelectionHeight; - clearSelection(); - repaintContents( selectionCellX, selectionYTop, - gridSpacingX, selectionHeight,false ); - } + emit signalClearSelection(); + slotClearSelection(); selectItem(mActionItem); Incidence *incidence = mActionItem->incidence(); if ( incidence->isReadOnly() /*|| incidence->recurrence()->doesRecur() */) { mActionItem = 0; } else { startItemAction(viewportPos); @@ -607,187 +600,13 @@ bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me) break; default: break; } return true; -#if 0 - //qDebug("KOAgenda::eventFilter_mous "); - QPoint viewportPos; - if (object != viewport()) { - viewportPos = ((QWidget *)object)->mapToParent(me->pos()); - } else { - viewportPos = me->pos(); - } - static int startX = 0; - static int startY = 0; - static int blockmoveDist = ( QApplication::desktop()->width() < 480 ? 15 : 20 ); - static bool blockMoving = true; - static bool leftMouseDown = false; - bool rightButtonPressed = false; - switch (me->type()) { - case QEvent::MouseButtonPress: - if (me->button() == LeftButton) { - leftMouseDown = true; - } - else if (me->button() == RightButton) { - leftMouseDown = false; - } - blockMoving = true; - startX = viewportPos.x(); - startY = viewportPos.y(); - if (object != viewport()) { // item clicked ************** - if (me->button() == RightButton) { - leftMouseDown = false; - mClickedItem = (KOAgendaItem *)object; - if (mActionItem ) { - endItemAction(); - } - if (mClickedItem) { - selectItem(mClickedItem); - emit showIncidencePopupSignal(mClickedItem->incidence()); - } - return true; - } else if (me->button() == LeftButton) { - mActionItem = (KOAgendaItem *)object; - if (mActionItem) { - if ( mSelectionHeight > 0 ) { - int selectionCellX = mSelectionCellX * mGridSpacingX; - int selectionYTop = mSelectionYTop; - int gridSpacingX = mGridSpacingX; - int selectionHeight = mSelectionHeight; - clearSelection(); - repaintContents( selectionCellX, selectionYTop, - gridSpacingX, selectionHeight,false ); - } - selectItem(mActionItem); - Incidence *incidence = mActionItem->incidence(); - if ( incidence->isReadOnly() /*|| incidence->recurrence()->doesRecur() */) { - mActionItem = 0; - } else { - startItemAction(viewportPos); - } - } - } - } else { // ---------- viewport() - selectItem(0); - mActionItem = 0; - if (me->button() == LeftButton ) { - setCursor(arrowCursor); - startSelectAction(viewportPos); - } else if (me->button() == RightButton ) { - setCursor(arrowCursor); - if ( leftMouseDown ) { // we have a simulated right click - clear left mouse action - endSelectAction( false ); // do not emit new event signal - leftMouseDown = false; // no more leftMouse computation - } - int x,y; - viewportToContents(viewportPos.x(),viewportPos.y(),x,y); - int gx,gy; - contentsToGrid(x,y,gx,gy); - mCurrentCellX = gx; - mCurrentCellY = gy; - mStartCellX = gx; - mStartCellY = gy; - mNewItemPopup->popup( viewport()->mapToGlobal( me->pos() ) ); - } - } - break; - - case QEvent::MouseButtonRelease: - if (object != viewport()) { - if (me->button() == LeftButton && leftMouseDown) { - if (mActionItem) { - QPoint clipperPos = clipper()->mapFromGlobal(viewport()->mapToGlobal(viewportPos)); - //qDebug(" %d %d %d ",clipperPos.y(),visibleHeight() , 9 ); - if ( mActionType == MOVE && (clipperPos.y() > visibleHeight()-2 ||clipperPos.y() < 0 ) ) { - mScrollUpTimer.stop(); - mScrollDownTimer.stop(); - mActionItem->resetMove(); - placeSubCells( mActionItem ); - // emit startDragSignal( mActionItem->incidence() ); - setCursor( arrowCursor ); - mActionItem = 0; - mActionType = NOP; - mItemMoved = 0; - leftMouseDown = false; - return true; - } - endItemAction(); - } - } - - } else { // ---------- viewport() - if (me->button() == LeftButton && leftMouseDown ) { //left click - endSelectAction( true ); // emit new event signal - } - } - if (me->button() == LeftButton) - leftMouseDown = false; - - break; - - case QEvent::MouseMove: - if ( !leftMouseDown ) - return true; - if ( blockMoving ) { - int dX, dY; - dX = startX - viewportPos.x(); - if ( dX < 0 ) - dX = -dX; - dY = viewportPos.y() - startY; - if ( dY < 0 ) - dY = -dY; - //qDebug("%d %d %d ", dX, dY , blockmoveDist ); - if ( dX > blockmoveDist || dY > blockmoveDist ) { - blockMoving = false; - } - } - if (object != viewport()) { - KOAgendaItem *moveItem = (KOAgendaItem *)object; - if (!moveItem->incidence()->isReadOnly() ) { - if (!mActionItem) - setNoActionCursor(moveItem,viewportPos); - else { - if ( !blockMoving ) - performItemAction(viewportPos); - } - } - } else { // ---------- viewport() - if ( mActionType == SELECT ) { - performSelectAction( viewportPos ); - } - } - break; - - case QEvent::MouseButtonDblClick: - blockMoving = false; - leftMouseDown = false; - if (object == viewport()) { - selectItem(0); - int x,y; - viewportToContents(viewportPos.x(),viewportPos.y(),x,y); - int gx,gy; - contentsToGrid(x,y,gx,gy); - emit newEventSignal(gx,gy); - } else { - KOAgendaItem *doubleClickedItem = (KOAgendaItem *)object; - selectItem(doubleClickedItem); - if ( KOPrefs::instance()->mEditOnDoubleClick ) - emit editIncidenceSignal(doubleClickedItem->incidence()); - else - emit showIncidenceSignal(doubleClickedItem->incidence()); - } - break; - - default: - break; - } - return true; -#endif } void KOAgenda::newItem( int item ) { if ( item == 1 ) { //new event newEventSignal(mStartCellX ,mStartCellY ); @@ -800,15 +619,29 @@ void KOAgenda::newItem( int item ) // 3Day view // 4Week view // 5Month view // 6Journal view } } +void KOAgenda::slotClearSelection() +{ + if (mSelectionHeight) { + int selectionX = mSelectionCellX * mGridSpacingX; + int top = mSelectionYTop - 2 *mGridSpacingY; + int hei = mSelectionHeight + 4 *mGridSpacingY; + clearSelection(); + repaintContents( selectionX, top, + mGridSpacingX, hei ,false ); + } + +} void KOAgenda::startSelectAction(QPoint viewportPos) { - //emit newStartSelectSignal(); + + emit signalClearSelection(); + slotClearSelection(); mActionType = SELECT; int x,y; viewportToContents(viewportPos.x(),viewportPos.y(),x,y); int gx,gy; @@ -816,29 +649,20 @@ void KOAgenda::startSelectAction(QPoint viewportPos) mStartCellX = gx; mStartCellY = gy; mCurrentCellX = gx; mCurrentCellY = gy; - // Store coordinates of old selection - int selectionX = mSelectionCellX * mGridSpacingX; - int selectionYTop = mSelectionYTop; - int selectionHeight = mSelectionHeight; - // Store new selection mSelectionCellX = gx; mSelectionYTop = gy * mGridSpacingY; mSelectionHeight = mGridSpacingY; - // Clear old selection - repaintContents( selectionX, selectionYTop, - mGridSpacingX, selectionHeight,false ); - // Paint new selection - // repaintContents( mSelectionCellX * mGridSpacingX, mSelectionYTop, - // mGridSpacingX, mSelectionHeight ); + repaintContents( mSelectionCellX * mGridSpacingX+1, mSelectionYTop, + mGridSpacingX-1, mSelectionHeight ); } void KOAgenda::performSelectAction(QPoint viewportPos) { int x,y; viewportToContents(viewportPos.x(),viewportPos.y(),x,y); @@ -859,24 +683,17 @@ void KOAgenda::performSelectAction(QPoint viewportPos) mScrollDownTimer.stop(); } if ( gy > mCurrentCellY ) { mSelectionHeight = ( gy + 1 ) * mGridSpacingY - mSelectionYTop; -#if 0 - // FIXME: Repaint only the newly selected region - repaintContents( mSelectionCellX * mGridSpacingX, - mCurrentCellY + mGridSpacingY, - mGridSpacingX, - mSelectionHeight - ( gy - mCurrentCellY - 1 ) * mGridSpacingY ); -#else + repaintContents( (KOGlobals::self()->reverseLayout() ? mColumns - 1 - mSelectionCellX : mSelectionCellX) * mGridSpacingX, mSelectionYTop, mGridSpacingX, mSelectionHeight , false); -#endif mCurrentCellY = gy; } else if ( gy < mCurrentCellY ) { if ( gy >= mStartCellY ) { int selectionHeight = mSelectionHeight; mSelectionHeight = ( gy + 1 ) * mGridSpacingY - mSelectionYTop; @@ -897,13 +714,12 @@ void KOAgenda::endSelectAction( bool emitNewEvent ) mActionType = NOP; mScrollUpTimer.stop(); mScrollDownTimer.stop(); emit newTimeSpanSignal(mStartCellX,mStartCellY,mCurrentCellX,mCurrentCellY); if ( emitNewEvent && mStartCellY < mCurrentCellY ) { - qDebug("ew event signal "); emit newEventSignal(mStartCellX,mStartCellY,mCurrentCellX,mCurrentCellY); } } void KOAgenda::startItemAction(QPoint viewportPos) { @@ -1097,23 +913,13 @@ void KOAgenda::endItemAction() mSelectedItem = 0; //qDebug("todo %d %d %d ", mCurrentCellX, modifiedItem->cellX() ,modifiedItem->cellXWidth()); modifiedItem->mLastMoveXPos = mCurrentCellX; emit itemModified( modifiedItem, mActionType ); } else { -#if 0 - for ( item=oldconflictItems.first(); item != 0; - item=oldconflictItems.next() ) { - placeSubCells(item); - } - while ( placeItem ) { - //qDebug("placeItem %s ", placeItem->incidence()->summary().latin1()); - placeSubCells( placeItem ); - placeItem = placeItem->nextMultiItem(); - } -#endif + globalFlagBlockAgendaItemPaint = 1; for ( item=oldconflictItems.first(); item != 0; item=oldconflictItems.next() ) { placeSubCells(item); } diff --git a/korganizer/koagenda.h b/korganizer/koagenda.h index 4f1fdb9..fb9983e 100644 --- a/korganizer/koagenda.h +++ b/korganizer/koagenda.h @@ -124,12 +124,13 @@ class KOAgenda : public QScrollView void printSelection(); void storePosition(); void restorePosition(); void setPopup( KOEventPopupMenu * p ) { mAllAgendaPopup = p; } public slots: + void slotClearSelection(); void popupMenu(); void newItem( int ); void moveChild( QWidget *, int, int ); void scrollUp(); void scrollDown(); void updateTodo( Todo * t, int , bool ); @@ -143,12 +144,13 @@ class KOAgenda : public QScrollView deselected. This function emits the itemSelected(bool) signal to inform about selection/deseelction of events. */ void selectItem(KOAgendaItem *); void finishResize(); signals: + void signalClearSelection(); void showDateView( int, int); void newEventSignal(); void newEventSignal(int gx,int gy); void newTodoSignal(int gx,int gy); void newEventSignal(int gxStart, int gyStart, int gxEnd, int gyEnd); void newTimeSpanSignal(int gxStart, int gyStart, int gxEnd, int gyEnd); diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp index 17f791d..b43c40e 100644 --- a/korganizer/koagendaview.cpp +++ b/korganizer/koagendaview.cpp @@ -431,13 +431,12 @@ KOAgendaView::KOAgendaView(Calendar *cal,QWidget *parent,const char *name) : QGridLayout *agendaLayout = new QGridLayout(agendaFrame,4,3); // QHBox *agendaFrame = new QHBox(splitterAgenda); // create event indicator bars mEventIndicatorTop = new EventIndicator(EventIndicator::Top,agendaFrame); #ifndef DESKTOP_VERSION - // FIX mEventIndicatorTop->setPaintWidget( mSplitterAgenda ); #endif mDayLabelsFrame = new QHBox(agendaFrame); //topLayout->addWidget(mDayLabelsFrame); mDayLabels = new QFrame (mDayLabelsFrame); mLayoutDayLabels = new QHBoxLayout(mDayLabels); @@ -564,12 +563,14 @@ KOAgendaView::KOAgendaView(Calendar *cal,QWidget *parent,const char *name) : SLOT( addToCalSlot(Incidence *, Incidence * ) ) ); connect( mAllDayAgenda, SIGNAL( addToCalSignal(Incidence * ,Incidence *) ), SLOT( addToCalSlot(Incidence * , Incidence *) ) ); // connect( mAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) ); //connect( mAllDayAgenda, SIGNAL( cloneIncidenceSignal(Incidence *) ), SIGNAL( cloneIncidenceSignal(Incidence *) ) ); + connect( mAllDayAgenda, SIGNAL( signalClearSelection() ),mAgenda, SLOT( slotClearSelection()) ); + connect( mAgenda, SIGNAL( signalClearSelection() ),mAllDayAgenda, SLOT( slotClearSelection()) ); } void KOAgendaView::toggleAllDay() { if ( mSplitterAgenda->firstHandle() ) @@ -722,17 +723,13 @@ void KOAgendaView::createDayLabels() dayLabel = getNewDaylabel(); } dayLabel->setFixedWidth( mTimeLabels->width()+mAgenda->frameWidth() ); dayLabel->setFont( dlf ); dayLabel->setNum( -1 ); //dayLabel->setAlignment(QLabel::AlignHCenter); -#if 0 - if ( QApplication::desktop()->width() <= 320 ) - dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ).left(2) ); - else -#endif + dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ) ); dayLabel->show(); DateList::ConstIterator dit; bool oneday = (mSelectedDates.first() == mSelectedDates.last() ); int counter = -1; for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) { @@ -1176,22 +1173,13 @@ void KOAgendaView::fillAgenda() } } } } else { mAllDayAgenda->insertAllDayItem(event,currentDate,curCol,curCol); } -#if 0 - if (beginX <= 0 && curCol == 0) { - mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX); - } else if (beginX == curCol) { - mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX); - } else { - qDebug("skipped %d %d %d ",beginX , endX, curCol); - } -#endif - //mAllDayAgenda->insertAllDayItem(event,currentDate,curCol,curCol); + } else { if (beginX <= 0 && curCol == 0) { mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX); } else if (beginX == curCol) { mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX); } |