00001
#include "timedateformatwidget.h"
00002
#include "dateformatwidget_impl.h"
00003
#include "dateformatwidget_impl.moc"
00004
#include <qdatetime.h>
00005
#include <qcombobox.h>
00006
#include <qcheckbox.h>
00007
#include <qlabel.h>
00008
#include <qbuttongroup.h>
00009
#include <qradiobutton.h>
00010
#include <kglobal.h>
00011
#include <klocale.h>
00012
#include <qlineedit.h>
00013
#include <kdebug.h>
00014
#include <knuminput.h>
00015
#include <kovariable.h>
00016
00017
00018
00019
00020
00021 DateFormatWidget::DateFormatWidget(
QWidget* parent,
const char* name, WFlags fl )
00022 : TimeDateFormatWidgetPrototype( parent, name, fl )
00023 {
00024 setCaption( i18n(
"DateFormat",
"Format of Date Variable" ) );
00025
QStringList listDateFormat = KoVariableDateFormat::staticTranslatedFormatPropsList();
00026 combo1->insertStringList(listDateFormat);
00027
00028 combo2->insertItem( i18n(
"Day"));
00029 combo2->insertItem( i18n(
"Day (2 digits)"));
00030 combo2->insertItem( i18n(
"Day (abbreviated name)"));
00031 combo2->insertItem( i18n(
"Day (long name)"));
00032 combo2->insertItem( i18n(
"Month" ) );
00033 combo2->insertItem( i18n(
"Month (2 digits)" ) );
00034 combo2->insertItem( i18n(
"Month (abbreviated name)" ) );
00035 combo2->insertItem( i18n(
"Month (long name)" ) );
00036 combo2->insertItem( i18n(
"Month (possessive abbreviated name)" ) );
00037 combo2->insertItem( i18n(
"Month (possessive long name)" ) );
00038 combo2->insertItem( i18n(
"Year (2 digits)" ) );
00039 combo2->insertItem( i18n(
"Year (4 digits)" ) );
00040
00041 combo2->insertItem( i18n(
"Hour" ) );
00042 combo2->insertItem( i18n(
"Hour (2 digits)" ) );
00043 combo2->insertItem( i18n(
"Minute" ) );
00044 combo2->insertItem( i18n(
"Minute (2 digits)" ) );
00045 combo2->insertItem( i18n(
"Second" ) );
00046 combo2->insertItem( i18n(
"Second (2 digits)" ) );
00047 combo2->insertItem( i18n(
"Millisecond (3 digits)" ) );
00048 combo2->insertItem( i18n(
"am/pm" ) );
00049 combo2->insertItem( i18n(
"AM/PM" ) );
00050
00051 combo2->setCurrentItem( 0 );
00052
00053 label_correction->setText(i18n(
"Correct in Days"));
00054
00055 connect( CheckBox1, SIGNAL(toggled (
bool )),
this,SLOT(slotPersonalizeChanged(
bool)));
00056 connect( combo1, SIGNAL(activated (
const QString & )),
this, SLOT(slotDefaultValueChanged(
const QString &)));
00057 connect( combo1, SIGNAL(textChanged (
const QString & )),
this, SLOT(slotDefaultValueChanged(
const QString &)));
00058 connect( KIntNumInput1, SIGNAL(valueChanged(
int)),
this, SLOT( slotOffsetChanged(
int)));
00059 slotPersonalizeChanged(
false);
00060 }
00061
00062
00063
00064
00065 DateFormatWidget::~DateFormatWidget()
00066 {
00067
00068 }
00069
00070
00071
00072
00073
void DateFormatWidget::slotDefaultValueChanged(
const QString & )
00074 {
00075 updateLabel();
00076 }
00077
00078
void DateFormatWidget::slotOffsetChanged(
int)
00079 {
00080 updateLabel();
00081 }
00082
00083
void DateFormatWidget::slotPersonalizeChanged(
bool b)
00084 {
00085 combo2->setEnabled(b);
00086 TextLabel1->setEnabled(b);
00087 combo1->setEditable(b);
00088 updateLabel();
00089
00090 }
00091
00092
void DateFormatWidget::comboActivated()
00093 {
00094 QString string=combo2->currentText();
00095
if(string==i18n(
"Day"))
00096 combo1->lineEdit()->insert(
"d");
00097
else if(string==i18n(
"Day (2 digits)"))
00098 combo1->lineEdit()->insert(
"dd");
00099
else if(string==i18n(
"Day (abbreviated name)"))
00100 combo1->lineEdit()->insert(
"ddd");
00101
else if(string==i18n(
"Day (long name)"))
00102 combo1->lineEdit()->insert(
"dddd");
00103
else if(string==i18n(
"Month" ) )
00104 combo1->lineEdit()->insert(
"M");
00105
else if(string==i18n(
"Month (2 digits)" ) )
00106 combo1->lineEdit()->insert(
"MM");
00107
else if(string==i18n(
"Month (abbreviated name)" ) )
00108 combo1->lineEdit()->insert(
"MMM");
00109
else if(string==i18n(
"Month (long name)" ) )
00110 combo1->lineEdit()->insert(
"MMMM");
00111
else if(string==i18n(
"Month (possessive abbreviated name)" ) )
00112 combo1->lineEdit()->insert(
"PPP");
00113
else if(string==i18n(
"Month (possessive long name)" ) )
00114 combo1->lineEdit()->insert(
"PPPP");
00115
else if(string==i18n(
"Year (2 digits)" ) )
00116 combo1->lineEdit()->insert(
"yy");
00117
else if(string==i18n(
"Year (4 digits)" ) )
00118 combo1->lineEdit()->insert(
"yyyy");
00119
00120
else if(string==i18n(
"Hour"))
00121 combo1->lineEdit()->insert(
"h");
00122
else if(string==i18n(
"Hour (2 digits)"))
00123 combo1->lineEdit()->insert(
"hh");
00124
else if(string==i18n(
"Minute"))
00125 combo1->lineEdit()->insert(
"m");
00126
else if(string==i18n(
"Minute (2 digits)"))
00127 combo1->lineEdit()->insert(
"mm");
00128
else if(string==i18n(
"Second"))
00129 combo1->lineEdit()->insert(
"s");
00130
else if(string==i18n(
"Second (2 digits)"))
00131 combo1->lineEdit()->insert(
"ss");
00132
else if(string==i18n(
"Millisecond (3 digits)"))
00133 combo1->lineEdit()->insert(
"zzz");
00134
else if(string==i18n(
"AM/PM"))
00135 combo1->lineEdit()->insert(
"AP");
00136
else if(string==i18n(
"am/pm"))
00137 combo1->lineEdit()->insert(
"ap");
00138
00139 updateLabel();
00140 combo1->setFocus();
00141 }
00142
00143
00144
00145
00146
void DateFormatWidget::updateLabel()
00147 {
00148
KoVariableDateFormat format;
00149 format.setFormatProperties( resultString() );
00150
QDateTime ct = QDateTime::currentDateTime().addDays( correctValue() );
00151 label->setText( format.convert( ct ) );
00152 }
00153
00154 QString DateFormatWidget::resultString()
00155 {
00156
const QString lookup(combo1->currentText());
00157
const QStringList listTranslated( KoVariableDateFormat::staticTranslatedFormatPropsList() );
00158
const int index = listTranslated.findIndex(lookup);
00159
if (index==-1)
00160
return (lookup);
00161
00162
00163
00164
00165
const QStringList listRaw( KoVariableDateFormat::staticFormatPropsList() );
00166
00167 QStringList::ConstIterator it( listRaw.at(index) );
00168 Q_ASSERT( it != listRaw.end() );
00169
if ( it != listRaw.end() )
00170
return *it;
00171 kdError(32500) <<
"Internal error: could not find correcponding date format: " << lookup << endl;
00172
return QString::null;
00173 }
00174
00175
int DateFormatWidget::correctValue()
00176 {
00177
return KIntNumInput1->value();
00178 }