User interface update
[qtmeetings] / src / UserInterface / Components / ScheduleWidget.cpp
index 5318df7..65ca353 100644 (file)
@@ -9,11 +9,12 @@
 #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 );
@@ -38,6 +39,7 @@ ScheduleTableWidget::~ScheduleTableWidget()
 
 void ScheduleTableWidget::paintEvent( QPaintEvent* aEvent )
 {
+       qDebug() << "ScheduleTableWidget::paintEvent()";
        QTableWidget::paintEvent( aEvent );
 
        ScheduleWidget* schedule = static_cast<ScheduleWidget*>( parent() );
@@ -93,8 +95,6 @@ void ScheduleTableWidget::paintEvent( QPaintEvent* aEvent )
        }
 
        // draw meetings
-       QBrush brush( ScheduleWidget::sBusyBackground );
-       painter.setBrush( brush );
        painter.setRenderHint( QPainter::Antialiasing );
        painter.setPen( ScheduleWidget::sFrameColor );
        populateMeetingList();
@@ -103,6 +103,11 @@ void ScheduleTableWidget::paintEvent( QPaintEvent* aEvent )
        {
                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 );
                }
        }
@@ -156,6 +161,7 @@ void ScheduleTableWidget::mousePressEvent( QMouseEvent* aEvent )
 
 void ScheduleTableWidget::populateMeetingList()
 {
+       qDebug() << "ScheduleTableWidget::populateMeetingList()";
        ScheduleWidget* schedule = static_cast<ScheduleWidget*>( parent() );
 
        for ( int i = 0; i < schedule->weekLengthAsDays(); ++i )
@@ -166,6 +172,7 @@ void ScheduleTableWidget::populateMeetingList()
        {
                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 ) ) &&
@@ -343,65 +350,22 @@ ScheduleWidget::ScheduleWidget( QDateTime aCurrentDateTime, DisplaySettings *aSe
 
 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 );
@@ -426,17 +390,22 @@ void ScheduleWidget::refresh()
                        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 )
@@ -444,56 +413,8 @@ void ScheduleWidget::setCurrentDateTime( QDateTime aCurrentDateTime )
                // 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 );