summarywidget.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <qlabel.h>
00025 #include <qlayout.h>
00026
00027 #include <kdialog.h>
00028 #include <kglobal.h>
00029 #include <kiconloader.h>
00030 #include <klocale.h>
00031 #include <kparts/part.h>
00032 #include <kstandarddirs.h>
00033 #include <kurllabel.h>
00034
00035 #include <dcopref.h>
00036
00037 #include <libkcal/event.h>
00038 #include <libkcal/resourcecalendar.h>
00039 #include <libkcal/resourcelocal.h>
00040 #include <libkcal/todo.h>
00041
00042 #include "core.h"
00043 #include "plugin.h"
00044
00045 #include "summarywidget.h"
00046
00047 SummaryWidget::SummaryWidget( Kontact::Plugin* plugin, QWidget *parent,
00048 const char *name )
00049 : Kontact::Summary( parent, name ), mPlugin(plugin), mLayout( 0 )
00050 {
00051 mMainLayout = new QVBoxLayout( this, 3, 3 );
00052
00053 QPixmap icon = KGlobal::iconLoader()->loadIcon( "korganizer",
00054 KIcon::Desktop, KIcon::SizeMedium );
00055 QWidget *header = createHeader( this, icon, i18n( "Appointments" ) );
00056 mMainLayout->addWidget(header);
00057
00058 KConfig config( "korganizerrc" );
00059 mCalendar = new KCal::CalendarResources( config.readEntry( "TimeZoneId" ) );
00060 KCal::CalendarResourceManager *manager = mCalendar->resourceManager();
00061 if ( manager->isEmpty() ) {
00062 config.setGroup("General");
00063 QString fileName = config.readPathEntry( "Active Calendar" );
00064
00065 QString resourceName;
00066 if ( fileName.isEmpty() ) {
00067 fileName = locateLocal( "data", "korganizer/std.ics" );
00068 resourceName = i18n("Default KOrganizer resource");
00069 } else {
00070 resourceName = i18n("Active Calendar");
00071 }
00072
00073 KCal::ResourceCalendar *defaultResource =
00074 new KCal::ResourceLocal( fileName );
00075
00076 defaultResource->setResourceName( resourceName );
00077
00078 manager->add( defaultResource );
00079 manager->setStandardResource( defaultResource );
00080 }
00081
00082 connect( mCalendar, SIGNAL( calendarChanged() ), SLOT( updateView() ) );
00083
00084 updateView();
00085 show();
00086 }
00087
00088 void SummaryWidget::updateView()
00089 {
00090
00091 delete mLayout;
00092
00093 mLabels.setAutoDelete( true );
00094 mLabels.clear();
00095 mLabels.setAutoDelete( false );
00096
00097 mLayout = new QGridLayout( 7, 5, 3 );
00098 mMainLayout->addLayout( mLayout );
00099 mLayout->setRowStretch( 6, 1 );
00100
00101 KIconLoader loader( "korganizer" );
00102
00103 QLabel *label = 0;
00104 int counter = 0;
00105 KCal::Event::List events = mCalendar->events( QDate::currentDate(), true );
00106 if ( events.count() > 0 ) {
00107 QPixmap pm = loader.loadIcon( "appointment", KIcon::Small );
00108
00109 KCal::Event::List::ConstIterator it2;
00110 for( it2 = events.begin(); it2 != events.end() && counter < 5; ++it2 ) {
00111 KCal::Event *ev = *it2;
00112 if ( !ev->recurrence()->doesRecur() || ev->recursOn( QDate::currentDate() ) ) {
00113 if ( !ev->doesFloat() ) {
00114 label = new QLabel( this );
00115 label->setPixmap( pm );
00116 label->setMaximumSize( label->sizeHint() );
00117 mLayout->addWidget( label, counter, 0 );
00118 mLabels.append( label );
00119
00120 QString date = ev->dtStartTimeStr() + " - " + ev->dtEndTimeStr();
00121 label = new QLabel( date, this );
00122 mLayout->addWidget( label, counter, 1 );
00123 mLabels.append( label );
00124
00125 KURLLabel *urlLabel = new KURLLabel( ev->uid(), ev->summary(), this );
00126 mLayout->addWidget( urlLabel, counter, 2 );
00127 mLabels.append( urlLabel );
00128
00129 connect( urlLabel, SIGNAL( leftClickedURL( const QString& ) ),
00130 this, SLOT( selectEvent( const QString& ) ) );
00131
00132 counter++;
00133 }
00134 }
00135 }
00136 }
00137 else {
00138 QLabel *noEvents = new QLabel( i18n("No appointments pending"), this );
00139 noEvents->setAlignment( AlignRight );
00140 mLayout->addWidget( noEvents, 0, 2 );
00141 mLabels.append(noEvents);
00142 }
00143
00144 KCal::Todo::List todos = mCalendar->todos();
00145 if ( todos.count() > 0 ) {
00146 QPixmap pm = loader.loadIcon( "todo", KIcon::Small );
00147 KCal::Todo::List::ConstIterator it;
00148 for( it = todos.begin(); it != todos.end(); ++it ) {
00149 KCal::Todo *todo = *it;
00150 if ( todo->hasDueDate() && todo->dtDue().date() == QDate::currentDate() && !todo->isCompleted() ) {
00151 label = new QLabel( this );
00152 label->setPixmap( pm );
00153 mLayout->addWidget( label, counter, 0 );
00154 mLabels.append( label );
00155
00156 KURLLabel *urlLabel = new KURLLabel( todo->uid(), todo->summary(), this );
00157 mLayout->addWidget( urlLabel, counter, 2 );
00158 mLabels.append( urlLabel );
00159
00160 connect( urlLabel, SIGNAL( leftClickedURL( const QString& ) ),
00161 this, SLOT( selectEvent( const QString& ) ) );
00162
00163 counter++;
00164 }
00165 }
00166 }
00167
00168 }
00169
00170 void SummaryWidget::selectEvent( const QString & )
00171 {
00172 if ( !mPlugin->isRunningStandalone() )
00173 mPlugin->core()->selectPlugin( mPlugin );
00174 else
00175 mPlugin->bringToForeground();
00176
00177
00178
00179
00180
00181 }
00182
00183 #include "summarywidget.moc"
This file is part of the documentation for kontact Library Version 3.2.2.