summaryrefslogtreecommitdiffabout
path: root/korganizer
Side-by-side diff
Diffstat (limited to 'korganizer') (more/less context) (show whitespace changes)
-rw-r--r--korganizer/calendarview.cpp28
-rw-r--r--korganizer/koagendaview.cpp27
-rw-r--r--korganizer/mainwindow.cpp4
3 files changed, 41 insertions, 18 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 73aa733..a330414 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -4056,27 +4056,49 @@ void CalendarView::resetFocus()
} else
mViewerCallerIsSearchDialog = false;
}
if ( !mViewerCallerIsSearchDialog ) {
//mViewManager->currentView()->setFocus();
//qDebug("sssssssssssssssset focus ");
topLevelWidget()->raise();
setActiveWindow();
//setFocus();
}
mViewerCallerIsSearchDialog = false;
}
void CalendarView::showNextAlarms()
{
QString message;
- if ( mNextAlarmDateTime > QDateTime::currentDateTime() ) {
+ QDateTime nextAl = mCalendar->nextAlarmEventDateTime();
+ if ( nextAl.isValid() && mNextAlarmDateTime > QDateTime::currentDateTime() ) {
QString sum = mCalendar->nextSummary();
QDateTime nextA = mNextAlarmDateTime;
- QDateTime nextAl = mCalendar->nextAlarmEventDateTime();
- message = i18n("The next alarm is on:\n%1\nat: %2\n\n%3\n(%4)").arg( KGlobal::locale()->formatDate(nextA.date() , false)).arg( KGlobal::locale()->formatTime(nextA.time() , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ;
+ QDateTime cur = QDateTime::currentDateTime();
+ int secs = cur.secsTo( nextA );
+ int min = secs /60;
+ int hours = min /60;
+ min = min % 60;
+ int days = hours /24;
+ hours = hours % 24;
+
+ message = i18n("The next alarm is in:\n");
+ if ( days > 1 )
+ message += i18n("%1 days\n").arg( days );
+ else if ( days == 1 )
+ message += i18n("1 day\n");
+ if ( hours > 1 )
+ message += i18n("%1 hours\n").arg( hours );
+ else if ( hours == 1 )
+ message += i18n("1 hour\n");
+ if ( min > 1 )
+ message += i18n("%1 minutes\n").arg( min );
+ else if ( min == 1 )
+ message += i18n("1 minute\n");
+
+ message += i18n("\n(%1)\n\n%2\n(%3)\n").arg( KGlobal::locale()->formatDateTime(nextA , false)).arg(sum ).arg( KGlobal::locale()->formatDateTime(nextAl , false)) ;
} else {
message = i18n("There is no next alarm.");
}
KMessageBox::information( this, message);
}
diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp
index 18f242c..f6f390b 100644
--- a/korganizer/koagendaview.cpp
+++ b/korganizer/koagendaview.cpp
@@ -112,111 +112,111 @@ void TimeLabels::drawContents(QPainter *p,int cx, int cy, int cw, int ch)
// return;
// bug: the parameters cx, cy, cw, ch are the areas that need to be
// redrawn, not the area of the widget. unfortunately, this
// code assumes the latter...
// now, for a workaround...
// these two assignments fix the weird redraw bug
cx = contentsX() + 2;
cw = contentsWidth() - 2;
// end of workaround
int cell = ((int)(cy/mCellHeight));
int y = cell * mCellHeight;
QFontMetrics fm = fontMetrics();
QString hour;
QString suffix;
- QString fullTime;
int tW = fm.width("24:00i");
int timeHeight = fm.height();
//timeHeight -= (timeHeight/4-2);
int borderWidth = 0;
QFont nFont = p->font();
if (!KGlobal::locale()->use12Clock())
suffix = "00";
else
borderWidth = 0;
if ( timeHeight > mCellHeight ) {
timeHeight = mCellHeight-1;
int pointS = nFont.pointSize();
while ( pointS > 4 ) {
nFont.setPointSize( pointS );
fm = QFontMetrics( nFont );
if ( fm.height() < mCellHeight )
break;
-- pointS;
}
fm = QFontMetrics( nFont );
borderWidth = 4;
timeHeight = fm.height();
}
timeHeight -= (timeHeight/4-2);
QFont sFont = nFont;
sFont.setPointSize( sFont.pointSize()/2+2 );
QFontMetrics fmS( sFont );
int sHei = fmS.height();
-
+ sHei -= (sHei/4-2);
+ int startW = this->width() - frameWidth();
while (y < cy + ch) {
p->drawLine(cx,y,cx+tW,y);
hour.setNum(cell);
// handle 24h and am/pm time formats
if (KGlobal::locale()->use12Clock()) {
if (cell > 11) suffix = "pm";
else
suffix = "am";
if (cell == 0) hour.setNum(12);
if (cell > 12) hour.setNum(cell - 12);
}
- // create string in format of "XX:XX" or "XXpm/am"
- fullTime = hour;// + suffix;
-
// center and draw the time label
- int timeWidth = fm.width(fullTime+"i");
+ int timeWidth = fm.width(hour+"i");
int tw2 = fm.width(suffix);
- int offset = this->width() - timeWidth - tw2;
+ int offset = startW - timeWidth - tw2 ;
p->setFont( nFont );
- p->drawText(cx - borderWidth + offset, y+ timeHeight, fullTime);
+ p->drawText(cx - borderWidth + offset, y+ timeHeight, hour);
p->setFont( sFont );
- offset += timeWidth;
+ offset = startW - tw2-1;
p->drawText(cx - borderWidth + offset, y+ sHei, suffix);
// increment indices
y += mCellHeight;
cell++;
}
}
/**
Calculates the minimum width.
*/
int TimeLabels::minimumWidth() const
{
return mMiniWidth;
}
/** updates widget's internal state */
void TimeLabels::updateConfig()
{
// set the font
// config->setGroup("Fonts");
// QFont font = config->readFontEntry("TimeBar Font");
setFont(KOPrefs::instance()->mTimeBarFont);
- mMiniWidth = fontMetrics().width("88:88") + 2 ;
+ QString test = "88:88";
+ if (KGlobal::locale()->use12Clock())
+ test += "i";
+ mMiniWidth = fontMetrics().width(test) + frameWidth()*2 +1 ;
// update geometry restrictions based on new settings
setFixedWidth(minimumWidth());
// update HourSize
mCellHeight = KOPrefs::instance()->mHourSize*4;
resizeContents(50,mRows * mCellHeight);
}
/** update time label positions */
void TimeLabels::positionChanged()
{
int adjustment = mAgenda->contentsY();
setContentsPos(0, adjustment);
}
/** */
@@ -823,37 +823,34 @@ void KOAgendaView::createDayLabels()
//qDebug("mLayoutDayLabels->addSpacing %d ", mAgenda->verticalScrollBar()->width()+offset+2 );
dayLabel->setText(">");//QString::number ( mSelectedDates.first().month() ) );
dayLabel->setFont( dlf );
dayLabel->show();
dayLabel->setNum( -2 );
dayLabel->setFixedWidth( mAgenda->verticalScrollBar()->width()+ offset );
//qDebug("setToFixed %d ", mAgenda->verticalScrollBar()->width()+ offset+2);
//mLayoutDayLabels->addSpacing(mAgenda->verticalScrollBar()->width()+ offset+2);
if ( !appendLabels ) {
dayLabel = mDayLabelsList.next();
while ( dayLabel ) {
//qDebug("!dayLabel %d",dayLabel );
dayLabel->hide();
dayLabel = mDayLabelsList.next();
}
}
- //mDayLabelsFrame->show();
- //mDayLabels->show();
- //qDebug("heigt %d %d %d ",mDayLabelsFrame->height(), mDayLabelsFrame->sizeHint().height(), newHight);
- //mDayLabelsFrame->resize( mAgenda->visibleWidth(), newHight );
- mDayLabelsFrame->setFixedHeight( newHight );
+
+ mDayLabelsFrame->setFixedHeight( newHight + 4 );
}
int KOAgendaView::maxDatesHint()
{
// Not sure about the max number of events, so return 0 for now.
return 0;
}
int KOAgendaView::currentDateCount()
{
return mSelectedDates.count();
}
QPtrList<Incidence> KOAgendaView::selectedIncidences()
{
QPtrList<Incidence> selected;
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 7a4275b..ca0d542 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -1710,34 +1710,38 @@ void MainWindow::keyPressEvent ( QKeyEvent * e )
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:
+ if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
+ mView->viewManager()->showNextView();
+ else {
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;