#include <QPainter>
#include "Meeting.h"
-const QColor ScheduleWidget::sFreeBackground = QColor( 192, 238, 189 );
+const QColor ScheduleWidget::sFreeBackground = QColor( Qt::white );
const QColor ScheduleWidget::sBusyBackground = QColor( 238, 147, 17 );
+const QColor ScheduleWidget::sBusyBackgroundStart = QColor( 254, 193, 104 );
const QColor ScheduleWidget::sHeaderBackground = QColor( Qt::white );
const QColor ScheduleWidget::sDayHighlightColor = QColor( 255, 235, 160 );
-const QColor ScheduleWidget::sTimeHighlightColor = QColor( Qt::blue );
+const QColor ScheduleWidget::sTimeHighlightColor = QColor( Qt::black );
const QColor ScheduleWidget::sMainGridColor = QColor( 140, 140, 140 );
const QColor ScheduleWidget::sHalfGridColor = QColor( 195, 195, 195 );
const QColor ScheduleWidget::sFrameColor = QColor( Qt::black );
void ScheduleTableWidget::paintEvent( QPaintEvent* aEvent )
{
+ qDebug() << "ScheduleTableWidget::paintEvent()";
QTableWidget::paintEvent( aEvent );
ScheduleWidget* schedule = static_cast<ScheduleWidget*>( parent() );
}
// draw meetings
- QBrush brush( ScheduleWidget::sBusyBackground );
- painter.setBrush( brush );
painter.setRenderHint( QPainter::Antialiasing );
painter.setPen( ScheduleWidget::sFrameColor );
populateMeetingList();
{
for ( int i = 0; i < iMeetingsByDay[day].size(); ++i )
{
+ QLinearGradient linearGrad( QPoint(iMeetingsByDay[day][i].rect.x(),iMeetingsByDay[day][i].rect.y()) , QPoint(iMeetingsByDay[day][i].rect.x(),iMeetingsByDay[day][i].rect.bottom()) );
+ linearGrad.setColorAt(0, ScheduleWidget::sBusyBackgroundStart);
+ linearGrad.setColorAt(1, ScheduleWidget::sBusyBackground);
+ painter.setBrush(linearGrad);
+
painter.drawRoundRect( iMeetingsByDay[day][i].rect, 20, 20 );
}
}
void ScheduleTableWidget::populateMeetingList()
{
+ qDebug() << "ScheduleTableWidget::populateMeetingList()";
ScheduleWidget* schedule = static_cast<ScheduleWidget*>( parent() );
for ( int i = 0; i < schedule->weekLengthAsDays(); ++i )
{
Meeting* meeting = schedule->iMeetings[i];
int day = meeting->startsAt().date().dayOfWeek() - 1;
+
if (( meeting->startsAt().date().weekNumber() == schedule->iShownDate.weekNumber() ) &&
( day < schedule->weekLengthAsDays() ) &&
( meeting->endsAt().time() > QTime( schedule->iStartHour, 0 ) ) &&
ScheduleWidget::~ScheduleWidget()
{
- clear();
- delete iScheduleTable;
-}
-
-int ScheduleWidget::shownWeek()
-{
- return iShownDate.weekNumber();
-}
-
-QDate ScheduleWidget::beginningOfShownWeek()
-{
- return iShownDate.addDays( -1 * iShownDate.dayOfWeek() + 1 );
-}
-
-Meeting* ScheduleWidget::currentMeeting()
-{
- return meeting( iCurrentDateTime );
-}
-
-Meeting* ScheduleWidget::meeting( QDateTime aAt )
-{
- for ( int i = 0; i < iMeetings.count(); ++i )
+ if ( iScheduleTable )
{
- if ( iMeetings[i]->startsAt() <= aAt && iMeetings[i]->endsAt() >= aAt )
- {
- return iMeetings[i];
- }
- }
-
- return 0;
-}
-
-void ScheduleWidget::clear()
-{
- qDebug() << "ScheduleWidget::clear";
- int i = 0;
- while ( !iMeetings.isEmpty() )
- {
- i++;
- iMeetings.removeFirst();
+ delete iScheduleTable;
+ iScheduleTable = 0;
}
- qDebug() << "Deleted " << i << " items";
}
-void ScheduleWidget::clear( QDateTime aFrom, QDateTime aUntil )
+QDate ScheduleWidget::beginningOfShownWeek()
{
- for ( int i = 0; i < iMeetings.count(); ++i )
- {
- if (( iMeetings[i]->startsAt() >= aFrom && iMeetings[i]->startsAt() <= aUntil ) ||
- ( iMeetings[i]->startsAt() <= aFrom && iMeetings[i]->endsAt() >= aFrom ) )
- {
- iMeetings.removeAt( i );
- --i;
- }
- }
+ return iShownDate.addDays( -1 * iShownDate.dayOfWeek() + 1 );
}
void ScheduleWidget::refresh()
{
+ qDebug() << "ScheduleWidget::refresh()";
+
for ( int i = 0; i < iScheduleTable->columnCount(); ++i )
{
QTableWidgetItem* item = iScheduleTable->item( 0, i );
item->setFont( font );
}
}
-
+
// force repaint of the main area
iScheduleTable->setSpan( 1, 1, iNumberOfHours, weekLengthAsDays() );
iLastRefresh = iCurrentDateTime.time();
}
+void ScheduleWidget::refreshMeetings( const QList<Meeting*> &aMeetings )
+{
+ iMeetings = aMeetings;
+ qDebug() << "Count: " << iMeetings.size();
+ refresh();
+}
+
void ScheduleWidget::setCurrentDateTime( QDateTime aCurrentDateTime )
{
- Meeting* previous = meeting( iCurrentDateTime );
- Meeting* current = meeting( aCurrentDateTime );
iCurrentDateTime = aCurrentDateTime;
if ( iLastRefresh.secsTo( iCurrentDateTime.time() ) > sRefreshIntervalInSeconds )
// enough time has elapsed since last refresh
refresh();
}
-
- if ( previous != current )
- {
- emit currentMeetingChanged( current );
- }
}
-void ScheduleWidget::insertMeeting( Meeting *aMeeting )
-{
- Meeting* previous = meeting( iCurrentDateTime );
- iMeetings.append( aMeeting );
- Meeting* current = meeting( iCurrentDateTime );
-
- qDebug() << "Inserted" << aMeeting->toString();
-
- refresh();
-
- if ( previous != current )
- {
- emit currentMeetingChanged( current );
- }
-}
-
-void ScheduleWidget::removeMeeting( Meeting *aMeeting )
-{
- Meeting* previous = meeting( iCurrentDateTime );
-
- qDebug() << "Delete" << aMeeting->toString();
- for ( int i = 0; i < iMeetings.count(); ++i )
- {
- if ( iMeetings[i]->equals( *(aMeeting) ) )
- {
- iMeetings.removeAt( i );
-
- refresh();
-
- Meeting* current = meeting( iCurrentDateTime );
- if ( previous != current )
- emit currentMeetingChanged( current );
-
- return;
- }
- }
-}
-
-//void ScheduleWidget::updateMeeting( Meeting *aMeeting )
-//{
-//
-//}
-
void ScheduleWidget::showPreviousWeek()
{
iShownDate = iShownDate.addDays( -7 );