lfpport_qte_item.h
来自「This is a resource based on j2me embedde」· C头文件 代码 · 共 307 行
H
307 行
/* * * * 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 * Base Qt widget of an item. */#ifndef _LFPPORT_QTE_ITEM_H_#define _LFPPORT_QTE_ITEM_H_#include <lfpport_error.h>#include <lfpport_displayable.h>#include <lfpport_item.h>#include <qwidget.h>#include <qsimplerichtext.h>#include <qstring.h>/** * Default id for un-initialized resources. */#define INVALID_NATIVE_ID 0/** * Upper limit of any Item's minimum width. * Should be in range (0, SCREEN_WIDTH]. */#define MIN_WIDTH_LIMIT (qteapp_get_mscreen()->getScreenWidth()>>1)/** * Upper limit of any Item's preferred height. * Should be in range (0, +infinite). */#define PREF_HEIGHT_LIMIT (qteapp_get_mscreen()->getScreenHeight()<<2)/** * Number of pixels around an item's boundary. */#define ITEM_BOUND_PAD 4/** * Number of pixels between label and body when both fit on a single line. */#define LABEL_BODY_HRZN_PAD ITEM_BOUND_PAD/** * Number of pixels between label and body when they are on separated lines. * This value must be kept in sync with CustomItemLFImpl.java. */#define LABEL_BODY_VERT_PAD 0/** * Initialize the common pointers of an MidpItem struct. * * @param itemPtr pointer the MidpItem struct that is to be filled in * @param ownerPtr pointer to owner screen */extern MidpError initItemPtr(MidpItem *itemPtr, MidpDisplayable *ownerPtr);/** * Main widget for an Item. */class Item : public QWidget { Q_OBJECT protected: /** * Override QWidget::paintEvent in order to paint the label. */ void paintEvent(QPaintEvent *evt); /** * Initialize label related resource. */ /*static */void init(); /** * Returns whether this item's label can share a line with its content. * * @return true if the label and content of the item can be on the same * line; false otherwise */ bool labelCanBeOnSameLine(int labelHeight); /** * Draw the label text. * * @param painter painter to use * @param x X coordinate of the drawing region's top left corner * @param y Y coordinate of the drawing region's top left corner * @param w width of the drawing region * @param h height of the drawing region */ void drawLabel(QPainter *painter, int x, int y, int w, int h); /** * Move body widget. * Coordinates are relative to top left corner of this main widget. * * @param x X coordinate * @param y Y coordinate */ virtual void bodyRelocate(int x, int y) = 0; /** * Resize body widget. * * @param w new width * @param h new height */ virtual void bodyResize(int w, int h) = 0; /** * Calculate body widget's height when its width is limited to a given value. * * @param takenWidth return value of real width used * @param w maximum width * @return body widget's height */ virtual int bodyHeightForWidth(int *takeWidth, int width) = 0; /** * Calculate body widget's width when its height is limited to a given value. * * @param takenHeight return value of real height used * @param h maximum height * @return body widget's width */ virtual int bodyWidthForHeight(int *takenHeight, int height) = 0; /** * Test whether body is considered on a single line if its body height * is the given value. * * @param bodyHeight body height * @return true if its body widget is considered fitting one single line */ virtual bool bodyCanBeOnSameLine(int bodyHeight); /** * This item's label. */ QString label; /** * Font used to display this item's label */ QFont labelFont; /** * Height in pixels required for line that displays this item's * label */ int labelLineHeight; /** * True if label and body should always on separated lines. */ bool alwaysVertLayout; /** * The layout associated with this item */ int layout;public : /** * Constructor. * * @param parent owner screen widget * @param label label text * @param layout layout directive associated with this item * @param alwaysVertLayout true if label/body should always on separated lines */ Item (QWidget *parent, const QString &label, int layout, bool alwaysVertLayout=false); /** * Item's destructor. * Implementation should delete everything that is not deleted * automatically by the native environment. */ virtual ~Item(); /** * set or replace current label with this label * <i>called from common code</i> * @param &label new wlabel * @return MIDP error code (KNI_OK, KNI_ERR) */ MidpError setLabel(const QString &label); /** * the implementation should place this item in (x,y) coordinate relative * to the main container (for example, the scrollable area used for the * form). * <i>called from common code</i> * @param x coordinate relative to the left edge of the parent container * @param y coordinate relative to the top edge of the parent container * @return MIDP error code (KNI_OK, KNI_ERR) */ MidpError relocate(int x, int y); /** * Set the size of the widget, taking care of label and item pad within * this area. This size is granted by the form layout. * The body would take the remaining space. * (i.e. if the label is on the same row with the body, than the body height * would be (h-2*ITEM_PAD) and the width would be (w-label width-3*ITEM_PAD)) * <i>overriden by CustomItem</i> * <i>called from common code</i> * @param w allocated width for the item * @param h allocated height for the item * @return MIDP error code (KNI_OK, KNI_ERR) */ virtual MidpError setSize(int w, int h); /** * Height preferred by this item, including item pad and label. * No need to take care of locked sizes, as this is done in the java level. * <i>called from common code</i> * @param *h pointer to set the preferred height * @param w tentative width in pixels, or -1 if not yet computed * @return MIDP error code (KNI_OK, KNI_ERR) */ MidpError preferredHeight(int *h, int w); /** * Width preferred by this item, including item pad and label. * No need to take care of locked sizes, as this is done in the java level. * <i>called from common code</i> * @param *w pointer to set the preferred width * @param h tentative height in pixels, or -1 if not yet computed * @return MIDP error code (KNI_OK, KNI_ERR) */ MidpError preferredWidth(int *w, int h); /** * Minimum height required by this item, including item pad and label. * <i>called from common code</i> * @param *h pointer to set the preferred height * @return MIDP error code (KNI_OK, KNI_ERR) */ MidpError minimumHeight(int *h); /** * Minimum width required by this item, including item pad and label. * <i>called from common code</i> * @param *w pointer to set the preferred width * @return MIDP error code (KNI_OK, KNI_ERR) */ MidpError minimumWidth(int *w); /** * Gets actual width used by the label based on a passed content width. * @param contentWidht the width available for the label layout * @return width that label needs to occupy to display itself */ int getLabelWidth(int contentWidth); /** * Gets label height used based on the passed in width * @param w the width available for the label layout * @return height that label needs to occupy to display the label in the * given width */ int getLabelHeight(int w); /** * Gets layout associated with this item. * @return layout associated with this itm */ int getLayout();};#endif /* _LFPPORT_QTE_ITEM_H_ */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?