lfpport_qte_util.cpp
来自「This is a resource based on j2me embedde」· C++ 代码 · 共 119 行
CPP
119 行
/* * * * 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 "lfpport_qte_util.h"#include <midpMalloc.h>#include <midpUtilKni.h>#include <qstring.h>#include <qfontmetrics.h>#include <qfont.h>#include <qwidget.h>#include <qwsdecoration_qws.h>#include <qapplication.h>extern "C" voidpcsl_string2QString(const pcsl_string &pstring, QString &qstring) { /* * Example From the QT toolkit doc for QString.isNull() * QString a; // a.unicode() == 0, a.length() == 0 * QString b = ""; // b.unicode() == "", b.length() == 0 * a.isNull(); // TRUE, because a.unicode() == 0 * a.isEmpty(); // TRUE, because a.length() == 0 * b.isNull(); // FALSE, because b.unicode() != 0 * b.isEmpty(); // TRUE, because b.length() == 0 */ if (pcsl_string_is_null(&pstring)) { // we want isNull to be true qstring = (const char *)NULL; } else if (pcsl_string_length(&pstring) == 0) { // we want isEmpty to be true qstring = ""; } else { const pcsl_string* const mmstring = &pstring; GET_PCSL_STRING_DATA_AND_LENGTH(mmstring) qstring.setUnicodeCodes((const ushort *)mmstring_data, mmstring_len); RELEASE_PCSL_STRING_DATA_AND_LENGTH }}extern "C" MidpErrorQString2pcsl_string(QString &qstring, pcsl_string &pstring) { pcsl_string_status pe; if (qstring.isNull()) { pstring = PCSL_STRING_NULL; } else if (qstring.isEmpty()) { pstring = PCSL_STRING_EMPTY; } else { jint mstring_len = qstring.length(); jchar* mstring_data = (jchar *)midpMalloc(sizeof(jchar) * mstring_len); if (mstring_data == NULL) { pstring = PCSL_STRING_NULL; return KNI_ENOMEM; } else { for (int i = 0; i < mstring_len; i++) { mstring_data[i] = qstring[i].unicode(); } pe = pcsl_string_convert_from_utf16(mstring_data, mstring_len, &pstring); midpFree(mstring_data); if (PCSL_STRING_OK != pe) { return KNI_ENOMEM; } } } return KNI_OK;}PCSL_DEFINE_ASCII_STRING_LITERAL_START(truncmark){ 0x2026, 0 }PCSL_DEFINE_ASCII_STRING_LITERAL_END(truncmark);void truncateQString(QString & str, QFont font, int widthLimit) { QFontMetrics fm(font); if (fm.width(str) > widthLimit) { QString qTruncMark; pcsl_string2QString(truncmark, qTruncMark); int truncMarkWidth = fm.width(qTruncMark,1); int len = str.length(); while (len>0 && fm.width(str,len)>widthLimit-truncMarkWidth) { len--; } str.truncate(len); str.append(qTruncMark); }}int calculateCaptionWidth(QWidget * widget) { QWSDecoration & decor = QApplication::qwsDecoration(); QRect winRect = widget->geometry(); QRect rect = decor.region(widget,winRect,QWSDecoration::Title).boundingRect(); return rect.width()-PAD_CAPTION; // take into account space between buttons // and around the text}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?