[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: koffice/kplato/libs/models
From: Dag Andersen <danders () get2net ! dk>
Date: 2010-03-25 9:18:56
Message-ID: 20100325091856.ED60BAC876 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1107297 by danders:
Calendar: Show values defined in parent calendars (in italic)
to make it clearer that sub-calendars inherit from parents.
BUG:231902
M +94 -29 kptcalendarmodel.cpp
M +3 -0 kptcalendarmodel.h
--- trunk/koffice/kplato/libs/models/kptcalendarmodel.cpp #1107296:1107297
@@ -821,15 +821,51 @@
return result;
}
CalendarDay *d = day( index );
- if ( d ) {
- switch ( d->state() ) {
- case CalendarDay::Working:
- result = workDuration( d, role );
- break;
- default:
- result = dayState( d, role );
- break;
+ if ( d == 0 ) {
+ return QVariant();
+ }
+ switch ( role ) {
+ case Qt::DisplayRole: {
+ switch ( d->state() ) {
+ case CalendarDay::Working:
+ result = workDuration( d, role );
+ break;
+ case CalendarDay::NonWorking:
+ result = dayState( d, role );
+ break;
+ default: {
+ // Return parent value (if any)
+ for ( Calendar *c = m_calendar->parentCal(); c != 0; c = \
c->parentCal() ) { + d = c->weekday( index.column() + 1 );
+ Q_ASSERT( d );
+ if ( d->state() == CalendarDay::Working ) {
+ return workDuration( d, role );
+ }
+ if ( d->state() == CalendarDay::NonWorking ) {
+ return dayState( d, role );
+ }
+ }
+ break;
+ }
+ }
+ break;
}
+ case Qt::FontRole: {
+ if ( d->state() != CalendarDay::Undefined ) {
+ return QVariant();
+ }
+ // If defined in parent, return italic
+ for ( Calendar *c = m_calendar->parentCal(); c != 0; c = c->parentCal() \
) { + d = c->weekday( index.column() + 1 );
+ Q_ASSERT( d );
+ if ( d->state() != CalendarDay::Undefined ) {
+ QFont f;
+ f.setItalic( true );
+ return f;
+ }
+ }
+ break;
+ }
}
if ( result.isValid() ) {
if ( role == Qt::DisplayRole && result.type() == QVariant::String && \
result.toString().isEmpty()) { @@ -912,6 +948,47 @@
emit reset();
}
+QVariant DateTableDataModel::data( const Calendar &cal, const QDate &date, int role \
) const +{
+ switch ( role ) {
+ case Qt::DisplayRole: {
+ CalendarDay *day = cal.findDay( date );
+ if ( day == 0 || day->state() == CalendarDay::Undefined ) {
+ if ( cal.parentCal() ) {
+ return data( *( cal.parentCal() ), date, role );
+ }
+ return "";
+ }
+ if ( day->state() == CalendarDay::NonWorking ) {
+ return i18nc( "NonWorking", "NW" );
+ }
+ double v;
+ v = day->workDuration().toDouble( Duration::Unit_h );
+ return KGlobal::locale()->formatNumber( v, 1 );
+ }
+ case Qt::TextAlignmentRole:
+ return (uint)( Qt::AlignHCenter | Qt::AlignBottom );
+ case Qt::FontRole: {
+ CalendarDay *day = cal.findDay( date );
+ if ( day && day->state() != CalendarDay::Undefined ) {
+ if ( &cal != m_calendar ) {
+ QFont f;
+ f.setItalic( true );
+ return f;
+ }
+ return QVariant();
+ }
+ if ( cal.parentCal() ) {
+ return data( *( cal.parentCal() ), date, role );
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ return QVariant();
+}
+
QVariant DateTableDataModel::data( const QDate &date, int role, int dataType ) const
{
//kDebug()<<date<<role<<dataType;
@@ -952,28 +1029,10 @@
break;
}
case 0: {
- switch ( role ) {
- case Qt::DisplayRole: {
- if ( m_calendar == 0 ) {
- return "";
- }
- CalendarDay *day = m_calendar->findDay( date );
- if ( day == 0 || day->state() == CalendarDay::Undefined ) {
- return "";
- }
- if ( day->state() == CalendarDay::NonWorking ) {
- return i18nc( "NonWorking", "NW" );
- }
- double v;
- v = day->workDuration().toDouble( Duration::Unit_h );
- return KGlobal::locale()->formatNumber( v, 1 );
- }
- case Qt::TextAlignmentRole:
- return (uint)( Qt::AlignHCenter | Qt::AlignBottom );
- default:
- break;
+ if ( m_calendar == 0 ) {
+ return "";
}
- break;
+ return data( *m_calendar, date, role );
}
default:
break;
@@ -1017,6 +1076,12 @@
QString text = model->data( date, Qt::DisplayRole, 0 ).toString();
int align = model->data( date, Qt::TextAlignmentRole, 0 ).toInt();
+ QFont f = option.font;
+ QVariant v = model->data( date, Qt::FontRole, 0 );
+ if ( v.isValid() ) {
+ f = v.value<QFont>();
+ }
+ painter->setFont( f );
painter->setPen( option.palette.color( QPalette::Text ) );
painter->drawText(rect, align, text, &r);
--- trunk/koffice/kplato/libs/models/kptcalendarmodel.h #1107296:1107297
@@ -212,6 +212,9 @@
void reset();
void dataChanged( const QDate &start, const QDate &end );
+protected:
+ QVariant data( const Calendar &cal, const QDate &date, int role ) const;
+
private:
Calendar *m_calendar;
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic