summaryrefslogtreecommitdiffstats
path: root/korganizer/navigatorbar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'korganizer/navigatorbar.cpp')
-rw-r--r--korganizer/navigatorbar.cpp114
1 files changed, 79 insertions, 35 deletions
diff --git a/korganizer/navigatorbar.cpp b/korganizer/navigatorbar.cpp
index 0ece74c57..f663af815 100644
--- a/korganizer/navigatorbar.cpp
+++ b/korganizer/navigatorbar.cpp
@@ -60,55 +60,70 @@ NavigatorBar::NavigatorBar( TQWidget *parent, const char *name )
tfont.setPointSize( 10 );
tfont.setBold( false );
+ // Create a horizontal spacers
+ TQSpacerItem *frontSpacer = new TQSpacerItem( 50, 1, TQSizePolicy::Expanding );
+ TQSpacerItem *endSpacer = new TQSpacerItem( 50, 1, TQSizePolicy::Expanding );
+
bool isRTL = KOGlobals::self()->reverseLayout();
TQPixmap pix;
// Create backward navigation buttons
- mPrevYear = new TQPushButton( this );
pix = KOGlobals::self()->smallIcon( isRTL ? "2rightarrow" : "2leftarrow" );
+ mPrevYear = new TQPushButton( this );
mPrevYear->setPixmap( pix );
mPrevYear->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
- TQToolTip::add( mPrevYear, i18n("Previous year") );
+ TQToolTip::add( mPrevYear, i18n( "Previous year" ) );
pix = KOGlobals::self()->smallIcon( isRTL ? "1rightarrow" : "1leftarrow");
mPrevMonth = new TQPushButton( this );
mPrevMonth->setPixmap( pix );
mPrevMonth->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
- TQToolTip::add( mPrevMonth, i18n("Previous month") );
+ TQToolTip::add( mPrevMonth, i18n( "Previous month" ) );
// Create forward navigation buttons
pix = KOGlobals::self()->smallIcon( isRTL ? "1leftarrow" : "1rightarrow");
mNextMonth = new TQPushButton( this );
mNextMonth->setPixmap( pix );
mNextMonth->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
- TQToolTip::add( mNextMonth, i18n("Next month") );
+ TQToolTip::add( mNextMonth, i18n( "Next month" ) );
pix = KOGlobals::self()->smallIcon( isRTL ? "2leftarrow" : "2rightarrow");
mNextYear = new TQPushButton( this );
mNextYear->setPixmap( pix );
mNextYear->setSizePolicy( TQSizePolicy::Fixed, TQSizePolicy::Fixed );
- TQToolTip::add( mNextYear, i18n("Next year") );
+ TQToolTip::add( mNextYear, i18n( "Next year" ) );
// Create month name button
mMonth = new ActiveLabel( this );
mMonth->setFont( tfont );
mMonth->setAlignment( AlignCenter );
mMonth->setMinimumHeight( mPrevYear->sizeHint().height() );
- TQToolTip::add( mMonth, i18n("Select a month") );
+ TQToolTip::add( mMonth, i18n( "Select a month" ) );
+
+ // Create year button
+ mYear = new ActiveLabel( this );
+ mYear->setFont( tfont );
+ mYear->setAlignment( AlignCenter );
+ mYear->setMinimumHeight( mPrevYear->sizeHint().height() );
+ TQToolTip::add( mYear, i18n( "Select a year" ) );
// set up control frame layout
- TQBoxLayout *ctrlLayout = new TQHBoxLayout( this, 0, 4 );
- ctrlLayout->addWidget( mPrevYear, 3 );
- ctrlLayout->addWidget( mPrevMonth, 3 );
- ctrlLayout->addWidget( mMonth, 3 );
- ctrlLayout->addWidget( mNextMonth, 3 );
- ctrlLayout->addWidget( mNextYear, 3 );
-
- connect( mPrevYear, TQT_SIGNAL( clicked() ), TQT_SIGNAL( goPrevYear() ) );
- connect( mPrevMonth, TQT_SIGNAL( clicked() ), TQT_SIGNAL( goPrevMonth() ) );
- connect( mNextMonth, TQT_SIGNAL( clicked() ), TQT_SIGNAL( goNextMonth() ) );
- connect( mNextYear, TQT_SIGNAL( clicked() ), TQT_SIGNAL( goNextYear() ) );
- connect( mMonth, TQT_SIGNAL( clicked() ), TQT_SLOT( selectMonth() ) );
+ TQHBoxLayout *ctrlLayout = new TQHBoxLayout( this );
+ ctrlLayout->addWidget( mPrevYear );
+ ctrlLayout->addWidget( mPrevMonth );
+ ctrlLayout->addItem( frontSpacer );
+ ctrlLayout->addWidget( mMonth );
+ ctrlLayout->addWidget( mYear );
+ ctrlLayout->addItem( endSpacer );
+ ctrlLayout->addWidget( mNextMonth );
+ ctrlLayout->addWidget( mNextYear );
+
+ connect( mPrevYear, TQT_SIGNAL( clicked() ), TQT_SIGNAL( prevYearClicked() ) );
+ connect( mPrevMonth, TQT_SIGNAL( clicked() ), TQT_SIGNAL( prevMonthClicked() ) );
+ connect( mNextMonth, TQT_SIGNAL( clicked() ), TQT_SIGNAL( nextMonthClicked() ) );
+ connect( mNextYear, TQT_SIGNAL( clicked() ), TQT_SIGNAL( nextYearClicked() ) );
+ connect( mMonth, TQT_SIGNAL( clicked() ), TQT_SLOT( selectMonthFromMenu() ) );
+ connect( mYear, TQT_SIGNAL( clicked() ), TQT_SLOT( selectYearFromMenu() ) );
}
NavigatorBar::~NavigatorBar()
@@ -142,29 +157,29 @@ void NavigatorBar::selectDates( const KCal::DateList &dateList )
const KCalendarSystem *calSys = KOGlobals::self()->calendarSystem();
- if ( !mHasMinWidth ) {
- // Set minimum width to width of widest month name label
- int i;
- int maxwidth = 0;
+ // Set minimum width to width of widest month name label
+ int i;
+ int maxwidth = 0;
- for( i = 1; i <= calSys->monthsInYear( mDate ); ++i ) {
- int w = TQFontMetrics( mMonth->font() ).width( TQString("%1 8888")
- .arg( calSys->monthName( i, calSys->year( mDate ) ) ) );
- if ( w > maxwidth ) maxwidth = w;
+ for( i = 1; i <= calSys->monthsInYear( mDate ); ++i ) {
+ int w = TQFontMetrics( mMonth->font() ).
+ width( TQString( "%1" ).
+ arg( calSys->monthName( i, calSys->year( mDate ) ) ) );
+ if ( w > maxwidth ) {
+ maxwidth = w;
}
- mMonth->setMinimumWidth( maxwidth );
-
- mHasMinWidth = true;
}
+ mMonth->setMinimumWidth( maxwidth );
+
+ mHasMinWidth = true;
- // compute the label at the top of the navigator
- mMonth->setText( i18n( "monthname year", "%1 %2" )
- .arg( calSys->monthName( mDate ) )
- .arg( calSys->year( mDate ) ) );
+ // set the label text at the top of the navigator
+ mMonth->setText( i18n( "monthname", "%1" ).arg( calSys->monthName( mDate ) ) );
+ mYear->setText( i18n( "4 digit year", "%1" ).arg( calSys->yearString( mDate, false ) ) );
}
}
-void NavigatorBar::selectMonth()
+void NavigatorBar::selectMonthFromMenu()
{
// every year can have different month names (in some calendar systems)
const KCalendarSystem *calSys = KOGlobals::self()->calendarSystem();
@@ -185,7 +200,36 @@ void NavigatorBar::selectMonth()
return; // canceled
}
- emit goMonth( month );
+ emit monthSelected( month );
+
+ delete popup;
+}
+
+void NavigatorBar::selectYearFromMenu()
+{
+ const KCalendarSystem *calSys = KOGlobals::self()->calendarSystem();
+
+ int year = calSys->year( mDate );
+ int years = 11; // odd number (show a few years ago -> a few years from now)
+ int minYear = year - ( years / 3 );
+
+ TQPopupMenu *popup = new TQPopupMenu( mYear );
+
+ TQString yearStr;
+ int y = minYear;
+ for ( int i=0; i < years; i++ ) {
+ popup->insertItem( yearStr.setNum( y ), i );
+ y++;
+ }
+ popup->setActiveItem( year - minYear );
+
+ if ( ( year = popup->exec( mYear->mapToGlobal( TQPoint( 0, 0 ) ),
+ year - minYear ) ) == -1 ) {
+ delete popup;
+ return; // canceled
+ }
+
+ emit yearSelected( year + minYear );
delete popup;
}