datenavigatorcontainer.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
00025 #include <kdebug.h>
00026 #include <klocale.h>
00027
00028 #include "koglobals.h"
00029 #include "navigatorbar.h"
00030 #include "kdatenavigator.h"
00031
00032 #include <kcalendarsystem.h>
00033
00034 #include "datenavigatorcontainer.h"
00035
00036 DateNavigatorContainer::DateNavigatorContainer( QWidget *parent,
00037 const char *name )
00038 : QWidget( parent, name ), mCalendar( 0 ),
00039 mHorizontalCount( 1 ), mVerticalCount( 1 )
00040 {
00041 mExtraViews.setAutoDelete( true );
00042
00043 mNavigatorView = new KDateNavigator( this, name );
00044
00045 connectNavigatorView( mNavigatorView );
00046 }
00047
00048 DateNavigatorContainer::~DateNavigatorContainer()
00049 {
00050 }
00051
00052 void DateNavigatorContainer::connectNavigatorView( KDateNavigator *v )
00053 {
00054 connect( v, SIGNAL( datesSelected( const KCal::DateList & ) ),
00055 SIGNAL( datesSelected( const KCal::DateList & ) ) );
00056 connect( v, SIGNAL( incidenceDropped( Incidence * ) ),
00057 SIGNAL( incidenceDropped( Incidence * ) ) );
00058 connect( v, SIGNAL( incidenceDroppedMove( Incidence *, Incidence * ) ),
00059 SIGNAL( incidenceDroppedMove( Incidence *, Incidence * ) ) );
00060 connect( v, SIGNAL( weekClicked( const QDate & ) ),
00061 SIGNAL( weekClicked( const QDate & ) ) );
00062
00063 connect( v, SIGNAL( goPrevious() ), SIGNAL( goPrevious() ) );
00064 connect( v, SIGNAL( goNext() ), SIGNAL( goNext() ) );
00065
00066 connect( v, SIGNAL( goNextMonth() ), SIGNAL( goNextMonth() ) );
00067 connect( v, SIGNAL( goPrevMonth() ), SIGNAL( goPrevMonth() ) );
00068 connect( v, SIGNAL( goNextYear() ), SIGNAL( goNextYear() ) );
00069 connect( v, SIGNAL( goPrevYear() ), SIGNAL( goPrevYear() ) );
00070
00071 connect( v, SIGNAL( goMonth( int ) ), SIGNAL( goMonth( int ) ) );
00072 }
00073
00074 void DateNavigatorContainer::setCalendar( Calendar *cal )
00075 {
00076 mCalendar = cal;
00077 mNavigatorView->setCalendar( cal );
00078 KDateNavigator *n;
00079 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
00080 n->setCalendar( cal );
00081 }
00082 }
00083
00084 void DateNavigatorContainer::updateDayMatrix()
00085 {
00086 mNavigatorView->updateDayMatrix();
00087 KDateNavigator *n;
00088 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
00089 n->updateDayMatrix();
00090 }
00091 }
00092
00093 void DateNavigatorContainer::updateToday()
00094 {
00095 mNavigatorView->updateToday();
00096 KDateNavigator *n;
00097 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
00098 n->updateToday();
00099 }
00100 }
00101
00102 void DateNavigatorContainer::updateView()
00103 {
00104 mNavigatorView->updateView();
00105 KDateNavigator *n;
00106 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
00107 n->updateView();
00108 }
00109 }
00110
00111 void DateNavigatorContainer::updateConfig()
00112 {
00113 mNavigatorView->updateConfig();
00114 KDateNavigator *n;
00115 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
00116 n->updateConfig();
00117 }
00118 }
00119
00120 void DateNavigatorContainer::selectDates( const DateList &dateList )
00121 {
00122 mNavigatorView->selectDates( dateList );
00123 setBaseDates();
00124 }
00125
00126 void DateNavigatorContainer::setBaseDates()
00127 {
00128 KCal::DateList dateList = mNavigatorView->selectedDates();
00129 if ( dateList.isEmpty() ) {
00130 kdError() << "DateNavigatorContainer::selectDates() empty list." << endl;
00131 }
00132 QDate baseDate = dateList.first();
00133 KDateNavigator *n;
00134 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
00135 baseDate = KOGlobals::self()->calendarSystem()->addMonths( baseDate, 1 );
00136 n->setBaseDate( baseDate );
00137 }
00138 }
00139
00140 void DateNavigatorContainer::resizeEvent( QResizeEvent * )
00141 {
00142 #if 0
00143 kdDebug() << "DateNavigatorContainer::resizeEvent()" << endl;
00144 kdDebug() << " CURRENT SIZE: " << size() << endl;
00145 kdDebug() << " MINIMUM SIZEHINT: " << minimumSizeHint() << endl;
00146 kdDebug() << " SIZEHINT: " << sizeHint() << endl;
00147 kdDebug() << " MINIMUM SIZE: " << minimumSize() << endl;
00148 #endif
00149
00150 QSize minSize = mNavigatorView->minimumSizeHint();
00151
00152
00153
00154 int verticalCount = size().height() / minSize.height();
00155 int horizontalCount = size().width() / minSize.width();
00156
00157 if ( horizontalCount != mHorizontalCount ||
00158 verticalCount != mVerticalCount ) {
00159 uint count = horizontalCount * verticalCount;
00160 if ( count == 0 ) return;
00161
00162 while ( count > ( mExtraViews.count() + 1 ) ) {
00163 KDateNavigator *n = new KDateNavigator( this );
00164 mExtraViews.append( n );
00165 n->setCalendar( mCalendar );
00166 setBaseDates();
00167 connectNavigatorView( n );
00168 n->show();
00169 }
00170
00171 while ( count < ( mExtraViews.count() + 1 ) ) {
00172 mExtraViews.removeLast();
00173 }
00174
00175 mHorizontalCount = horizontalCount;
00176 mVerticalCount = verticalCount;
00177 }
00178
00179 int height = size().height() / verticalCount;
00180 int width = size().width() / horizontalCount;
00181
00182 NavigatorBar *bar = mNavigatorView->navigatorBar();
00183 if ( horizontalCount > 1 ) bar->showButtons( true, false );
00184 else bar->showButtons( true, true );
00185
00186 mNavigatorView->setGeometry(
00187 ( (KOGlobals::self()->reverseLayout())?(horizontalCount-1):0) * width,
00188 0, width, height );
00189 for( uint i = 0; i < mExtraViews.count(); ++i ) {
00190 int x = ( i + 1 ) % horizontalCount;
00191 int y = ( i + 1 ) / horizontalCount;
00192
00193 KDateNavigator *view = mExtraViews.at( i );
00194 bar = view->navigatorBar();
00195 if ( y > 0 ) bar->showButtons( false, false );
00196 else {
00197 if ( x + 1 == horizontalCount ) bar->showButtons( false, true );
00198 else bar->showButtons( false, false );
00199 }
00200 view->setGeometry(
00201 ( (KOGlobals::self()->reverseLayout())?(horizontalCount-1-x):x) * width,
00202 y * height, width, height );
00203 }
00204 }
00205
00206 QSize DateNavigatorContainer::minimumSizeHint() const
00207 {
00208 return mNavigatorView->minimumSizeHint();
00209 }
00210
00211 QSize DateNavigatorContainer::sizeHint() const
00212 {
00213 return mNavigatorView->sizeHint();
00214 }
00215
00216 #include "datenavigatorcontainer.moc"
This file is part of the documentation for korganizer Library Version 3.3.2.