00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
#include <qdatetime.h>
00023
#include <qpopupmenu.h>
00024
00025
#include <klocale.h>
00026
00027
#include "kdatepickerpopup.h"
00028
00029 KDatePickerPopup::KDatePickerPopup(
int items,
const QDate &date,
QWidget *parent,
00030
const char *name )
00031 :
QPopupMenu( parent, name )
00032 {
00033 mItems = items;
00034
00035 mDatePicker =
new KDatePicker();
00036 mDatePicker->setCloseButton(
false );
00037
00038 connect( mDatePicker, SIGNAL( dateEntered(
QDate ) ),
00039 SLOT( slotDateChanged(
QDate ) ) );
00040 connect( mDatePicker, SIGNAL( dateSelected(
QDate ) ),
00041 SLOT( slotDateChanged(
QDate ) ) );
00042
00043 mDatePicker->setDate( date );
00044
00045 buildMenu();
00046 }
00047
00048
void KDatePickerPopup::buildMenu()
00049 {
00050
if ( isVisible() )
return;
00051 clear();
00052
00053
if ( mItems & DatePicker ) {
00054 insertItem( mDatePicker );
00055
00056
if ( ( mItems & NoDate ) || ( mItems & Words ) )
00057 insertSeparator();
00058 }
00059
00060
if ( mItems & Words ) {
00061 insertItem( i18n(
"&Today"),
this, SLOT( slotToday() ) );
00062 insertItem( i18n(
"To&morrow"),
this, SLOT( slotTomorrow() ) );
00063 insertItem( i18n(
"&Friday"),
this, SLOT( slotFriday() ) );
00064 insertItem( i18n(
"&Sunday"),
this, SLOT( slotSunday() ) );
00065 insertItem( i18n(
"Next &Week"),
this, SLOT( slotNextWeek() ) );
00066 insertItem( i18n(
"Next M&onth"),
this, SLOT( slotNextMonth() ) );
00067
00068
if ( mItems & NoDate )
00069 insertSeparator();
00070 }
00071
00072
if ( mItems & NoDate )
00073 insertItem( i18n(
"No Date"),
this, SLOT( slotNoDate() ) );
00074 }
00075
00076 KDatePickerPopup::~KDatePickerPopup()
00077 {
00078
delete mDatePicker;
00079 }
00080
00081 KDatePicker *
KDatePickerPopup::datePicker()
const
00082
{
00083
return mDatePicker;
00084 }
00085
00086
#if 0
00087
void KDatePickerPopup::setItems(
int items )
00088 {
00089 mItems = items;
00090 buildMenu();
00091 }
00092
#endif
00093
00094
void KDatePickerPopup::slotDateChanged(
QDate date )
00095 {
00096 emit
dateChanged( date );
00097 hide();
00098 }
00099
00100
void KDatePickerPopup::slotToday()
00101 {
00102 emit
dateChanged( QDate::currentDate() );
00103 }
00104
00105
void KDatePickerPopup::slotTomorrow()
00106 {
00107 emit dateChanged( QDate::currentDate().addDays( 1 ) );
00108 }
00109
00110
void KDatePickerPopup::slotFriday()
00111 {
00112
QDate date = QDate::currentDate();
00113
int day = date.dayOfWeek();
00114
if ( day < 6 )
00115 date = date.addDays( 5 - day );
00116
else
00117 date = date.addDays( 5 - day + 7 );
00118
00119 emit dateChanged( date );
00120 }
00121
00122
void KDatePickerPopup::slotSunday()
00123 {
00124
QDate date = QDate::currentDate();
00125 emit dateChanged( date.addDays( 7 - date.dayOfWeek() ) );
00126 }
00127
00128
void KDatePickerPopup::slotNoDate()
00129 {
00130 emit dateChanged(
QDate() );
00131 }
00132
00133
void KDatePickerPopup::slotNextWeek()
00134 {
00135 emit dateChanged( QDate::currentDate().addDays( 7 ) );
00136 }
00137
00138
void KDatePickerPopup::slotNextMonth()
00139 {
00140 emit dateChanged( QDate::currentDate().addMonths( 1 ) );
00141 }
00142
00143
#include "kdatepickerpopup.moc"