diff options
Diffstat (limited to 'demos/embedded/fluidlauncher')
16 files changed, 223 insertions, 51 deletions
diff --git a/demos/embedded/fluidlauncher/config_s60/config.xml b/demos/embedded/fluidlauncher/config_s60/config.xml new file mode 100644 index 0000000..95e96bd --- /dev/null +++ b/demos/embedded/fluidlauncher/config_s60/config.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<demolauncher> + <demos> + <example filename="embeddedsvgviewer" name="SVG Viewer" image="screenshots/embeddedsvgviewer_s60.png" args="/data/images/qt/demos/embeddedsvgviewer/shapes.svg"/> + <example filename="styledemo" name="Stylesheets" image="screenshots/styledemo_s60.png"/> + <example filename="deform" name="Vector Deformation" image="screenshots/deform.png" args="-small-screen"/> + <example filename="pathstroke" name="Path Stroking" image="screenshots/pathstroke.png" args="-small-screen"/> + <example filename="wiggly" name="Wiggly Text" image="screenshots/wiggly_s60.png" args="-small-screen"/> + <example filename="ftp" name="Ftp Client" image="screenshots/ftp_s60.png"/> + <example filename="context2d" name="Context2d" image="screenshots/context2d_s60.png"/> + <example filename="saxbookmarks" name="SaxBookmarks" image="screenshots/saxbookmarks_s60.png"/> + <example filename="desktopservices" name="Desktop Services" image="screenshots/desktopservices_s60.png"/> + <example filename="fridgemagnets" name="Fridge Magnets" image="screenshots/fridgemagnets_s60.png" args="-small-screen"/> + <example filename="drilldown" name="Drilldown" image="screenshots/drilldown_s60.png"/> + <example filename="softkeys" name="Softkeys" image="screenshots/softkeys_s60.png"/> + <example filename="anomaly" name="Anomaly Browser" image="screenshots/anomaly_s60.png"/> + </demos> + <slideshow timeout="60000" interval="10000"> + <imagedir dir="slides"/> + </slideshow> +</demolauncher> diff --git a/demos/embedded/fluidlauncher/fluidlauncher.cpp b/demos/embedded/fluidlauncher/fluidlauncher.cpp index 7035fb7..c9cb170 100644 --- a/demos/embedded/fluidlauncher/fluidlauncher.cpp +++ b/demos/embedded/fluidlauncher/fluidlauncher.cpp @@ -39,12 +39,14 @@ ** ****************************************************************************/ -#include <QtXml> +#include <QXmlStreamReader> #include "fluidlauncher.h" #define DEFAULT_INPUT_TIMEOUT 10000 +#define SIZING_FACTOR_HEIGHT 6/10 +#define SIZING_FACTOR_WIDTH 6/10 FluidLauncher::FluidLauncher(QStringList* args) { @@ -62,7 +64,11 @@ FluidLauncher::FluidLauncher(QStringList* args) inputTimer->setSingleShot(true); inputTimer->setInterval(DEFAULT_INPUT_TIMEOUT); - pictureFlowWidget->setSlideSize(QSize( (screen_size.width()*2)/5, (screen_size.height()*2)/5 )); + const int h = screen_size.height() * SIZING_FACTOR_HEIGHT; + const int w = screen_size.width() * SIZING_FACTOR_WIDTH; + const int hh = qMin(h, w); + const int ww = hh / 3 * 2; + pictureFlowWidget->setSlideSize(QSize(ww, hh)); bool success; int configIndex = args->indexOf("-config"); @@ -100,61 +106,97 @@ bool FluidLauncher::loadConfig(QString configPath) slideShowWidget->clearImages(); - QDomDocument xmlDoc; - xmlDoc.setContent(&xmlFile, true); + xmlFile.open(QIODevice::ReadOnly); + QXmlStreamReader reader(&xmlFile); + while (!reader.atEnd()) { + reader.readNext(); - QDomElement rootElement = xmlDoc.documentElement(); - - // Process the demos node: - QDomNodeList demoNodes = rootElement.firstChildElement("demos").elementsByTagName("example"); - for (int i=0; i<demoNodes.size(); i++) { - QDomElement element = demoNodes.item(i).toElement(); - - if (element.hasAttribute("filename")) { - DemoApplication* newDemo = new DemoApplication( - element.attribute("filename"), - element.attribute("name", "Unamed Demo"), - element.attribute("image"), - element.attribute("args").split(" ")); - demoList.append(newDemo); + if (reader.isStartElement()) { + if (reader.name() == "demos") + parseDemos(reader); + else if(reader.name() == "slideshow") + parseSlideshow(reader); } } + if (reader.hasError()) { + qDebug() << QString("Error parsing %1 on line %2 column %3: \n%4") + .arg(configPath) + .arg(reader.lineNumber()) + .arg(reader.columnNumber()) + .arg(reader.errorString()); + } - // Process the slideshow node: - QDomElement slideshowElement = rootElement.firstChildElement("slideshow"); + // Append an exit Item + DemoApplication* exitItem = new DemoApplication(QString(), QLatin1String("Exit Embedded Demo"), QString(), QStringList()); + demoList.append(exitItem); - if (slideshowElement.hasAttribute("timeout")) { - bool valid; - int timeout = slideshowElement.attribute("timeout").toInt(&valid); - if (valid) - inputTimer->setInterval(timeout); - } + return true; +} - if (slideshowElement.hasAttribute("interval")) { - bool valid; - int interval = slideshowElement.attribute("interval").toInt(&valid); - if (valid) - slideShowWidget->setSlideInterval(interval); + +void FluidLauncher::parseDemos(QXmlStreamReader& reader) +{ + while (!reader.atEnd()) { + reader.readNext(); + if (reader.isStartElement() && reader.name() == "example") { + QXmlStreamAttributes attrs = reader.attributes(); + QStringRef filename = attrs.value("filename"); + if (!filename.isEmpty()) { + QStringRef name = attrs.value("name"); + QStringRef image = attrs.value("image"); + QStringRef args = attrs.value("args"); + + DemoApplication* newDemo = new DemoApplication( + filename.toString(), + name.isEmpty() ? "Unamed Demo" : name.toString(), + image.toString(), + args.toString().split(" ")); + demoList.append(newDemo); + } + } else if(reader.isEndElement() && reader.name() == "demos") { + return; + } } +} - for (QDomNode node=slideshowElement.firstChild(); !node.isNull(); node=node.nextSibling()) { - QDomElement element = node.toElement(); +void FluidLauncher::parseSlideshow(QXmlStreamReader& reader) +{ + QXmlStreamAttributes attrs = reader.attributes(); + + QStringRef timeout = attrs.value("timeout"); + bool valid; + if (!timeout.isEmpty()) { + int t = timeout.toString().toInt(&valid); + if (valid) + inputTimer->setInterval(t); + } - if (element.tagName() == "imagedir") - slideShowWidget->addImageDir(element.attribute("dir")); - else if (element.tagName() == "image") - slideShowWidget->addImage(element.attribute("image")); + QStringRef interval = attrs.value("interval"); + if (!interval.isEmpty()) { + int i = interval.toString().toInt(&valid); + if (valid) + slideShowWidget->setSlideInterval(i); } - // Append an exit Item - DemoApplication* exitItem = new DemoApplication(QString(), QLatin1String("Exit Embedded Demo"), QString(), QStringList()); - demoList.append(exitItem); + while (!reader.atEnd()) { + reader.readNext(); + if (reader.isStartElement()) { + QXmlStreamAttributes attrs = reader.attributes(); + if (reader.name() == "imagedir") { + QStringRef dir = attrs.value("dir"); + slideShowWidget->addImageDir(dir.toString()); + } else if(reader.name() == "image") { + QStringRef image = attrs.value("image"); + slideShowWidget->addImage(image.toString()); + } + } else if(reader.isEndElement() && reader.name() == "slideshow") { + return; + } + } - return true; } - void FluidLauncher::populatePictureFlow() { pictureFlowWidget->setSlideCount(demoList.count()); diff --git a/demos/embedded/fluidlauncher/fluidlauncher.h b/demos/embedded/fluidlauncher/fluidlauncher.h index 1167aef..5adc662 100644 --- a/demos/embedded/fluidlauncher/fluidlauncher.h +++ b/demos/embedded/fluidlauncher/fluidlauncher.h @@ -44,6 +44,7 @@ #include <QtGui> #include <QTimer> +#include <QStringRef> #include "pictureflow.h" #include "slideshow.h" @@ -73,7 +74,8 @@ private: bool loadConfig(QString configPath); void populatePictureFlow(); void switchToSlideshow(); - + void parseDemos(QXmlStreamReader& reader); + void parseSlideshow(QXmlStreamReader& reader); }; diff --git a/demos/embedded/fluidlauncher/fluidlauncher.pro b/demos/embedded/fluidlauncher/fluidlauncher.pro index 76d12ad..3eff37b 100644 --- a/demos/embedded/fluidlauncher/fluidlauncher.pro +++ b/demos/embedded/fluidlauncher/fluidlauncher.pro @@ -1,8 +1,7 @@ TEMPLATE = app -TARGET = +TARGET = DEPENDPATH += . INCLUDEPATH += . -QT += xml # Input HEADERS += \ @@ -40,7 +39,8 @@ wince*{ $$QT_BUILD_TREE/demos/pathstroke/$${BUILD_DIR}/pathstroke.exe \ $$QT_BUILD_TREE/examples/graphicsview/elasticnodes/$${BUILD_DIR}/elasticnodes.exe \ $$QT_BUILD_TREE/examples/widgets/wiggly/$${BUILD_DIR}/wiggly.exe \ - $$QT_BUILD_TREE/examples/painting/concentriccircles/$${BUILD_DIR}/concentriccircles.exe + $$QT_BUILD_TREE/examples/painting/concentriccircles/$${BUILD_DIR}/concentriccircles.exe \ + $$QT_BUILD_TREE/examples/draganddrop/$${BUILD_DIR}/fridgemagnets.exe executables.path = . @@ -54,3 +54,96 @@ wince*{ DEPLOYMENT_PLUGIN += qgif qjpeg qmng qsvg } + +symbian { + load(data_caging_paths) + + TARGET.UID3 = 0xA000A641 + + executables.sources = \ + embeddedsvgviewer.exe \ + styledemo.exe \ + deform.exe \ + pathstroke.exe \ + wiggly.exe \ + ftp.exe \ + context2d.exe \ + saxbookmarks.exe \ + desktopservices.exe \ + fridgemagnets.exe \ + drilldown.exe \ + softkeys.exe + contains(QT_CONFIG, webkit) { + executables.sources += anomaly.exe + } + + executables.path = /sys/bin + + reg_resource.sources = \ + $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/embeddedsvgviewer_reg.rsc \ + $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/styledemo_reg.rsc \ + $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/deform_reg.rsc \ + $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/pathstroke_reg.rsc \ + $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/wiggly_reg.rsc \ + $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/ftp_reg.rsc\ + $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/context2d_reg.rsc \ + $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/saxbookmarks_reg.rsc \ + $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/desktopservices_reg.rsc \ + $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/fridgemagnets_reg.rsc \ + $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/drilldown_reg.rsc \ + $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/softkeys_reg.rsc + contains(QT_CONFIG, webkit) { + reg_resource.sources += $${EPOCROOT}$$HW_ZDIR$$REG_RESOURCE_IMPORT_DIR/anomaly_reg.rsc + } + + reg_resource.path = $$REG_RESOURCE_IMPORT_DIR + + resource.sources = \ + $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/embeddedsvgviewer.rsc \ + $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/styledemo.rsc \ + $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/deform.rsc \ + $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/pathstroke.rsc \ + $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/wiggly.rsc \ + $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/ftp.rsc\ + $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/context2d.rsc \ + $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/saxbookmarks.rsc \ + $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/desktopservices.rsc \ + $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/fridgemagnets.rsc \ + $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/drilldown.rsc \ + $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/softkeys.rsc + contains(QT_CONFIG, webkit) { + resource.sources += $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/anomaly.rsc + } + + resource.path = $$APP_RESOURCE_DIR + + mifs.sources = \ + $${EPOCROOT}$$HW_ZDIR$$APP_RESOURCE_DIR/0xA000C611.mif + mifs.path = $$APP_RESOURCE_DIR + + files.sources = $$PWD/screenshots $$PWD/slides + files.path = . + + config.sources = $$PWD/config_s60/config.xml + config.path = . + + viewerimages.sources = $$PWD/../embeddedsvgviewer/shapes.svg + viewerimages.path = /data/images/qt/demos/embeddedsvgviewer + + desktopservices_music.sources = \ + $$PWD/../desktopservices/data/*.mp3 \ + $$PWD/../desktopservices/data/*.wav + desktopservices_music.path = /data/sounds + + desktopservices_images.sources = $$PWD/../desktopservices/data/*.png + desktopservices_images.path = /data/images + + saxbookmarks.sources = $$PWD/../../../examples/xml/saxbookmarks/frank.xbel + saxbookmarks.sources += $$PWD/../../../examples/xml/saxbookmarks/jennifer.xbel + saxbookmarks.path = /data/qt/saxbookmarks + + DEPLOYMENT += config files executables viewerimages saxbookmarks reg_resource resource \ + mifs desktopservices_music desktopservices_images + + TARGET.EPOCHEAPSIZE = 100000 20000000 +} diff --git a/demos/embedded/fluidlauncher/pictureflow.cpp b/demos/embedded/fluidlauncher/pictureflow.cpp index c8b01ae..8be5cd3 100644 --- a/demos/embedded/fluidlauncher/pictureflow.cpp +++ b/demos/embedded/fluidlauncher/pictureflow.cpp @@ -105,6 +105,14 @@ #include <QDebug> +static const int captionFontSize = +#ifdef Q_WS_S60 + 8; +#else + 14; +#endif + + // uncomment this to enable bilinear filtering for texture mapping // gives much better rendering, at the cost of memory space // #define PICTUREFLOW_BILINEAR_FILTER @@ -739,14 +747,14 @@ void PictureFlowPrivate::render() QPainter painter; painter.begin(&buffer); - QFont font("Arial", 14); + QFont font("Arial", captionFontSize); font.setBold(true); painter.setFont(font); painter.setPen(Qt::white); //painter.setPen(QColor(255,255,255,127)); if (!captions.isEmpty()) - painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/2), + painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/4), Qt::AlignCenter, captions[centerIndex]); painter.end(); @@ -789,18 +797,18 @@ void PictureFlowPrivate::render() QPainter painter; painter.begin(&buffer); - QFont font("Arial", 14); + QFont font("Arial", captionFontSize); font.setBold(true); painter.setFont(font); int leftTextIndex = (step>0) ? centerIndex : centerIndex-1; painter.setPen(QColor(255,255,255, (255-fade) )); - painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/2), + painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/4), Qt::AlignCenter, captions[leftTextIndex]); painter.setPen(QColor(255,255,255, fade)); - painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/2), + painter.drawText( QRect(0,0, buffer.width(), (buffer.height() - slideSize().height())/4), Qt::AlignCenter, captions[leftTextIndex+1]); @@ -1265,6 +1273,12 @@ void PictureFlow::keyPressEvent(QKeyEvent* event) return; } + if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Select) { + emit itemActivated(d->getTarget()); + event->accept(); + return; + } + event->ignore(); } diff --git a/demos/embedded/fluidlauncher/screenshots/anomaly_s60.png b/demos/embedded/fluidlauncher/screenshots/anomaly_s60.png Binary files differnew file mode 100644 index 0000000..b9a73fd --- /dev/null +++ b/demos/embedded/fluidlauncher/screenshots/anomaly_s60.png diff --git a/demos/embedded/fluidlauncher/screenshots/context2d_s60.png b/demos/embedded/fluidlauncher/screenshots/context2d_s60.png Binary files differnew file mode 100644 index 0000000..a53f5b0 --- /dev/null +++ b/demos/embedded/fluidlauncher/screenshots/context2d_s60.png diff --git a/demos/embedded/fluidlauncher/screenshots/desktopservices_s60.png b/demos/embedded/fluidlauncher/screenshots/desktopservices_s60.png Binary files differnew file mode 100644 index 0000000..f4aa1a2 --- /dev/null +++ b/demos/embedded/fluidlauncher/screenshots/desktopservices_s60.png diff --git a/demos/embedded/fluidlauncher/screenshots/drilldown_s60.png b/demos/embedded/fluidlauncher/screenshots/drilldown_s60.png Binary files differnew file mode 100644 index 0000000..50376c1 --- /dev/null +++ b/demos/embedded/fluidlauncher/screenshots/drilldown_s60.png diff --git a/demos/embedded/fluidlauncher/screenshots/embeddedsvgviewer_s60.png b/demos/embedded/fluidlauncher/screenshots/embeddedsvgviewer_s60.png Binary files differnew file mode 100644 index 0000000..11459dc --- /dev/null +++ b/demos/embedded/fluidlauncher/screenshots/embeddedsvgviewer_s60.png diff --git a/demos/embedded/fluidlauncher/screenshots/fridgemagnets_s60.png b/demos/embedded/fluidlauncher/screenshots/fridgemagnets_s60.png Binary files differnew file mode 100644 index 0000000..56da9dc --- /dev/null +++ b/demos/embedded/fluidlauncher/screenshots/fridgemagnets_s60.png diff --git a/demos/embedded/fluidlauncher/screenshots/ftp_s60.png b/demos/embedded/fluidlauncher/screenshots/ftp_s60.png Binary files differnew file mode 100644 index 0000000..ea6a321 --- /dev/null +++ b/demos/embedded/fluidlauncher/screenshots/ftp_s60.png diff --git a/demos/embedded/fluidlauncher/screenshots/saxbookmarks_s60.png b/demos/embedded/fluidlauncher/screenshots/saxbookmarks_s60.png Binary files differnew file mode 100644 index 0000000..c451198 --- /dev/null +++ b/demos/embedded/fluidlauncher/screenshots/saxbookmarks_s60.png diff --git a/demos/embedded/fluidlauncher/screenshots/softkeys_s60.png b/demos/embedded/fluidlauncher/screenshots/softkeys_s60.png Binary files differnew file mode 100644 index 0000000..03989fb --- /dev/null +++ b/demos/embedded/fluidlauncher/screenshots/softkeys_s60.png diff --git a/demos/embedded/fluidlauncher/screenshots/styledemo_s60.png b/demos/embedded/fluidlauncher/screenshots/styledemo_s60.png Binary files differnew file mode 100644 index 0000000..bad9692 --- /dev/null +++ b/demos/embedded/fluidlauncher/screenshots/styledemo_s60.png diff --git a/demos/embedded/fluidlauncher/screenshots/wiggly_s60.png b/demos/embedded/fluidlauncher/screenshots/wiggly_s60.png Binary files differnew file mode 100644 index 0000000..690ab48 --- /dev/null +++ b/demos/embedded/fluidlauncher/screenshots/wiggly_s60.png |