lfpport_qte_dateeditor.h

来自「This is a resource based on j2me embedde」· C头文件 代码 · 共 473 行

H
473
字号
/* *    * * Copyright  1990-2007 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER *  * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. *  * 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 * General Public License version 2 for more details (a copy is * included at /legal/license.txt). *  * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA *  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. *  * This source file is specific for Qt-based configurations. *//** * @file * This file contains three classes: DateTimeEditor, DateEditor and SetTime. * DateTimeEditor is the main container of the date/time widget; * DateEditor is the date editor part; * SetTime is the time editor part. * DateEditor or SetTime are always created, but at most one of them may be * hidden at any given time (as defined by setInputMode()). */#ifndef _LFPPORT_QTE_DATEEDITOR_H_#define _LFPPORT_QTE_DATEEDITOR_H_#include <qdatetime.h>#include <qdialog.h>#include <qlabel.h>#include <time.h>#include <qpopupmenu.h>#include <qcombobox.h>#include <qspinbox.h>#include <qpushbutton.h>class DateTimeEditor;class DatePicker;/** Time editor built of two spin boxes. */class SetTime : public QFrame {    Q_OBJECTprotected slots:    /**     * This method receives hour changed event.     *     * @param value new hour     */    void hourChanged(int value);    /**     * This method receives minute changed event     *     * @param value new minute     */    void minuteChanged(int value);    /**     * This method receives pm/am changed event     *     * @param index the position of the selected item     */    void checkedPM(int index);protected:    /** Hour value member */    int hour;    /** Minute value member */    int minute;    /** Flag for 12/24 hour display and edit mode */    bool use12hourTime;    /** Combobox for am/pm selection used in 12 hour mode */    QComboBox *ampm;public:    /**     * Constructor of time editor widget     *     * @param parent parent widget     * @param initialTime time to show on widget creation     */    SetTime(DateTimeEditor *parent=0, long initialTime=0);    /**     * Date editor can be displayed in an undefined state, showing     * HH:MM as the hour and DATE_FORMAT_HINT ("www, mm dd yyyy") as     * the date. When the user interacts with the date editor (any of the     * widgets comprising the datefield), the undefined state is changed     * automatically to FALSE (ie. to defined state).     */    bool undefinedState;    /**     * Gets time set in time editor     *     * @return currently set QTime (hour and minute)     */    QTime time() const;    /**     * Undefined state appears as "HH:MM" and no date selected.     * This method allows to switch from defined to undefined appearance.     *     * @param turnOn true if the state should be set to undefined mode     */    void setUndefinedState(bool turnOn);    /**     * Uses this method to set value of this date widget.     *     * @param hour hour to be set     * @param min minute to be set     */    void setTime(int hour, int min);    /**     * Gets the hour value set in time editor     *     * @return the hour value of the widget     */    int getHour() { return hour; };    /**     * Gets the minute value set in time editor     *     * @return the minute value of the widget     */    int getMinute() { return minute; };    /**     * Makes this item have focus, enabling any item-specific commands; in     * addition, if the given event was caused by a user action, notifies     * the Java platform of the change in focus.     *     * @param event device event corresponding to the change in focus.     */    void focusInEvent(QFocusEvent *event);    /** Spin box for hour selection */    QSpinBox *sbHour;    /** Spin box for minute selection */    QSpinBox *sbMin;    /**     * Peer notification is needed only once per user interaction with the     * native widget. There is no need to notify java when a set is originated     * from the MIDlet (java);     */    bool needPeerNotification;    /** Used to join related peer notifications */    int stackCounter;public slots:    /**     * Changes display and edit mode to 12 or 24 hour.     *     * @param on 0 if 24 hour mode, otherwise 12 hour mode     */     void show12hourTime(int on); private:    /** A pointer to the parent */    DateTimeEditor *dte;};/** Time conversion and presentation routines */class TimeUtils {public:    /** Gets date string in long format by date object     *     * @param date QDate instance to get string presentation for     * @return date string in format "www mm dd, yyyy"     */    static QString longDateString(const QDate &date);    /** Gets date string in short format by date object     *     * @param date QDate instance to get string presentation for     * @return date string in format "mm/dd/yy"     */    static QString shortDateString(const QDate &date);    /** Converts broken-down time into time since the Epoch     *     * @param date QDate instance to get UTC time for     * @return calendar UTC time representation     */    static time_t toUTC(const QDateTime &dateTime);};/** * Date editor widget built from a label for the date, * and a QButton to open a month view popup selector, * displays date and change button */class DateEditor : public QPushButton {    Q_OBJECTpublic:    /**     * Constructs DateEditor widget     *     * @param longDate when TRUE selects long format for     *   date string, otherwise short format will be used     * @param parent reference to the parent container     */    DateEditor(bool longDate, DateTimeEditor *parent);    /**     * Gets the date currently set in the widget     *     * @return the currently set date     */    QDate date() const { return currDate; }    /**     * Makes this item have focus, enabling any item-specific commands; in     * addition, if the given event was caused by a user action, notifies the     * Java platform of the change in focus.     *     * @param event device event corresponding to the change in focus.     */    void focusInEvent(QFocusEvent *event);    /**     * If in undefined state and min or hour got a new value,     * than switch from undefined state to a defined default state     */    void setToDefault();public slots:    /**     * Slot used to set date as picked by the user from the editor     *     * @param y year value to be set     * @param m month value to be set     * @param d day value to be set     */    void setDate(int y, int m, int d);    /**     * Slot used to set date as picked by the user from the editor     *     * @param d date value to be set     */    void setDate(QDate d);private slots:    /** Service slot for pick date event */    void pickDate();    /** Service slot for hiding the date editor */    void gotHide();private:    /**     * Date display mode, long or short     * ("www mm dd, yyyy" or "mm/dd/yy") */    bool longFormat;    /** Current date set on this widget */    QDate currDate;    /** A pointer to the parent */    DateTimeEditor *dte;    /** Current picker for this widget*/    DatePicker *picker;};/** Parent container for all date/time editors components */class DateTimeEditor : public QWidget {    Q_OBJECTpublic:    /**     * Constructs DateTimeEditor widget.     *     * @param parent a pointer to the parent     * @param dmode date and/or time input mode selection.     *   1 or 3 (binary mask 01) = date editor is on     *   2 or 3 (binary mask 10) = time editor is on     * @param initialTime UTC time to initialize widget instance with     */    DateTimeEditor(QWidget *parent=0, int dmode=0, long initialTime=0);    /**     * Changes content and displayed components to newTime     *     * @param newTime UTC time to be set     */    void resetDateTime( long newTime );    /**     * Gets date and time in UTC format currently set in the widget     *     * @return currently set date and time in UTC format     */    long getTime();    /**     * Sets date and/or time input mode selection.     * 1 or 3 (binary mask 01) = date editor is on     * 2 or 3 (binary mask 10) = time editor is on     */    void setInputMode(int mode);    /**     * Makes this item have focus, enabling any item-specific commands; in     * addition, if the given event was caused by a user action, notifies the     * Java platform of the change in focus.     *     * @param event device event corresponding to the change in focus.     */    void focusInEvent(QFocusEvent *event);    /**     * The label of the date part of the editor.     * Displays the date currently set on the widget.     */    QLabel *dateLabel;    /**     * Gets height of the widget depending on input mode     *     * @returns the minimum height for the body     */    int getHeight() {      return minH;    }    /** Time editor member */    SetTime *time;    /** Date editor member */    DateEditor *date;protected:#define _DRAW_BORDER 1#if _DRAW_BORDER    /**     * Repaint current screen upon system notification:     * drawing border around the editor     *     * @param e paint request event     */    virtual void paintEvent(QPaintEvent *e);#endif    /** 1=DATE, 2=TIME, 3=DATE_TIME */    int mode;    /** Currently set time and date */    long thisTime; private:    /** Holds minimum height for the body */    int minH;};/** * The dialog with calendar visualization * to request user for a date selection */class DatePicker : public QDialog {        Q_OBJECTpublic:    /** Constructs date picker dialog     *     * @param day the date to be selected on dialog opening     * @param pos the postition of the left upper corner of the dialog,     *   by default the dialog will be centered     * @param parent a pointer to the parent     * @param name name of the dialog instance     */    DatePicker(const QDate &day = QDate::currentDate(),        QPoint pos = QPoint(), DateEditor *parent = 0, const char *name = 0);    /**     * Gets the date currently selected in the calendar dialog     *     * @return current date selected in the dialog     */    const QDate &getDay() const { return currentDay; }    /**     * Sets the date to be selected in the calendar dialog     *     * @param day date to be set in the calendar dialog     */    void setDay(const QDate &day);    /**     * Estimates size of the calendar dialog window     * regarding the number of columns and rows in the grid     *     * @return size of the dialog window     */    QSize calculateSize() const;protected:    /**     * Process mouse click event     *     * @param event mouse event     */    void mousePressEvent(QMouseEvent *event);    /**     * Process mouse double click event     *     * @param event mouse event     */    void mouseDoubleClickEvent(QMouseEvent *);    /**     * Process key press event     *     * @param event key event     */    void keyPressEvent(QKeyEvent *event);    /**     * Process paint request event     *     * @param event paint event     */    void paintEvent(QPaintEvent *event);private:    /** Number of lines and columns in the calendar grid */    enum { LINES = 6, COLUMNS = 7 };    /** The font to render day numbers */    QFont baseFont;    /** The font to render all captions */    QFont captionFont;    /** The date currently selected in calendar */    QDate currentDay;    /** Start date provided by dialog creator */    const QDate startDay;    /** A pointer to the parent */    DateEditor *de;    /** Set current date to parent DateEditor */    void acceptDay();};#endif /* _LFPPORT_QTE_DATEEDITOR_H_ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?