[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdepim
From:       Andreas Hartmetz <ahartmetz () gmail ! com>
Date:       2007-08-01 2:41:22
Message-ID: 1185936082.699307.14767.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 694904 by ahartmetz:

Forward port of Enterprise commit 694771: Implement "new Event on double click" in \
Gantt view. Disable some code that crashed the Gantt view right at startup due to a \
stack overflow. Needs further investigation.

 M  +6 -0      kdgantt1/KDGanttView.cpp  
 M  +3 -0      kdgantt1/KDGanttView.h  
 M  +7 -0      kdgantt1/KDGanttViewSubwidgets.cpp  
 M  +20 -5     korganizer/kotimelineview.cpp  
 M  +2 -1      korganizer/kotimelineview.h  


--- trunk/KDE/kdepim/kdgantt1/KDGanttView.cpp #694903:694904
@@ -850,6 +850,12 @@
 }
 
 
+void KDGanttView::emptySpaceDoubleClicked( QMouseEvent * e )
+{
+    emit dateTimeDoubleClicked( getDateTimeForCoordX( e->x(), false ) );
+}
+
+
 /*
   Implements a casted pass-through of the currentChanged() signal.
 */
--- trunk/KDE/kdepim/kdgantt1/KDGanttView.h #694903:694904
@@ -493,6 +493,7 @@
     void taskLinkDoubleClicked( KDGanttViewTaskLink* );
 
     void dropped ( QDropEvent * e, KDGanttViewItem* droppedItem, KDGanttViewItem* \
itemBelowMouse); +    void dateTimeDoubleClicked ( const QDateTime& );
     void addOneTickRight();
     void addOneTickLeft();
 
@@ -549,6 +550,8 @@
     bool loadXML( const QDomDocument& doc );
     QDomDocument saveXML( bool withPI = true ) const;
 
+    void emptySpaceDoubleClicked( QMouseEvent* e );
+
     static QString scaleToString( Scale scale );
     static QString yearFormatToString( YearFormat format );
     static QString hourFormatToString( HourFormat format );
--- trunk/KDE/kdepim/kdgantt1/KDGanttViewSubwidgets.cpp #694903:694904
@@ -4195,6 +4195,13 @@
 void KDGanttCanvasView::contentsMouseDoubleClickEvent ( QMouseEvent * e )
 {
     QCanvasItemList il = canvas() ->collisions ( e->pos() );
+
+    if ( il.isEmpty() && e->button() == Qt::LeftButton ) {
+        //not directly sending a signal here (encapsulation and whatnot)
+        mySignalSender->emptySpaceDoubleClicked( e );
+        return;
+    }
+
     QCanvasItemList::Iterator it;
     for ( it = il.begin(); it != il.end(); ++it ) {
         switch ( e->button() ) {
--- trunk/KDE/kdepim/korganizer/kotimelineview.cpp #694903:694904
@@ -70,6 +70,8 @@
              SLOT(itemMoved(KDGanttViewItem*)) );
     connect( mGantt, SIGNAL(rescaling(KDGanttView::Scale)),
              SLOT(overscale(KDGanttView::Scale)) );
+    connect( mGantt, SIGNAL( dateTimeDoubleClicked( const QDateTime& ) ),
+             SLOT( newEventWithHint( const QDateTime& ) ) );
 }
 
 KOTimelineView::~KOTimelineView()
@@ -100,7 +102,7 @@
 {
   mStartDate = start;
   mEndDate = end;
-  mRmbDate = QDateTime();
+  mHintDate = KDateTime();
   mGantt->setHorizonStart( QDateTime(start) );
   mGantt->setHorizonEnd( QDateTime(end.addDays(1)) );
   mGantt->setMinorScaleCount( 1 );
@@ -207,7 +209,7 @@
 
 void KOTimelineView::itemRightClicked( KDGanttViewItem *item )
 {
-  mRmbDate = mGantt->getDateTimeForCoordX( QCursor::pos().x(), true );
+  mHintDate = KDateTime( mGantt->getDateTimeForCoordX( QCursor::pos().x(), true ) );
   TimelineSubItem *tlitem = dynamic_cast<TimelineSubItem*>( item );
   if ( !tlitem ) {
     showNewEventPopup();
@@ -220,12 +222,19 @@
 
 bool KOTimelineView::eventDurationHint(KDateTime & startDt, KDateTime & endDt, bool \
& allDay)  {
-  startDt = KDateTime(mRmbDate);
-  endDt = KDateTime(mRmbDate.addSecs( 2 * 60 * 60 ));
+  startDt = KDateTime(mHintDate);
+  endDt = KDateTime(mHintDate.addSecs( 2 * 60 * 60 ));
   allDay = false;
-  return mRmbDate.isValid();
+  return mHintDate.isValid();
 }
 
+//slot
+void KOTimelineView::newEventWithHint( const QDateTime& dt )
+{
+  mHintDate = KDateTime(dt);
+  emit newEventSignal( dt );
+}
+
 TimelineItem * KOTimelineView::calendarItemForIncidence(KCal::Incidence * incidence)
 {
   CalendarResources *calres = dynamic_cast<CalendarResources*>( calendar() );
@@ -335,10 +344,16 @@
 
 void KOTimelineView::overscale(KDGanttView::Scale scale)
 {
+  /* Disabled, looks *really* bogus:
+     this triggers and endless rescaling loop; we want to set
+     a fixed scale, the Gantt view doesn't like it and rescales
+     (emitting a rescaling signal that leads here) and so on...
   Q_UNUSED( scale );
+  //set a relative zoom factor of 1 (?!)
   mGantt->setZoomFactor( 1, false );
   mGantt->setScale( KDGanttView::Hour );
   mGantt->setMinorScaleCount( 12 );
+  */
 }
 
 #include "kotimelineview.moc"
--- trunk/KDE/kdepim/korganizer/kotimelineview.h #694903:694904
@@ -71,13 +71,14 @@
     void itemRightClicked( KDGanttViewItem *item );
     void itemMoved( KDGanttViewItem *item );
     void overscale( KDGanttView::Scale scale );
+    void newEventWithHint( const QDateTime & );
 
   private:
     KDGanttView* mGantt;
     QMap<KCal::ResourceCalendar*, QMap<QString, KOrg::TimelineItem*> > \
mCalendarItemMap;  KOEventPopupMenu *mEventPopup;
     QDate mStartDate, mEndDate;
-    QDateTime mRmbDate;
+    KDateTime mHintDate;
 };
 
 #endif


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic