00001
#include "timedateformatwidget.h"
00002
#include "timeformatwidget_impl.h"
00003
#include "timeformatwidget_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 <kdebug.h>
00013
#include <qlineedit.h>
00014
#include <knuminput.h>
00015
#include <kovariable.h>
00016
00017
00018
00019
00020
00021 TimeFormatWidget::TimeFormatWidget(
QWidget* parent,
const char* name, WFlags fl )
00022 : TimeDateFormatWidgetPrototype( parent, name, fl )
00023 {
00024 setCaption( i18n(
"TimeFormat",
"This dialog allows you to set the format of the time variable" ) );
00025
00026
QStringList listTimeFormat = KoVariableTimeFormat::staticTranslatedFormatPropsList();
00027 combo1->insertStringList(listTimeFormat);
00028
00029 combo2->insertItem( i18n(
"Hour" ) );
00030 combo2->insertItem( i18n(
"Hour (2 digits)" ) );
00031 combo2->insertItem( i18n(
"Minute" ) );
00032 combo2->insertItem( i18n(
"Minute (2 digits)" ) );
00033 combo2->insertItem( i18n(
"Second" ) );
00034 combo2->insertItem( i18n(
"Second (2 digits)" ) );
00035 combo2->insertItem( i18n(
"Millisecond (3 digits)" ) );
00036 combo2->insertItem( i18n(
"am/pm" ) );
00037 combo2->insertItem( i18n(
"AM/PM" ) );
00038 combo2->setCurrentItem( 0 );
00039
00040 label_correction->setText(i18n(
"Correct in Minutes"));
00041 connect( CheckBox1, SIGNAL(toggled (
bool )),
this,SLOT(slotPersonalizeChanged(
bool)));
00042 connect( combo1, SIGNAL(activated (
const QString & )),
this, SLOT(slotDefaultValueChanged(
const QString &)));
00043 connect( combo1, SIGNAL(textChanged (
const QString & )),
this, SLOT(slotDefaultValueChanged(
const QString &)));
00044 connect( KIntNumInput1, SIGNAL(valueChanged(
int)),
this, SLOT( slotOffsetChanged(
int)));
00045 slotPersonalizeChanged(
false);
00046 }
00047
00048
00049
00050
00051 TimeFormatWidget::~TimeFormatWidget()
00052 {
00053
00054 }
00055
00056
00057
00058
00059
void TimeFormatWidget::slotDefaultValueChanged(
const QString & )
00060 {
00061 updateLabel();
00062 }
00063
00064
void TimeFormatWidget::slotOffsetChanged(
int)
00065 {
00066 updateLabel();
00067 }
00068
00069
void TimeFormatWidget::slotPersonalizeChanged(
bool b)
00070 {
00071 combo2->setEnabled(b);
00072 combo1->setEditable(b);
00073 TextLabel1->setEnabled(b);
00074 updateLabel();
00075
00076 }
00077
00078
void TimeFormatWidget::comboActivated()
00079 {
00080 QString string=combo2->currentText();
00081
if(string==i18n(
"Hour"))
00082 combo1->lineEdit()->insert(
"h");
00083
else if(string==i18n(
"Hour (2 digits)"))
00084 combo1->lineEdit()->insert(
"hh");
00085
else if(string==i18n(
"Minute"))
00086 combo1->lineEdit()->insert(
"m");
00087
else if(string==i18n(
"Minute (2 digits)"))
00088 combo1->lineEdit()->insert(
"mm");
00089
else if(string==i18n(
"Second"))
00090 combo1->lineEdit()->insert(
"s");
00091
else if(string==i18n(
"Second (2 digits)"))
00092 combo1->lineEdit()->insert(
"ss");
00093
else if(string==i18n(
"Millisecond (3 digits)"))
00094 combo1->lineEdit()->insert(
"zzz");
00095
else if(string==i18n(
"AM/PM"))
00096 combo1->lineEdit()->insert(
"AP");
00097
else if(string==i18n(
"am/pm"))
00098 combo1->lineEdit()->insert(
"ap");
00099 updateLabel();
00100 combo1->setFocus();
00101 }
00102
00103
00104
00105
00106
void TimeFormatWidget::updateLabel()
00107 {
00108
KoVariableTimeFormat format;
00109 format.setFormatProperties( resultString() );
00110
00111
QTime ct = QTime::currentTime().addSecs(correctValue());
00112 label->setText( format.convert( ct ) );
00113 }
00114
00115 QString TimeFormatWidget::resultString()
00116 {
00117
const QString lookup(combo1->currentText());
00118
const QStringList listTranslated( KoVariableTimeFormat::staticTranslatedFormatPropsList() );
00119
const int index = listTranslated.findIndex(lookup);
00120
if (index==-1)
00121
return (lookup);
00122
00123
00124
00125
00126
const QStringList listRaw( KoVariableTimeFormat::staticFormatPropsList() );
00127
00128 QStringList::ConstIterator it( listRaw.at(index) );
00129 Q_ASSERT( it != listRaw.end() );
00130
if ( it != listRaw.end() )
00131
return *it;
00132 kdError(32500) <<
"Internal error: could not find correcponding time format: " << lookup << endl;
00133
return QString::null;
00134 }
00135
00136
int TimeFormatWidget::correctValue()
00137 {
00138
return KIntNumInput1->value()*60;
00139 }