You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koffice/kexi/widget/utils/kexidatetimeformatter.h

166 lines
6.1 KiB

/* This file is part of the KDE project
Copyright (C) 2006 Jaroslaw Staniek <js@iidea.pl>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this program; see the file COPYING. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*/
#ifndef KEXIDATETIMEFORMATTER_H
#define KEXIDATETIMEFORMATTER_H
#include <tqdatetimeedit.h>
#include <tqregexp.h>
//! @short Date formatter used by KexiDateTableEdit and KexiDateTimeTableEdit
class KEXIGUIUTILS_EXPORT KexiDateFormatter
{
public:
//! Creates new formatter with KDE setting for "short date"
KexiDateFormatter();
//! Creates new formatter with given settings
//! @todo KexiDateFormatter(... settings ...);
~KexiDateFormatter();
//! Converts string \a str to date using predefined settings.
//! \return invalid date if the conversion is impossible
TQDate stringToDate( const TQString& str ) const;
/*! Converts string \a str to date using predefined settings
and returns TQVariant containing the date value.
This method does the same as stringToDate() but if \a string
contains invalid date representation, e.g. contains only spaces
and separators, null TQVariant() is returned. */
TQVariant stringToVariant( const TQString& str ) const;
//! Converts \a date to string using predefined settings.
//! \return null string if \a date is invalid
TQString dateToString( const TQDate& date ) const;
//! \return Input mask generated using the formatter settings.
//! Can be used in TQLineEdit::setInputMask().
TQString inputMask() const { return m_inputMask; }
//! \return separator for this date format, a single character like "-" or "/"
TQString separator() const { return m_separator; }
//! \return true if \a str contains only spaces
//! and separators according to the date format.
bool isEmpty( const TQString& str ) const;
protected:
//! Input mask generated using the formatter settings. Can be used in TQLineEdit::setInputMask().
TQString m_inputMask;
//! Order of date sections
TQDateEdit::Order m_order;
//! 4 or 2 digits
bool m_longYear;
bool m_monthWithLeadingZero, m_dayWithLeadingZero;
//! Date format used in dateToString()
TQString m_qtFormat;
//! Used in stringToDate() to convert string back to TQDate
int m_yearpos, m_monthpos, m_daypos;
TQString m_separator;
};
/*! @short Time formatter used by KexiTimeTableEdit and KexiDateTimeTableEdit
Following time formats are allowed: HH:MM:SS (24h), HH:MM (24h), HH:MM AM/PM (12h)
Separator MUST be ":" */
class KEXIGUIUTILS_EXPORT KexiTimeFormatter
{
public:
//! Creates new formatter with KDE setting for time
KexiTimeFormatter();
//! Creates new formatter with given settings
//! @todo KexiDateFormatter(... settings ...);
~KexiTimeFormatter();
//! converts string \a str to time using predefined settings
//! \return invalid time if the conversion is impossible
TQTime stringToTime( const TQString& str ) const;
/*! Converts string \a str to time using predefined settings
and returns TQVariant containing the time value.
This method does the same as stringToTime() but if \a string
contains invalid time representation, e.g. contains only spaces
and separators, null TQVariant() is returned. */
TQVariant stringToVariant( const TQString& str );
//! converts \a time to string using predefined settings
//! \return null string if \a time is invalid
TQString timeToString( const TQTime& time ) const;
//! \return Input mask generated using the formatter settings.
//! Can be used in TQLineEdit::setInputMask().
TQString inputMask() const { return m_inputMask; }
//! \return true if \a str contains only spaces
//! and separators according to the time format.
bool isEmpty( const TQString& str ) const;
protected:
//! Input mask generated using the formatter settings. Can be used in TQLineEdit::setInputMask().
TQString m_inputMask;
// //! Order of date sections
// TQDateEdit::Order m_order;
//! 12 or 12h
bool m_24h;
bool m_hoursWithLeadingZero;
//! Time format used in timeToString(). Notation from TDELocale::setTimeFormat() is used.
TQString m_outputFormat;
//! Used in stringToTime() to convert string back to TQTime
int m_hourpos, m_minpos, m_secpos, m_ampmpos;
TQRegExp *m_hmsRegExp, *m_hmRegExp;
};
//! \return a date/time input mask using date and time formatter.
//! Date is separated from time by one space character.
KEXIGUIUTILS_EXPORT TQString dateTimeInputMask(
const KexiDateFormatter& dateFormatter, const KexiTimeFormatter& timeFormatter);
/*! \return a TQDateTime value converted from string using \a dateFormatter and \a timeFormatter.
A single space between date and time is assumed.
Invalid value is returned when \a str contains no valid date or \a str contains invalid time.
Value with time equal 00:00:00 is returned if \a str contains empty time part. */
KEXIGUIUTILS_EXPORT TQDateTime stringToDateTime(
const KexiDateFormatter& dateFormatter, const KexiTimeFormatter& timeFormatter, const TQString& str);
/*! \return true if \a str contains only spaces and separators according to formats provided by
\a dateFormatter and \a timeFormatter. */
KEXIGUIUTILS_EXPORT bool dateTimeIsEmpty( const KexiDateFormatter& dateFormatter,
const KexiTimeFormatter& timeFormatter, const TQString& str );
/*! \return true if \a str gives valid date/time value according to formats provided by
\a dateFormatter and \a timeFormatter. */
KEXIGUIUTILS_EXPORT bool dateTimeIsValid( const KexiDateFormatter& dateFormatter,
const KexiTimeFormatter& timeFormatter, const TQString& str );
#endif