anc_qte_indicator.cpp

来自「This is a resource based on j2me embedde」· C++ 代码 · 共 218 行

CPP
218
字号
/* * * * 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. */#include <qpainter.h>#include <sys/ioctl.h>#include <sys/types.h>#include <unistd.h>#include <errno.h>#include <fcntl.h>#include <kni.h>#include <midpStorage.h>#include <anc_indicators.h>#include <anc_qte_indicator.h>/** * @file * * Native code to handle indicator status. *//** * Platform handling code for turning off or on * indicators for signed MIDlet. * * IMPL_NOTE:Currently indicator does nothing for Java * and platform widget modules as we are waiting for * UI input. */extern "C"void anc_show_trusted_indicator(jboolean isTrusted) {    IndicatorBar::setTrustedOn((bool)isTrusted);}/** * Porting implementation for network indicator. * It controls the LED as the network indicator, it * ONLY works on device. There is no equivalent in emulator. */extern "C"void anc_set_network_indicator(AncNetworkIndicatorState status) {    IndicatorBar::setNetworkOn(status == ANC_NETWORK_INDICATOR_ON);}/** * Implement home icon on/off porting interface. */extern "C"void anc_toggle_home_icon(jboolean isHomeOn) {    IndicatorBar::setHomeOn((bool)isHomeOn);}/** *  Turn on or off the backlight, or toggle it. *  The backlight will be turned on to the system configured level. *  This function is only valid if QT's COP and QWS is available. * *  @param mode if <code>mode</code> is: *              <code>ANC_BACKLIGHT_ON</code> - turn on the backlight *              <code>ANC_BACKLIGHT_OFF</code> - turn off the backlight *              <code>ANC_BACKLIGHT_TOGGLE</code> - toggle the backlight *              <code>ANC_BACKLIGHT_SUPPORTED<code> - do nothing *              (this is used to determine if backlight control is *              supported on a system without  changing the state of *              the backlight.) *  @return <code>KNI_TRUE</code> if the system supports backlight *              control, or <code>KNI_FALSE</code> otherwise. */extern "C" jbooleananc_show_backlight(AncBacklightState mode) {    (void)mode;    return KNI_FALSE;}/** Declare static field */IndicatorBar* IndicatorBar::singleton; // = NULL/** * Construct a bar that shows indicators. */IndicatorBar::IndicatorBar(QWidget* parent) : QWidget(parent) {    // Set fixed size    setFixedSize(FULLWIDTH, 18);    QString qiconPath;    const pcsl_string * iconPath = storage_get_config_root(INTERNAL_STORAGE_ID);    jint iconPath_len = pcsl_string_length(iconPath);    const jchar * iconPath_data = pcsl_string_get_utf16_data(iconPath);    if (NULL != iconPath_data) {        qiconPath.setUnicodeCodes((const ushort *)iconPath_data, iconPath_len);    } // else {    // The qiconPath string will remain null.    // If this happens, most likely, it may show as not found resources    // }    // Bar image is set as background , maintained by QWidget    setBackgroundPixmap(QPixmap(qiconPath+"indicator_bar.png"));    homeIcon    = new QPixmap(qiconPath+"indicator_home.png");    trustedIcon = new QPixmap(qiconPath+"indicator_trusted.png");    networkIcon = new QPixmap(qiconPath+"indicator_network.png");    // Initialize paint flags for icons to false    homeOn = KNI_FALSE;    networkOn = KNI_FALSE;    trustedOn = KNI_FALSE;    // Remember this instance as the singleton    singleton = this;    pcsl_string_release_utf16_data(iconPath_data, iconPath);}/** * Destruct the bar that shows indicators. */IndicatorBar::~IndicatorBar() {    delete homeIcon;    delete trustedIcon;    delete networkIcon;    singleton = NULL;}/** * Override QWidget to paint indicators. */void IndicatorBar::paintEvent(QPaintEvent *e) {    // Paint background first    QWidget::paintEvent(e);    QPainter painter(this);    if (homeOn) {	painter.drawPixmap(HOME_ICON_X, 2, *homeIcon);    }    if (trustedOn) {	painter.drawPixmap(TRUSTED_ICON_X, 2, *trustedIcon);    }    if (networkOn) {	painter.drawPixmap(NETWORK_ICON_X, 2, *networkIcon);    }}/** * Return the singleton indicator bar object. * @param parent parent widget in case of first call. Otherwise, not used. * @return the singleton instance */IndicatorBar* IndicatorBar::createSingleton(QWidget* parent) {    if (singleton != NULL) {	return NULL; // Disallow creation of multiple instances    }    new IndicatorBar(parent); // singleton is set inside constructor    return singleton;}/** * Turn home indicator on or off. */void IndicatorBar::setHomeOn(bool isOn) {    if (singleton != NULL) {	singleton->homeOn = isOn;	singleton->repaint();    }}/** * Turn trusted indicator on or off. */void IndicatorBar::setTrustedOn(bool isOn) {    if (singleton != NULL) {	singleton->trustedOn = isOn;	singleton->repaint();    }}/** * Turn network indicator on or off. */void IndicatorBar::setNetworkOn(bool isOn) {    if (singleton != NULL) {	singleton->networkOn = isOn;	singleton->repaint();    }}

⌨️ 快捷键说明

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