00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "kpttaskappointmentsview.h"
00021
00022 #include "kptappointment.h"
00023 #include "kpttask.h"
00024
00025 #include <QApplication>
00026 #include <QList>
00027
00028 #include <kcalendarsystem.h>
00029 #include <kglobal.h>
00030 #include <klocale.h>
00031
00032 namespace KPlato
00033 {
00034
00035 TaskAppointmentsView::ResourceItem::ResourceItem( Resource *r, QTreeWidget *parent, bool highlight )
00036 : DoubleListViewBase::MasterListItem( parent, r->name(), highlight ),
00037 resource( r )
00038 {
00039
00040 setFormat( 0, 'f', 1 );
00041
00042 }
00043 TaskAppointmentsView::ResourceItem::ResourceItem( Resource *r, QTreeWidgetItem *p, bool highlight )
00044 : DoubleListViewBase::MasterListItem( p, r->name(), highlight ),
00045 resource( r )
00046 {
00047
00048 setFormat( 0, 'f', 1 );
00049
00050 }
00051
00052 TaskAppointmentsView::ResourceItem::ResourceItem( QString text, QTreeWidgetItem *parent, bool highlight )
00053 : DoubleListViewBase::MasterListItem( parent, text, highlight ),
00054 resource( 0 )
00055 {
00056
00057 setFormat( 0, 'f', 1 );
00058
00059 }
00060
00061
00062 TaskAppointmentsView::TaskAppointmentsView( QWidget *parent )
00063 : DoubleListViewBase( parent ),
00064 m_task( 0 )
00065 {
00066
00067 setNameHeader( i18n( "Resource" ) );
00068
00069
00070 QList<int> list = sizes();
00071 int tot = list[ 0 ] + list[ 1 ];
00072 list[ 0 ] = qMin( 35, tot );
00073 list[ 1 ] = tot - list[ 0 ];
00074 setSizes( list );
00075 }
00076
00077 void TaskAppointmentsView::setZoom( double zoom )
00078 {
00079 Q_UNUSED( zoom );
00080 }
00081
00082
00083 void TaskAppointmentsView::draw( Task *task )
00084 {
00085 m_task = task;
00086 draw();
00087 }
00088
00089 void TaskAppointmentsView::draw()
00090 {
00091
00092 clearLists();
00093 if ( !m_task )
00094 return ;
00095
00096 QList<Appointment*> lst = m_task->appointments();
00097 QListIterator<Appointment*> it( lst );
00098 while ( it.hasNext() ) {
00099 Appointment * a = it.next();
00100 Resource *r = a->resource() ->resource();
00101 TaskAppointmentsView::ResourceItem *item = new TaskAppointmentsView::ResourceItem( r, masterListView() );
00102
00103 item->effortMap = a->plannedPrDay( m_task->startTime().date(), m_task->endTime().date() );
00104 }
00105 slotUpdate();
00106 }
00107
00108 void TaskAppointmentsView::slotUpdate()
00109 {
00110
00111 if ( !m_task )
00112 return ;
00113 QApplication::setOverrideCursor( Qt::WaitCursor );
00114 createSlaveItems();
00115 KLocale *locale = KGlobal::locale();
00116 const KCalendarSystem *cal = locale->calendar();
00117
00118
00119 QDate start = m_task->startTime().date();
00120 QDate end = m_task->endTime().date();
00121
00122 QStringList df;
00123 for ( QDate dt = start; dt <= end; dt = cal->addDays( dt, 1 ) ) {
00124 df << locale->formatDate( dt, true );
00125 }
00126 setSlaveLabels( df );
00127 foreach ( QTreeWidgetItem * i, masterItems() ) {
00128 TaskAppointmentsView::ResourceItem * item = static_cast<TaskAppointmentsView::ResourceItem*>( i );
00129 if ( !item ) {
00130 continue;
00131 }
00132 double eff;
00133 int col = 0;
00134 for ( QDate d = start; d <= end; d = cal->addDays( d, 1 ), ++col ) {
00135 eff = ( double ) ( item->effortMap.effortOnDate( d ).minutes() ) / 60.0;
00136 item->setSlaveItem( col, eff );
00137 item->addToTotal( eff );
00138 }
00139 }
00140 calculate();
00141 QApplication::restoreOverrideCursor();
00142 }
00143
00144
00145 void TaskAppointmentsView::print( KPrinter & )
00146 {
00147 kDebug() << k_funcinfo << endl;
00148 }
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175 void TaskAppointmentsView::clear()
00176 {
00177 clearLists();
00178 }
00179
00180 void TaskAppointmentsView::createSlaveItems()
00181 {
00182 DoubleListViewBase::createSlaveItems();
00183 setSlaveFormat( 0, 'f', 1 );
00184 }
00185
00186 }
00187
00188 #include "kpttaskappointmentsview.moc"