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;