summaryrefslogtreecommitdiffabout
path: root/korganizer
Side-by-side diff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/komonthview.cpp855
-rw-r--r--korganizer/komonthview.h2
-rw-r--r--korganizer/koviewmanager.cpp4
-rw-r--r--korganizer/mainwindow.cpp2
4 files changed, 447 insertions, 416 deletions
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index 437debe..10e4f1d 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -1,1129 +1,1154 @@
/*
- This file is part of KOrganizer.
- Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- 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.
+ This file is part of KOrganizer.
+ Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ 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.
*/
#include <qpopupmenu.h>
#include <qfont.h>
#include <qfontmetrics.h>
#include <qkeycode.h>
#include <qhbox.h>
#include <qvbox.h>
#include <qpushbutton.h>
#include <qtooltip.h>
#include <qpainter.h>
#include <qwhatsthis.h>
#ifndef DESKTOP_VERSION
#include <qpe/qpeapplication.h>
#else
#include <qapplication.h>
#endif
#include <kdebug.h>
#include <klocale.h>
#include <kglobal.h>
#include <kconfig.h>
#include <kiconloader.h>
#include <kcalendarsystem.h>
#ifndef KORG_NOPRINTER
#include "calprinter.h"
#endif
#include "koprefs.h"
#ifndef KORG_NOPLUGINS
#include "kocore.h"
#endif
#include "koglobals.h"
#include <libkcal/kincidenceformatter.h>
#include "komonthview.h"
#define PIXMAP_SIZE 5
#ifdef DESKTOP_VERSION
- QToolTipGroup *MonthViewCell::mToolTipGroup = 0;
+QToolTipGroup *MonthViewCell::mToolTipGroup = 0;
#endif
class KNOWhatsThis :public QWhatsThis
{
public:
KNOWhatsThis( KNoScrollListBox* sbox ) : QWhatsThis( sbox ), _wid( sbox) { };
//~KNOWhatsThis( ) {qDebug("~KNOWhatsThis( ) "); };
protected:
- virtual QString text( const QPoint& p)
- {
- return _wid->getWhatsThisText(p) ;
- };
+ virtual QString text( const QPoint& p)
+ {
+ return _wid->getWhatsThisText(p) ;
+ };
private:
KNoScrollListBox* _wid;
};
KNoScrollListBox::KNoScrollListBox(QWidget *parent,const char *name)
: QListBox(parent, name, WRepaintNoErase)
{
#ifndef DESKTOP_VERSION
QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold );
#endif
mWT = new KNOWhatsThis(this);
}
KNoScrollListBox::~KNoScrollListBox()
{
}
QString KNoScrollListBox::getWhatsThisText(QPoint p)
{
QListBoxItem* item = itemAt ( p );
if ( ! item ) {
return i18n("Click in the cell\nto add an event!");
}
return KIncidenceFormatter::instance()->getFormattedText(((MonthViewItem*) item)->incidence());
}
void KNoScrollListBox::keyPressEvent(QKeyEvent *e)
{
- switch(e->key()) {
+ switch(e->key()) {
case Key_Right:
// if ( e->state() == Qt::ControlButton )
{
e->ignore();
return;
}
scrollBy(4,0);
- break;
+ break;
case Key_Left:
// if ( e->state() == Qt::ControlButton )
- {
+ {
e->ignore();
return;
}
- scrollBy(-4,0);
- break;
+ scrollBy(-4,0);
+ break;
case Key_Up:
- if(!count()) break;
- setCurrentItem((currentItem()+count()-1)%count());
- if(!itemVisible(currentItem())) {
- if((unsigned int) currentItem() == (count()-1)) {
- setTopItem(currentItem()-numItemsVisible()+1);
- } else {
- setTopItem(topItem()-1);
+ if(count() < 2) {
+ e->ignore();
+ break;
}
- }
- break;
+ setCurrentItem((currentItem()+count()-1)%count());
+ if(!itemVisible(currentItem())) {
+ if((unsigned int) currentItem() == (count()-1)) {
+ setTopItem(currentItem()-numItemsVisible()+1);
+ } else {
+ setTopItem(topItem()-1);
+ }
+ }
+ break;
case Key_Down:
- if(!count()) break;
- setCurrentItem((currentItem()+1)%count());
- if(!itemVisible(currentItem())) {
- if(currentItem() == 0) {
- setTopItem(0);
- } else {
- setTopItem(topItem()+1);
+ if(count() < 2) {
+ e->ignore();
+ break;
}
- }
- break;
+ setCurrentItem((currentItem()+1)%count());
+ if(!itemVisible(currentItem())) {
+ if(currentItem() == 0) {
+ setTopItem(0);
+ } else {
+ setTopItem(topItem()+1);
+ }
+ }
+ break;
case Key_Shift:
- emit shiftDown();
- break;
+ emit shiftDown();
+ break;
default:
e->ignore();
- break;
- }
+ break;
+ }
}
void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e)
{
- switch(e->key()) {
+ switch(e->key()) {
case Key_Shift:
- emit shiftUp();
- break;
+ emit shiftUp();
+ break;
default:
- break;
- }
+ break;
+ }
}
void KNoScrollListBox::mousePressEvent(QMouseEvent *e)
{
- QListBox::mousePressEvent(e);
+ QListBox::mousePressEvent(e);
- if(e->button() == RightButton) {
- emit rightClick();
- }
+ if(e->button() == RightButton) {
+ emit rightClick();
+ }
}
MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s)
- : QListBoxItem()
+ : QListBoxItem()
{
- setText( s );
-
- mIncidence = incidence;
- mDate = qd;
- // QWhatsThis::add(this,KIncidenceFormatter::instance()->getFormattedText( mIncidence ));
- mRecur = false;
- mAlarm = false;
- mReply = false;
- mInfo = false;
+ setText( s );
+
+ mIncidence = incidence;
+ mDate = qd;
+ // QWhatsThis::add(this,KIncidenceFormatter::instance()->getFormattedText( mIncidence ));
+ mRecur = false;
+ mAlarm = false;
+ mReply = false;
+ mInfo = false;
}
void MonthViewItem::paint(QPainter *p)
{
#if QT_VERSION >= 0x030000
- bool sel = isSelected();
+ bool sel = isSelected();
#else
- bool sel = selected();
+ bool sel = selected();
#endif
- if (KOPrefs::instance()->mMonthViewUsesCategoryColor)
- {
- p->setBackgroundColor( palette().color( QPalette::Normal, \
- sel ? QColorGroup::Highlight : QColorGroup::Background ) );
- p->eraseRect( 0, 0, listBox()->maxItemWidth(), height( listBox() ) );
- }
- int x = 1;
- int y = 3;//(height() - mRecurPixmap.height()) /2;
- int size = PIXMAP_SIZE;
- if ( QApplication::desktop()->width() < 300 )
- size = 3;
- if ( KOPrefs::instance()->mMonthShowIcons ) {
- if ( mInfo ) {
- p->fillRect ( x, y,size,size, Qt::darkGreen );
- x += size + 1;
- }
- if ( mRecur ) {
- p->fillRect ( x, y,size,size, Qt::blue );
- x += size + 1;
- }
- if ( mAlarm ) {
- p->fillRect ( x, y,size,size, Qt::red );
- x += size + 1;
- }
- if ( mReply ) {
- p->fillRect ( x, y,size,size, Qt::yellow );
- x += size + 1;
- }
- }
- QFontMetrics fm = p->fontMetrics();
- int yPos;
- int pmheight = size;
- if( pmheight < fm.height() )
- yPos = fm.ascent() + fm.leading()/2;
- else
- yPos = pmheight/2 - fm.height()/2 + fm.ascent();
- p->setPen( palette().color( QPalette::Normal, sel ? \
- QColorGroup::HighlightedText : QColorGroup::Foreground ) );
- p->drawText( x, yPos, text() );
- if ( mIncidence->cancelled() ) {
- int wid = fm.width( text() );
- p->drawLine( x, yPos- fm.height()/2+2,x+wid, yPos- fm.height()/2 +2);
- }
+ if (KOPrefs::instance()->mMonthViewUsesCategoryColor)
+ {
+ p->setBackgroundColor( palette().color( QPalette::Normal, \
+ sel ? QColorGroup::Highlight : QColorGroup::Background ) );
+ p->eraseRect( 0, 0, listBox()->maxItemWidth(), height( listBox() ) );
+ }
+ int x = 1;
+ int y = 3;//(height() - mRecurPixmap.height()) /2;
+ int size = PIXMAP_SIZE;
+ if ( QApplication::desktop()->width() < 300 )
+ size = 3;
+ if ( KOPrefs::instance()->mMonthShowIcons ) {
+ if ( mInfo ) {
+ p->fillRect ( x, y,size,size, Qt::darkGreen );
+ x += size + 1;
+ }
+ if ( mRecur ) {
+ p->fillRect ( x, y,size,size, Qt::blue );
+ x += size + 1;
+ }
+ if ( mAlarm ) {
+ p->fillRect ( x, y,size,size, Qt::red );
+ x += size + 1;
+ }
+ if ( mReply ) {
+ p->fillRect ( x, y,size,size, Qt::yellow );
+ x += size + 1;
+ }
+ }
+ QFontMetrics fm = p->fontMetrics();
+ int yPos;
+ int pmheight = size;
+ if( pmheight < fm.height() )
+ yPos = fm.ascent() + fm.leading()/2;
+ else
+ yPos = pmheight/2 - fm.height()/2 + fm.ascent();
+ p->setPen( palette().color( QPalette::Normal, sel ? \
+ QColorGroup::HighlightedText : QColorGroup::Foreground ) );
+ p->drawText( x, yPos, text() );
+ if ( mIncidence->cancelled() ) {
+ int wid = fm.width( text() );
+ p->drawLine( x, yPos- fm.height()/2+2,x+wid, yPos- fm.height()/2 +2);
+ }
}
int MonthViewItem::height(const QListBox *lb) const
{
- return lb->fontMetrics().lineSpacing()+1;
+ return lb->fontMetrics().lineSpacing()+1;
}
int MonthViewItem::width(const QListBox *lb) const
{
int size = PIXMAP_SIZE;
- if ( QApplication::desktop()->width() < 300 )
- size = 3;
- int x = 1;
- if ( mInfo ) {
- x += size + 1;
- }
- if( mRecur ) {
- x += size+1;
- }
- if( mAlarm ) {
- x += size+1;
- }
- if( mReply ) {
- x += size+1;
- }
-
- return( x + lb->fontMetrics().width( text() ) + 1 );
+ if ( QApplication::desktop()->width() < 300 )
+ size = 3;
+ int x = 1;
+ if ( mInfo ) {
+ x += size + 1;
+ }
+ if( mRecur ) {
+ x += size+1;
+ }
+ if( mAlarm ) {
+ x += size+1;
+ }
+ if( mReply ) {
+ x += size+1;
+ }
+
+ return( x + lb->fontMetrics().width( text() ) + 1 );
}
MonthViewCell::MonthViewCell( KOMonthView *parent)
- : QWidget( parent ),
- mMonthView( parent )
+ : QWidget( parent ),
+ mMonthView( parent )
{
- QVBoxLayout *topLayout = new QVBoxLayout( this );
-
- // mLabel = new QLabel( this );QPushButton
- mLabel = new QPushButton( this );
- //mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain );
- //mLabel->setLineWidth( 1 );
- //mLabel->setAlignment( AlignCenter );
- mLabel->setFlat( true );
- mItemList = new KNoScrollListBox( this );
- mItemList->setMinimumSize( 10, 10 );
- mItemList->setFrameStyle( QFrame::Panel | QFrame::Plain );
- mItemList->setLineWidth( 1 );
- topLayout->addWidget( mItemList );
- mLabel->raise();
- // QColor( 0,0,255 ) QColor( 160,1600,255 )
- mStandardPalette = palette();
- mStandardPalette.setColor(QColorGroup::Base, mStandardPalette.color( QPalette::Normal, QColorGroup::Background ) );
-
- enableScrollBars( false );
- updateConfig();
- //connect( mLabel, SIGNAL( clicked( )), SLOT( newEvent() ));
- connect( mLabel, SIGNAL( clicked( )), SLOT( showDay() ));
- connect( mItemList, SIGNAL( doubleClicked( QListBoxItem *) ),
- SLOT( defaultAction( QListBoxItem * ) ) );
- connect( mItemList, SIGNAL( rightButtonPressed( QListBoxItem *,
- const QPoint &) ),
- SLOT( contextMenu( QListBoxItem * ) ) );
- connect( mItemList, SIGNAL( highlighted( QListBoxItem *) ),
- SLOT( selection( QListBoxItem * ) ) );
- connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ),
- SLOT( cellClicked( QListBoxItem * ) ) );
- connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ),
- SLOT( selection( QListBoxItem * ) ) );
+ QVBoxLayout *topLayout = new QVBoxLayout( this );
+
+ // mLabel = new QLabel( this );QPushButton
+ mLabel = new QPushButton( this );
+ //mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain );
+ //mLabel->setLineWidth( 1 );
+ //mLabel->setAlignment( AlignCenter );
+ mLabel->setFlat( true );
+ mItemList = new KNoScrollListBox( this );
+ mItemList->setMinimumSize( 10, 10 );
+ mItemList->setFrameStyle( QFrame::Panel | QFrame::Plain );
+ mItemList->setLineWidth( 1 );
+ topLayout->addWidget( mItemList );
+ mLabel->raise();
+ // QColor( 0,0,255 ) QColor( 160,1600,255 )
+ mStandardPalette = palette();
+ mStandardPalette.setColor(QColorGroup::Base, mStandardPalette.color( QPalette::Normal, QColorGroup::Background ) );
+
+ enableScrollBars( false );
+ updateConfig();
+ //connect( mLabel, SIGNAL( clicked( )), SLOT( newEvent() ));
+ connect( mLabel, SIGNAL( clicked( )), SLOT( showDay() ));
+ connect( mItemList, SIGNAL( doubleClicked( QListBoxItem *) ),
+ SLOT( defaultAction( QListBoxItem * ) ) );
+ connect( mItemList, SIGNAL( rightButtonPressed( QListBoxItem *,
+ const QPoint &) ),
+ SLOT( contextMenu( QListBoxItem * ) ) );
+ connect( mItemList, SIGNAL( highlighted( QListBoxItem *) ),
+ SLOT( selection( QListBoxItem * ) ) );
+ connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ),
+ SLOT( cellClicked( QListBoxItem * ) ) );
+ connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ),
+ SLOT( selection( QListBoxItem * ) ) );
}
#ifdef DESKTOP_VERSION
QToolTipGroup *MonthViewCell::toolTipGroup()
{
- if (!mToolTipGroup) mToolTipGroup = new QToolTipGroup(0);
- return mToolTipGroup;
+ if (!mToolTipGroup) mToolTipGroup = new QToolTipGroup(0);
+ return mToolTipGroup;
}
#endif
void MonthViewCell::setDate( const QDate &date )
{
-// kdDebug() << "MonthViewCell::setDate(): " << date.toString() << endl;
- mDate = date;
+ // kdDebug() << "MonthViewCell::setDate(): " << date.toString() << endl;
+ mDate = date;
- //resizeEvent( 0 );
+ //resizeEvent( 0 );
}
QDate MonthViewCell::date() const
{
- return mDate;
+ return mDate;
}
void MonthViewCell::setPrimary( bool primary )
{
mPrimary = primary;
//setMyPalette();
}
void MonthViewCell::setMyPalette()
{
if ( mHoliday) {
setPalette( mHolidayPalette );
} else {
if ( mPrimary ) {
setPalette( mPrimaryPalette );
} else {
setPalette( mNonPrimaryPalette );
}
}
QPalette pal = palette();
mLabel->setPalette( QPalette ( pal.color( QPalette::Normal,QColorGroup::Base),pal.color(QPalette::Normal,QColorGroup::Base ) ));
}
QPalette MonthViewCell::getPalette ()
{
if ( !KOPrefs::instance()->mMonthViewUsesDayColors )
return mStandardPalette;
if ( mHoliday) {
return mHolidayPalette ;
} else {
if ( mPrimary ) {
return mPrimaryPalette ;
}
}
return mNonPrimaryPalette;
}
bool MonthViewCell::isPrimary() const
{
- return mPrimary;
+ return mPrimary;
}
void MonthViewCell::setHoliday( bool holiday )
{
- mHoliday = holiday;
- //setMyPalette();
+ mHoliday = holiday;
+ //setMyPalette();
}
void MonthViewCell::setHoliday( const QString &holiday )
{
- mHolidayString = holiday;
+ mHolidayString = holiday;
- if ( !holiday.isEmpty() ) {
- setHoliday( true );
- }
+ if ( !holiday.isEmpty() ) {
+ setHoliday( true );
+ }
}
void MonthViewCell::keyPressEvent ( QKeyEvent * e )
{
- e->ignore();
+ e->ignore();
}
void MonthViewCell::clear()
{
mItemList->clear();
QApplication::removePostedEvents ( mItemList );
QApplication::removePostedEvents ( mLabel );
QApplication::removePostedEvents ( this );
}
void MonthViewCell::updateCell()
{
if ( !mMonthView->isUpdatePossible() )
return;
/*
if ( !isVisible() ){
- return;
- }
+ return;
+ }
*/
// qDebug("MonthViewCell::updateCell() ");
setPrimary( mDate.month()%2 );
setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays);
if ( mDate == QDate::currentDate() ) {
mItemList->setLineWidth( 3 );
} else {
- mItemList->setLineWidth( 1 );
+ mItemList->setLineWidth( 1 );
}
mItemList->clear();
#ifdef DESKTOP_VERSION
QToolTip::remove(this);
#endif
QString tipText("");
//qApp->processEvents();
if ( !mHolidayString.isEmpty() ) {
MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString );
item->setPalette( mHolidayPalette );
mItemList->insertItem( item );
tipText += mHolidayString+"\n";
}
//mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
QPtrList<Event> events = mMonthView->calendar()->events( mDate, true );
Event *event;
for( event = events.first(); event; event = events.next() ) { // for event
if ( !(event->doesRecur() == Recurrence::rNone) ) {
if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily )
continue;
else
if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly )
continue;
}
if ( event->categories().contains("Holiday") ||
event->categories().contains(i18n("Holiday"))) {
setHoliday( true );
if ( mDate.dayOfWeek() == 7 )
mItemList->setLineWidth( 3 );
}
QString text;
if (event->isMultiDay()) {
QString prefix = "<->";
if ( event->doesRecur() ) {
if ( event->recursOn( mDate) )
prefix ="->" ;
else {
int days = event->dtStart().date().daysTo ( event->dtEnd().date() );
if ( event->recursOn( mDate.addDays( -days)) )
prefix ="<-" ;
}
} else {
if (mDate == event->dtStart().date()) {
prefix ="->" ;
} else if (mDate == event->dtEnd().date()) {
prefix ="<-" ;
}
}
text = prefix + event->summary();
tipText += text;
} else {
if (event->doesFloat()) {
text = event->summary();
tipText += text;
}
else {
text = KGlobal::locale()->formatTime(event->dtStart().time());
text += " " + event->summary();
tipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary();
}
}
MonthViewItem *item = new MonthViewItem( event, mDate, text );
QPalette pal;
if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
QStringList categories = event->categories();
QString cat = categories.first();
if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
pal = getPalette();
if (cat.isEmpty()) {
pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
} else {
pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
}
} else {
if (cat.isEmpty()) {
pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
} else {
pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
}
}
} else {
pal = mStandardPalette ;
}
item->setPalette( pal );
item->setRecur( event->recurrence()->doesRecur() );
item->setAlarm( event->isAlarmEnabled() );
item->setMoreInfo( event->description().length() > 0 );
#ifdef DESKTOP_VERSION
Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails,
KOPrefs::instance()->email());
if ( me != 0 ) {
if ( me->status() == Attendee::NeedsAction && me->RSVP())
item->setReply(true);
else
item->setReply(false);
} else
item->setReply(false);
#endif
mItemList->insertItem( item );
tipText += "\n";
}
// insert due todos
QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate );
Todo *todo;
for(todo = todos.first(); todo; todo = todos.next()) {
QString text;
if (todo->hasDueDate()) {
if (!todo->doesFloat()) {
text += KGlobal::locale()->formatTime(todo->dtDue().time());
text += " ";
}
}
text += i18n("To-Do: %1").arg(todo->summary());
MonthViewItem *item = new MonthViewItem( todo, mDate, text );
//item->setPalette( mStandardPalette );
QPalette pal;
if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
QStringList categories = todo->categories();
QString cat = categories.first();
if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
pal = getPalette();
if (cat.isEmpty()) {
pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
} else {
pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
}
} else {
if (cat.isEmpty()) {
pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
} else {
pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
}
}
} else {
pal = mStandardPalette ;
}
item->setPalette( pal );
mItemList->insertItem( item );
tipText += text+"\n";
}
#ifdef DESKTOP_VERSION
if (tipText != "")
QToolTip::add(this,tipText,toolTipGroup(),"");
#endif
//setMyPalette();
setMyPalette();
QString text;
bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog;
if ( KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) {
text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " ";
mLabel->resize( mLabelBigSize );
text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) );
} else {
mLabel->resize( mLabelSize );
text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) );
}
mLabel->setText( text );
resizeEvent( 0 );
// if ( isVisible())
//qApp->processEvents();
}
void MonthViewCell::updateConfig()
{
- setFont( KOPrefs::instance()->mMonthViewFont );
-
- QFontMetrics fm( font() );
- mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 );
- mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 );
- mHolidayPalette = mStandardPalette;
- mPrimaryPalette = mStandardPalette;
- mNonPrimaryPalette = mStandardPalette;
- if ( KOPrefs::instance()->mMonthViewUsesDayColors ) {
- mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor );
- mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor );
- mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark());
- mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark());
- mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor);
- mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor);
- mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark());
- mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor);
- mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor);
- }
- updateCell();
+ setFont( KOPrefs::instance()->mMonthViewFont );
+
+ QFontMetrics fm( font() );
+ mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 );
+ mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 );
+ mHolidayPalette = mStandardPalette;
+ mPrimaryPalette = mStandardPalette;
+ mNonPrimaryPalette = mStandardPalette;
+ if ( KOPrefs::instance()->mMonthViewUsesDayColors ) {
+ mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor );
+ mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor );
+ mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark());
+ mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark());
+ mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor);
+ mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor);
+ mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark());
+ mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor);
+ mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor);
+ }
+ updateCell();
}
void MonthViewCell::enableScrollBars( bool enabled )
{
- if ( enabled ) {
- mItemList->setVScrollBarMode(QScrollView::Auto);
- mItemList->setHScrollBarMode(QScrollView::Auto);
- } else {
- mItemList->setVScrollBarMode(QScrollView::AlwaysOff);
- mItemList->setHScrollBarMode(QScrollView::AlwaysOff);
- }
+ if ( enabled ) {
+ mItemList->setVScrollBarMode(QScrollView::Auto);
+ mItemList->setHScrollBarMode(QScrollView::Auto);
+ } else {
+ mItemList->setVScrollBarMode(QScrollView::AlwaysOff);
+ mItemList->setHScrollBarMode(QScrollView::AlwaysOff);
+ }
}
Incidence *MonthViewCell::selectedIncidence()
{
- int index = mItemList->currentItem();
- if ( index < 0 ) return 0;
+ int index = mItemList->currentItem();
+ if ( index < 0 ) return 0;
- MonthViewItem *item =
- static_cast<MonthViewItem *>( mItemList->item( index ) );
+ MonthViewItem *item =
+ static_cast<MonthViewItem *>( mItemList->item( index ) );
- if ( !item ) return 0;
+ if ( !item ) return 0;
- return item->incidence();
+ return item->incidence();
}
QDate MonthViewCell::selectedIncidenceDate()
{
- QDate qd;
- int index = mItemList->currentItem();
- if ( index < 0 ) return qd;
+ QDate qd;
+ int index = mItemList->currentItem();
+ if ( index < 0 ) return qd;
- MonthViewItem *item =
- static_cast<MonthViewItem *>( mItemList->item( index ) );
+ MonthViewItem *item =
+ static_cast<MonthViewItem *>( mItemList->item( index ) );
- if ( !item ) return qd;
+ if ( !item ) return qd;
- return item->incidenceDate();
+ return item->incidenceDate();
}
void MonthViewCell::deselect()
{
- mItemList->clearSelection();
- enableScrollBars( false );
- // updateCell();
+ mItemList->clearSelection();
+ enableScrollBars( false );
+ // updateCell();
}
void MonthViewCell::select()
{
;// updateCell();
}
void MonthViewCell::resizeEvent ( QResizeEvent * )
{
if ( !mMonthView->isUpdatePossible() )
return;
#ifndef DESKTOP_VERSION
if ( !isVisible() ){
return;
}
#endif
int size = height() - mLabel->height();
if ( size > 0 )
mItemList->verticalScrollBar()->setMaximumHeight( size );
size = width() - mLabel->width();
if ( size > 0 )
mItemList->horizontalScrollBar()->setMaximumWidth( size );
mLabel->move( width()-mItemList->lineWidth() - mLabel->width(), height()-mItemList->lineWidth() - mLabel->height() );
//mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
}
void MonthViewCell::defaultAction( QListBoxItem *item )
{
- if ( !item ) return;
+ if ( !item ) return;
- MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
- Incidence *incidence = eventItem->incidence();
- if ( incidence ) mMonthView->defaultAction( incidence );
+ MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
+ Incidence *incidence = eventItem->incidence();
+ if ( incidence ) mMonthView->defaultAction( incidence );
}
void MonthViewCell::showDay()
{
emit showDaySignal( date() );
}
void MonthViewCell::newEvent()
{
QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
emit newEventSignal( dt );
}
void MonthViewCell::cellClicked( QListBoxItem *item )
{
static QListBoxItem * lastClicked = 0;
if ( item == 0 ) {
QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
emit newEventSignal( dt );
return;
}
- /*
- if ( lastClicked )
+ /*
+ if ( lastClicked )
if ( ! item ) {
- if ( lastClicked->listBox() != item->listBox() )
- lastClicked->listBox()->clearSelection();
+ if ( lastClicked->listBox() != item->listBox() )
+ lastClicked->listBox()->clearSelection();
}
- */
+ */
- mMonthView->setSelectedCell( this );
- if( KOPrefs::instance()->mEnableMonthScroll ) enableScrollBars( true );
- select();
+ mMonthView->setSelectedCell( this );
+ if( KOPrefs::instance()->mEnableMonthScroll ) enableScrollBars( true );
+ select();
}
void MonthViewCell::contextMenu( QListBoxItem *item )
{
- if ( !item ) return;
+ if ( !item ) return;
- MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
- Incidence *incidence = eventItem->incidence();
- if ( incidence ) mMonthView->showContextMenu( incidence );
+ MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
+ Incidence *incidence = eventItem->incidence();
+ if ( incidence ) mMonthView->showContextMenu( incidence );
}
void MonthViewCell::selection( QListBoxItem *item )
{
- if ( !item ) return;
+ if ( !item ) return;
- mMonthView->setSelectedCell( this );
+ mMonthView->setSelectedCell( this );
}
// *******************************************************************************
// *******************************************************************************
// *******************************************************************************
KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
: KOEventView( calendar, parent, name ),
mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ),
mShortDayLabels( false ), mWidthLongDayLabel( 0 ), mSelectedCell( 0 )
{
- updatePossible = false;
- mCells.setAutoDelete( true );
- mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
- // mDayLayout = new QGridLayout( this );
- // create the day of the week labels (Sun, Mon, etc) and add them to
- // the layout.
- mDayLabels.resize( mDaysPerWeek );
- QFont bfont = font();
- if ( QApplication::desktop()->width() < 650 ) {
- bfont.setPointSize( bfont.pointSize() - 2 );
- }
- bfont.setBold( true );
- int i;
+ updatePossible = false;
+ mCells.setAutoDelete( true );
+ mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
+ // mDayLayout = new QGridLayout( this );
+ // create the day of the week labels (Sun, Mon, etc) and add them to
+ // the layout.
+ mDayLabels.resize( mDaysPerWeek );
+ QFont bfont = font();
+ if ( QApplication::desktop()->width() < 650 ) {
+ bfont.setPointSize( bfont.pointSize() - 2 );
+ }
+ bfont.setBold( true );
+ int i;
- for( i = 0; i < mDaysPerWeek; i++ ) {
- QLabel *label = new QLabel( this );
- label->setFont(bfont);
- label->setFrameStyle(QFrame::Panel|QFrame::Raised);
- label->setLineWidth(1);
- label->setAlignment(AlignCenter);
- mDayLabels.insert( i, label );
- }
-
- bfont.setBold( false );
- mWeekLabels.resize( mNumWeeks+1 );
- for( i = 0; i < mNumWeeks+1; i++ ) {
- KOWeekButton *label = new KOWeekButton( this );
- label->setFont(bfont);
- connect( label, SIGNAL( selectWeekNum ( int )),this, SIGNAL( selectWeekNum ( int )) );
- label->setFlat(true);
- QWhatsThis::add(label,i18n("Click on the week number to\nshow week in agenda view"));
- //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
- //label->setLineWidth(1);
- //label->setAlignment(AlignCenter);
- mWeekLabels.insert( i, label );
- }
- mWeekLabels[mNumWeeks]->setText( i18n("W"));
- int row, col;
- mCells.resize( mNumCells );
- for( row = 0; row < mNumWeeks; ++row ) {
- for( col = 0; col < mDaysPerWeek; ++col ) {
- MonthViewCell *cell = new MonthViewCell( this );
- mCells.insert( row * mDaysPerWeek + col, cell );
-
- connect( cell, SIGNAL( defaultAction( Incidence * ) ),
- SLOT( defaultAction( Incidence * ) ) );
- connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
- SIGNAL( newEventSignal( QDateTime ) ) );
- connect( cell, SIGNAL( showDaySignal( QDate ) ),
- SIGNAL( showDaySignal( QDate ) ) );
+ for( i = 0; i < mDaysPerWeek; i++ ) {
+ QLabel *label = new QLabel( this );
+ label->setFont(bfont);
+ label->setFrameStyle(QFrame::Panel|QFrame::Raised);
+ label->setLineWidth(1);
+ label->setAlignment(AlignCenter);
+ mDayLabels.insert( i, label );
}
- }
- mContextMenu = eventPopup();
- // updateConfig(); //useless here
+ bfont.setBold( false );
+ mWeekLabels.resize( mNumWeeks+1 );
+ for( i = 0; i < mNumWeeks+1; i++ ) {
+ KOWeekButton *label = new KOWeekButton( this );
+ label->setFont(bfont);
+ connect( label, SIGNAL( selectWeekNum ( int )),this, SIGNAL( selectWeekNum ( int )) );
+ label->setFlat(true);
+ QWhatsThis::add(label,i18n("Click on the week number to\nshow week in agenda view"));
+ //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
+ //label->setLineWidth(1);
+ //label->setAlignment(AlignCenter);
+ mWeekLabels.insert( i, label );
+ }
+ mWeekLabels[mNumWeeks]->setText( i18n("W"));
+ int row, col;
+ mCells.resize( mNumCells );
+ for( row = 0; row < mNumWeeks; ++row ) {
+ for( col = 0; col < mDaysPerWeek; ++col ) {
+ MonthViewCell *cell = new MonthViewCell( this );
+ mCells.insert( row * mDaysPerWeek + col, cell );
+
+ connect( cell, SIGNAL( defaultAction( Incidence * ) ),
+ SLOT( defaultAction( Incidence * ) ) );
+ connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
+ SIGNAL( newEventSignal( QDateTime ) ) );
+ connect( cell, SIGNAL( showDaySignal( QDate ) ),
+ SIGNAL( showDaySignal( QDate ) ) );
+ }
+ }
- emit incidenceSelected( 0 );
+ mContextMenu = eventPopup();
+ // updateConfig(); //useless here
+
+ emit incidenceSelected( 0 );
}
KOMonthView::~KOMonthView()
{
- delete mContextMenu;
+ delete mContextMenu;
}
int KOMonthView::maxDatesHint()
{
- return mNumCells;
+ return mNumCells;
}
int KOMonthView::currentDateCount()
{
- return mNumCells;
+ return mNumCells;
}
QPtrList<Incidence> KOMonthView::selectedIncidences()
{
- QPtrList<Incidence> selected;
+ QPtrList<Incidence> selected;
- if ( mSelectedCell ) {
- Incidence *incidence = mSelectedCell->selectedIncidence();
- if ( incidence ) selected.append( incidence );
- }
+ if ( mSelectedCell ) {
+ Incidence *incidence = mSelectedCell->selectedIncidence();
+ if ( incidence ) selected.append( incidence );
+ }
- return selected;
+ return selected;
}
DateList KOMonthView::selectedDates()
{
- DateList selected;
+ DateList selected;
- if ( mSelectedCell ) {
- QDate qd = mSelectedCell->selectedIncidenceDate();
- if ( qd.isValid() ) selected.append( qd );
- }
+ if ( mSelectedCell ) {
+ QDate qd = mSelectedCell->selectedIncidenceDate();
+ if ( qd.isValid() ) selected.append( qd );
+ }
- return selected;
+ return selected;
}
void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd,
const QDate &td)
{
#ifndef KORG_NOPRINTER
- calPrinter->preview(CalPrinter::Month, fd, td);
+ calPrinter->preview(CalPrinter::Month, fd, td);
#endif
}
void KOMonthView::updateConfig()
{
- mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
-
- QFontMetrics fontmetric(mDayLabels[0]->font());
- mWidthLongDayLabel = 0;
-
- for (int i = 0; i < 7; i++) {
- int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
- if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
- }
- bool temp = mShowSatSunComp ;
- mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
- if ( temp != KOPrefs::instance()->mMonthViewSatSunTog )
- computeLayout();
- updateDayLabels();
- //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks);
- int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks;
- //resizeEvent( 0 );
- for (uint i = 0; i < mCells.count(); ++i) {
- mCells[i]->updateConfig();
- }
+ mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
+
+ QFontMetrics fontmetric(mDayLabels[0]->font());
+ mWidthLongDayLabel = 0;
+
+ for (int i = 0; i < 7; i++) {
+ int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
+ if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
+ }
+ bool temp = mShowSatSunComp ;
+ mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
+ if ( temp != KOPrefs::instance()->mMonthViewSatSunTog )
+ computeLayout();
+ updateDayLabels();
+ //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks);
+ int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks;
+ //resizeEvent( 0 );
+ for (uint i = 0; i < mCells.count(); ++i) {
+ mCells[i]->updateConfig();
+ }
#ifdef DESKTOP_VERSION
- MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips);
+ MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips);
#endif
}
void KOMonthView::updateDayLabels()
{
- for (int i = 0; i < 7; i++) {
- if (mWeekStartsMonday) {
- bool show = mShortDayLabels;
- if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > mDayLabels[i]->width() )
- show = true;
- mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show));
- } else {
- if (i==0) mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabels));
- else mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabels));
+ for (int i = 0; i < 7; i++) {
+ if (mWeekStartsMonday) {
+ bool show = mShortDayLabels;
+ if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > mDayLabels[i]->width() )
+ show = true;
+ mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show));
+ } else {
+ if (i==0) mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabels));
+ else mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabels));
+ }
}
- }
}
void KOMonthView::showDates(const QDate &start, const QDate &)
{
-// kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl;
+ // kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl;
- mStartDate = start;
+ mStartDate = start;
- int startWeekDay = mWeekStartsMonday ? 1 : 7;
+ int startWeekDay = mWeekStartsMonday ? 1 : 7;
- while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) {
- mStartDate = mStartDate.addDays( -1 );
- }
+ while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) {
+ mStartDate = mStartDate.addDays( -1 );
+ }
- bool primary = false;
- uint i;
- for( i = 0; i < mCells.size(); ++i ) {
- QDate date = mStartDate.addDays( i );
- mCells[i]->setDate( date );
+ bool primary = false;
+ uint i;
+ for( i = 0; i < mCells.size(); ++i ) {
+ QDate date = mStartDate.addDays( i );
+ mCells[i]->setDate( date );
#ifndef KORG_NOPLUGINS
- // add holiday, if present
- QString hstring(KOCore::self()->holiday(date));
- mCells[i]->setHoliday( hstring );
+ // add holiday, if present
+ QString hstring(KOCore::self()->holiday(date));
+ mCells[i]->setHoliday( hstring );
#endif
- }
- QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 );
- for( i = 0; i < 6; ++i ) {
- int wno;
- // remember, according to ISO 8601, the first week of the year is the
- // first week that contains a thursday. Thus we must subtract off 4,
- // not just 1.
- int dayOfYear = date.dayOfYear();
- if (dayOfYear % 7 != 0)
- wno = dayOfYear / 7 + 1;
- else
- wno =dayOfYear / 7;
- mWeekLabels[i]->setWeekNum( wno );
- date = date.addDays( 7 );
- }
- updateView();
+ }
+ QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 );
+ for( i = 0; i < 6; ++i ) {
+ int wno;
+ // remember, according to ISO 8601, the first week of the year is the
+ // first week that contains a thursday. Thus we must subtract off 4,
+ // not just 1.
+ int dayOfYear = date.dayOfYear();
+ if (dayOfYear % 7 != 0)
+ wno = dayOfYear / 7 + 1;
+ else
+ wno =dayOfYear / 7;
+ mWeekLabels[i]->setWeekNum( wno );
+ date = date.addDays( 7 );
+ }
+ updateView();
}
void KOMonthView::showEvents(QPtrList<Event>)
{
qDebug("KOMonthView::selectEvents is not implemented yet. ");
}
void KOMonthView::changeEventDisplay(Event *, int)
{
- // this should be re-written to be much more efficient, but this
- // quick-and-dirty-hack gets the job done for right now.
- updateView();
+ // this should be re-written to be much more efficient, but this
+ // quick-and-dirty-hack gets the job done for right now.
+ updateView();
}
void KOMonthView::updateView()
-{
+{
+
if ( !updatePossible )
return;
//qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
int i;
- for( i = 0; i < mCells.count(); ++i ) {
- mCells[i]->updateCell();
- }
+ for( i = 0; i < mCells.count(); ++i ) {
+ mCells[i]->updateCell();
+ }
- //qDebug("KOMonthView::updateView() ");
- processSelectionChange();
- // qDebug("---------------------------------------------------------------------+ ");
+ //qDebug("KOMonthView::updateView() ");
+ processSelectionChange();
+ // qDebug("---------------------------------------------------------------------+ ");
+ setFocus();
}
void KOMonthView::resizeEvent(QResizeEvent * e)
{
computeLayout();
}
void KOMonthView::computeLayout()
{
- // select the appropriate heading string size. E.g. "Wednesday" or "Wed".
- // note this only changes the text if the requested size crosses the
- // threshold between big enough to support the full name and not big
- // enough.
+ // select the appropriate heading string size. E.g. "Wednesday" or "Wed".
+ // note this only changes the text if the requested size crosses the
+ // threshold between big enough to support the full name and not big
+ // enough.
int daysToShow = 7;
bool combinedSatSun = false;
if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
daysToShow = 6;
combinedSatSun = true;
}
int tWid = topLevelWidget()->size().width();
int tHei = topLevelWidget()->size().height();
int wid = size().width();//e
int hei = size().height()-1;
if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei )
return;
//qDebug("KOMonthView::computeLayout()------------------------------------ ");
QFontMetrics fm ( mWeekLabels[0]->font() );
int weeklabelwid = fm.width( "888" );
wid -= weeklabelwid;
int colWid = wid / daysToShow;
int lastCol = wid - ( colWid*6 );
int dayLabelHei = mDayLabels[0]->sizeHint().height();
int cellHei = (hei - dayLabelHei) /6;
int colModulo = wid % daysToShow;
int rowModulo = (hei- dayLabelHei) % 6;
//qDebug("rowmod %d ", rowModulo);
int i;
int x,y,w,h;
x= 0;
y= 0;
w = colWid;
h = dayLabelHei ;
for ( i = 0; i < 7; i++) {
if ( i == daysToShow-colModulo )
++w;
if ( combinedSatSun ) {
if ( i >= daysToShow-1 ) {
mDayLabels[i]->setGeometry( x+weeklabelwid,y,w/2,h);
x -= w/2 ;
}
else
mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h);
} else
mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h);
x += w;
}
x= 0;
y= dayLabelHei;
w = colWid;
h = cellHei ;
for ( i = 0; i < mCells.count(); ++i) {
w = colWid;
if ( ((i) % 7) >= 7-colModulo ) {
++w;
}
if ( i == (6-rowModulo)*7)
++h;
if ( combinedSatSun ) {
if ( (i)%7 >= daysToShow-1 ) {
if ( (i)%7 == daysToShow-1 ) {
mCells[i]->setGeometry ( x+weeklabelwid,y,w,h/2 );
x -= w ;y += h/2;
} else {
mCells[i]->setGeometry ( x+weeklabelwid,y,w,h-h/2 );
y -= h/2;
}
} else
mCells[i]->setGeometry ( x+weeklabelwid,y,w,h );
}
else
mCells[i]->setGeometry ( x+weeklabelwid,y,w,h );
x += w;
if ( x + w/2 > wid ) {
x = 0;
y += h;
}
}
y= dayLabelHei;
h = cellHei ;
for ( i = 0; i < 6; i++) {
if ( i == (6-rowModulo))
++h;
mWeekLabels[i]->setGeometry( 0,y,weeklabelwid,h);
y += h;
}
mWeekLabels[6]->setGeometry( 0,0,weeklabelwid,dayLabelHei);
// qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height());
//qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height());
mShortDayLabels = mDayLabels[0]->width() < mWidthLongDayLabel ;
updateDayLabels();
bool forceUpdate = !updatePossible;
updatePossible = true;
if ( forceUpdate )
updateView();
}
void KOMonthView::showContextMenu( Incidence *incidence )
{
- mContextMenu->showIncidencePopup(incidence);
- /*
- if( incidence && incidence->type() == "Event" ) {
- Event *event = static_cast<Event *>(incidence);
- mContextMenu->showEventPopup(event);
- } else {
- kdDebug() << "MonthView::showContextMenu(): cast failed." << endl;
- }
- */
+ mContextMenu->showIncidencePopup(incidence);
+ /*
+ if( incidence && incidence->type() == "Event" ) {
+ Event *event = static_cast<Event *>(incidence);
+ mContextMenu->showEventPopup(event);
+ } else {
+ kdDebug() << "MonthView::showContextMenu(): cast failed." << endl;
+ }
+ */
}
MonthViewCell * KOMonthView::selectedCell( )
{
return mSelectedCell;
}
void KOMonthView::setSelectedCell( MonthViewCell *cell )
{
// qDebug("KOMonthView::setSelectedCell ");
if ( mSelectedCell && mSelectedCell != cell ) {
MonthViewCell * mvc = mSelectedCell;
mSelectedCell = cell;
mvc->deselect();
} else
mSelectedCell = cell;
- // if ( mSelectedCell )
-// mSelectedCell->select();
- if ( !mSelectedCell )
- emit incidenceSelected( 0 );
- else
- emit incidenceSelected( mSelectedCell->selectedIncidence() );
+ // if ( mSelectedCell )
+ // mSelectedCell->select();
+ if ( !mSelectedCell )
+ emit incidenceSelected( 0 );
+ else
+ emit incidenceSelected( mSelectedCell->selectedIncidence() );
}
void KOMonthView::processSelectionChange()
{
- QPtrList<Incidence> incidences = selectedIncidences();
- if (incidences.count() > 0) {
- emit incidenceSelected( incidences.first() );
- } else {
- emit incidenceSelected( 0 );
- }
+ QPtrList<Incidence> incidences = selectedIncidences();
+ if (incidences.count() > 0) {
+ emit incidenceSelected( incidences.first() );
+ } else {
+ emit incidenceSelected( 0 );
+ }
}
void KOMonthView::clearSelection()
{
- if ( mSelectedCell ) {
- mSelectedCell->deselect();
- mSelectedCell = 0;
- }
+ if ( mSelectedCell ) {
+ mSelectedCell->deselect();
+ mSelectedCell = 0;
+ }
}
void KOMonthView::keyPressEvent ( QKeyEvent * e )
{
-
- e->ignore();
-
+ switch(e->key()) {
+ break;
+ case Key_Up:
+ {
+ emit prevMonth();
+ setFocus();
+ }
+ e->accept();
+ break;
+ case Key_Down:
+ {
+ emit nextMonth();
+ setFocus();
+ }
+ e->accept();
+ break;
+ default:
+ e->ignore();
+ break;
+ }
}
diff --git a/korganizer/komonthview.h b/korganizer/komonthview.h
index a965bf3..50903b3 100644
--- a/korganizer/komonthview.h
+++ b/korganizer/komonthview.h
@@ -48,225 +48,227 @@ class KOWeekButton : public QPushButton
KOWeekButton( QWidget *parent=0, const char *name=0 ) :
QPushButton( parent, name)
{
connect( this, SIGNAL( clicked() ),
SLOT( bottonClicked() ));
mNumber = -1;
}
void setWeekNum ( int num ) {mNumber = num; setText( QString::number ( num ));}
signals:
void selectWeekNum ( int );
private:
int mNumber;
private slots :
void bottonClicked() { if ( mNumber > 0 ) emit selectWeekNum ( mNumber ); }
};
class KNoScrollListBox: public QListBox
{
Q_OBJECT
public:
KNoScrollListBox(QWidget *parent=0, const char *name=0);
~KNoScrollListBox();
QString getWhatsThisText(QPoint p) ;
signals:
void shiftDown();
void shiftUp();
void rightClick();
protected slots:
void keyPressEvent(QKeyEvent *);
void keyReleaseEvent(QKeyEvent *);
void mousePressEvent(QMouseEvent *);
private:
KNOWhatsThis * mWT;
};
class MonthViewItem: public QListBoxItem
{
public:
MonthViewItem( Incidence *, QDate qd, const QString & title );
void setRecur(bool on) { mRecur = on; }
void setAlarm(bool on) { mAlarm = on; }
void setReply(bool on) { mReply = on; }
void setMoreInfo(bool on) { mInfo = on; }
void setPalette(const QPalette &p) { mPalette = p; }
QPalette palette() const { return mPalette; }
Incidence *incidence() const { return mIncidence; }
QDate incidenceDate() { return mDate; }
protected:
virtual void paint(QPainter *);
virtual int height(const QListBox *) const;
virtual int width(const QListBox *) const;
private:
bool mRecur;
bool mAlarm;
bool mReply;
bool mInfo;
QPalette mPalette;
QDate mDate;
Incidence *mIncidence;
};
class KOMonthView;
class MonthViewCell : public QWidget
{
Q_OBJECT
public:
MonthViewCell( KOMonthView * );
void setDate( const QDate & );
QDate date() const;
void setPrimary( bool );
bool isPrimary() const;
void setHoliday( bool );
void setHoliday( const QString & );
void updateCell();
void updateConfig();
void enableScrollBars( bool );
Incidence *selectedIncidence();
QDate selectedIncidenceDate();
void deselect();
void select();
void clear();
#ifdef DESKTOP_VERSION
static QToolTipGroup *toolTipGroup();
#endif
signals:
void defaultAction( Incidence * );
void newEventSignal( QDateTime );
void showDaySignal( QDate );
protected:
void resizeEvent( QResizeEvent * );
protected slots:
void defaultAction( QListBoxItem * );
void contextMenu( QListBoxItem * );
void selection( QListBoxItem * );
void cellClicked( QListBoxItem * );
void newEvent();
void showDay();
private:
KOMonthView *mMonthView;
QDate mDate;
bool mPrimary;
bool mHoliday;
QString mHolidayString;
//QLabel *mLabel;
QPushButton *mLabel;
QListBox *mItemList;
#ifdef DESKTOP_VERSION
static QToolTipGroup *mToolTipGroup;
#endif
QSize mLabelSize;
QSize mLabelBigSize;
QPalette mHolidayPalette;
QPalette mStandardPalette;
QPalette mPrimaryPalette;
QPalette mNonPrimaryPalette;
void setMyPalette();
QPalette getPalette ();
void keyPressEvent ( QKeyEvent * ) ;
};
class KOMonthView: public KOEventView
{
Q_OBJECT
public:
KOMonthView(Calendar *cal, QWidget *parent = 0, const char *name = 0 );
~KOMonthView();
/** Returns maximum number of days supported by the komonthview */
virtual int maxDatesHint();
/** Returns number of currently shown dates. */
virtual int currentDateCount();
/** returns the currently selected events */
virtual QPtrList<Incidence> selectedIncidences();
/** returns dates of the currently selected events */
virtual DateList selectedDates();
virtual void printPreview(CalPrinter *calPrinter,
const QDate &, const QDate &);
bool isMonthView() { return true; }
bool isUpdatePossible() { return updatePossible; }
MonthViewCell * selectedCell();
public slots:
virtual void updateView();
virtual void updateConfig();
virtual void showDates(const QDate &start, const QDate &end);
virtual void showEvents(QPtrList<Event> eventList);
void changeEventDisplay(Event *, int);
void clearSelection();
void showContextMenu( Incidence * );
void setSelectedCell( MonthViewCell * );
protected slots:
void processSelectionChange();
signals:
+ void nextMonth();
+ void prevMonth();
void selectWeekNum ( int );
void showDaySignal( QDate );
protected:
void resizeEvent(QResizeEvent *);
void viewChanged();
void updateDayLabels();
private:
bool updatePossible;
int mDaysPerWeek;
int mNumWeeks;
int mNumCells;
bool mWeekStartsMonday;
bool mShowSatSunComp;
void computeLayout();
QPtrVector<MonthViewCell> mCells;
QPtrVector<QLabel> mDayLabels;
QPtrVector<KOWeekButton> mWeekLabels;
bool mShortDayLabels;
int mWidthLongDayLabel;
QDate mStartDate;
MonthViewCell *mSelectedCell;
KOEventPopupMenu *mContextMenu;
void keyPressEvent ( QKeyEvent * ) ;
};
#endif
diff --git a/korganizer/koviewmanager.cpp b/korganizer/koviewmanager.cpp
index 94c459b..e8d5ab1 100644
--- a/korganizer/koviewmanager.cpp
+++ b/korganizer/koviewmanager.cpp
@@ -268,323 +268,327 @@ void KOViewManager::showListView()
connect( mListView, SIGNAL( signalNewEvent() ),
mMainView, SLOT( newEvent() ) );
connect(mMainView, SIGNAL(configChanged()), mListView, SLOT(updateConfig()));
connect( mListView, SIGNAL( cloneIncidenceSignal( Incidence * ) ),
mMainView, SLOT ( cloneIncidence( Incidence * ) ) );
connect( mListView, SIGNAL( cancelIncidenceSignal( Incidence * ) ),
mMainView, SLOT ( cancelIncidence( Incidence * ) ) );
connect( mListView, SIGNAL( moveIncidenceSignal( Incidence * ) ),
mMainView, SLOT ( moveIncidence( Incidence * ) ) );
connect( mListView, SIGNAL( beamIncidenceSignal( Incidence * ) ),
mMainView, SLOT ( beamIncidence( Incidence * ) ) );
}
// bool temp = mFlagShowNextxDays;
//globalFlagBlockPainting = true;
globalFlagBlockAgenda = 1;
if ( KOPrefs::instance()->mListViewMonthTimespan ) {
mMainView->setBlockShowDates( true );
mMainView->dateNavigator()->selectMonth();
mMainView->setBlockShowDates( false );
}
showView(mListView, KOPrefs::instance()->mFullViewTodo);
//mFlagShowNextxDays = temp;
}
void KOViewManager::showAgendaView( bool fullScreen )
{
mMainView->dialogManager()->hideSearchDialog();
// qDebug("KOViewManager::showAgendaView ");
bool full;
full = fullScreen;
if (!mAgendaView) {
full = false;
mAgendaView = new KOAgendaView(mMainView->calendar(), mMainView->viewStack(), "KOViewManager::AgendaView");
addView(mAgendaView);
#ifndef DESKTOP_VERSION
QPEApplication::setStylusOperation( mAgendaView, QPEApplication::RightOnHold );
#endif
connect( mAgendaView, SIGNAL( incidenceChanged(Incidence *, int )),
mMainView, SLOT( changeIncidenceDisplay( Incidence *, int ) ));
// SIGNALS/SLOTS FOR DAY/WEEK VIEW
connect(mAgendaView,SIGNAL(newEventSignal(QDateTime)),
mMainView, SLOT(newEvent(QDateTime)));
// connect(mAgendaView,SIGNAL(newEventSignal(QDateTime,QDateTime)),
// mMainView, SLOT(newEvent(QDateTime,QDateTime)));
connect(mAgendaView,SIGNAL(newEventSignal(QDate)),
mMainView, SLOT(newEvent(QDate)));
connect(mAgendaView, SIGNAL(editIncidenceSignal(Incidence *)),
mMainView, SLOT(editIncidence(Incidence *)));
connect(mAgendaView, SIGNAL(showIncidenceSignal(Incidence *)),
mMainView, SLOT(showIncidence(Incidence *)));
connect(mAgendaView, SIGNAL(deleteIncidenceSignal(Incidence *)),
mMainView, SLOT(deleteIncidence(Incidence *)));
connect( mAgendaView, SIGNAL( incidenceSelected( Incidence * ) ),
mMainView, SLOT( processMainViewSelection( Incidence * ) ) );
connect(mAgendaView, SIGNAL( toggleExpand() ),
mMainView, SLOT( toggleExpand() ) );
connect(mMainView, SIGNAL( calendarViewExpanded( bool ) ),
mAgendaView, SLOT( setExpandedButton( bool ) ) );
connect( mAgendaView, SIGNAL( cloneIncidenceSignal(Incidence *) ),
mMainView, SLOT(cloneIncidence(Incidence *) ) ) ;
connect( mAgendaView, SIGNAL( cancelIncidenceSignal(Incidence *) ),
mMainView, SLOT(cancelIncidence(Incidence *) ) ) ;
connect(mMainView, SIGNAL(configChanged()), mAgendaView, SLOT(updateConfig()));
connect( mMainView, SIGNAL( todoModified( Todo *, int )), mAgendaView,
SLOT( updateTodo( Todo *, int ) ) );
connect( mAgendaView,SIGNAL( todoMoved( Todo *, int )),
mMainView, SIGNAL( todoModified( Todo *, int )));
connect( mAgendaView, SIGNAL( moveIncidenceSignal( Incidence * ) ),
mMainView, SLOT ( moveIncidence( Incidence * ) ) );
connect( mAgendaView, SIGNAL( beamIncidenceSignal( Incidence * ) ),
mMainView, SLOT ( beamIncidence( Incidence * ) ) );
mAgendaView->readSettings();
mAgendaView->updateConfig();
}
showView( mAgendaView, full);
}
void KOViewManager::showDayView()
{
mFlagShowNextxDays = false;
globalFlagBlockLabel = 1;
globalFlagBlockAgenda = 1;
if ( mCurrentAgendaView != 1 )
mCurrentAgendaView = -1;
showAgendaView();
qApp->processEvents();
globalFlagBlockAgenda = 2;
globalFlagBlockLabel = 0;
mMainView->dateNavigator()->selectDates( 1 );
mCurrentAgendaView = 1 ;
}
void KOViewManager::showWorkWeekView()
{
mFlagShowNextxDays = false;
globalFlagBlockAgenda = 1;
globalFlagBlockLabel = 1;
if ( mCurrentAgendaView != 5 )
mCurrentAgendaView = -1;
showAgendaView();
qApp->processEvents();
globalFlagBlockAgenda = 2;
globalFlagBlockLabel = 0;
mMainView->dateNavigator()->selectWorkWeek();
mCurrentAgendaView = 5 ;
}
void KOViewManager::showWeekView()
{
/*
globalFlagBlockAgenda = 2;
qDebug("4globalFlagBlockAgenda = 2; ");
//globalFlagBlockPainting = true;
mMainView->dateNavigator()->selectWeek();
showAgendaView();
*/
mFlagShowNextxDays = false;
globalFlagBlockAgenda = 1;
globalFlagBlockLabel = 1;
if ( mCurrentAgendaView != 7 )
mCurrentAgendaView = -1;
showAgendaView();
qApp->processEvents();
globalFlagBlockAgenda = 2;
globalFlagBlockLabel = 0;
mMainView->dateNavigator()->selectWeek();
mCurrentAgendaView = 7 ;
}
void KOViewManager::showNextXView()
{
globalFlagBlockAgenda = 1;
if ( mCurrentAgendaView != 3 )
mCurrentAgendaView = -1;
showAgendaView(KOPrefs::instance()->mFullViewMonth);
globalFlagBlockAgenda = 2;
mMainView->dateNavigator()->selectDates( QDate::currentDate(),
KOPrefs::instance()->mNextXDays );
mFlagShowNextxDays = true;
mCurrentAgendaView = 3 ;
}
bool KOViewManager::showsNextDays()
{
return mFlagShowNextxDays;
}
void KOViewManager::showMonthView()
{
if (!mMonthView) {
mMonthView = new KOMonthView(mMainView->calendar(), mMainView->viewStack(), "KOViewManager::MonthView");
addView(mMonthView);
// mMonthView->show();
// SIGNALS/SLOTS FOR MONTH VIEW
connect(mMonthView, SIGNAL(newEventSignal(QDateTime)),
mMainView, SLOT(newEvent(QDateTime)));
connect(mMonthView, SIGNAL(showIncidenceSignal(Incidence *)),
mMainView, SLOT(showIncidence(Incidence *)));
connect(mMonthView, SIGNAL(editIncidenceSignal(Incidence *)),
mMainView, SLOT(editIncidence(Incidence *)));
connect(mMonthView, SIGNAL(deleteIncidenceSignal(Incidence *)),
mMainView, SLOT(deleteIncidence(Incidence *)));
connect( mMonthView, SIGNAL( incidenceSelected( Incidence * ) ),
mMainView, SLOT( processMainViewSelection( Incidence * ) ) );
connect( mMonthView, SIGNAL( cloneIncidenceSignal( Incidence * ) ),
mMainView, SLOT ( cloneIncidence( Incidence * ) ) );
connect( mMonthView, SIGNAL( cancelIncidenceSignal( Incidence * ) ),
mMainView, SLOT ( cancelIncidence( Incidence * ) ) );
connect( mMonthView, SIGNAL( moveIncidenceSignal( Incidence * ) ),
mMainView, SLOT ( moveIncidence( Incidence * ) ) );
connect( mMonthView, SIGNAL( beamIncidenceSignal( Incidence * ) ),
mMainView, SLOT ( beamIncidence( Incidence * ) ) );
connect( mMonthView, SIGNAL( selectWeekNum( int ) ),
mMainView, SLOT ( selectWeekNum( int ) ) );
connect( mMonthView, SIGNAL( showDaySignal( QDate ) ),
mMainView, SLOT ( showDay( QDate ) ) );
connect(mMainView, SIGNAL(configChanged()), mMonthView, SLOT(updateConfig()));
+ connect( mMonthView, SIGNAL(nextMonth() ),
+ mMainView->navigatorBar(), SIGNAL(goNextMonth() ) );
+ connect( mMonthView, SIGNAL(prevMonth() ),
+ mMainView->navigatorBar(), SIGNAL(goPrevMonth() ) );
mMonthView->updateConfig();
}
globalFlagBlockAgenda = 1;
//mFlagShowNextxDays = false;
// if(mMonthView == mCurrentView) return;
mMainView->dateNavigator()->selectMonth();
// DateList tmpList = mMainView->dateNavigator()->selectedDates( );
//mMonthView->showDates(tmpList.first(), tmpList.last());
showView(mMonthView, true );
}
void KOViewManager::showTodoView()
{
//mFlagShowNextxDays = false;
if ( !mTodoView ) {
mTodoView = new KOTodoView( mMainView->calendar(), mMainView->viewStack(),
"KOViewManager::TodoView" );
addView( mTodoView );
// QPEApplication::setStylusOperation( mTodoView, QPEApplication::RightOnHold );
// SIGNALS/SLOTS FOR TODO VIEW
connect( mTodoView, SIGNAL( newTodoSignal() ),
mMainView, SLOT( newTodo() ) );
connect( mTodoView, SIGNAL( newSubTodoSignal( Todo * ) ),
mMainView, SLOT( newSubTodo( Todo *) ) );
connect( mTodoView, SIGNAL( showTodoSignal( Todo *) ),
mMainView, SLOT( showTodo( Todo * ) ) );
connect( mTodoView, SIGNAL( editTodoSignal( Todo * ) ),
mMainView, SLOT( editTodo( Todo * ) ) );
connect( mTodoView, SIGNAL( deleteTodoSignal( Todo * ) ),
mMainView, SLOT( deleteTodo( Todo * ) ) );
connect( mTodoView, SIGNAL( purgeCompletedSignal() ),
mMainView, SLOT( purgeCompleted() ) );
connect( mTodoView, SIGNAL( incidenceSelected( Incidence * ) ),
mMainView, SLOT( processMainViewSelection( Incidence * ) ) );
connect( mMainView, SIGNAL( configChanged() ), mTodoView,
SLOT( updateConfig() ) );
connect( mMainView, SIGNAL( todoModified( Todo *, int )), mTodoView,
SLOT( updateTodo( Todo *, int ) ) );
connect( mTodoView, SIGNAL( todoModifiedSignal( Todo *, int ) ),
mMainView, SIGNAL ( todoModified( Todo *, int ) ) );
connect( mTodoView, SIGNAL( cloneTodoSignal( Incidence * ) ),
mMainView, SLOT ( cloneIncidence( Incidence * ) ) );
connect( mTodoView, SIGNAL( cancelTodoSignal( Incidence * ) ),
mMainView, SLOT ( cancelIncidence( Incidence * ) ) );
connect( mTodoView, SIGNAL( unparentTodoSignal( Todo * ) ),
mMainView, SLOT ( todo_unsub( Todo * ) ) );
connect( mTodoView, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ),
mMainView, SLOT ( todo_resub( Todo *, Todo *) ) );
connect( mTodoView, SIGNAL( moveTodoSignal( Incidence * ) ),
mMainView, SLOT ( moveIncidence( Incidence * ) ) );
connect( mTodoView, SIGNAL( beamTodoSignal( Incidence * ) ),
mMainView, SLOT ( beamIncidence( Incidence * ) ) );
KConfig *config = KOGlobals::config();
mTodoView->restoreLayout(config,"Todo View");
mTodoView->setNavigator( mMainView->dateNavigator() );
}
globalFlagBlockAgenda = 1;
showView( mTodoView, true );
}
void KOViewManager::showJournalView()
{
//mFlagShowNextxDays = false;
if (!mJournalView) {
mJournalView = new KOJournalView(mMainView->calendar(),mMainView->viewStack(),
"KOViewManager::JournalView");
connect( mMainView, SIGNAL( configChanged() ), mJournalView,
SLOT( updateConfig() ) );
connect(mJournalView, SIGNAL(deleteJournal(Journal *) ), mMainView,SLOT(deleteJournal(Journal *)) );
addView(mJournalView);
}
showView(mJournalView);
}
void KOViewManager::showTimeSpanView()
{
//mFlagShowNextxDays = false;
if (!mTimeSpanView) {
mTimeSpanView = new KOTimeSpanView(mMainView->calendar(),mMainView->viewStack(),
"KOViewManager::TimeSpanView");
addView(mTimeSpanView);
mTimeSpanView->readSettings();
}
showView(mTimeSpanView);
}
Incidence *KOViewManager::currentSelection()
{
if (!mCurrentView) return 0;
if ( mCurrentView == mListView ) {
if ( mListView->currentItem() )
return mListView->currentItem();
}
return mCurrentView->selectedIncidences().first();
}
QDate KOViewManager::currentSelectionDate()
{
QDate qd;
if (mCurrentView) {
DateList qvl = mCurrentView->selectedDates();
if (!qvl.isEmpty()) qd = qvl.first();
}
return qd;
}
void KOViewManager::addView(KOrg::BaseView *view)
{
#if QT_VERSION >= 0x030000
mMainView->viewStack()->addWidget( view );
#else
mMainView->viewStack()->addWidget( view, 1 );
#endif
}
void KOViewManager::setDocumentId( const QString &id )
{
if (mTodoView) mTodoView->setDocumentId( id );
}
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 145b36c..950d2ec 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -1547,373 +1547,373 @@ void MainWindow::keyPressEvent ( QKeyEvent * e )
mView->viewManager()->showMonthView();
showSelectedDates = true;
break;
case Qt::Key_Insert:
mView->newEvent();
break;
case Qt::Key_S :
if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
mView->newSubTodo();
else
mView->dialogManager()->showSearchDialog();
break;
case Qt::Key_Y :
case Qt::Key_Z :
mView->viewManager()->showWorkWeekView();
showSelectedDates = true;
break;
case Qt::Key_U :
mView->viewManager()->showWeekView();
showSelectedDates = true;
break;
case Qt::Key_H :
keyBindings();
break;
case Qt::Key_W:
mView->viewManager()->showWhatsNextView();
break;
case Qt::Key_L:
mView->viewManager()->showListView();
break;
case Qt::Key_N:
mView->viewManager()->showNextXView();
showSelectedDates = true;
break;
case Qt::Key_V:
mView->viewManager()->showTodoView();
break;
case Qt::Key_C:
mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() );
break;
case Qt::Key_P:
mView->showDatePicker( );
break;
case Qt::Key_F:
if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
mView->editFilters();
else
mView->toggleFilter();
break;
case Qt::Key_X:
mView->toggleDateNavigatorWidget();
break;
case Qt::Key_Space:
mView->toggleExpand();
break;
case Qt::Key_A:
mView->toggleAllDaySize();
break;
case Qt::Key_T:
if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
mView->newTodo();
else {
mView->goToday();
showSelectedDates = true;
}
break;
case Qt::Key_J:
mView->viewManager()->showJournalView();
break;
case Qt::Key_B:
mView->editIncidenceDescription();;
break;
// case Qt::Key_Return:
case Qt::Key_E:
if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
mView->newEvent();
else
mView->editIncidence();
break;
case Qt::Key_Plus:
size = p->mHourSize +2;
if ( size <= 18 )
configureAgenda( size );
break;
case Qt::Key_Minus:
size = p->mHourSize - 2;
if ( size >= 4 )
configureAgenda( size );
break;
default:
e->ignore();
}
if ( pro > 0 ) {
mView->selectFilter( pro-1 );
}
if ( showSelectedDates ) {
;// setCaptionToDates();
}
}
void MainWindow::fillFilterMenu()
{
selectFilterMenu->clear();
bool disable = false;
selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 );
selectFilterMenu->insertSeparator();
if ( mView->filterView()->filtersEnabled() ) {
selectFilterMenu->insertItem(i18n ( "Turn filter off" ), 1 );
}
else {
selectFilterMenu->insertItem(i18n ( "Turn filter on" ), 1 );
disable = true;
}
selectFilterMenu->insertSeparator();
QPtrList<CalFilter> fili = mView->filters();
CalFilter *curfilter = mView->filterView()->selectedFilter();
CalFilter *filter = fili.first();
int iii = 2;
while(filter) {
selectFilterMenu->insertItem( filter->name(), iii );
if ( filter == curfilter)
selectFilterMenu->setItemChecked( iii, true );
if ( disable )
selectFilterMenu->setItemEnabled( iii, false );
filter = fili.next();
++iii;
}
}
void MainWindow::selectFilter( int fil )
{
if ( fil == 0 ) {
mView->editFilters( );
} else if ( fil == 1 ){
mView->toggleFilerEnabled( );
} else {
mView->selectFilter( fil-2 );
}
}
void MainWindow::configureToolBar( int item )
{
configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) );
KOPrefs *p = KOPrefs::instance();
p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 );
p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 );
p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 );
p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 );
p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 );
p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 );
p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 );
p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 );
p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 );
p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 );
p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 );
p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 );
p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 );
p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 );
p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 );
p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 );
p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 );
p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 );
p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 );
// initActions();
}
void MainWindow::setCaptionToDates()
{
QString selDates;
selDates = KGlobal::locale()->formatDate(mView->startDate(), true);
if (mView->startDate() < mView->endDate() )
selDates += " - " + KGlobal::locale()->formatDate(mView->endDate(), true);
else {
QString addString;
if ( mView->startDate() == QDateTime::currentDateTime().date() )
addString = i18n("Today");
else if ( mView->startDate() == QDateTime::currentDateTime().date().addDays(1) )
addString = i18n("Tomorrow");
if ( !addString.isEmpty() )
selDates = addString+", "+selDates ;
}
setCaption( i18n("Dates: ") + selDates );
}
void MainWindow::showConfigureAgenda( )
{
int iii;
for ( iii = 1;iii<= 10 ;++iii ){
configureAgendaMenu->setItemChecked( (iii+1)*2, false );
}
- configureAgendaMenu->setItemChecked( KOPrefs::instance()->mHourSize, true );
+ configureAgendaMenu->setItemChecked( (KOPrefs::instance()->mHourSize/2)*2, true );
}
void MainWindow::configureAgenda( int item )
{
if ( KOPrefs::instance()->mHourSize == item )
return;
KOPrefs::instance()->mHourSize=item;
mView->viewManager()->agendaView()->updateConfig();
}
void MainWindow::saveCalendar()
{
QString fn = KOPrefs::instance()->mLastSaveFile;
fn = KFileDialog::getSaveFileName( fn, i18n("Save backup filename"), this );
if ( fn == "" )
return;
QFileInfo info;
info.setFile( fn );
QString mes;
bool createbup = true;
if ( info. exists() ) {
mes = i18n("Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )) ;
int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
i18n("Overwrite!"), i18n("Cancel"), 0,
0, 1 );
if ( result != 0 ) {
createbup = false;
}
}
if ( createbup ) {
mView->saveCalendar( fn );
mes = i18n("KO/Pi:Saved %1").arg(fn);
KOPrefs::instance()->mLastSaveFile = fn;
setCaption(mes);
}
}
void MainWindow::loadCalendar()
{
QString fn = KOPrefs::instance()->mLastLoadFile;
fn = KFileDialog::getOpenFileName( fn, i18n("Load backup filename"), this );
if ( fn == "" )
return;
QFileInfo info;
info.setFile( fn );
QString mess;
bool loadbup = true;
if ( info. exists() ) {
mess = i18n("Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
int result = QMessageBox::warning( this, "KO/Pi: Warning!",
mess,
i18n("Load!"), i18n("Cancel"), 0,
0, 1 );
if ( result != 0 ) {
loadbup = false;
}
} else {
QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
i18n("Backup file\ndoes not exist!\nNothing loaded!"), 0, 0,
0, 1 );
return;
}
if ( loadbup ) {
mView->openCalendar( fn );
KOPrefs::instance()->mLastLoadFile = fn;
mess = i18n("KO/Pi:Loaded %1").arg(fn) ;
setCaption(mess);
}
}
void MainWindow::quickImportIcal()
{
importFile( KOPrefs::instance()->mLastImportFile, false );
}
void MainWindow::importFile( QString fn, bool quick )
{
QFileInfo info;
info.setFile( fn );
QString mess;
bool loadbup = true;
if ( !info. exists() ) {
mess = i18n("Import file \n...%1\ndoes not exist!\nNothing imported!\n").arg(fn.right( 30));
int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
mess );
return;
}
int result = 0;
if ( !quick ) {
mess = i18n( "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
result = QMessageBox::warning( this, "KO/Pi: Warning!",
mess,
"Import", "Cancel", 0,
0, 1 );
}
if ( result == 0 ) {
if ( mView->openCalendar( fn, true )) {
KOPrefs::instance()->mLastImportFile = fn;
setCaption(i18n("Imported file successfully"));
} else {
setCaption(i18n("Error importing file"));
}
}
}
void MainWindow::importIcal()
{
QString fn =KOPrefs::instance()->mLastImportFile;
fn =KFileDialog:: getOpenFileName( fn, i18n("Import filename(*.ics/*.vcs)"), this );
if ( fn == "" )
return;
importFile( fn, true );
}
void MainWindow::exportVCalendar()
{
QString fn = KOPrefs::instance()->mLastVcalFile;
fn = KFileDialog::getSaveFileName( fn, i18n("Export vcal filename(*.vcs)"), this );
if ( fn == "" )
return;
QFileInfo info;
info.setFile( fn );
QString mes;
bool createbup = true;
if ( info. exists() ) {
mes = i18n("Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) );
int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
i18n("Overwrite!"), i18n("Cancel"), 0,
0, 1 );
if ( result != 0 ) {
createbup = false;
}
}
if ( createbup ) {
if ( mView->exportVCalendar( fn ) ) {
KOPrefs::instance()->mLastVcalFile = fn;
if ( fn.length() > 20 )
mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ;
else
mes = i18n("KO/Pi:Exported to %1").arg(fn );
setCaption(mes);
}
}
}
void MainWindow::syncFileRequest()
{
if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) {
mSyncManager->slotSyncMenu( 999 );
}
save();
}
void MainWindow::getFile( bool success )
{
if ( ! success ) {
setCaption( i18n("Error receiving file. Nothing changed!") );
return;
}
mView->openCalendar( defaultFileName() );
if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) {
mSyncManager->slotSyncMenu( 999 );
}
setCaption( i18n("Pi-Sync successful!") );
}
void MainWindow::printSel( )
{
mView->viewManager()->agendaView()->agenda()->printSelection();
}
void MainWindow::printCal()
{
mView->print();//mCp->showDialog();
}