Re: [PATCH] datebook: show events on all days in month view

Paul Eggleton <[email protected]> Fri, 5 Jan 2007 18:40:23 +1300
Newsgroups gmane.comp.handhelds.opie.devel
Message-ID <[email protected]>
On Friday 29 December 2006 21:43, Paul Eggleton wrote:
> Oops, actually the change to "void ODateBookMonth::redraw()" for the above
> is not really correct. Please don't apply that part of the patch.

Re-based patch with style changes and above change removed is attached.

Cheers,
Paul

_______________________________________________

http://opie.handhelds.org/cgi-bin/moin.cgi/DeveloperWikiIndex

Opie-devel mailing list
[email protected]
https://handhelds.org/mailman/listinfo/opie-devel
datebook_full_event_table2.patch (text/x-diff, 3.8 KB)
Index: core/pim/datebook/modules/monthview/odatebookmonth.cpp
===================================================================
RCS file: /cvs/opie/core/pim/datebook/modules/monthview/odatebookmonth.cpp,v
retrieving revision 1.2
diff -u -B -b -r1.2 odatebookmonth.cpp
--- core/pim/datebook/modules/monthview/odatebookmonth.cpp	15 Jun 2005 19:45:55 -0000	1.2
+++ core/pim/datebook/modules/monthview/odatebookmonth.cpp	5 Jan 2007 05:38:32 -0000
@@ -177,6 +177,22 @@
     col = effective_day % 7;
 }
 
+bool ODateBookMonthTable::findDate( QDate date, int &row, int &col )
+{
+    int rows = numRows();
+    int cols = numCols();
+    for(int r=0;r<rows;r++) {
+        for(int c=0;c<cols;c++) {
+            if(getDateAt(r, c) == date) {
+                row = r;
+                col = c;
+                return true;
+            }
+        }
+    }
+    return false;
+}
+
 void ODateBookMonthTable::dayClicked( int row, int col )
 {
     changeDaySelection( row, col );
@@ -190,31 +206,42 @@
 
 void ODateBookMonthTable::changeDaySelection( int row, int col )
 {
+    QDate selDate = getDateAt( row, col );
+    selYear = selDate.year();
+    selMonth = selDate.month();
+    selDay = selDate.day();
+}
+
+QDate ODateBookMonthTable::getDateAt( int row, int col ) 
+{
+    int itemMonth, itemYear;
+    
     DayItemMonth *i = (DayItemMonth*)item( row, col );
     if ( !i )
-    return;
+        return QDate(1900, 1, 1);
     switch ( i->type() ) {
     case Calendar::Day::ThisMonth:
-        selMonth = month;
+            itemMonth = month;
         break;
     case Calendar::Day::PrevMonth:
-        selMonth = month-1;
+            itemMonth = month-1;
         break;
     default:
-        selMonth = month+1;
+            itemMonth = month+1;
     }
 
-    selYear = year;
-    if ( selMonth <= 0 ) {
-    selMonth = 12;
-    selYear--;
-    } else if ( selMonth > 12 ) {
-    selMonth = 1;
-    selYear++;
+    itemYear = year;
+    if ( itemMonth <= 0 ) {
+        itemMonth = 12;
+        itemYear--;
+    }
+    else if ( itemMonth > 12 ) {
+        itemMonth = 1;
+        itemYear++;
     }
-    selDay = i->day();
-}
 
+    return QDate( itemYear, itemMonth, i->day());
+}
 
 void ODateBookMonthTable::viewportMouseReleaseEvent( QMouseEvent * )
 {
@@ -226,10 +253,9 @@
     if ( !db )
     return;
 
-    QDate dtStart( year, month, 1 );
-    d->mMonthEvents = db->getEffectiveEvents( dtStart,
-                          QDate( year, month,
-                             dtStart.daysInMonth() ) );
+    QDate dtStart = getDateAt(0,0);
+    QDate dtEnd = getDateAt(numRows()-1, numCols()-1);
+    d->mMonthEvents = db->getEffectiveEvents( dtStart, dtEnd);
     QValueListIterator<EffectiveEvent> it = d->mMonthEvents.begin();
     // now that the events are sorted, basically go through the list, make
     // a small list for every day and set it for each item...
@@ -245,7 +271,7 @@
         ++it;
     }
     int row, col;
-    findDay( e.date().day(), row, col );
+        findDate( e.date(), row, col );
     DayItemMonth* w = static_cast<DayItemMonth*>( item( row, col ) );
     w->setEvents( dayEvent );
     updateCell( row, col );
Index: core/pim/datebook/modules/monthview/odatebookmonth.h
===================================================================
RCS file: /cvs/opie/core/pim/datebook/modules/monthview/odatebookmonth.h,v
retrieving revision 1.1
diff -u -B -b -r1.1 odatebookmonth.h
--- core/pim/datebook/modules/monthview/odatebookmonth.h	20 Mar 2005 10:51:55 -0000	1.1
+++ core/pim/datebook/modules/monthview/odatebookmonth.h	5 Jan 2007 05:38:32 -0000
@@ -81,8 +81,10 @@
     void setupLabels();
 
     void findDay( int day, int &row, int &col );
+    bool findDate( QDate date, int &row, int &col );
     void getEvents();
     void changeDaySelection( int row, int col );
+    QDate getDateAt( int row, int col );
 
     int year, month, day;
     int selYear, selMonth, selDay;