summaryrefslogtreecommitdiffabout
path: root/korganizer
Side-by-side diff
Diffstat (limited to 'korganizer') (more/less context) (show whitespace changes)
-rw-r--r--korganizer/calendarview.cpp1
-rw-r--r--korganizer/datenavigatorcontainer.cpp20
-rw-r--r--korganizer/kdatenavigator.cpp5
-rw-r--r--korganizer/kdatenavigator.h5
-rw-r--r--korganizer/kodaymatrix.cpp0
5 files changed, 22 insertions, 9 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 29c530b..9acbbb1 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1811,97 +1811,96 @@ void CalendarView::readSettings()
sizes = config->readIntListEntry("Separator2");
if ( ( mResourceView && sizes.count() == 4 ) ||
( !mResourceView && sizes.count() == 3 ) ) {
mLeftSplitter->setSizes(sizes);
}
#endif
globalFlagBlockAgenda = 1;
mViewManager->showAgendaView();
//mViewManager->readSettings( config );
mTodoList->restoreLayout(config,QString("Todo Layout"));
readFilterSettings(config);
config->setGroup( "Views" );
int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
QValueList<int> sizes = config->readIntListEntry("Left Splitter Frame");
int resetval = 0;
int maxVal = 0;
if (sizes.count() != 3) {
if ( KOPrefs::instance()->mVerticalScreen ) {
resetval = mDateNavigator->sizeHint().width()+2;
} else {
resetval = mDateNavigator->sizeHint().height()+2;
}
}
if ( !resetval ){// i.e. sizes.count() == 3
if ( KOPrefs::instance()->mVerticalScreen ) {
if ( sizes[0] < mDateNavigator->sizeHint().width()+1 )
resetval = mDateNavigator->sizeHint().width()+2;
} else {
if ( sizes[0] < mDateNavigator->sizeHint().height()+1 )
resetval = mDateNavigator->sizeHint().height()+2;
}
}
if ( resetval ) {
sizes.clear();
if ( KOPrefs::instance()->mVerticalScreen ) {
maxVal = QApplication::desktop()->width() -10;
} else {
maxVal = QApplication::desktop()->height()-10;
}
sizes << resetval;
if ( maxVal < resetval + resetval)
resetval = maxVal - resetval;
sizes << resetval;
sizes << 100;
}
mLeftFrame->setSizes(sizes);
- qDebug("sizes count %d ", sizes.count());
if ( dateCount == 5 ) mNavigator->selectWorkWeek();
else if ( dateCount == 7 ) mNavigator->selectWeek();
else mNavigator->selectDates( dateCount );
// mViewManager->readSettings( config );
updateConfig();
globalFlagBlockAgenda = 2;
mViewManager->readSettings( config );
#ifdef DESKTOP_VERSION
config->setGroup("WidgetLayout");
QStringList list;
list = config->readListEntry("MainLayout");
int x,y,w,h;
if ( ! list.isEmpty() ) {
x = list[0].toInt();
y = list[1].toInt();
w = list[2].toInt();
h = list[3].toInt();
topLevelWidget()->setGeometry(x,y,w,h);
} else {
topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
}
list = config->readListEntry("EditEventLayout");
if ( ! list.isEmpty() ) {
x = list[0].toInt();
y = list[1].toInt();
w = list[2].toInt();
h = list[3].toInt();
mEventEditor->setGeometry(x,y,w,h);
}
list = config->readListEntry("EditTodoLayout");
if ( ! list.isEmpty() ) {
x = list[0].toInt();
y = list[1].toInt();
w = list[2].toInt();
h = list[3].toInt();
mTodoEditor->setGeometry(x,y,w,h);
}
list = config->readListEntry("ViewerLayout");
if ( ! list.isEmpty() ) {
x = list[0].toInt();
y = list[1].toInt();
w = list[2].toInt();
h = list[3].toInt();
getEventViewerDialog()->setGeometry(x,y,w,h);
}
diff --git a/korganizer/datenavigatorcontainer.cpp b/korganizer/datenavigatorcontainer.cpp
index 3f6e29b..d09f484 100644
--- a/korganizer/datenavigatorcontainer.cpp
+++ b/korganizer/datenavigatorcontainer.cpp
@@ -82,133 +82,143 @@ void DateNavigatorContainer::setCalendar( Calendar *cal )
for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
n->setCalendar( cal );
}
}
void DateNavigatorContainer::updateDayMatrix()
{
mNavigatorView->updateDayMatrix();
KDateNavigator *n;
for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
n->updateDayMatrix();
}
}
void DateNavigatorContainer::updateToday()
{
qDebug("DateNavigatorContainer::updateToday() NOT IMPL ");
#if 0
mNavigatorView->updateToday();
KDateNavigator *n;
for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
n->updateToday();
}
#endif
}
void DateNavigatorContainer::updateView()
{
mNavigatorView->updateView();
KDateNavigator *n;
for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
n->updateView();
}
}
void DateNavigatorContainer::updateConfig()
{
mNavigatorView->updateConfig();
KDateNavigator *n;
for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
n->updateConfig();
}
}
void DateNavigatorContainer::selectDates( const DateList &dateList )
{
mNavigatorView->selectDates( dateList );
setBaseDates();
+ if ( mExtraViews.count() ) {
+ KDateNavigator *view = mExtraViews.at( 0 );
+ view->dayMatrix()->setSelectedDaysFrom(*(dateList.begin()), *(--dateList.end()));
+ view->dayMatrix()->repaint();
+ }
}
void DateNavigatorContainer::setBaseDates()
{
KCal::DateList dateList = mNavigatorView->selectedDates();
if ( dateList.isEmpty() ) {
kdError() << "DateNavigatorContainer::selectDates() empty list." << endl;
}
QDate baseDate = dateList.first();
KDateNavigator *n;
+ bool doRepaint = false; // skip first repaint
for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
baseDate = baseDate.addDays( baseDate.daysInMonth () );
- n->setBaseDate( baseDate );
+ n->setBaseDate( baseDate, doRepaint );
+ doRepaint = true;
}
}
-void DateNavigatorContainer::resizeEvent( QResizeEvent * )
+void DateNavigatorContainer::resizeEvent( QResizeEvent * e )
{
#if 0
kdDebug(5850) << "DateNavigatorContainer::resizeEvent()" << endl;
kdDebug(5850) << " CURRENT SIZE: " << size() << endl;
kdDebug(5850) << " MINIMUM SIZEHINT: " << minimumSizeHint() << endl;
kdDebug(5850) << " SIZEHINT: " << sizeHint() << endl;
kdDebug(5850) << " MINIMUM SIZE: " << minimumSize() << endl;
#endif
-
- QSize minSize = mNavigatorView->minimumSizeHint();
+ QSize minSize = mNavigatorView->yourSizeHint();
// kdDebug(5850) << " NAVIGATORVIEW minimumSizeHint: " << minSize << endl;
int verticalCount = size().height() / minSize.height();
int horizontalCount = size().width() / minSize.width();
+ //qDebug(" wattdatt %d new %d %d ", size().width() ,e->size().width() , minSize.width() );
//qDebug("COUNT %d %d %d %d ", verticalCount, horizontalCount , mVerticalCount, mHorizontalCount );
if ( horizontalCount != mHorizontalCount ||
verticalCount != mVerticalCount ) {
uint count = horizontalCount * verticalCount;
- if ( count == 0 ) return;
+ if ( count == 0 ) {
+ mNavigatorView->resize( minSize );
+ return;
+ }
while ( count > ( mExtraViews.count() + 1 ) ) {
KDateNavigator *n = new KDateNavigator( this );
n->setMonthSignalOffset ( mExtraViews.count()+1 );
mExtraViews.append( n );
n->setCalendar( mCalendar );
setBaseDates();
connectNavigatorView( n );
n->show();
}
while ( count < ( mExtraViews.count() + 1 ) ) {
mExtraViews.removeLast();
}
mHorizontalCount = horizontalCount;
mVerticalCount = verticalCount;
}
int height = size().height() / verticalCount;
int width = size().width() / horizontalCount;
NavigatorBar *bar = mNavigatorView->navigatorBar();
if ( horizontalCount > 1 ) bar->showButtons( true, false );
else bar->showButtons( true, true );
mNavigatorView->setGeometry(0,
0, width, height );
for( uint i = 0; i < mExtraViews.count(); ++i ) {
int x = ( i + 1 ) % horizontalCount;
int y = ( i + 1 ) / horizontalCount;
KDateNavigator *view = mExtraViews.at( i );
bar = view->navigatorBar();
if ( y > 0 ) bar->showButtons( false, false );
else {
if ( x + 1 == horizontalCount ) bar->showButtons( false, true );
else bar->showButtons( false, false );
}
view->setGeometry( x * width,
y * height, width, height );
}
}
QSize DateNavigatorContainer::minimumSizeHint() const
{
return mNavigatorView->minimumSizeHint();
}
diff --git a/korganizer/kdatenavigator.cpp b/korganizer/kdatenavigator.cpp
index ab9a40f..b097dc1 100644
--- a/korganizer/kdatenavigator.cpp
+++ b/korganizer/kdatenavigator.cpp
@@ -70,123 +70,124 @@ KDateNavigator::KDateNavigator( QWidget *parent, const char *name )
connect( mNavigatorBar, SIGNAL( goPrevMonth() ), SIGNAL( goPrevMonth() ) );
connect( mNavigatorBar, SIGNAL( goNextMonth() ), SIGNAL( goNextMonth() ) );
connect( mNavigatorBar, SIGNAL( goNextYear() ), SIGNAL( goNextYear() ) );
connect( mNavigatorBar, SIGNAL( monthSelected( int ) ), SLOT( slotMonthSelected( int ) ) );
// get the day of the week on the first day
QDate dayone(m_MthYr.year(), m_MthYr.month(), 1);
m_fstDayOfWk = dayone.dayOfWeek();
int i;
// Set up the heading fields.
for( i = 0; i < 7; i++ ) {
headings[i] = new QLabel("",this);
//headings[i]->setFont(QFont("Arial", 10, QFont::Bold));
headings[i]->setAlignment(AlignCenter);
topLayout->addWidget(headings[i],1,i+1);
}
// Create the weeknumber labels
for( i = 0; i < 6; i++ ) {
weeknos[i] = new QLabel(this);
weeknos[i]->setAlignment(AlignCenter);
//weeknos[i]->setFont(QFont("Arial", 10));
if(!m_bShowWeekNums) {
weeknos[i]->hide();
}
weeknos[i]->installEventFilter(this);
topLayout->addWidget(weeknos[i],i+2,0);
}
daymatrix = new KODayMatrix( this, "KDateNavigator::DayMatrix");
daymatrix->setFrameStyle(QFrame::Panel|QFrame::Sunken);
daymatrix->setLineWidth(1);
connect( daymatrix, SIGNAL( selected( const KCal::DateList & ) ),
SIGNAL( datesSelected( const KCal::DateList & ) ) );
connect( daymatrix, SIGNAL( eventDropped( Event * ) ),
SIGNAL( eventDropped( Event * ) ) );
topLayout->addMultiCellWidget(daymatrix,2,7,1,7);
// read settings from configuration file.
updateConfig();
enableRollover(FollowMonth);
- //setFixedSize ( sizeHint() );
+ mySizeHint = sizeHint();
}
void KDateNavigator::slotMonthSelected( int m )
{
if ( m_MthYr.month() <= mMonthSignalOffset)
m += 12;
int mo = m - mMonthSignalOffset;
emit monthSelected( m - mMonthSignalOffset );
}
void KDateNavigator::setCalendar( Calendar *cal )
{
daymatrix->setCalendar( cal );
}
-void KDateNavigator::setBaseDate( const QDate &date )
+void KDateNavigator::setBaseDate( const QDate &date , bool doRepaint ) // = true
{
m_MthYr = date;
updateDates();
updateView();
KCal::DateList dates;
dates.append( date );
mNavigatorBar->selectDates( dates );
daymatrix->clearSelection();
+ if ( doRepaint )
daymatrix->repaint();
}
void KDateNavigator::enableRollover(RolloverType r)
{
switch(r)
{
case None :
if (updateTimer)
{
updateTimer->stop();
delete updateTimer;
updateTimer=0L;
}
break;
case FollowDay :
case FollowMonth :
if (!updateTimer)
{
updateTimer = new QTimer(this);
QObject::connect(updateTimer,SIGNAL(timeout()),
this,SLOT(possiblyPastMidnight()));
}
updateTimer->start(0,true);
lastDayChecked = QDate::currentDate();
}
updateRollover=r;
}
KDateNavigator::~KDateNavigator()
{
}
void KDateNavigator::passedMidnight()
{
QDate today = QDate::currentDate();
bool emitMonth = false;
if (today.month() != lastDayChecked.month())
{
if (updateRollover==FollowMonth &&
daymatrix->isEndOfMonth()) {
goNextMonth();
emitMonth=true;
}
}
diff --git a/korganizer/kdatenavigator.h b/korganizer/kdatenavigator.h
index 56822fa..292e71c 100644
--- a/korganizer/kdatenavigator.h
+++ b/korganizer/kdatenavigator.h
@@ -15,137 +15,140 @@
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
As a special exception, permission is given to link this program
with any edition of Qt, and distribute the resulting executable,
without including the source code for Qt in the source distribution.
*/
#ifndef KDATENAVIGATOR_H
#define KDATENAVIGATOR_H
#include <qframe.h>
#include <qdatetime.h>
#include <qlabel.h>
#include <libkcal/calendar.h>
#include "kodaymatrix.h"
class QPushButton;
class QTimer;
class KCalendarSystem;
class NavigatorBar;
class KDateNavigator: public QFrame
{
Q_OBJECT
public:
KDateNavigator( QWidget *parent = 0,const char *name = 0 );
~KDateNavigator();
/** The DateNavigator automatically checks for
* the passage of midnight. If rollover type is
* set to None, no signals are emitted and no
* processing is done. With rollover set to
* FollowDay, the day highlighter changes at
* midnight and dayPassed() is emitted.
* With FollowMonth, it has the same effect
* as FollowDay but also adjusts the month that is
* visible and emits monthPassed() when the month changes.
*/
enum RolloverType { None, FollowDay, FollowMonth } ;
void enableRollover( RolloverType );
void setShowWeekNums( bool enabled );
void setCalendar( Calendar * );
- void setBaseDate( const QDate & );
+ void setBaseDate( const QDate & , bool doRepaint = true );
KCal::DateList selectedDates() const { return mSelectedDates; }
NavigatorBar *navigatorBar() const { return mNavigatorBar; }
void setMonthSignalOffset ( int off ) { mMonthSignalOffset = off;}
+ QSize yourSizeHint() { return mySizeHint; }
+ KODayMatrix *dayMatrix() { return daymatrix ;}
public slots:
void selectDates( const KCal::DateList & );
void updateView();
void updateConfig();
void updateDayMatrix();
signals:
void datesSelected( const KCal::DateList & );
void eventDropped( Event * );
void weekClicked( const QDate &);
void goPrevious();
void goNext();
void goNextMonth();
void goPrevMonth();
void goNextYear();
void goPrevYear();
void monthSelected( int );
// Signals emitted at midnight carrying the new date.
void dayPassed( QDate );
void monthPassed( QDate );
protected slots:
/**
* Called regularly to see if we need to update the view
* wrt. the today box and the month box. Only important
* if you leave KOrganizer idle for long periods of time.
*
* Until we have a reliable way of setting QTimers to go
* off at a particular wall-clock time, we need this,
* which calls passedMidnight() at the right moments.
*/
void possiblyPastMidnight();
/** handles updating the view when midnight has come by due to idle time.
*
*/
void passedMidnight();
void slotMonthSelected( int m );
protected:
void updateDates();
void wheelEvent (QWheelEvent *);
bool eventFilter (QObject *,QEvent *);
private:
+ QSize mySizeHint;
int mMonthSignalOffset;
NavigatorBar *mNavigatorBar;
QFrame *headingSep;
QFrame *weeknumSep;
QLabel *headings[7];
QLabel *weeknos[7];
KODayMatrix *daymatrix;
KCal::DateList mSelectedDates;
QDate m_MthYr;
int m_fstDayOfWk;
bool m_bShowWeekNums;
int dayNum(int row, int col);
int dayToIndex(int dayNum);
Calendar *mCalendar;
KCalendarSystem *mCalendarSystem;
const QString *curHeaders;
/** used to update the day view periodically, in particular every
* midnight to move the "today" rectangle.
*/
QTimer *updateTimer;
QDate lastDayChecked;
RolloverType updateRollover;
// Disabling copy constructor and assignment operator
KDateNavigator(const KDateNavigator & );
KDateNavigator &operator=(const KDateNavigator &);
};
#endif
diff --git a/korganizer/kodaymatrix.cpp b/korganizer/kodaymatrix.cpp
index a886f4a..17a8546 100644
--- a/korganizer/kodaymatrix.cpp
+++ b/korganizer/kodaymatrix.cpp