summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWater-Team <water@pad.test.qt.nokia.com>2011-08-28 23:00:13 (GMT)
committerWater-Team <water@pad.test.qt.nokia.com>2011-08-28 23:00:13 (GMT)
commit996bf086dc7eb90081a986c03aba69df0a8a7d43 (patch)
tree04dc1689814817dc175b2e5b5cd81705ca8cdd7f
parent01a2f7d5303a5e1b7ef6814497ee98c30085a4b2 (diff)
parente154fb84b075ad3fda4ac02d620b28cc50e46c09 (diff)
downloadQt-996bf086dc7eb90081a986c03aba69df0a8a7d43.zip
Qt-996bf086dc7eb90081a986c03aba69df0a8a7d43.tar.gz
Qt-996bf086dc7eb90081a986c03aba69df0a8a7d43.tar.bz2
Merge branch '4.8-upstream' into master-water
-rw-r--r--doc/src/development/qmake-manual.qdoc17
-rw-r--r--doc/src/snippets/code/doc_src_qmake-manual.pro4
-rw-r--r--examples/xml/dombookmarks/dombookmarks.pro4
-rw-r--r--examples/xml/streambookmarks/streambookmarks.pro2
-rw-r--r--mkspecs/features/symbian/default_post.prf12
-rw-r--r--src/corelib/tools/qdatetime.cpp5
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp4
-rw-r--r--src/gui/s60framework/s60framework.pri3
-rw-r--r--src/gui/text/qfontengine_coretext.mm12
-rw-r--r--src/gui/text/qfontengine_coretext_p.h6
-rw-r--r--src/gui/text/qtextengine.cpp3
-rw-r--r--src/gui/text/qtextlayout.cpp6
-rw-r--r--src/gui/text/text.pri9
-rw-r--r--src/opengl/qpaintengine_opengl.cpp35
-rw-r--r--src/plugins/platforms/uikit/README19
-rw-r--r--src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo-Info.plist8
-rwxr-xr-xsrc/plugins/platforms/uikit/examples/flickrdemo/flickrdemo.xcodeproj/project.pbxproj20
-rw-r--r--src/plugins/platforms/uikit/examples/qmltest/qmltest-Info.plist8
-rwxr-xr-xsrc/plugins/platforms/uikit/examples/qmltest/qmltest.xcodeproj/project.pbxproj22
-rw-r--r--src/plugins/platforms/uikit/platform.pro12
-rw-r--r--src/plugins/platforms/uikit/qcoretextfontdatabase.cpp156
-rw-r--r--src/plugins/platforms/uikit/qcoretextfontdatabase.h58
-rw-r--r--src/plugins/platforms/uikit/quikiteventloop.mm11
-rw-r--r--src/plugins/platforms/uikit/quikitintegration.mm14
-rw-r--r--src/plugins/platforms/uikit/quikitscreen.mm5
-rw-r--r--src/s60installs/bwins/QtCoreu.def2
-rw-r--r--src/s60installs/bwins/QtGuiu.def53
-rw-r--r--src/s60installs/bwins/QtSqlu.def1
-rw-r--r--src/s60installs/bwins/QtTestu.def1
-rw-r--r--src/s60installs/eabi/QtCoreu.def2
-rw-r--r--src/s60installs/eabi/QtGuiu.def41
-rw-r--r--src/s60installs/eabi/QtSqlu.def1
-rw-r--r--src/s60installs/eabi/QtTestu.def1
-rw-r--r--tools/runonphone/main.cpp32
34 files changed, 477 insertions, 112 deletions
diff --git a/doc/src/development/qmake-manual.qdoc b/doc/src/development/qmake-manual.qdoc
index 184a881..329bac5 100644
--- a/doc/src/development/qmake-manual.qdoc
+++ b/doc/src/development/qmake-manual.qdoc
@@ -3116,6 +3116,23 @@
platform application shell. In addition it will make the application to
be launched in background.
+ From S60 version 5.4 onwards, you can specify \c graphics_memory value using \c RSS_RULES
+ to specify the graphics memory quota for the application. The value is in kilobytes and
+ defaults to 24576 (i.e. 24MB) for applications that link against QtGui. The default for all
+ other applications is zero.
+
+ The graphics memory quota tells the operating system how much graphics memory the
+ application is likely to need so that it can free up enough graphics memory prior to
+ application launch. If the value is too small, it can cause random slowdowns later when
+ the memory is freed on on-demand basis. On the other hand, too large values can delay
+ the application launch unnecessarily.
+
+ For example:
+
+ \snippet doc/src/snippets/code/doc_src_qmake-manual.pro 159
+
+ This example sets the graphics memory quota to 12MB.
+
For detailed list of possible \c APP_REGISTRATION_INFO statements, please refer to the
Symbian platform help.
diff --git a/doc/src/snippets/code/doc_src_qmake-manual.pro b/doc/src/snippets/code/doc_src_qmake-manual.pro
index ee35b77..042ca0e 100644
--- a/doc/src/snippets/code/doc_src_qmake-manual.pro
+++ b/doc/src/snippets/code/doc_src_qmake-manual.pro
@@ -1023,3 +1023,7 @@ packagesExist(sqlite3 QtNetwork QtDeclarative) {
// Use the fancy UI, as we have extra packages available
#endif
#! [158]
+
+#! [159]
+RSS_RULES += "graphics_memory=12288;"
+#! [159]
diff --git a/examples/xml/dombookmarks/dombookmarks.pro b/examples/xml/dombookmarks/dombookmarks.pro
index 374d9e3..1cee772 100644
--- a/examples/xml/dombookmarks/dombookmarks.pro
+++ b/examples/xml/dombookmarks/dombookmarks.pro
@@ -11,11 +11,9 @@ sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS dombookmarks.pro *.xbel
sources.path = $$[QT_INSTALL_EXAMPLES]/xml/dombookmarks
INSTALLS += target sources
-symbian: include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
-
symbian: {
include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
- addFiles.sources = frank.xbel jennifer.xbel
+ addFiles.files = frank.xbel jennifer.xbel
addFiles.path = files
DEPLOYMENT += addFiles
}
diff --git a/examples/xml/streambookmarks/streambookmarks.pro b/examples/xml/streambookmarks/streambookmarks.pro
index 0f2d55d..822a1ca 100644
--- a/examples/xml/streambookmarks/streambookmarks.pro
+++ b/examples/xml/streambookmarks/streambookmarks.pro
@@ -15,7 +15,7 @@ INSTALLS += target sources
symbian: {
include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)
- addFiles.sources = frank.xbel jennifer.xbel
+ addFiles.files = frank.xbel jennifer.xbel
addFiles.path = /data/qt/streambookmarks
DEPLOYMENT += addFiles
}
diff --git a/mkspecs/features/symbian/default_post.prf b/mkspecs/features/symbian/default_post.prf
index 470372e..c8fd33b 100644
--- a/mkspecs/features/symbian/default_post.prf
+++ b/mkspecs/features/symbian/default_post.prf
@@ -19,7 +19,19 @@ contains(TEMPLATE, ".*app") {
default_bin_deployment.path += /sys/bin
load(application_icon.prf)
+
+ # Specify default graphics memory quota for applications unless explicitly set by developer.
+ !contains(S60_VERSION, 5.0):!contains(S60_VERSION, 5.1):!contains(S60_VERSION, 5.2):!contains(S60_VERSION, 5.3) {
+ !contains(RSS_RULES, .*graphics_memory.*) {
+ contains(QT, gui) {
+ RSS_RULES += "graphics_memory=24576;"
+ } else {
+ RSS_RULES += "graphics_memory=0;"
+ }
+ }
+ }
}
+
contains(TEMPLATE, lib): {
contains(CONFIG, staticlib)|contains(CONFIG, static): {
# Static libs should not have LIBRARY statements in S60
diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp
index a6fee43..d915989 100644
--- a/src/corelib/tools/qdatetime.cpp
+++ b/src/corelib/tools/qdatetime.cpp
@@ -4040,8 +4040,11 @@ static QDateTimePrivate::Spec utcToLocal(QDate &date, QTime &time)
RTz tz;
User::LeaveIfError(tz.Connect());
CleanupClosePushL(tz);
- res.tm_isdst = tz.IsDaylightSavingOnL(*tz.GetTimeZoneIdL(),utcTTime);
+ CTzId *tzId = tz.GetTimeZoneIdL();
+ CleanupStack::PushL(tzId);
+ res.tm_isdst = tz.IsDaylightSavingOnL(*tzId,utcTTime);
User::LeaveIfError(tz.ConvertToLocalTime(utcTTime));
+ CleanupStack::PopAndDestroy(tzId);
CleanupStack::PopAndDestroy(&tz));
if (KErrNone == err) {
TDateTime localDateTime = utcTTime.DateTime();
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 76d7316..9826689 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -3098,7 +3098,7 @@ void QRasterPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textIte
ensurePen();
ensureState();
-#if defined (Q_WS_WIN) || defined(Q_WS_MAC)
+#if defined (Q_WS_WIN) || defined(Q_WS_MAC) || (defined(Q_OS_MAC) && defined(Q_WS_QPA))
if (!supportsTransformations(ti.fontEngine)) {
QVarLengthArray<QFixedPoint> positions;
@@ -3438,7 +3438,7 @@ bool QRasterPaintEngine::supportsTransformations(const QFontEngine *fontEngine)
bool QRasterPaintEngine::supportsTransformations(qreal pixelSize, const QTransform &m) const
{
-#if defined(Q_WS_MAC)
+#if defined(Q_WS_MAC) || (defined(Q_OS_MAC) && defined(Q_WS_QPA))
// Mac font engines don't support scaling and rotation
if (m.type() > QTransform::TxTranslate)
#else
diff --git a/src/gui/s60framework/s60framework.pri b/src/gui/s60framework/s60framework.pri
index e30d2c0..4e94c21 100644
--- a/src/gui/s60framework/s60framework.pri
+++ b/src/gui/s60framework/s60framework.pri
@@ -2,8 +2,7 @@ SOURCES += s60framework/qs60mainapplication.cpp \
s60framework/qs60mainappui.cpp \
s60framework/qs60maindocument.cpp \
s60framework/qs60keycapture.cpp
-HEADERS += qs60keycapture_p.h \
- s60framework/qs60mainapplication_p.h \
+HEADERS += s60framework/qs60mainapplication_p.h \
s60framework/qs60mainapplication.h \
s60framework/qs60mainappui.h \
s60framework/qs60maindocument.h \
diff --git a/src/gui/text/qfontengine_coretext.mm b/src/gui/text/qfontengine_coretext.mm
index 64d4a24..153451e 100644
--- a/src/gui/text/qfontengine_coretext.mm
+++ b/src/gui/text/qfontengine_coretext.mm
@@ -135,7 +135,7 @@ void QCoreTextFontEngineMulti::init(bool kerning)
attributeDict = CFDictionaryCreateMutable(0, 2,
&kCFTypeDictionaryKeyCallBacks,
&kCFTypeDictionaryValueCallBacks);
- CFDictionaryAddValue(attributeDict, NSFontAttributeName, ctfont);
+ CFDictionaryAddValue(attributeDict, kCTFontAttributeName, ctfont);
if (!kerning) {
float zero = 0.0;
QCFType<CFNumberRef> noKern = CFNumberCreate(kCFAllocatorDefault, kCFNumberFloatType, &zero);
@@ -257,7 +257,7 @@ bool QCoreTextFontEngineMulti::stringToCMap(const QChar *str, int len, QGlyphLay
//NSLog(@"Dictionary %@", runAttribs);
if (!runAttribs)
runAttribs = attributeDict;
- CTFontRef runFont = static_cast<CTFontRef>(CFDictionaryGetValue(runAttribs, NSFontAttributeName));
+ CTFontRef runFont = static_cast<CTFontRef>(CFDictionaryGetValue(runAttribs, kCTFontAttributeName));
uint fontIndex = fontIndexForFont(runFont);
const QFontEngine *engine = engineAt(fontIndex);
fontIndex <<= 24;
@@ -547,7 +547,6 @@ glyph_metrics_t QCoreTextFontEngine::boundingBox(glyph_t glyph)
ret.xoff = ret.xoff.round();
ret.yoff = ret.yoff.round();
}
-
return ret;
}
@@ -723,7 +722,12 @@ QImage QCoreTextFontEngine::imageForGlyph(glyph_t glyph, QFixed subPixelPosition
QImage im(qRound(br.width) + 2, qRound(br.height) + 2, QImage::Format_RGB32);
im.fill(0);
- CGColorSpaceRef colorspace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
+ CGColorSpaceRef colorspace =
+#ifdef Q_WS_MAC
+ CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
+#else
+ CGColorSpaceCreateDeviceRGB();
+#endif
uint cgflags = kCGImageAlphaNoneSkipFirst;
#ifdef kCGBitmapByteOrder32Host //only needed because CGImage.h added symbols in the minor version
cgflags |= kCGBitmapByteOrder32Host;
diff --git a/src/gui/text/qfontengine_coretext_p.h b/src/gui/text/qfontengine_coretext_p.h
index efe8295..0a2ae1f 100644
--- a/src/gui/text/qfontengine_coretext_p.h
+++ b/src/gui/text/qfontengine_coretext_p.h
@@ -44,6 +44,12 @@
#include <private/qfontengine_p.h>
+#ifdef QT_NO_CORESERVICES
+#include <CoreText/CoreText.h>
+#include <CoreGraphics/CoreGraphics.h>
+#include <private/qcore_mac_p.h>
+#endif
+
#if !defined(Q_WS_MAC) || (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
class QRawFontPrivate;
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index 9f148ee..aa4a20d 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -2087,7 +2087,8 @@ void QTextEngine::justify(const QScriptLine &line)
}
}
- QFixed need = line.width - line.textWidth;
+ QFixed leading = leadingSpaceWidth(line);
+ QFixed need = line.width - line.textWidth - leading;
if (need < 0) {
// line overflows already!
const_cast<QScriptLine &>(line).justified = true;
diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
index 515915a..4fd6ddf 100644
--- a/src/gui/text/qtextlayout.cpp
+++ b/src/gui/text/qtextlayout.cpp
@@ -1928,12 +1928,8 @@ found:
if (line.textWidth > 0 && item < eng->layoutData->items.size())
eng->maxWidth += lbh.spaceData.textWidth;
- // In the latter case, text are drawn with trailing spaces at the beginning
- // of a line, so the naturalTextWidth should contain the space width
- if ((eng->option.flags() & QTextOption::IncludeTrailingSpaces) ||
- (line.width == QFIXED_MAX && eng->isRightToLeft())) {
+ if (eng->option.flags() & QTextOption::IncludeTrailingSpaces)
line.textWidth += lbh.spaceData.textWidth;
- }
if (lbh.spaceData.length) {
line.length += lbh.spaceData.length;
line.hasTrailingSpaces = true;
diff --git a/src/gui/text/text.pri b/src/gui/text/text.pri
index b6cdc52..1cfacf7 100644
--- a/src/gui/text/text.pri
+++ b/src/gui/text/text.pri
@@ -106,14 +106,17 @@ unix:x11 {
!embedded:!qpa:!x11:mac {
HEADERS += \
text/qfontengine_mac_p.h
- OBJECTIVE_HEADERS += \
- text/qfontengine_coretext_p.h
SOURCES += \
text/qfont_mac.cpp \
text/qrawfont_mac.cpp
OBJECTIVE_SOURCES += \
- text/qfontengine_coretext.mm \
text/qfontengine_mac.mm
+}
+!embedded:!x11:mac {
+ OBJECTIVE_HEADERS += \
+ text/qfontengine_coretext_p.h
+ OBJECTIVE_SOURCES += \
+ text/qfontengine_coretext.mm
contains(QT_CONFIG, harfbuzz) {
DEFINES += QT_ENABLE_HARFBUZZ_FOR_MAC
}
diff --git a/src/opengl/qpaintengine_opengl.cpp b/src/opengl/qpaintengine_opengl.cpp
index 71ed690..0f33cab 100644
--- a/src/opengl/qpaintengine_opengl.cpp
+++ b/src/opengl/qpaintengine_opengl.cpp
@@ -4536,11 +4536,14 @@ struct QGLGlyphCoord {
};
struct QGLFontTexture {
+ QGLFontTexture() : data(0) { }
+ ~QGLFontTexture() { free(data); }
int x_offset; // glyph offset within the
int y_offset;
GLuint texture;
int width;
int height;
+ uchar *data;
};
typedef QHash<glyph_t, QGLGlyphCoord*> QGLGlyphHash;
@@ -4563,7 +4566,7 @@ public:
QGLGlyphCoord *lookup(QFontEngine *, glyph_t);
void cacheGlyphs(QGLContext *, QFontEngine *, glyph_t *glyphs, int numGlyphs);
void cleanCache();
- void allocTexture(int width, int height, GLuint texture);
+ void allocTexture(QGLFontTexture *);
public slots:
void cleanupContext(const QGLContext *);
@@ -4681,19 +4684,18 @@ void QGLGlyphCache::cleanCache()
qt_context_cache.clear();
}
-void QGLGlyphCache::allocTexture(int width, int height, GLuint texture)
+void QGLGlyphCache::allocTexture(QGLFontTexture *font_tex)
{
- uchar *tex_data = (uchar *) malloc(width*height*2);
- memset(tex_data, 0, width*height*2);
- glBindTexture(GL_TEXTURE_2D, texture);
+ font_tex->data = (uchar *) malloc(font_tex->width*font_tex->height*2);
+ memset(font_tex->data, 0, font_tex->width*font_tex->height*2);
+ glBindTexture(GL_TEXTURE_2D, font_tex->texture);
#ifndef QT_OPENGL_ES
glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE8_ALPHA8,
- width, height, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, tex_data);
+ font_tex->width, font_tex->height, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, font_tex->data);
#else
glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA,
- width, height, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, tex_data);
+ font_tex->width, font_tex->height, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, font_tex->data);
#endif
- free(tex_data);
}
#if 0
@@ -4777,13 +4779,13 @@ void QGLGlyphCache::cacheGlyphs(QGLContext *context, QFontEngine *fontEngine,
Q_ASSERT(max_tex_size > 0);
if (tex_width > max_tex_size)
tex_width = max_tex_size;
- allocTexture(tex_width, tex_height, font_texture);
font_tex = new QGLFontTexture;
font_tex->texture = font_texture;
font_tex->x_offset = x_margin;
font_tex->y_offset = y_margin;
font_tex->width = tex_width;
font_tex->height = tex_height;
+ allocTexture(font_tex);
// qDebug() << "new font tex - width:" << tex_width << "height:"<< tex_height
// << hex << "tex id:" << font_tex->texture << "key:" << font_key << "num cached:" << qt_font_textures.size();
qt_font_textures.insert(font_key, font_tex);
@@ -4806,21 +4808,19 @@ void QGLGlyphCache::cacheGlyphs(QGLContext *context, QFontEngine *fontEngine,
font_tex->y_offset += strip_height;
if (font_tex->y_offset >= font_tex->height) {
// get hold of the old font texture
- uchar *old_tex_data = (uchar *) malloc(font_tex->width*font_tex->height*2);
+ uchar *old_tex_data = font_tex->data;
int old_tex_height = font_tex->height;
-#ifndef QT_OPENGL_ES
- glGetTexImage(GL_TEXTURE_2D, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, old_tex_data);
-#endif
// realloc a larger texture
glDeleteTextures(1, &font_tex->texture);
glGenTextures(1, &font_tex->texture);
font_tex->height = qt_next_power_of_two(font_tex->height + strip_height);
- allocTexture(font_tex->width, font_tex->height, font_tex->texture);
+ allocTexture(font_tex);
// write back the old texture data
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, font_tex->width, old_tex_height,
GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, old_tex_data);
+ memcpy(font_tex->data, old_tex_data, font_tex->width*old_tex_height*2);
free(old_tex_data);
// update the texture coords and the y offset for the existing glyphs in
@@ -4868,8 +4868,10 @@ void QGLGlyphCache::cacheGlyphs(QGLContext *context, QFontEngine *fontEngine,
}
#endif
glyph_im = glyph_im.convertToFormat(QImage::Format_Indexed8);
+ int cacheLineStart = (font_tex->x_offset + font_tex->y_offset*font_tex->width)*2;
for (int y=0; y<glyph_im.height(); ++y) {
uchar *s = (uchar *) glyph_im.scanLine(y);
+ int lineStart = idx;
for (int x=0; x<glyph_im.width(); ++x) {
uchar alpha = is8BitGray ? *s : qAlpha(glyph_im.color(*s));
tex_data[idx] = alpha;
@@ -4879,6 +4881,9 @@ void QGLGlyphCache::cacheGlyphs(QGLContext *context, QFontEngine *fontEngine,
}
if (glyph_im.width()%2 != 0)
idx += 2;
+ // update cache
+ memcpy(font_tex->data+cacheLineStart, tex_data+lineStart, glyph_width*2);
+ cacheLineStart += font_tex->width*2;
}
glTexSubImage2D(GL_TEXTURE_2D, 0, font_tex->x_offset, font_tex->y_offset,
glyph_width, glyph_im.height(),
@@ -4950,7 +4955,7 @@ void QOpenGLPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
bool antialias = !(textItem->fontEngine()->fontDef.styleStrategy & QFont::NoAntialias)
- && (d->matrix.type() > QTransform::TxTranslate);
+ && (d->matrix.type() > QTransform::TxTranslate);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, antialias ? GL_LINEAR : GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, antialias ? GL_LINEAR : GL_NEAREST);
diff --git a/src/plugins/platforms/uikit/README b/src/plugins/platforms/uikit/README
index 795e72a..a8031e6 100644
--- a/src/plugins/platforms/uikit/README
+++ b/src/plugins/platforms/uikit/README
@@ -7,8 +7,8 @@ There have no tests been run whatsoever.
* Open GL ES 1/2 based backend
* Single touch
-* Text/font drawing using font shipped with application
-* Text input (Opening/closing software input panel.
+* Text/font drawing using system fonts (CoreText)
+* Text input (Opening/closing software input panel
Application has to perform necessary layout changes itself.)
* Initial showing/hiding of status bar (as defined in the Info.plist)
* Interface orientations as defined in the Info.plist of the application
@@ -21,7 +21,16 @@ Building/Deploying the application has to be done in Xcode. You need to generate
necessary moc_ files in advance and add these to the Xcode project. More details
on the Xcode setup see below.
-1) Build Qt
+1) Known Issues
+
+* Console message
+ "QEventDispatcherUNIX: internal error, wakeUps.testAndSetRelease(1, 0) failed!"
+ seems to appear sometimes for some people for unknown reasons and
+ unknown effect
+* JavaScript XmlHttpRequest doesn't work reliably even though networking
+ in general seems to
+
+2) Build Qt
The example Xcode project in the examples subdirectory requires that you do shadow
builds of Qt in qt-lighthouse-ios-simulator and qt-lighthouse-ios-device directories
@@ -43,7 +52,7 @@ Device:
-------
configure -qpa -xplatform qpa/macx-iphonedevice-g++ -arch armv7 -no-neon -developer-build -release -opengl es2 -no-accessibility -no-qt3support -no-multimedia -no-phonon-backend -no-webkit -no-scripttools -no-openssl -no-sql-mysql -no-sql-odbc -no-cups -no-iconv -no-dbus -static -nomake tools -nomake demos -nomake docs -nomake examples -nomake translations
-2) XCode setup:
+3) XCode setup:
- there are examples in the examples subdirectory of the platform plugin
- to create something fresh do something like:
- Xcode: Create a "View-based Appplication"
@@ -64,5 +73,5 @@ configure -qpa -xplatform qpa/macx-iphonedevice-g++ -arch armv7 -no-neon -develo
and call Phonon::Factory::setBackend(qt_plugin_instance_phonon_av());
Link to libphonon and to plugins/phonon/phonon_av
-3) Done: Build and Run.
+4) Done: Build and Run.
diff --git a/src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo-Info.plist b/src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo-Info.plist
index 5bc1ac9..3c45823 100644
--- a/src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo-Info.plist
+++ b/src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo-Info.plist
@@ -6,6 +6,8 @@
<string>English</string>
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
+ <key>CFBundleDocumentTypes</key>
+ <array/>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
@@ -20,6 +22,8 @@
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
+ <key>CFBundleURLTypes</key>
+ <array/>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSRequiresIPhoneOS</key>
@@ -37,5 +41,9 @@
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
</array>
+ <key>UTExportedTypeDeclarations</key>
+ <array/>
+ <key>UTImportedTypeDeclarations</key>
+ <array/>
</dict>
</plist>
diff --git a/src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo.xcodeproj/project.pbxproj b/src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo.xcodeproj/project.pbxproj
index b564ef9..dedc462 100755
--- a/src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo.xcodeproj/project.pbxproj
+++ b/src/plugins/platforms/uikit/examples/flickrdemo/flickrdemo.xcodeproj/project.pbxproj
@@ -17,13 +17,14 @@
D307DEB213EBCF5500399BD4 /* libQtOpenGL.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DEA913EBCF5500399BD4 /* libQtOpenGL.a */; };
D307DEB313EBCF5500399BD4 /* libQtScript.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DEAA13EBCF5500399BD4 /* libQtScript.a */; };
D307DEB413EBCF5500399BD4 /* libQtSql.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DEAB13EBCF5500399BD4 /* libQtSql.a */; };
- D307DEB513EBCF5500399BD4 /* libQtXml.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DEAC13EBCF5500399BD4 /* libQtXml.a */; };
D307DEB613EBCF5500399BD4 /* libQtXmlPatterns.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DEAD13EBCF5500399BD4 /* libQtXmlPatterns.a */; };
D307DEB813EBCF6400399BD4 /* libquikit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DEB713EBCF6400399BD4 /* libquikit.a */; };
D333CCF213B88A4D0070E08E /* moc_qmlapplicationviewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D333CCEF13B88A4D0070E08E /* moc_qmlapplicationviewer.cpp */; };
D333CCF313B88A4D0070E08E /* moc_qmlapplicationviewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D333CCEF13B88A4D0070E08E /* moc_qmlapplicationviewer.cpp */; };
D333CCF413B88A4D0070E08E /* qmlapplicationviewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D333CCF013B88A4D0070E08E /* qmlapplicationviewer.cpp */; };
D333CCF513B88A4D0070E08E /* qmlapplicationviewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D333CCF013B88A4D0070E08E /* qmlapplicationviewer.cpp */; };
+ D36D346513F3CD7E00EC5A41 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D36D346413F3CD7E00EC5A41 /* CoreText.framework */; };
+ D36D346613F3CD8800EC5A41 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D36D346413F3CD7E00EC5A41 /* CoreText.framework */; };
D3A51610134B03DE00E30E2F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3A5160F134B03DE00E30E2F /* OpenGLES.framework */; };
D3A51612134B03E900E30E2F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3A51611134B03E900E30E2F /* QuartzCore.framework */; };
D3A51615134B041500E30E2F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3A51611134B03E900E30E2F /* QuartzCore.framework */; };
@@ -36,8 +37,6 @@
D3CAA7F213264F52008BB877 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765A40DF7441C002DB57D /* CoreGraphics.framework */; };
D3CAA7FA13264F8A008BB877 /* libz.1.2.3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D3CAA7F913264F8A008BB877 /* libz.1.2.3.dylib */; };
D3CAA81113264FF0008BB877 /* libz.1.2.3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D3CAA7F913264F8A008BB877 /* libz.1.2.3.dylib */; };
- D3CAA88A132652E5008BB877 /* fonts in Resources */ = {isa = PBXBuildFile; fileRef = D3CAA836132652E5008BB877 /* fonts */; };
- D3CAA88B132652E5008BB877 /* fonts in Resources */ = {isa = PBXBuildFile; fileRef = D3CAA836132652E5008BB877 /* fonts */; };
D3D815F31329339300CDE422 /* flickr in Resources */ = {isa = PBXBuildFile; fileRef = D3D815D31329339300CDE422 /* flickr */; };
D3D815F4132933AB00CDE422 /* flickr in Resources */ = {isa = PBXBuildFile; fileRef = D3D815D31329339300CDE422 /* flickr */; };
D3D81758132A184300CDE422 /* libQtCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D81752132A184300CDE422 /* libQtCore.a */; };
@@ -46,7 +45,6 @@
D3D8175B132A184300CDE422 /* libQtNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D81755132A184300CDE422 /* libQtNetwork.a */; };
D3D8175C132A184300CDE422 /* libQtScript.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D81756132A184300CDE422 /* libQtScript.a */; };
D3D8175D132A184300CDE422 /* libQtSql.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D81757132A184300CDE422 /* libQtSql.a */; };
- D3D81760132A185A00CDE422 /* libQtXml.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D8175E132A185A00CDE422 /* libQtXml.a */; };
D3D81761132A185A00CDE422 /* libQtXmlPatterns.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D8175F132A185A00CDE422 /* libQtXmlPatterns.a */; };
D3D81763132A186B00CDE422 /* libquikit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D81762132A186B00CDE422 /* libquikit.a */; };
/* End PBXBuildFile section */
@@ -65,19 +63,18 @@
D307DEA913EBCF5500399BD4 /* libQtOpenGL.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtOpenGL.a; path = "../../../../../../../qt-lighthouse-ios-simulator/lib/libQtOpenGL.a"; sourceTree = "<group>"; };
D307DEAA13EBCF5500399BD4 /* libQtScript.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtScript.a; path = "../../../../../../../qt-lighthouse-ios-simulator/lib/libQtScript.a"; sourceTree = "<group>"; };
D307DEAB13EBCF5500399BD4 /* libQtSql.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtSql.a; path = "../../../../../../../qt-lighthouse-ios-simulator/lib/libQtSql.a"; sourceTree = "<group>"; };
- D307DEAC13EBCF5500399BD4 /* libQtXml.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtXml.a; path = "../../../../../../../qt-lighthouse-ios-simulator/lib/libQtXml.a"; sourceTree = "<group>"; };
D307DEAD13EBCF5500399BD4 /* libQtXmlPatterns.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtXmlPatterns.a; path = "../../../../../../../qt-lighthouse-ios-simulator/lib/libQtXmlPatterns.a"; sourceTree = "<group>"; };
D307DEB713EBCF6400399BD4 /* libquikit.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libquikit.a; path = "../../../../../../../qt-lighthouse-ios-simulator/plugins/platforms/libquikit.a"; sourceTree = "<group>"; };
D333CCEF13B88A4D0070E08E /* moc_qmlapplicationviewer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = moc_qmlapplicationviewer.cpp; path = ../share/qmlapplicationviewer/moc_qmlapplicationviewer.cpp; sourceTree = "<group>"; };
D333CCF013B88A4D0070E08E /* qmlapplicationviewer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = qmlapplicationviewer.cpp; path = ../share/qmlapplicationviewer/qmlapplicationviewer.cpp; sourceTree = "<group>"; };
D333CCF113B88A4D0070E08E /* qmlapplicationviewer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = qmlapplicationviewer.h; path = ../share/qmlapplicationviewer/qmlapplicationviewer.h; sourceTree = "<group>"; };
+ D36D346413F3CD7E00EC5A41 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; };
D3A5160F134B03DE00E30E2F /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
D3A51611134B03E900E30E2F /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
D3A51617134B042A00E30E2F /* libQtOpenGL.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtOpenGL.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtOpenGL.a"; sourceTree = "<group>"; };
D3CAA7C713264AAD008BB877 /* main.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = "<group>"; };
D3CAA7F613264F52008BB877 /* flickrdemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = flickrdemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
D3CAA7F913264F8A008BB877 /* libz.1.2.3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.1.2.3.dylib; path = usr/lib/libz.1.2.3.dylib; sourceTree = SDKROOT; };
- D3CAA836132652E5008BB877 /* fonts */ = {isa = PBXFileReference; lastKnownFileType = folder; name = fonts; path = ../../../../../../lib/fonts; sourceTree = SOURCE_ROOT; };
D3D815D31329339300CDE422 /* flickr */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flickr; path = ../../../../../../demos/declarative/flickr; sourceTree = SOURCE_ROOT; };
D3D81752132A184300CDE422 /* libQtCore.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtCore.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtCore.a"; sourceTree = SOURCE_ROOT; };
D3D81753132A184300CDE422 /* libQtDeclarative.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtDeclarative.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtDeclarative.a"; sourceTree = SOURCE_ROOT; };
@@ -85,7 +82,6 @@
D3D81755132A184300CDE422 /* libQtNetwork.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtNetwork.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtNetwork.a"; sourceTree = SOURCE_ROOT; };
D3D81756132A184300CDE422 /* libQtScript.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtScript.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtScript.a"; sourceTree = SOURCE_ROOT; };
D3D81757132A184300CDE422 /* libQtSql.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtSql.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtSql.a"; sourceTree = SOURCE_ROOT; };
- D3D8175E132A185A00CDE422 /* libQtXml.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtXml.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtXml.a"; sourceTree = SOURCE_ROOT; };
D3D8175F132A185A00CDE422 /* libQtXmlPatterns.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtXmlPatterns.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtXmlPatterns.a"; sourceTree = SOURCE_ROOT; };
D3D81762132A186B00CDE422 /* libquikit.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libquikit.a; path = "../../../../../../../qt-lighthouse-ios-device/plugins/platforms/libquikit.a"; sourceTree = SOURCE_ROOT; };
/* End PBXFileReference section */
@@ -95,6 +91,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ D36D346613F3CD8800EC5A41 /* CoreText.framework in Frameworks */,
D3A51612134B03E900E30E2F /* QuartzCore.framework in Frameworks */,
D3A51610134B03DE00E30E2F /* OpenGLES.framework in Frameworks */,
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
@@ -108,7 +105,6 @@
D307DEB213EBCF5500399BD4 /* libQtOpenGL.a in Frameworks */,
D307DEB313EBCF5500399BD4 /* libQtScript.a in Frameworks */,
D307DEB413EBCF5500399BD4 /* libQtSql.a in Frameworks */,
- D307DEB513EBCF5500399BD4 /* libQtXml.a in Frameworks */,
D307DEB613EBCF5500399BD4 /* libQtXmlPatterns.a in Frameworks */,
D307DEB813EBCF6400399BD4 /* libquikit.a in Frameworks */,
);
@@ -118,6 +114,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ D36D346513F3CD7E00EC5A41 /* CoreText.framework in Frameworks */,
D3A51618134B042A00E30E2F /* libQtOpenGL.a in Frameworks */,
D3CAA7F013264F52008BB877 /* Foundation.framework in Frameworks */,
D3CAA7F113264F52008BB877 /* UIKit.framework in Frameworks */,
@@ -131,7 +128,6 @@
D3D8175B132A184300CDE422 /* libQtNetwork.a in Frameworks */,
D3D8175C132A184300CDE422 /* libQtScript.a in Frameworks */,
D3D8175D132A184300CDE422 /* libQtSql.a in Frameworks */,
- D3D81760132A185A00CDE422 /* libQtXml.a in Frameworks */,
D3D81761132A185A00CDE422 /* libQtXmlPatterns.a in Frameworks */,
D3D81763132A186B00CDE422 /* libquikit.a in Frameworks */,
);
@@ -174,7 +170,6 @@
isa = PBXGroup;
children = (
D3D815D31329339300CDE422 /* flickr */,
- D3CAA836132652E5008BB877 /* fonts */,
8D1107310486CEB800E47090 /* flickrdemo-Info.plist */,
);
name = Resources;
@@ -190,6 +185,7 @@
288765A40DF7441C002DB57D /* CoreGraphics.framework */,
D3A51611134B03E900E30E2F /* QuartzCore.framework */,
D3A5160F134B03DE00E30E2F /* OpenGLES.framework */,
+ D36D346413F3CD7E00EC5A41 /* CoreText.framework */,
D3CAA7F913264F8A008BB877 /* libz.1.2.3.dylib */,
);
name = Frameworks;
@@ -216,7 +212,6 @@
D3A51617134B042A00E30E2F /* libQtOpenGL.a */,
D3D81756132A184300CDE422 /* libQtScript.a */,
D3D81757132A184300CDE422 /* libQtSql.a */,
- D3D8175E132A185A00CDE422 /* libQtXml.a */,
D3D8175F132A185A00CDE422 /* libQtXmlPatterns.a */,
);
name = Device;
@@ -233,7 +228,6 @@
D307DEA913EBCF5500399BD4 /* libQtOpenGL.a */,
D307DEAA13EBCF5500399BD4 /* libQtScript.a */,
D307DEAB13EBCF5500399BD4 /* libQtSql.a */,
- D307DEAC13EBCF5500399BD4 /* libQtXml.a */,
D307DEAD13EBCF5500399BD4 /* libQtXmlPatterns.a */,
);
name = Simulator;
@@ -306,7 +300,6 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- D3CAA88A132652E5008BB877 /* fonts in Resources */,
D3D815F31329339300CDE422 /* flickr in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -315,7 +308,6 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- D3CAA88B132652E5008BB877 /* fonts in Resources */,
D3D815F4132933AB00CDE422 /* flickr in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
diff --git a/src/plugins/platforms/uikit/examples/qmltest/qmltest-Info.plist b/src/plugins/platforms/uikit/examples/qmltest/qmltest-Info.plist
index 1566585..531d93d 100644
--- a/src/plugins/platforms/uikit/examples/qmltest/qmltest-Info.plist
+++ b/src/plugins/platforms/uikit/examples/qmltest/qmltest-Info.plist
@@ -6,6 +6,8 @@
<string>English</string>
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
+ <key>CFBundleDocumentTypes</key>
+ <array/>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
@@ -20,9 +22,15 @@
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
+ <key>CFBundleURLTypes</key>
+ <array/>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
+ <key>UTExportedTypeDeclarations</key>
+ <array/>
+ <key>UTImportedTypeDeclarations</key>
+ <array/>
</dict>
</plist>
diff --git a/src/plugins/platforms/uikit/examples/qmltest/qmltest.xcodeproj/project.pbxproj b/src/plugins/platforms/uikit/examples/qmltest/qmltest.xcodeproj/project.pbxproj
index afebcba..021eed2 100755
--- a/src/plugins/platforms/uikit/examples/qmltest/qmltest.xcodeproj/project.pbxproj
+++ b/src/plugins/platforms/uikit/examples/qmltest/qmltest.xcodeproj/project.pbxproj
@@ -18,12 +18,13 @@
D307DED313EBD05900399BD4 /* libQtOpenGL.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DECA13EBD05900399BD4 /* libQtOpenGL.a */; };
D307DED413EBD05900399BD4 /* libQtScript.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DECB13EBD05900399BD4 /* libQtScript.a */; };
D307DED513EBD05900399BD4 /* libQtSql.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DECC13EBD05900399BD4 /* libQtSql.a */; };
- D307DED613EBD05900399BD4 /* libQtXml.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DECD13EBD05900399BD4 /* libQtXml.a */; };
D307DED713EBD05900399BD4 /* libQtXmlPatterns.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D307DECE13EBD05900399BD4 /* libQtXmlPatterns.a */; };
D333CCF913B88A690070E08E /* moc_qmlapplicationviewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D333CCF613B88A690070E08E /* moc_qmlapplicationviewer.cpp */; };
D333CCFA13B88A690070E08E /* moc_qmlapplicationviewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D333CCF613B88A690070E08E /* moc_qmlapplicationviewer.cpp */; };
D333CCFB13B88A690070E08E /* qmlapplicationviewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D333CCF713B88A690070E08E /* qmlapplicationviewer.cpp */; };
D333CCFC13B88A690070E08E /* qmlapplicationviewer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D333CCF713B88A690070E08E /* qmlapplicationviewer.cpp */; };
+ D34F290413F29AF400E4F9AC /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D34F290313F29AF400E4F9AC /* CoreText.framework */; };
+ D34F290713F29B0A00E4F9AC /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D34F290613F29B0300E4F9AC /* CoreText.framework */; };
D35784261345D9940046D202 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D35784251345D9940046D202 /* OpenGLES.framework */; };
D35784281345D9E00046D202 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D35784271345D9E00046D202 /* QuartzCore.framework */; };
D3578436134A09990046D202 /* libQtOpenGL.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3578435134A09990046D202 /* libQtOpenGL.a */; };
@@ -36,8 +37,6 @@
D3CAA7F213264F52008BB877 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765A40DF7441C002DB57D /* CoreGraphics.framework */; };
D3CAA7FA13264F8A008BB877 /* libz.1.2.3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D3CAA7F913264F8A008BB877 /* libz.1.2.3.dylib */; };
D3CAA81113264FF0008BB877 /* libz.1.2.3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D3CAA7F913264F8A008BB877 /* libz.1.2.3.dylib */; };
- D3CAA88A132652E5008BB877 /* fonts in Resources */ = {isa = PBXBuildFile; fileRef = D3CAA836132652E5008BB877 /* fonts */; };
- D3CAA88B132652E5008BB877 /* fonts in Resources */ = {isa = PBXBuildFile; fileRef = D3CAA836132652E5008BB877 /* fonts */; };
D3CAA89113265310008BB877 /* qml in Resources */ = {isa = PBXBuildFile; fileRef = D3CAA88E13265310008BB877 /* qml */; };
D3CAA89213265310008BB877 /* qml in Resources */ = {isa = PBXBuildFile; fileRef = D3CAA88E13265310008BB877 /* qml */; };
D3D817B2132A2CFD00CDE422 /* libQtCore.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D817AA132A2CFD00CDE422 /* libQtCore.a */; };
@@ -46,7 +45,6 @@
D3D817B5132A2CFD00CDE422 /* libQtNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D817AD132A2CFD00CDE422 /* libQtNetwork.a */; };
D3D817B6132A2CFD00CDE422 /* libQtScript.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D817AE132A2CFD00CDE422 /* libQtScript.a */; };
D3D817B7132A2CFD00CDE422 /* libQtSql.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D817AF132A2CFD00CDE422 /* libQtSql.a */; };
- D3D817B8132A2CFD00CDE422 /* libQtXml.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D817B0132A2CFD00CDE422 /* libQtXml.a */; };
D3D817B9132A2CFD00CDE422 /* libQtXmlPatterns.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D817B1132A2CFD00CDE422 /* libQtXmlPatterns.a */; };
D3D817BB132A2D0E00CDE422 /* libquikit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D3D817BA132A2D0E00CDE422 /* libquikit.a */; };
/* End PBXBuildFile section */
@@ -66,18 +64,18 @@
D307DECA13EBD05900399BD4 /* libQtOpenGL.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtOpenGL.a; path = "../../../../../../../qt-lighthouse-ios-simulator/lib/libQtOpenGL.a"; sourceTree = "<group>"; };
D307DECB13EBD05900399BD4 /* libQtScript.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtScript.a; path = "../../../../../../../qt-lighthouse-ios-simulator/lib/libQtScript.a"; sourceTree = "<group>"; };
D307DECC13EBD05900399BD4 /* libQtSql.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtSql.a; path = "../../../../../../../qt-lighthouse-ios-simulator/lib/libQtSql.a"; sourceTree = "<group>"; };
- D307DECD13EBD05900399BD4 /* libQtXml.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtXml.a; path = "../../../../../../../qt-lighthouse-ios-simulator/lib/libQtXml.a"; sourceTree = "<group>"; };
D307DECE13EBD05900399BD4 /* libQtXmlPatterns.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtXmlPatterns.a; path = "../../../../../../../qt-lighthouse-ios-simulator/lib/libQtXmlPatterns.a"; sourceTree = "<group>"; };
D333CCF613B88A690070E08E /* moc_qmlapplicationviewer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = moc_qmlapplicationviewer.cpp; path = ../share/qmlapplicationviewer/moc_qmlapplicationviewer.cpp; sourceTree = "<group>"; };
D333CCF713B88A690070E08E /* qmlapplicationviewer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = qmlapplicationviewer.cpp; path = ../share/qmlapplicationviewer/qmlapplicationviewer.cpp; sourceTree = "<group>"; };
D333CCF813B88A690070E08E /* qmlapplicationviewer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = qmlapplicationviewer.h; path = ../share/qmlapplicationviewer/qmlapplicationviewer.h; sourceTree = "<group>"; };
+ D34F290313F29AF400E4F9AC /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; };
+ D34F290613F29B0300E4F9AC /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = System/Library/Frameworks/CoreText.framework; sourceTree = SDKROOT; };
D35784251345D9940046D202 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
D35784271345D9E00046D202 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
D3578435134A09990046D202 /* libQtOpenGL.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtOpenGL.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtOpenGL.a"; sourceTree = "<group>"; };
D3CAA7C713264AAD008BB877 /* main.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = "<group>"; };
D3CAA7F613264F52008BB877 /* qmltest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = qmltest.app; sourceTree = BUILT_PRODUCTS_DIR; };
D3CAA7F913264F8A008BB877 /* libz.1.2.3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.1.2.3.dylib; path = usr/lib/libz.1.2.3.dylib; sourceTree = SDKROOT; };
- D3CAA836132652E5008BB877 /* fonts */ = {isa = PBXFileReference; lastKnownFileType = folder; name = fonts; path = ../../../../../../lib/fonts; sourceTree = SOURCE_ROOT; };
D3CAA88E13265310008BB877 /* qml */ = {isa = PBXFileReference; lastKnownFileType = folder; path = qml; sourceTree = SOURCE_ROOT; };
D3D817AA132A2CFD00CDE422 /* libQtCore.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtCore.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtCore.a"; sourceTree = SOURCE_ROOT; };
D3D817AB132A2CFD00CDE422 /* libQtDeclarative.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtDeclarative.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtDeclarative.a"; sourceTree = SOURCE_ROOT; };
@@ -85,7 +83,6 @@
D3D817AD132A2CFD00CDE422 /* libQtNetwork.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtNetwork.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtNetwork.a"; sourceTree = SOURCE_ROOT; };
D3D817AE132A2CFD00CDE422 /* libQtScript.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtScript.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtScript.a"; sourceTree = SOURCE_ROOT; };
D3D817AF132A2CFD00CDE422 /* libQtSql.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtSql.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtSql.a"; sourceTree = SOURCE_ROOT; };
- D3D817B0132A2CFD00CDE422 /* libQtXml.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtXml.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtXml.a"; sourceTree = SOURCE_ROOT; };
D3D817B1132A2CFD00CDE422 /* libQtXmlPatterns.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libQtXmlPatterns.a; path = "../../../../../../../qt-lighthouse-ios-device/lib/libQtXmlPatterns.a"; sourceTree = SOURCE_ROOT; };
D3D817BA132A2D0E00CDE422 /* libquikit.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libquikit.a; path = "../../../../../../../qt-lighthouse-ios-device/plugins/platforms/libquikit.a"; sourceTree = SOURCE_ROOT; };
/* End PBXFileReference section */
@@ -95,6 +92,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ D34F290413F29AF400E4F9AC /* CoreText.framework in Frameworks */,
D35784281345D9E00046D202 /* QuartzCore.framework in Frameworks */,
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
@@ -108,7 +106,6 @@
D307DED313EBD05900399BD4 /* libQtOpenGL.a in Frameworks */,
D307DED413EBD05900399BD4 /* libQtScript.a in Frameworks */,
D307DED513EBD05900399BD4 /* libQtSql.a in Frameworks */,
- D307DED613EBD05900399BD4 /* libQtXml.a in Frameworks */,
D307DED713EBD05900399BD4 /* libQtXmlPatterns.a in Frameworks */,
D307DEC513EBD04100399BD4 /* libquikit.a in Frameworks */,
);
@@ -118,6 +115,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ D34F290713F29B0A00E4F9AC /* CoreText.framework in Frameworks */,
D357843A134A0AB10046D202 /* QuartzCore.framework in Frameworks */,
D3578439134A0AAE0046D202 /* OpenGLES.framework in Frameworks */,
D3CAA7F013264F52008BB877 /* Foundation.framework in Frameworks */,
@@ -130,7 +128,6 @@
D3D817B5132A2CFD00CDE422 /* libQtNetwork.a in Frameworks */,
D3D817B6132A2CFD00CDE422 /* libQtScript.a in Frameworks */,
D3D817B7132A2CFD00CDE422 /* libQtSql.a in Frameworks */,
- D3D817B8132A2CFD00CDE422 /* libQtXml.a in Frameworks */,
D3D817B9132A2CFD00CDE422 /* libQtXmlPatterns.a in Frameworks */,
D3D817BB132A2D0E00CDE422 /* libquikit.a in Frameworks */,
D3578436134A09990046D202 /* libQtOpenGL.a in Frameworks */,
@@ -152,6 +149,7 @@
29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
isa = PBXGroup;
children = (
+ D34F290313F29AF400E4F9AC /* CoreText.framework */,
29B97315FDCFA39411CA2CEA /* Other Sources */,
29B97317FDCFA39411CA2CEA /* Resources */,
D3CAA7E213264E8C008BB877 /* QMLApplicationViewer */,
@@ -174,7 +172,6 @@
isa = PBXGroup;
children = (
D3CAA88E13265310008BB877 /* qml */,
- D3CAA836132652E5008BB877 /* fonts */,
8D1107310486CEB800E47090 /* qmltest-Info.plist */,
);
name = Resources;
@@ -190,6 +187,7 @@
288765A40DF7441C002DB57D /* CoreGraphics.framework */,
D35784251345D9940046D202 /* OpenGLES.framework */,
D35784271345D9E00046D202 /* QuartzCore.framework */,
+ D34F290613F29B0300E4F9AC /* CoreText.framework */,
D3CAA7F913264F8A008BB877 /* libz.1.2.3.dylib */,
);
name = Frameworks;
@@ -216,7 +214,6 @@
D3578435134A09990046D202 /* libQtOpenGL.a */,
D3D817AE132A2CFD00CDE422 /* libQtScript.a */,
D3D817AF132A2CFD00CDE422 /* libQtSql.a */,
- D3D817B0132A2CFD00CDE422 /* libQtXml.a */,
D3D817B1132A2CFD00CDE422 /* libQtXmlPatterns.a */,
);
name = Device;
@@ -233,7 +230,6 @@
D307DECA13EBD05900399BD4 /* libQtOpenGL.a */,
D307DECB13EBD05900399BD4 /* libQtScript.a */,
D307DECC13EBD05900399BD4 /* libQtSql.a */,
- D307DECD13EBD05900399BD4 /* libQtXml.a */,
D307DECE13EBD05900399BD4 /* libQtXmlPatterns.a */,
);
name = Simulator;
@@ -306,7 +302,6 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- D3CAA88A132652E5008BB877 /* fonts in Resources */,
D3CAA89113265310008BB877 /* qml in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -315,7 +310,6 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- D3CAA88B132652E5008BB877 /* fonts in Resources */,
D3CAA89213265310008BB877 /* qml in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
diff --git a/src/plugins/platforms/uikit/platform.pro b/src/plugins/platforms/uikit/platform.pro
index 726da06..b5ff62f 100644
--- a/src/plugins/platforms/uikit/platform.pro
+++ b/src/plugins/platforms/uikit/platform.pro
@@ -17,11 +17,19 @@ OBJECTIVE_HEADERS = quikitintegration.h \
quikiteventloop.h \
quikitwindowsurface.h
-HEADERS = quikitsoftwareinputhandler.h
+HEADERS = quikitsoftwareinputhandler.h \
+ qcoretextfontdatabase.h
+
+SOURCES += \
+ qcoretextfontdatabase.cpp
+
+#needed for qcoretextfontengine even if it's not used
+INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty/harfbuzz/src
#add libz for freetype.
LIBS += -lz
-include(../fontdatabases/genericunix/genericunix.pri)
target.path += $$[QT_INSTALL_PLUGINS]/platforms
INSTALLS += target
+
+
diff --git a/src/plugins/platforms/uikit/qcoretextfontdatabase.cpp b/src/plugins/platforms/uikit/qcoretextfontdatabase.cpp
new file mode 100644
index 0000000..76ad936
--- /dev/null
+++ b/src/plugins/platforms/uikit/qcoretextfontdatabase.cpp
@@ -0,0 +1,156 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qcoretextfontdatabase.h"
+
+#include <CoreText/CoreText.h>
+
+#include <private/qcore_mac_p.h>
+#include <private/qfontengine_coretext_p.h>
+
+#include <QtDebug>
+
+QT_BEGIN_NAMESPACE
+
+void QCoreTextFontDatabase::populateFontDatabase()
+{
+ QCFType<CTFontCollectionRef> collection = CTFontCollectionCreateFromAvailableFonts(0);
+ if(!collection)
+ return;
+ QCFType<CFArrayRef> fonts = CTFontCollectionCreateMatchingFontDescriptors(collection);
+ if(!fonts)
+ return;
+ QSupportedWritingSystems supportedWritingSystems;
+ for (int i = 0; i < QFontDatabase::WritingSystemsCount; ++i)
+ supportedWritingSystems.setSupported((QFontDatabase::WritingSystem)i, true);
+ QString foundry_name = "CoreText";
+ const int numFonts = CFArrayGetCount(fonts);
+ for(int i = 0; i < numFonts; ++i) {
+ CTFontDescriptorRef font = (CTFontDescriptorRef)CFArrayGetValueAtIndex(fonts, i);
+
+ QCFString family_name = (CFStringRef)CTFontDescriptorCopyAttribute(font, kCTFontFamilyNameAttribute);
+// QCFString style_name = (CFStringRef)CTFontDescriptorCopyAttribute(font, kCTFontStyleNameAttribute);
+
+ QFont::Weight fontWeight = QFont::Normal;
+ QFont::Style fontStyle = QFont::StyleNormal;
+ if(QCFType<CFDictionaryRef> styles = (CFDictionaryRef)CTFontDescriptorCopyAttribute(font, kCTFontTraitsAttribute)) {
+ if(CFNumberRef weight = (CFNumberRef)CFDictionaryGetValue(styles, kCTFontWeightTrait)) {
+ Q_ASSERT(CFNumberIsFloatType(weight));
+ double d;
+ if(CFNumberGetValue(weight, kCFNumberDoubleType, &d)) {
+ if (d > 0.0)
+ fontWeight = QFont::Bold;
+ }
+ }
+ if(CFNumberRef italic = (CFNumberRef)CFDictionaryGetValue(styles, kCTFontSlantTrait)) {
+ Q_ASSERT(CFNumberIsFloatType(italic));
+ double d;
+ if(CFNumberGetValue(italic, kCFNumberDoubleType, &d)) {
+ if (d > 0.0)
+ fontStyle = QFont::StyleItalic;
+ }
+ }
+ }
+
+ int pixelSize = 0;
+ if(QCFType<CFNumberRef> size = (CFNumberRef)CTFontDescriptorCopyAttribute(font, kCTFontSizeAttribute)) {
+ if(CFNumberIsFloatType(size)) {
+ double d;
+ CFNumberGetValue(size, kCFNumberDoubleType, &d);
+ pixelSize = d;
+ } else {
+ CFNumberGetValue(size, kCFNumberIntType, &pixelSize);
+ }
+ }
+ registerFont(QString(family_name),
+ foundry_name,
+ fontWeight,
+ fontStyle,
+ QFont::Unstretched,
+ true,
+ true,
+ pixelSize,
+ supportedWritingSystems,
+ 0);
+ }
+}
+
+QFontEngine *QCoreTextFontDatabase::fontEngine(const QFontDef &fontDef, QUnicodeTables::Script script, void *handle)
+{
+ Q_UNUSED(script)
+ Q_UNUSED(handle)
+ CTFontSymbolicTraits symbolicTraits = 0;
+ if (fontDef.weight >= QFont::Bold)
+ symbolicTraits |= kCTFontBoldTrait;
+ switch (fontDef.style) {
+ case QFont::StyleNormal:
+ break;
+ case QFont::StyleItalic:
+ case QFont::StyleOblique:
+ symbolicTraits |= kCTFontItalicTrait;
+ break;
+ }
+
+ CGAffineTransform transform = CGAffineTransformIdentity;
+ if (fontDef.stretch != 100) {
+ transform = CGAffineTransformMakeScale(float(fontDef.stretch) / float(100), 1);
+ }
+
+ QCFType<CTFontRef> baseFont = CTFontCreateWithName(QCFString(fontDef.family), fontDef.pixelSize, &transform);
+ QCFType<CTFontRef> ctFont = NULL;
+ // There is a side effect in Core Text: if we apply 0 as symbolic traits to a font in normal weight,
+ // we will get the light version of that font (while the way supposed to work doesn't:
+ // setting kCTFontWeightTrait to some value between -1.0 to 0.0 has no effect on font selection)
+ if (fontDef.weight != QFont::Normal || symbolicTraits)
+ ctFont = CTFontCreateCopyWithSymbolicTraits(baseFont, fontDef.pixelSize, &transform, symbolicTraits, symbolicTraits);
+
+ // CTFontCreateCopyWithSymbolicTraits returns NULL if we ask for a trait that does
+ // not exist for the given font. (for example italic)
+ if (ctFont == 0) {
+ ctFont = baseFont;
+ }
+
+ if (ctFont)
+ return new QCoreTextFontEngine(ctFont, fontDef);
+ return 0;
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/uikit/qcoretextfontdatabase.h b/src/plugins/platforms/uikit/qcoretextfontdatabase.h
new file mode 100644
index 0000000..f4fcb20
--- /dev/null
+++ b/src/plugins/platforms/uikit/qcoretextfontdatabase.h
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the plugins of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QCORETEXTFONTDATABASE_H
+#define QCORETEXTFONTDATABASE_H
+
+#include <QtGui/QPlatformFontDatabase>
+
+QT_BEGIN_NAMESPACE
+
+class QCoreTextFontDatabase : public QPlatformFontDatabase
+{
+public:
+ void populateFontDatabase();
+ QFontEngine *fontEngine(const QFontDef &fontDef, QUnicodeTables::Script script, void *handle);
+};
+
+QT_END_NAMESPACE
+
+#endif // QCORETEXTFONTDATABASE_H
diff --git a/src/plugins/platforms/uikit/quikiteventloop.mm b/src/plugins/platforms/uikit/quikiteventloop.mm
index 7df7ec8..152a34a 100644
--- a/src/plugins/platforms/uikit/quikiteventloop.mm
+++ b/src/plugins/platforms/uikit/quikiteventloop.mm
@@ -67,7 +67,6 @@
- (id)initWithEventLoopIntegration:(QUIKitEventLoop *)integration;
-- (void)processEvents;
- (void)processEventsAndSchedule;
@end
@@ -160,17 +159,11 @@
return self;
}
-- (void)processEvents
-{
- QPlatformEventLoopIntegration::processEvents();
-}
-
- (void)processEventsAndSchedule
{
QPlatformEventLoopIntegration::processEvents();
- qint64 nextTime = qMin((qint64)33, mIntegration->nextTimerEvent()); // at least 30fps
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
- NSDate *nextDate = [[NSDate date] dateByAddingTimeInterval:((double)nextTime/1000)];
+ NSDate *nextDate = [[NSDate date] dateByAddingTimeInterval:((double)mIntegration->nextTimerEvent()/1000.)];
[mIntegration->mTimer setFireDate:nextDate];
[pool release];
}
@@ -211,7 +204,7 @@ void QUIKitEventLoop::quitEventLoop()
void QUIKitEventLoop::qtNeedsToProcessEvents()
{
- [mHelper performSelectorOnMainThread:@selector(processEvents) withObject:nil waitUntilDone:NO];
+ [mHelper performSelectorOnMainThread:@selector(processEventsAndSchedule) withObject:nil waitUntilDone:NO];
}
static UIReturnKeyType keyTypeForObject(QObject *obj)
diff --git a/src/plugins/platforms/uikit/quikitintegration.mm b/src/plugins/platforms/uikit/quikitintegration.mm
index ca020c9..02da97c 100644
--- a/src/plugins/platforms/uikit/quikitintegration.mm
+++ b/src/plugins/platforms/uikit/quikitintegration.mm
@@ -44,7 +44,7 @@
#include "quikitwindowsurface.h"
#include "quikitscreen.h"
#include "quikiteventloop.h"
-#include "qgenericunixfontdatabase.h"
+#include "qcoretextfontdatabase.h"
#include <QtGui/QApplication>
@@ -56,16 +56,6 @@
QT_BEGIN_NAMESPACE
-class QUIKitFontDatabase : public QGenericUnixFontDatabase
-{
-public:
- virtual QString fontDir() const
- {
- return QString( [[[[NSBundle mainBundle] bundlePath]
- stringByAppendingPathComponent:@"fonts"] UTF8String] );
- }
-};
-
static QUIKitIntegration *m_instance = 0;
QUIKitIntegration * QUIKitIntegration::instance()
@@ -74,7 +64,7 @@ QUIKitIntegration * QUIKitIntegration::instance()
}
QUIKitIntegration::QUIKitIntegration()
- :mFontDb(new QUIKitFontDatabase() )
+ :mFontDb(new QCoreTextFontDatabase)
{
if (!m_instance)
m_instance = this;
diff --git a/src/plugins/platforms/uikit/quikitscreen.mm b/src/plugins/platforms/uikit/quikitscreen.mm
index 3c1e360..6d24193 100644
--- a/src/plugins/platforms/uikit/quikitscreen.mm
+++ b/src/plugins/platforms/uikit/quikitscreen.mm
@@ -63,7 +63,6 @@ QUIKitScreen::QUIKitScreen(int screenIndex)
const qreal inch = 25.4;
qreal dpi = 160.;
int dragDistance = 12;
- int defaultFontPixelSize = 14;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
dpi = 132.;
dragDistance = 10;
@@ -71,8 +70,8 @@ QUIKitScreen::QUIKitScreen(int screenIndex)
m_physicalSize = QSize(qRound(bounds.size.width * inch / dpi), qRound(bounds.size.height * inch / dpi));
qApp->setStartDragDistance(dragDistance);
- QFont font(QLatin1String("Bitstream Vera Sans"));
- font.setPixelSize(defaultFontPixelSize);
+ QFont font; // system font is helvetica, so that is fine already
+ font.setPixelSize([UIFont systemFontSize]);
qApp->setFont(font);
[pool release];
diff --git a/src/s60installs/bwins/QtCoreu.def b/src/s60installs/bwins/QtCoreu.def
index ff29c0a..35f4e6c 100644
--- a/src/s60installs/bwins/QtCoreu.def
+++ b/src/s60installs/bwins/QtCoreu.def
@@ -4882,4 +4882,6 @@ EXPORTS
?resultsReadyAt@QFutureWatcherBase@@IAEXHH@Z @ 4881 NONAME ; void QFutureWatcherBase::resultsReadyAt(int, int)
?started@QFutureWatcherBase@@IAEXXZ @ 4882 NONAME ; void QFutureWatcherBase::started(void)
?resetInternalData@QAbstractItemModel@@IAEXXZ @ 4883 NONAME ; void QAbstractItemModel::resetInternalData(void)
+ ?toLower@QLocale@@QBE?AVQString@@ABV2@@Z @ 4884 NONAME ; class QString QLocale::toLower(class QString const &) const
+ ?toUpper@QLocale@@QBE?AVQString@@ABV2@@Z @ 4885 NONAME ; class QString QLocale::toUpper(class QString const &) const
diff --git a/src/s60installs/bwins/QtGuiu.def b/src/s60installs/bwins/QtGuiu.def
index b763848..e05f0b8 100644
--- a/src/s60installs/bwins/QtGuiu.def
+++ b/src/s60installs/bwins/QtGuiu.def
@@ -14045,4 +14045,57 @@ EXPORTS
?setStyleName@QFont@@QAEXABVQString@@@Z @ 14044 NONAME ; void QFont::setStyleName(class QString const &)
?styleName@QFont@@QBE?AVQString@@XZ @ 14045 NONAME ; class QString QFont::styleName(void) const
?styleName@QFontInfo@@QBE?AVQString@@XZ @ 14046 NONAME ; class QString QFontInfo::styleName(void) const
+ ?initialize@QTreeViewPrivate@@QAEXXZ @ 14047 NONAME ; void QTreeViewPrivate::initialize(void)
+ ?expand@QTreeViewPrivate@@QAEXH_N@Z @ 14048 NONAME ; void QTreeViewPrivate::expand(int, bool)
+ ?removeViewItems@QTreeViewPrivate@@QAEXHH@Z @ 14049 NONAME ; void QTreeViewPrivate::removeViewItems(int, int)
+ ?drawAnimatedOperation@QTreeViewPrivate@@QBEXPAVQPainter@@@Z @ 14050 NONAME ; void QTreeViewPrivate::drawAnimatedOperation(class QPainter *) const
+ ?firstVisibleItem@QTreeViewPrivate@@QBEHPAH@Z @ 14051 NONAME ; int QTreeViewPrivate::firstVisibleItem(int *) const
+ ?hasFamily@QFontDatabase@@QBE_NABVQString@@@Z @ 14052 NONAME ; bool QFontDatabase::hasFamily(class QString const &) const
+ ?insertViewItems@QTreeViewPrivate@@QAEXHHABUQTreeViewItem@@@Z @ 14053 NONAME ; void QTreeViewPrivate::insertViewItems(int, int, struct QTreeViewItem const &)
+ ??0QTreeViewPrivate@@QAE@XZ @ 14054 NONAME ; QTreeViewPrivate::QTreeViewPrivate(void)
+ ??_EQTreeViewPrivate@@UAE@I@Z @ 14055 NONAME ; QTreeViewPrivate::~QTreeViewPrivate(unsigned int)
+ ?q_func@QTreeViewPrivate@@ABEPBVQTreeView@@XZ @ 14056 NONAME ; class QTreeView const * QTreeViewPrivate::q_func(void) const
+ ?viewIndex@QTreeViewPrivate@@QBEHABVQModelIndex@@@Z @ 14057 NONAME ; int QTreeViewPrivate::viewIndex(class QModelIndex const &) const
+ ?q_func@QTreeViewPrivate@@AAEPAVQTreeView@@XZ @ 14058 NONAME ; class QTreeView * QTreeViewPrivate::q_func(void)
+ ?updateScrollBars@QTreeViewPrivate@@QAEXXZ @ 14059 NONAME ; void QTreeViewPrivate::updateScrollBars(void)
+ ?indentationForItem@QTreeViewPrivate@@QBEHH@Z @ 14060 NONAME ; int QTreeViewPrivate::indentationForItem(int) const
+ ?above@QTreeViewPrivate@@QBEHH@Z @ 14061 NONAME ; int QTreeViewPrivate::above(int) const
+ ?_q_columnsRemoved@QTreeViewPrivate@@UAEXABVQModelIndex@@HH@Z @ 14062 NONAME ; void QTreeViewPrivate::_q_columnsRemoved(class QModelIndex const &, int, int)
+ ?columnRanges@QTreeViewPrivate@@QBE?AV?$QList@U?$QPair@HH@@@@ABVQModelIndex@@0@Z @ 14063 NONAME ; class QList<struct QPair<int, int> > QTreeViewPrivate::columnRanges(class QModelIndex const &, class QModelIndex const &) const
+ ?_q_modelDestroyed@QTreeViewPrivate@@UAEXXZ @ 14064 NONAME ; void QTreeViewPrivate::_q_modelDestroyed(void)
+ ?coordinateForItem@QTreeViewPrivate@@QBEHH@Z @ 14065 NONAME ; int QTreeViewPrivate::coordinateForItem(int) const
+ ?accessibleTable2Index@QTreeViewPrivate@@QBEHABVQModelIndex@@@Z @ 14066 NONAME ; int QTreeViewPrivate::accessibleTable2Index(class QModelIndex const &) const
+ ?select@QTreeViewPrivate@@QAEXABVQModelIndex@@0V?$QFlags@W4SelectionFlag@QItemSelectionModel@@@@@Z @ 14067 NONAME ; void QTreeViewPrivate::select(class QModelIndex const &, class QModelIndex const &, class QFlags<enum QItemSelectionModel::SelectionFlag>)
+ ?drawPixmapFragments@QPaintEngineEx@@UAEXPBVQRectF@@0HABVQPixmap@@V?$QFlags@W4PixmapFragmentHint@QPainter@@@@@Z @ 14068 NONAME ; void QPaintEngineEx::drawPixmapFragments(class QRectF const *, class QRectF const *, int, class QPixmap const &, class QFlags<enum QPainter::PixmapFragmentHint>)
+ ?draggablePaintPairs@QTreeViewPrivate@@UBE?AV?$QList@U?$QPair@VQRect@@VQModelIndex@@@@@@ABV?$QList@VQModelIndex@@@@PAVQRect@@@Z @ 14069 NONAME ; class QList<struct QPair<class QRect, class QModelIndex> > QTreeViewPrivate::draggablePaintPairs(class QList<class QModelIndex> const &, class QRect *) const
+ ?beginAnimatedOperation@QTreeViewPrivate@@QAEXXZ @ 14070 NONAME ; void QTreeViewPrivate::beginAnimatedOperation(void)
+ ?columnAt@QTreeViewPrivate@@QBEHH@Z @ 14071 NONAME ; int QTreeViewPrivate::columnAt(int) const
+ ?pageUp@QTreeViewPrivate@@QBEHH@Z @ 14072 NONAME ; int QTreeViewPrivate::pageUp(int) const
+ ?isItemHiddenOrDisabled@QTreeViewPrivate@@QBE_NH@Z @ 14073 NONAME ; bool QTreeViewPrivate::isItemHiddenOrDisabled(int) const
+ ?expandOrCollapseItemAtPos@QTreeViewPrivate@@QAE_NABVQPoint@@@Z @ 14074 NONAME ; bool QTreeViewPrivate::expandOrCollapseItemAtPos(class QPoint const &)
+ ?paintAlternatingRowColors@QTreeViewPrivate@@QBEXPAVQPainter@@PAVQStyleOptionViewItemV4@@HH@Z @ 14075 NONAME ; void QTreeViewPrivate::paintAlternatingRowColors(class QPainter *, class QStyleOptionViewItemV4 *, int, int) const
+ ?drawPixmapFragments@QPainter@@QAEXPBVQRectF@@0HABVQPixmap@@V?$QFlags@W4PixmapFragmentHint@QPainter@@@@@Z @ 14076 NONAME ; void QPainter::drawPixmapFragments(class QRectF const *, class QRectF const *, int, class QPixmap const &, class QFlags<enum QPainter::PixmapFragmentHint>)
+ ?itemDecorationRect@QTreeViewPrivate@@QBE?AVQRect@@ABVQModelIndex@@@Z @ 14077 NONAME ; class QRect QTreeViewPrivate::itemDecorationRect(class QModelIndex const &) const
+ ??1QTreeViewPrivate@@UAE@XZ @ 14078 NONAME ; QTreeViewPrivate::~QTreeViewPrivate(void)
+ ?storeExpanded@QTreeViewPrivate@@QAE_NABVQPersistentModelIndex@@@Z @ 14079 NONAME ; bool QTreeViewPrivate::storeExpanded(class QPersistentModelIndex const &)
+ ?hasVisibleChildren@QTreeViewPrivate@@QBE_NABVQModelIndex@@@Z @ 14080 NONAME ; bool QTreeViewPrivate::hasVisibleChildren(class QModelIndex const &) const
+ ?itemAtCoordinate@QTreeViewPrivate@@QBEHH@Z @ 14081 NONAME ; int QTreeViewPrivate::itemAtCoordinate(int) const
+ ?renderTreeToPixmapForAnimation@QTreeViewPrivate@@QBE?AVQPixmap@@ABVQRect@@@Z @ 14082 NONAME ; class QPixmap QTreeViewPrivate::renderTreeToPixmapForAnimation(class QRect const &) const
+ ?prepareAnimatedOperation@QTreeViewPrivate@@QAEXHW4Direction@QAbstractAnimation@@@Z @ 14083 NONAME ; void QTreeViewPrivate::prepareAnimatedOperation(int, enum QAbstractAnimation::Direction)
+ ?_q_endAnimatedOperation@QTreeViewPrivate@@QAEXXZ @ 14084 NONAME ; void QTreeViewPrivate::_q_endAnimatedOperation(void)
+ ?startAndEndColumns@QTreeViewPrivate@@QBE?AU?$QPair@HH@@ABVQRect@@@Z @ 14085 NONAME ; struct QPair<int, int> QTreeViewPrivate::startAndEndColumns(class QRect const &) const
+ ?invalidateHeightCache@QTreeViewPrivate@@QBEXH@Z @ 14086 NONAME ; void QTreeViewPrivate::invalidateHeightCache(int) const
+ ?isIndexExpanded@QTreeViewPrivate@@QBE_NABVQModelIndex@@@Z @ 14087 NONAME ; bool QTreeViewPrivate::isIndexExpanded(class QModelIndex const &) const
+ ?layout@QTreeViewPrivate@@QAEXH_N0@Z @ 14088 NONAME ; void QTreeViewPrivate::layout(int, bool, bool)
+ ?cancelPasswordEchoTimer@QLineControl@@AAEXXZ @ 14089 NONAME ; void QLineControl::cancelPasswordEchoTimer(void)
+ ?collapse@QTreeViewPrivate@@QAEXH_N@Z @ 14090 NONAME ; void QTreeViewPrivate::collapse(int, bool)
+ ?modelIndex@QTreeViewPrivate@@QBE?AVQModelIndex@@HH@Z @ 14091 NONAME ; class QModelIndex QTreeViewPrivate::modelIndex(int, int) const
+ ?itemHeight@QTreeViewPrivate@@QBEHH@Z @ 14092 NONAME ; int QTreeViewPrivate::itemHeight(int) const
+ ?isRowHidden@QTreeViewPrivate@@QBE_NABVQModelIndex@@@Z @ 14093 NONAME ; bool QTreeViewPrivate::isRowHidden(class QModelIndex const &) const
+ ?_q_sortIndicatorChanged@QTreeViewPrivate@@QAEXHW4SortOrder@Qt@@@Z @ 14094 NONAME ; void QTreeViewPrivate::_q_sortIndicatorChanged(int, enum Qt::SortOrder)
+ ?pageDown@QTreeViewPrivate@@QBEHH@Z @ 14095 NONAME ; int QTreeViewPrivate::pageDown(int) const
+ ?_q_modelAboutToBeReset@QTreeViewPrivate@@QAEXXZ @ 14096 NONAME ; void QTreeViewPrivate::_q_modelAboutToBeReset(void)
+ ?itemDecorationAt@QTreeViewPrivate@@QBEHABVQPoint@@@Z @ 14097 NONAME ; int QTreeViewPrivate::itemDecorationAt(class QPoint const &) const
+ ?below@QTreeViewPrivate@@QBEHH@Z @ 14098 NONAME ; int QTreeViewPrivate::below(int) const
+ ?_q_columnsAboutToBeRemoved@QTreeViewPrivate@@UAEXABVQModelIndex@@HH@Z @ 14099 NONAME ; void QTreeViewPrivate::_q_columnsAboutToBeRemoved(class QModelIndex const &, int, int)
diff --git a/src/s60installs/bwins/QtSqlu.def b/src/s60installs/bwins/QtSqlu.def
index 586850a..3e726e8 100644
--- a/src/s60installs/bwins/QtSqlu.def
+++ b/src/s60installs/bwins/QtSqlu.def
@@ -470,4 +470,5 @@ EXPORTS
?qt_static_metacall@QSqlRelationalTableModel@@CAXPAVQObject@@W4Call@QMetaObject@@HPAPAX@Z @ 469 NONAME ; void QSqlRelationalTableModel::qt_static_metacall(class QObject *, enum QMetaObject::Call, int, void * *)
?staticMetaObjectExtraData@QSqlRelationalTableModel@@0UQMetaObjectExtraData@@B @ 470 NONAME ; struct QMetaObjectExtraData const QSqlRelationalTableModel::staticMetaObjectExtraData
?qt_static_metacall@QSqlDriverPlugin@@CAXPAVQObject@@W4Call@QMetaObject@@HPAPAX@Z @ 471 NONAME ; void QSqlDriverPlugin::qt_static_metacall(class QObject *, enum QMetaObject::Call, int, void * *)
+ ?setJoinMode@QSqlRelationalTableModel@@QAEXW4JoinMode@1@@Z @ 472 NONAME ; void QSqlRelationalTableModel::setJoinMode(enum QSqlRelationalTableModel::JoinMode)
diff --git a/src/s60installs/bwins/QtTestu.def b/src/s60installs/bwins/QtTestu.def
index 486984a..5365850 100644
--- a/src/s60installs/bwins/QtTestu.def
+++ b/src/s60installs/bwins/QtTestu.def
@@ -170,4 +170,5 @@ EXPORTS
?qt_static_metacall@QTestEventLoop@@CAXPAVQObject@@W4Call@QMetaObject@@HPAPAX@Z @ 169 NONAME ; void QTestEventLoop::qt_static_metacall(class QObject *, enum QMetaObject::Call, int, void * *)
?startLogging@QTestLog@@SAXI@Z @ 170 NONAME ; void QTestLog::startLogging(unsigned int)
?staticMetaObjectExtraData@QTestEventLoop@@0UQMetaObjectExtraData@@B @ 171 NONAME ; struct QMetaObjectExtraData const QTestEventLoop::staticMetaObjectExtraData
+ ?printAvailableTags@QTest@@3_NA @ 172 NONAME ; bool QTest::printAvailableTags
diff --git a/src/s60installs/eabi/QtCoreu.def b/src/s60installs/eabi/QtCoreu.def
index f0bf9fc..3abcf98 100644
--- a/src/s60installs/eabi/QtCoreu.def
+++ b/src/s60installs/eabi/QtCoreu.def
@@ -4163,4 +4163,6 @@ EXPORTS
_ZNK5QUuid11toByteArrayEv @ 4162 NONAME
_ZNK5QUuid9toRfc4122Ev @ 4163 NONAME
_ZN18QAbstractItemModel17resetInternalDataEv @ 4164 NONAME
+ _ZNK7QLocale7toLowerERK7QString @ 4165 NONAME
+ _ZNK7QLocale7toUpperERK7QString @ 4166 NONAME
diff --git a/src/s60installs/eabi/QtGuiu.def b/src/s60installs/eabi/QtGuiu.def
index 01b3772..38c67b9 100644
--- a/src/s60installs/eabi/QtGuiu.def
+++ b/src/s60installs/eabi/QtGuiu.def
@@ -12758,4 +12758,45 @@ EXPORTS
_ZN5QFont12setStyleNameERK7QString @ 12757 NONAME
_ZNK5QFont9styleNameEv @ 12758 NONAME
_ZNK9QFontInfo9styleNameEv @ 12759 NONAME
+ _ZN14QPaintEngineEx19drawPixmapFragmentsEPK6QRectFS2_iRK7QPixmap6QFlagsIN8QPainter18PixmapFragmentHintEE @ 12760 NONAME
+ _ZN16QTreeViewPrivate10initializeEv @ 12761 NONAME
+ _ZN16QTreeViewPrivate15insertViewItemsEiiRK13QTreeViewItem @ 12762 NONAME
+ _ZN16QTreeViewPrivate15removeViewItemsEii @ 12763 NONAME
+ _ZN16QTreeViewPrivate16updateScrollBarsEv @ 12764 NONAME
+ _ZN16QTreeViewPrivate17_q_columnsRemovedERK11QModelIndexii @ 12765 NONAME
+ _ZN16QTreeViewPrivate17_q_modelDestroyedEv @ 12766 NONAME
+ _ZN16QTreeViewPrivate22_q_modelAboutToBeResetEv @ 12767 NONAME
+ _ZN16QTreeViewPrivate22beginAnimatedOperationEv @ 12768 NONAME
+ _ZN16QTreeViewPrivate23_q_endAnimatedOperationEv @ 12769 NONAME
+ _ZN16QTreeViewPrivate23_q_sortIndicatorChangedEiN2Qt9SortOrderE @ 12770 NONAME
+ _ZN16QTreeViewPrivate24prepareAnimatedOperationEiN18QAbstractAnimation9DirectionE @ 12771 NONAME
+ _ZN16QTreeViewPrivate25expandOrCollapseItemAtPosERK6QPoint @ 12772 NONAME
+ _ZN16QTreeViewPrivate26_q_columnsAboutToBeRemovedERK11QModelIndexii @ 12773 NONAME
+ _ZN16QTreeViewPrivate6expandEib @ 12774 NONAME
+ _ZN16QTreeViewPrivate6layoutEibb @ 12775 NONAME
+ _ZN16QTreeViewPrivate6selectERK11QModelIndexS2_6QFlagsIN19QItemSelectionModel13SelectionFlagEE @ 12776 NONAME
+ _ZN16QTreeViewPrivate8collapseEib @ 12777 NONAME
+ _ZN8QPainter19drawPixmapFragmentsEPK6QRectFS2_iRK7QPixmap6QFlagsINS_18PixmapFragmentHintEE @ 12778 NONAME
+ _ZNK13QFontDatabase9hasFamilyERK7QString @ 12779 NONAME
+ _ZNK16QTreeViewPrivate10itemHeightEi @ 12780 NONAME
+ _ZNK16QTreeViewPrivate10modelIndexEii @ 12781 NONAME
+ _ZNK16QTreeViewPrivate12columnRangesERK11QModelIndexS2_ @ 12782 NONAME
+ _ZNK16QTreeViewPrivate16firstVisibleItemEPi @ 12783 NONAME
+ _ZNK16QTreeViewPrivate16itemAtCoordinateEi @ 12784 NONAME
+ _ZNK16QTreeViewPrivate16itemDecorationAtERK6QPoint @ 12785 NONAME
+ _ZNK16QTreeViewPrivate17coordinateForItemEi @ 12786 NONAME
+ _ZNK16QTreeViewPrivate18hasVisibleChildrenERK11QModelIndex @ 12787 NONAME
+ _ZNK16QTreeViewPrivate18indentationForItemEi @ 12788 NONAME
+ _ZNK16QTreeViewPrivate18itemDecorationRectERK11QModelIndex @ 12789 NONAME
+ _ZNK16QTreeViewPrivate18startAndEndColumnsERK5QRect @ 12790 NONAME
+ _ZNK16QTreeViewPrivate19draggablePaintPairsERK5QListI11QModelIndexEP5QRect @ 12791 NONAME
+ _ZNK16QTreeViewPrivate21drawAnimatedOperationEP8QPainter @ 12792 NONAME
+ _ZNK16QTreeViewPrivate25paintAlternatingRowColorsEP8QPainterP22QStyleOptionViewItemV4ii @ 12793 NONAME
+ _ZNK16QTreeViewPrivate30renderTreeToPixmapForAnimationERK5QRect @ 12794 NONAME
+ _ZNK16QTreeViewPrivate6pageUpEi @ 12795 NONAME
+ _ZNK16QTreeViewPrivate8columnAtEi @ 12796 NONAME
+ _ZNK16QTreeViewPrivate8pageDownEi @ 12797 NONAME
+ _ZNK16QTreeViewPrivate9viewIndexERK11QModelIndex @ 12798 NONAME
+ _ZTI16QTreeViewPrivate @ 12799 NONAME
+ _ZTV16QTreeViewPrivate @ 12800 NONAME
diff --git a/src/s60installs/eabi/QtSqlu.def b/src/s60installs/eabi/QtSqlu.def
index 21782b8..4867d10 100644
--- a/src/s60installs/eabi/QtSqlu.def
+++ b/src/s60installs/eabi/QtSqlu.def
@@ -477,4 +477,5 @@ EXPORTS
_ZN16QSqlDriverPlugin25staticMetaObjectExtraDataE @ 476 NONAME DATA 8
_ZN24QSqlRelationalTableModel18qt_static_metacallEP7QObjectN11QMetaObject4CallEiPPv @ 477 NONAME
_ZN24QSqlRelationalTableModel25staticMetaObjectExtraDataE @ 478 NONAME DATA 8
+ _ZN24QSqlRelationalTableModel11setJoinModeENS_8JoinModeE @ 479 NONAME
diff --git a/src/s60installs/eabi/QtTestu.def b/src/s60installs/eabi/QtTestu.def
index ce98aa6..454292c 100644
--- a/src/s60installs/eabi/QtTestu.def
+++ b/src/s60installs/eabi/QtTestu.def
@@ -166,4 +166,5 @@ EXPORTS
_ZN8QTestLog12startLoggingEj @ 165 NONAME
_ZN14QTestEventLoop18qt_static_metacallEP7QObjectN11QMetaObject4CallEiPPv @ 166 NONAME
_ZN14QTestEventLoop25staticMetaObjectExtraDataE @ 167 NONAME DATA 8
+ _ZN5QTest18printAvailableTagsE @ 168 NONAME DATA 1
diff --git a/tools/runonphone/main.cpp b/tools/runonphone/main.cpp
index 868a2a8..af349eb 100644
--- a/tools/runonphone/main.cpp
+++ b/tools/runonphone/main.cpp
@@ -65,7 +65,7 @@ void printUsage(QTextStream& outstream, QString exeName)
<< "-t, --timeout <milliseconds> terminate test if timeout occurs" << endl
<< "-v, --verbose show debugging output" << endl
<< "-q, --quiet hide progress messages" << endl
- << "-u, --upload <local file> upload executable file to phone" << endl
+ << "-u, --upload <local file> <remote file> upload file to phone" << endl
<< "-d, --download <remote file> <local file> copy file from phone to PC after running test" << endl
<< "--nocrashlog Don't capture call stack if test crashes" << endl
<< "--crashlogpath <dir> Path to save crash logs (default=working dir)" << endl
@@ -91,6 +91,7 @@ int main(int argc, char *argv[])
QTextStream outstream(stdout);
QTextStream errstream(stderr);
QString uploadLocalFile;
+ QString uploadRemoteFile;
QString downloadRemoteFile;
QString downloadLocalFile;
int loglevel=1;
@@ -127,10 +128,8 @@ int main(int argc, char *argv[])
errstream << "Executable file (" << uploadLocalFile << ") doesn't exist" << endl;
return 1;
}
- if (!(QFileInfo(uploadLocalFile).suffix() == "exe")) {
- errstream << "File (" << uploadLocalFile << ") must be an executable" << endl;
- return 1;
- }
+ CHECK_PARAMETER_EXISTS
+ uploadRemoteFile = it.next();
}
else if (arg == "--download" || arg == "-d") {
CHECK_PARAMETER_EXISTS
@@ -174,7 +173,8 @@ int main(int argc, char *argv[])
}
}
- if (exeFile.isEmpty() && sisFile.isEmpty() && uploadLocalFile.isEmpty() &&
+ if (exeFile.isEmpty() && sisFile.isEmpty() &&
+ (uploadLocalFile.isEmpty() || uploadRemoteFile.isEmpty()) &&
(downloadLocalFile.isEmpty() || downloadRemoteFile.isEmpty())) {
printUsage(outstream, args[0]);
return 1;
@@ -230,8 +230,7 @@ int main(int argc, char *argv[])
}
else if (!uploadLocalFile.isEmpty() && uploadInfo.exists()) {
codaHandler.setActionType(ActionCopy);
- QString dstName = QString("c:\\sys\\bin\\") + uploadInfo.fileName();
- codaHandler.setCopyFileName(uploadLocalFile, dstName);
+ codaHandler.setCopyFileName(uploadLocalFile, uploadRemoteFile);
}
if (!exeFile.isEmpty()) {
codaHandler.setActionType(ActionRun);
@@ -254,19 +253,20 @@ int main(int argc, char *argv[])
} else {
launcher.reset(new trk::Launcher(trk::Launcher::ActionPingOnly));
+ QStringList srcNames, dstNames;
if (!sisFile.isEmpty()) {
launcher->addStartupActions(trk::Launcher::ActionCopyInstall);
- QStringList srcName(sisFile);
- QStringList dstName("c:\\data\\testtemp.sis");
- launcher->setCopyFileNames(srcName, dstName);
- launcher->setInstallFileNames(dstName);
+ srcNames.append(sisFile);
+ QLatin1String dstName("c:\\data\\testtemp.sis");
+ dstNames.append(dstName);
+ launcher->setInstallFileNames(QStringList(dstName));
}
- else if (!uploadLocalFile.isEmpty() && uploadInfo.exists()) {
+ if (!uploadLocalFile.isEmpty() && uploadInfo.exists()) {
launcher->addStartupActions(trk::Launcher::ActionCopy);
- QStringList srcName(uploadLocalFile);
- QStringList dstName(QString("c:\\sys\\bin\\") + uploadInfo.fileName());
- launcher->setCopyFileNames(srcName, dstName);
+ srcNames.append(uploadLocalFile);
+ dstNames.append(uploadRemoteFile);
}
+ launcher->setCopyFileNames(srcNames, dstNames);
if (!exeFile.isEmpty()) {
launcher->addStartupActions(trk::Launcher::ActionRun);
launcher->setFileName(QString("c:\\sys\\bin\\") + info.fileName());