lib

DateFormatWidget.cpp
1#include "timedateformatwidget.h"
2#include "DateFormatWidget.h"
3#include "DateFormatWidget.moc"
4#include <tqdatetime.h>
5#include <tqcombobox.h>
6#include <tqcheckbox.h>
7#include <tqlabel.h>
8#include <tqbuttongroup.h>
9#include <tqradiobutton.h>
10#include <tdeglobal.h>
11#include <tdelocale.h>
12#include <tqlineedit.h>
13#include <kdebug.h>
14#include <knuminput.h>
15#include <KoVariable.h>
16
17/*
18 * Constructs a DateFormatWidget which is a child of 'parent', with the
19 * name 'name' and widget flags set to 'fl'
20 */
21DateFormatWidget::DateFormatWidget( TQWidget* parent, const char* name, WFlags fl )
22 : TimeDateFormatWidgetPrototype( parent, name, fl )
23{
24 setCaption( i18n( "DateFormat", "Format of Date Variable" ) );
25 TQStringList listDateFormat = KoVariableDateFormat::staticTranslatedFormatPropsList();
26 combo1->insertStringList(listDateFormat);
27
28 combo2->insertItem( i18n( "Day"));
29 combo2->insertItem( i18n( "Day (2 digits)"));
30 combo2->insertItem( i18n( "Day (abbreviated name)"));
31 combo2->insertItem( i18n( "Day (long name)"));
32 combo2->insertItem( i18n( "Month" ) );
33 combo2->insertItem( i18n( "Month (2 digits)" ) );
34 combo2->insertItem( i18n( "Month (abbreviated name)" ) );
35 combo2->insertItem( i18n( "Month (long name)" ) );
36 combo2->insertItem( i18n( "Month (possessive abbreviated name)" ) );
37 combo2->insertItem( i18n( "Month (possessive long name)" ) );
38 combo2->insertItem( i18n( "Year (2 digits)" ) );
39 combo2->insertItem( i18n( "Year (4 digits)" ) );
40
41 combo2->insertItem( i18n( "Hour" ) );
42 combo2->insertItem( i18n( "Hour (2 digits)" ) );
43 combo2->insertItem( i18n( "Minute" ) );
44 combo2->insertItem( i18n( "Minute (2 digits)" ) );
45 combo2->insertItem( i18n( "Second" ) );
46 combo2->insertItem( i18n( "Second (2 digits)" ) );
47 combo2->insertItem( i18n( "Millisecond (3 digits)" ) );
48 combo2->insertItem( i18n( "am/pm" ) );
49 combo2->insertItem( i18n( "AM/PM" ) );
50
51 combo2->setCurrentItem( 0 );
52
53 label_correction->setText(i18n("Correct in Days"));
54
55 connect( CheckBox1, TQ_SIGNAL(toggled ( bool )),this,TQ_SLOT(slotPersonalizeChanged(bool)));
56 connect( combo1, TQ_SIGNAL(activated ( const TQString & )), this, TQ_SLOT(slotDefaultValueChanged(const TQString &)));
57 connect( combo1, TQ_SIGNAL(textChanged ( const TQString & )), this, TQ_SLOT(slotDefaultValueChanged(const TQString &)));
58 connect( KIntNumInput1, TQ_SIGNAL(valueChanged(int)), this, TQ_SLOT( slotOffsetChanged(int)));
59 slotPersonalizeChanged(false);
60}
61
62/*
63 * Destroys the object and frees any allocated resources
64 */
65DateFormatWidget::~DateFormatWidget()
66{
67 // no need to delete child widgets, TQt does it all for us
68}
69
70/*
71 * public slot
72 */
73void DateFormatWidget::slotDefaultValueChanged(const TQString & )
74{
75 updateLabel();
76}
77
78void DateFormatWidget::slotOffsetChanged(int)
79{
80 updateLabel();
81}
82
83void DateFormatWidget::slotPersonalizeChanged(bool b)
84{
85 combo2->setEnabled(b);
86 TextLabel1->setEnabled(b);
87 combo1->setEditable(b);
88 updateLabel();
89
90}
91
92void DateFormatWidget::comboActivated()
93{
94 TQString string=combo2->currentText();
95 if(string==i18n( "Day"))
96 combo1->lineEdit()->insert("d");
97 else if(string==i18n( "Day (2 digits)"))
98 combo1->lineEdit()->insert("dd");
99 else if(string==i18n( "Day (abbreviated name)"))
100 combo1->lineEdit()->insert("ddd");
101 else if(string==i18n( "Day (long name)"))
102 combo1->lineEdit()->insert("dddd");
103 else if(string==i18n( "Month" ) )
104 combo1->lineEdit()->insert("M");
105 else if(string==i18n( "Month (2 digits)" ) )
106 combo1->lineEdit()->insert("MM");
107 else if(string==i18n( "Month (abbreviated name)" ) )
108 combo1->lineEdit()->insert("MMM");
109 else if(string==i18n( "Month (long name)" ) )
110 combo1->lineEdit()->insert("MMMM");
111 else if(string==i18n( "Month (possessive abbreviated name)" ) )
112 combo1->lineEdit()->insert("PPP");
113 else if(string==i18n( "Month (possessive long name)" ) )
114 combo1->lineEdit()->insert("PPPP");
115 else if(string==i18n( "Year (2 digits)" ) )
116 combo1->lineEdit()->insert("yy");
117 else if(string==i18n( "Year (4 digits)" ) )
118 combo1->lineEdit()->insert("yyyy");
119
120 else if(string==i18n("Hour"))
121 combo1->lineEdit()->insert("h");
122 else if(string==i18n("Hour (2 digits)"))
123 combo1->lineEdit()->insert("hh");
124 else if(string==i18n("Minute"))
125 combo1->lineEdit()->insert("m");
126 else if(string==i18n("Minute (2 digits)"))
127 combo1->lineEdit()->insert("mm");
128 else if(string==i18n("Second"))
129 combo1->lineEdit()->insert("s");
130 else if(string==i18n("Second (2 digits)"))
131 combo1->lineEdit()->insert("ss");
132 else if(string==i18n("Millisecond (3 digits)"))
133 combo1->lineEdit()->insert("zzz");
134 else if(string==i18n("AM/PM"))
135 combo1->lineEdit()->insert("AP");
136 else if(string==i18n("am/pm"))
137 combo1->lineEdit()->insert("ap");
138
139 updateLabel();
140 combo1->setFocus();
141}
142
143/*
144 * public slot
145 */
146void DateFormatWidget::updateLabel()
147{
149 format.setFormatProperties( resultString() );
150 TQDateTime ct = TQDateTime::currentDateTime().addDays( correctValue() );
151 label->setText( format.convert( ct ) );
152}
153
154TQString DateFormatWidget::resultString()
155{
156 const TQString lookup(combo1->currentText());
157 const TQStringList listTranslated( KoVariableDateFormat::staticTranslatedFormatPropsList() );
158 const int index = listTranslated.findIndex(lookup);
159 if (index==-1)
160 return (lookup); // Either costum or non-locale
161
162 // We have now a locale format, so we must "translate" it back;
163
164 // Lookup untranslated format
165 const TQStringList listRaw( KoVariableDateFormat::staticFormatPropsList() );
166
167 TQStringList::ConstIterator it( listRaw.at(index) );
168 Q_ASSERT( it != listRaw.end() );
169 if ( it != listRaw.end() )
170 return *it;
171 kdError(32500) << "Internal error: could not find correcponding date format: " << lookup << endl;
172 return TQString(); // Something is wrong, give back a default
173}
174
175int DateFormatWidget::correctValue()
176{
177 return KIntNumInput1->value();
178}
Implementation of the "date" formats TODO: merge with KoVariableTimeFormat, for a single TQDateTime-b...
Definition KoVariable.h:170
virtual TQString convert(const TQVariant &data) const
Use this format to convert a piece of data into a string.
virtual void setFormatProperties(const TQString &props)
Set the format string (e.g. DDMMYYYY)
Definition KoVariable.h:179
const char * name(StdAction id)