-rw-r--r-- | bin/kdepim/WhatsNew.txt | 2 | ||||
-rw-r--r-- | korganizer/koagenda.cpp | 195 | ||||
-rw-r--r-- | korganizer/koagenda.h | 6 | ||||
-rw-r--r-- | korganizer/koagendaitem.cpp | 2 | ||||
-rw-r--r-- | korganizer/koagendaview.cpp | 14 | ||||
-rw-r--r-- | korganizer/koagendaview.h | 1 | ||||
-rw-r--r-- | korganizer/kolistview.cpp | 55 | ||||
-rw-r--r-- | korganizer/kolistview.h | 7 | ||||
-rw-r--r-- | microkde/kdeui/klistview.cpp | 5 | ||||
-rw-r--r-- | microkde/kdeui/klistview.h | 2 |
10 files changed, 265 insertions, 24 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt index 6f8b041..d5d1f76 100644 --- a/bin/kdepim/WhatsNew.txt +++ b/bin/kdepim/WhatsNew.txt | |||
@@ -13,2 +13,4 @@ Made first datenavigator repainting faster. | |||
13 | Changed the title of the event/todo edit dialogs. | 13 | Changed the title of the event/todo edit dialogs. |
14 | Timelabels in agenga changed from 22:00 to 22 oo. ( the oo higher, of course). | ||
15 | Please report, if there are layout problems with the new timelabels. | ||
14 | 16 | ||
diff --git a/korganizer/koagenda.cpp b/korganizer/koagenda.cpp index 66ad4ec..14f52b8 100644 --- a/korganizer/koagenda.cpp +++ b/korganizer/koagenda.cpp | |||
@@ -72,3 +72,2 @@ MarcusBains::MarcusBains(KOAgenda *_agenda,const char *name) | |||
72 | minutes->start(0, true); | 72 | minutes->start(0, true); |
73 | |||
74 | mTimeBox = new QLabel(this); | 73 | mTimeBox = new QLabel(this); |
@@ -177,3 +176,3 @@ KOAgenda::KOAgenda(int columns,int rows,int rowSize,QWidget *parent, | |||
177 | #ifndef DESKTOP_VERSION | 176 | #ifndef DESKTOP_VERSION |
178 | QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); | 177 | //QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); |
179 | #endif | 178 | #endif |
@@ -197,3 +196,3 @@ KOAgenda::KOAgenda(int columns,QWidget *parent,const char *name,WFlags f) : | |||
197 | #ifndef DESKTOP_VERSION | 196 | #ifndef DESKTOP_VERSION |
198 | QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); | 197 | //QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); |
199 | #endif | 198 | #endif |
@@ -224,2 +223,5 @@ void KOAgenda::init() | |||
224 | { | 223 | { |
224 | mPopupTimer = new QTimer(this); | ||
225 | connect(mPopupTimer , SIGNAL(timeout()), this, SLOT(popupMenu())); | ||
226 | |||
225 | mNewItemPopup = new QPopupMenu( this ); | 227 | mNewItemPopup = new QPopupMenu( this ); |
@@ -313,3 +315,5 @@ void KOAgenda::init() | |||
313 | addChild(mMarcusBains); | 315 | addChild(mMarcusBains); |
314 | } | 316 | } |
317 | mPopupKind = 0; | ||
318 | mPopupItem = 0; | ||
315 | } | 319 | } |
@@ -384,3 +388,26 @@ bool KOAgenda::eventFilter ( QObject *object, QEvent *event ) | |||
384 | } | 388 | } |
385 | 389 | void KOAgenda::popupMenu() | |
390 | { | ||
391 | mPopupTimer->stop(); | ||
392 | if ( mPopupKind == 1 ) { | ||
393 | if (mActionItem ) { | ||
394 | endItemAction(); | ||
395 | } | ||
396 | mLeftMouseDown = false; // no more leftMouse computation | ||
397 | if (mPopupItem) { | ||
398 | selectItem(mPopupItem); | ||
399 | emit showIncidencePopupSignal(mPopupItem->incidence()); | ||
400 | |||
401 | } | ||
402 | } else if ( mPopupKind == 2 ) { | ||
403 | if ( mLeftMouseDown ) { // we have a simulated right click - clear left mouse action | ||
404 | endSelectAction( false ); // do not emit new event signal | ||
405 | mLeftMouseDown = false; // no more leftMouse computation | ||
406 | } | ||
407 | mNewItemPopup->popup( mPopupPos); | ||
408 | } | ||
409 | mLeftMouseDown = false; | ||
410 | mPopupItem = 0; | ||
411 | mPopupKind = 0; | ||
412 | } | ||
386 | 413 | ||
@@ -388,2 +415,159 @@ bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me) | |||
388 | { | 415 | { |
416 | //qDebug("KOAgenda::eventFilter_mous "); | ||
417 | QPoint viewportPos; | ||
418 | if (object != viewport()) { | ||
419 | viewportPos = ((QWidget *)object)->mapToParent(me->pos()); | ||
420 | } else { | ||
421 | viewportPos = me->pos(); | ||
422 | } | ||
423 | static int startX = 0; | ||
424 | static int startY = 0; | ||
425 | static int blockmoveDist = ( QApplication::desktop()->width() < 480 ? 15 : 20 ); | ||
426 | static bool blockMoving = true; | ||
427 | switch (me->type()) { | ||
428 | case QEvent::MouseButtonPress: | ||
429 | if (me->button() == LeftButton) { | ||
430 | mPopupTimer->start( 600 ); | ||
431 | mLeftMouseDown = true; | ||
432 | } | ||
433 | blockMoving = true; | ||
434 | startX = viewportPos.x(); | ||
435 | startY = viewportPos.y(); | ||
436 | if (object != viewport()) { | ||
437 | mPopupItem = (KOAgendaItem *)object; | ||
438 | mPopupKind = 1; | ||
439 | if (me->button() == RightButton) { | ||
440 | popupMenu(); | ||
441 | } else if (me->button() == LeftButton) { | ||
442 | mActionItem = (KOAgendaItem *)object; | ||
443 | if (mActionItem) { | ||
444 | if ( mSelectionHeight > 0 ) { | ||
445 | int selectionCellX = mSelectionCellX * mGridSpacingX; | ||
446 | int selectionYTop = mSelectionYTop; | ||
447 | int gridSpacingX = mGridSpacingX; | ||
448 | int selectionHeight = mSelectionHeight; | ||
449 | clearSelection(); | ||
450 | repaintContents( selectionCellX, selectionYTop, | ||
451 | gridSpacingX, selectionHeight,false ); | ||
452 | } | ||
453 | selectItem(mActionItem); | ||
454 | Incidence *incidence = mActionItem->incidence(); | ||
455 | if ( incidence->isReadOnly() /*|| incidence->recurrence()->doesRecur() */) { | ||
456 | mActionItem = 0; | ||
457 | } else { | ||
458 | startItemAction(viewportPos); | ||
459 | } | ||
460 | } | ||
461 | } | ||
462 | } else { // ---------- viewport() | ||
463 | mPopupItem = 0; | ||
464 | mPopupKind = 2; | ||
465 | selectItem(0); | ||
466 | mActionItem = 0; | ||
467 | mPopupPos = viewport()->mapToGlobal( me->pos() ); | ||
468 | if (me->button() == RightButton) { | ||
469 | popupMenu(); | ||
470 | } else if (me->button() == LeftButton) { | ||
471 | setCursor(arrowCursor); | ||
472 | startSelectAction(viewportPos); | ||
473 | } | ||
474 | } | ||
475 | break; | ||
476 | |||
477 | case QEvent::MouseButtonRelease: | ||
478 | if (me->button() == LeftButton ) { | ||
479 | mPopupTimer->stop(); | ||
480 | } | ||
481 | if (object != viewport()) { | ||
482 | if (me->button() == LeftButton && mLeftMouseDown) { | ||
483 | if (mActionItem) { | ||
484 | QPoint clipperPos = clipper()->mapFromGlobal(viewport()->mapToGlobal(viewportPos)); | ||
485 | //qDebug(" %d %d %d ",clipperPos.y(),visibleHeight() , 9 ); | ||
486 | if ( mActionType == MOVE && (clipperPos.y() > visibleHeight()-2 ||clipperPos.y() < 0 ) ) { | ||
487 | mScrollUpTimer.stop(); | ||
488 | mScrollDownTimer.stop(); | ||
489 | mActionItem->resetMove(); | ||
490 | placeSubCells( mActionItem ); | ||
491 | // emit startDragSignal( mActionItem->incidence() ); | ||
492 | setCursor( arrowCursor ); | ||
493 | mActionItem = 0; | ||
494 | mActionType = NOP; | ||
495 | mItemMoved = 0; | ||
496 | mLeftMouseDown = false; | ||
497 | return true; | ||
498 | } | ||
499 | endItemAction(); | ||
500 | } | ||
501 | } | ||
502 | |||
503 | } else { // ---------- viewport() | ||
504 | if (me->button() == LeftButton && mLeftMouseDown ) { //left click | ||
505 | endSelectAction( true ); // emit new event signal | ||
506 | } | ||
507 | } | ||
508 | if (me->button() == LeftButton) | ||
509 | mLeftMouseDown = false; | ||
510 | |||
511 | break; | ||
512 | |||
513 | case QEvent::MouseMove: | ||
514 | if ( !mLeftMouseDown ) | ||
515 | return true; | ||
516 | if ( blockMoving ) { | ||
517 | int dX, dY; | ||
518 | dX = startX - viewportPos.x(); | ||
519 | if ( dX < 0 ) | ||
520 | dX = -dX; | ||
521 | dY = viewportPos.y() - startY; | ||
522 | if ( dY < 0 ) | ||
523 | dY = -dY; | ||
524 | //qDebug("%d %d %d ", dX, dY , blockmoveDist ); | ||
525 | if ( dX > blockmoveDist || dY > blockmoveDist ) { | ||
526 | blockMoving = false; | ||
527 | } | ||
528 | } | ||
529 | if ( ! blockMoving ) | ||
530 | mPopupTimer->stop(); | ||
531 | if (object != viewport()) { | ||
532 | KOAgendaItem *moveItem = (KOAgendaItem *)object; | ||
533 | if (!moveItem->incidence()->isReadOnly() ) { | ||
534 | if (!mActionItem) | ||
535 | setNoActionCursor(moveItem,viewportPos); | ||
536 | else { | ||
537 | if ( !blockMoving ) | ||
538 | performItemAction(viewportPos); | ||
539 | } | ||
540 | } | ||
541 | } else { // ---------- viewport() | ||
542 | mPopupPos = viewport()->mapToGlobal( me->pos() ); | ||
543 | if ( mActionType == SELECT ) { | ||
544 | performSelectAction( viewportPos ); | ||
545 | } | ||
546 | } | ||
547 | break; | ||
548 | |||
549 | case QEvent::MouseButtonDblClick: | ||
550 | mPopupTimer->stop(); | ||
551 | if (object == viewport()) { | ||
552 | selectItem(0); | ||
553 | int x,y; | ||
554 | viewportToContents(viewportPos.x(),viewportPos.y(),x,y); | ||
555 | int gx,gy; | ||
556 | contentsToGrid(x,y,gx,gy); | ||
557 | emit newEventSignal(gx,gy); | ||
558 | } else { | ||
559 | KOAgendaItem *doubleClickedItem = (KOAgendaItem *)object; | ||
560 | selectItem(doubleClickedItem); | ||
561 | if ( KOPrefs::instance()->mEditOnDoubleClick ) | ||
562 | emit editIncidenceSignal(doubleClickedItem->incidence()); | ||
563 | else | ||
564 | emit showIncidenceSignal(doubleClickedItem->incidence()); | ||
565 | } | ||
566 | break; | ||
567 | |||
568 | default: | ||
569 | break; | ||
570 | } | ||
571 | return true; | ||
572 | #if 0 | ||
389 | //qDebug("KOAgenda::eventFilter_mous "); | 573 | //qDebug("KOAgenda::eventFilter_mous "); |
@@ -561,2 +745,3 @@ bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me) | |||
561 | return true; | 745 | return true; |
746 | #endif | ||
562 | } | 747 | } |
diff --git a/korganizer/koagenda.h b/korganizer/koagenda.h index f3f1772..3d33ae5 100644 --- a/korganizer/koagenda.h +++ b/korganizer/koagenda.h | |||
@@ -128,2 +128,3 @@ class KOAgenda : public QScrollView | |||
128 | public slots: | 128 | public slots: |
129 | void popupMenu(); | ||
129 | void newItem( int ); | 130 | void newItem( int ); |
@@ -216,2 +217,7 @@ class KOAgenda : public QScrollView | |||
216 | bool blockResize; | 217 | bool blockResize; |
218 | bool mLeftMouseDown; | ||
219 | KOAgendaItem *mPopupItem; | ||
220 | QTimer* mPopupTimer; | ||
221 | int mPopupKind; | ||
222 | QPoint mPopupPos; | ||
217 | QTimer mResizeTimer; | 223 | QTimer mResizeTimer; |
diff --git a/korganizer/koagendaitem.cpp b/korganizer/koagendaitem.cpp index 905c1bf..b30ad75 100644 --- a/korganizer/koagendaitem.cpp +++ b/korganizer/koagendaitem.cpp | |||
@@ -77,3 +77,3 @@ KOAgendaItem::KOAgendaItem(Incidence *incidence, QDate qd, QWidget *parent,bool | |||
77 | #ifndef DESKTOP_VERSION | 77 | #ifndef DESKTOP_VERSION |
78 | QPEApplication::setStylusOperation( this, QPEApplication::RightOnHold ); | 78 | //QPEApplication::setStylusOperation( this, QPEApplication::RightOnHold ); |
79 | #endif | 79 | #endif |
diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp index 957ac52..b9c7dec 100644 --- a/korganizer/koagendaview.cpp +++ b/korganizer/koagendaview.cpp | |||
@@ -131,3 +131,3 @@ void TimeLabels::drawContents(QPainter *p,int cx, int cy, int cw, int ch) | |||
131 | timeHeight -= (timeHeight/4-2); | 131 | timeHeight -= (timeHeight/4-2); |
132 | int borderWidth = 5; | 132 | int borderWidth = 2; |
133 | QFont nFont = p->font(); | 133 | QFont nFont = p->font(); |
@@ -181,11 +181,3 @@ int TimeLabels::minimumWidth() const | |||
181 | { | 181 | { |
182 | QFontMetrics fm = fontMetrics(); | 182 | return mMiniWidth; |
183 | |||
184 | //TODO: calculate this value | ||
185 | int borderWidth = 4; | ||
186 | |||
187 | // the maximum width possible | ||
188 | int width = fm.width("88:88x") + borderWidth; | ||
189 | |||
190 | return width; | ||
191 | } | 183 | } |
@@ -199,3 +191,3 @@ void TimeLabels::updateConfig() | |||
199 | setFont(KOPrefs::instance()->mTimeBarFont); | 191 | setFont(KOPrefs::instance()->mTimeBarFont); |
200 | 192 | mMiniWidth = fontMetrics().width("88:88") + 2 ; | |
201 | // update geometry restrictions based on new settings | 193 | // update geometry restrictions based on new settings |
diff --git a/korganizer/koagendaview.h b/korganizer/koagendaview.h index 8b8bac0..0cb9310 100644 --- a/korganizer/koagendaview.h +++ b/korganizer/koagendaview.h | |||
@@ -103,2 +103,3 @@ class TimeLabels : public QScrollView { | |||
103 | private: | 103 | private: |
104 | int mMiniWidth; | ||
104 | int mMouseDownY; | 105 | int mMouseDownY; |
diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp index 6b63d7f..09d70f1 100644 --- a/korganizer/kolistview.cpp +++ b/korganizer/kolistview.cpp | |||
@@ -1156,6 +1156,8 @@ void KOListViewListView::keyPressEvent ( QKeyEvent *e) | |||
1156 | KOListViewListView::KOListViewListView(KOListView * lv ) | 1156 | KOListViewListView::KOListViewListView(KOListView * lv ) |
1157 | : KListView( lv ) | 1157 | : KListView( lv, "kolistlistview", false ) |
1158 | { | 1158 | { |
1159 | mPopupTimer = new QTimer(this); | ||
1160 | connect(mPopupTimer , SIGNAL(timeout()), this, SLOT(popupMenu())); | ||
1159 | #ifndef DESKTOP_VERSION | 1161 | #ifndef DESKTOP_VERSION |
1160 | QPEApplication::setStylusOperation(viewport(), QPEApplication::RightOnHold ); | 1162 | //QPEApplication::setStylusOperation(viewport(), QPEApplication::RightOnHold ); |
1161 | #endif | 1163 | #endif |
@@ -1175,3 +1177,3 @@ void KOListViewListView::contentsMouseDoubleClickEvent(QMouseEvent *e) | |||
1175 | } | 1177 | } |
1176 | 1178 | #if 0 | |
1177 | void KOListViewListView::contentsMousePressEvent(QMouseEvent *e) | 1179 | void KOListViewListView::contentsMousePressEvent(QMouseEvent *e) |
@@ -1195 +1197,46 @@ void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e) | |||
1195 | } | 1197 | } |
1198 | #endif | ||
1199 | void KOListViewListView::popupMenu() | ||
1200 | { | ||
1201 | mPopupTimer->stop(); | ||
1202 | //qDebug("HUUUUUUUUUUUUUUUUUUUU "); | ||
1203 | QMouseEvent* e = new QMouseEvent( QEvent::MouseButtonPress, mEventPos ,mEventGlobalPos, RightButton , RightButton ); | ||
1204 | QApplication::postEvent( this->viewport(), e ); | ||
1205 | } | ||
1206 | void KOListViewListView::contentsMousePressEvent(QMouseEvent *e) | ||
1207 | { | ||
1208 | //qDebug("contentsMousePressEvent++++ "); | ||
1209 | mYMousePos = mapToGlobal( (e->pos())).y(); | ||
1210 | if ( e->button() == LeftButton ) { | ||
1211 | mPopupTimer->start( 600 ); | ||
1212 | mEventPos = e->pos(); | ||
1213 | mEventGlobalPos = e->globalPos(); | ||
1214 | } | ||
1215 | KListView::contentsMousePressEvent( e ); | ||
1216 | if ( e->button() == RightButton ) { | ||
1217 | QListViewItem* ci = currentItem(); | ||
1218 | clearSelection(); | ||
1219 | if ( ci ) | ||
1220 | ci->setSelected( true ); | ||
1221 | } | ||
1222 | } | ||
1223 | void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e) | ||
1224 | { | ||
1225 | mPopupTimer->stop(); | ||
1226 | KListView::contentsMouseReleaseEvent(e); | ||
1227 | } | ||
1228 | void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e) | ||
1229 | { | ||
1230 | // qDebug("contentsMouseMoveEv....... "); | ||
1231 | // qDebug("start: %d current %d ",mYMousePos , mapToGlobal( (e->pos())).y() ); | ||
1232 | int diff = mYMousePos - mapToGlobal( (e->pos())).y(); | ||
1233 | if ( diff < 0 ) diff = -diff; | ||
1234 | if ( diff > 15 ) | ||
1235 | mPopupTimer->stop(); | ||
1236 | else { | ||
1237 | mEventPos = e->pos(); | ||
1238 | mEventGlobalPos = e->globalPos(); | ||
1239 | } | ||
1240 | KListView::contentsMouseMoveEvent(e); | ||
1241 | } | ||
1242 | |||
diff --git a/korganizer/kolistview.h b/korganizer/kolistview.h index eca71e2..bb0e23e 100644 --- a/korganizer/kolistview.h +++ b/korganizer/kolistview.h | |||
@@ -49,2 +49,3 @@ using namespace KCal; | |||
49 | #include <qdialog.h> | 49 | #include <qdialog.h> |
50 | #include <qtimer.h> | ||
50 | #include <qcombobox.h> | 51 | #include <qcombobox.h> |
@@ -219,3 +220,9 @@ class KOListViewListView : public KListView | |||
219 | void showIncidence( Incidence* ); | 220 | void showIncidence( Incidence* ); |
221 | public slots: | ||
222 | void popupMenu(); | ||
220 | private: | 223 | private: |
224 | QPoint mEventPos; | ||
225 | QPoint mEventGlobalPos; | ||
226 | QTimer* mPopupTimer; | ||
227 | int mYMousePos; | ||
221 | void keyPressEvent ( QKeyEvent * ) ; | 228 | void keyPressEvent ( QKeyEvent * ) ; |
diff --git a/microkde/kdeui/klistview.cpp b/microkde/kdeui/klistview.cpp index 154cd02..31e2053 100644 --- a/microkde/kdeui/klistview.cpp +++ b/microkde/kdeui/klistview.cpp | |||
@@ -407,3 +407,3 @@ void KListViewLineEdit::slotSelectionChanged() | |||
407 | 407 | ||
408 | KListView::KListView( QWidget *parent, const char *name ) | 408 | KListView::KListView( QWidget *parent, const char *name ,bool emulateRightMouse ) |
409 | : QListView( parent, name ), | 409 | : QListView( parent, name ), |
@@ -412,3 +412,4 @@ KListView::KListView( QWidget *parent, const char *name ) | |||
412 | #ifndef DESKTOP_VERSION | 412 | #ifndef DESKTOP_VERSION |
413 | QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); | 413 | if ( emulateRightMouse ) |
414 | QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); | ||
414 | #endif | 415 | #endif |
diff --git a/microkde/kdeui/klistview.h b/microkde/kdeui/klistview.h index d559ce7..0058416 100644 --- a/microkde/kdeui/klistview.h +++ b/microkde/kdeui/klistview.h | |||
@@ -125,3 +125,3 @@ public: | |||
125 | */ | 125 | */ |
126 | KListView (QWidget *parent = 0, const char *name = 0); | 126 | KListView (QWidget *parent = 0, const char *name = 0, bool emulateRightMouse = true ); |
127 | 127 | ||