kexi
kexidbtimeedit.cpp00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "kexidbtimeedit.h"
00022
00023 #include <qtoolbutton.h>
00024 #include <qlayout.h>
00025 #include <kpopupmenu.h>
00026 #include <kdatepicker.h>
00027 #include <kdatetbl.h>
00028 #include <kexiutils/utils.h>
00029
00030 KexiDBTimeEdit::KexiDBTimeEdit(const QTime &time, QWidget *parent, const char *name)
00031 : QTimeEdit(time, parent, name), KexiFormDataItemInterface()
00032 {
00033 m_invalidState = false;
00034 setAutoAdvance(true);
00035 m_cleared = false;
00036
00037 #ifdef QDateTimeEditor_HACK
00038 m_dte_time = KexiUtils::findFirstChild<QDateTimeEditor>(this, "QDateTimeEditor");
00039 #else
00040 m_dte_time = 0;
00041 #endif
00042
00043 connect(this, SIGNAL(valueChanged(const QTime&)), this, SLOT(slotValueChanged(const QTime&)));
00044 }
00045
00046 KexiDBTimeEdit::~KexiDBTimeEdit()
00047 {
00048 }
00049
00050 void KexiDBTimeEdit::setInvalidState( const QString&)
00051 {
00052 setEnabled(false);
00053 setReadOnly(true);
00054 m_invalidState = true;
00056 if (focusPolicy() & TabFocus)
00057 setFocusPolicy(QWidget::ClickFocus);
00058 }
00059
00060 void
00061 KexiDBTimeEdit::setEnabled(bool enabled)
00062 {
00063
00064 if(enabled && m_invalidState)
00065 return;
00066 QTimeEdit::setEnabled(enabled);
00067 }
00068
00069 void KexiDBTimeEdit::setValueInternal(const QVariant &add, bool removeOld)
00070 {
00071 m_cleared = !m_origValue.isValid();
00072
00073 int setNumberOnFocus = -1;
00074 QTime t;
00075 QString addString(add.toString());
00076 if (removeOld) {
00077 if (!addString.isEmpty() && addString[0].latin1()>='0' && addString[0].latin1() <='9') {
00078 setNumberOnFocus = addString[0].latin1()-'0';
00079 t = QTime(setNumberOnFocus, 0, 0);
00080 }
00081 }
00082 else
00083 t = m_origValue.toTime();
00084
00085 setTime(t);
00086 }
00087
00088 QVariant
00089 KexiDBTimeEdit::value()
00090 {
00091
00092 return QVariant(QDateTime( m_cleared ? QDate() : QDate(0,1,2), time()));
00093 }
00094
00095 bool KexiDBTimeEdit::valueIsNull()
00096 {
00097 return !time().isValid() || time().isNull();
00098 }
00099
00100 bool KexiDBTimeEdit::valueIsEmpty()
00101 {
00102 return m_cleared;
00103 }
00104
00105 bool KexiDBTimeEdit::isReadOnly() const
00106 {
00109 return m_readOnly;
00110 }
00111
00112 void KexiDBTimeEdit::setReadOnly(bool set)
00113 {
00114 m_readOnly = set;
00115 }
00116
00117 QWidget*
00118 KexiDBTimeEdit::widget()
00119 {
00120 return this;
00121 }
00122
00123 bool KexiDBTimeEdit::cursorAtStart()
00124 {
00125 #ifdef QDateTimeEditor_HACK
00126 return m_dte_time && hasFocus() && m_dte_time->focusSection()==0;
00127 #else
00128 return false;
00129 #endif
00130 }
00131
00132 bool KexiDBTimeEdit::cursorAtEnd()
00133 {
00134 #ifdef QDateTimeEditor_HACK
00135 return m_dte_time && hasFocus()
00136 && m_dte_time->focusSection()==int(m_dte_time->sectionCount()-1);
00137 #else
00138 return false;
00139 #endif
00140 }
00141
00142 void KexiDBTimeEdit::clear()
00143 {
00144 setTime(QTime());
00145 m_cleared = true;
00146 }
00147
00148 void
00149 KexiDBTimeEdit::slotValueChanged(const QTime&)
00150 {
00151 m_cleared = false;
00152 }
00153
00154 #include "kexidbtimeedit.moc"
|