From 1876ff11a182afb1cf0180f188a2e13ad7b8095c Mon Sep 17 00:00:00 2001 From: "Bocklage, Jens" Date: Fri, 4 Nov 2016 17:23:50 +0100 Subject: [PATCH] Add two sample apps just to have some Qt based applications that can be launched. Nav is Qt widget based. Media is QML based. Signed-off-by: Bocklage, Jens --- HomeScreen.pro | 4 +- SampleMediaApp/SampleMediaApp.pro | 17 ++ SampleMediaApp/SampleMediaApp64.png | Bin 0 -> 2843 bytes SampleMediaApp/SampleMediaApp80.png | Bin 0 -> 4185 bytes SampleMediaApp/main.cpp | 14 ++ SampleMediaApp/qml/SampleMediaApp/main.qml | 30 +++ .../qtquick2applicationviewer.cpp | 87 +++++++++ .../qtquick2applicationviewer.h | 33 ++++ .../qtquick2applicationviewer.pri | 202 +++++++++++++++++++++ SampleNavigationApp/SampleNavigationApp.pro | 20 ++ SampleNavigationApp/main.cpp | 11 ++ SampleNavigationApp/mainwindow.cpp | 17 ++ SampleNavigationApp/mainwindow.h | 22 +++ SampleNavigationApp/mainwindow.ui | 91 ++++++++++ 14 files changed, 547 insertions(+), 1 deletion(-) create mode 100644 SampleMediaApp/SampleMediaApp.pro create mode 100644 SampleMediaApp/SampleMediaApp64.png create mode 100644 SampleMediaApp/SampleMediaApp80.png create mode 100644 SampleMediaApp/main.cpp create mode 100644 SampleMediaApp/qml/SampleMediaApp/main.qml create mode 100644 SampleMediaApp/qtquick2applicationviewer/qtquick2applicationviewer.cpp create mode 100644 SampleMediaApp/qtquick2applicationviewer/qtquick2applicationviewer.h create mode 100644 SampleMediaApp/qtquick2applicationviewer/qtquick2applicationviewer.pri create mode 100644 SampleNavigationApp/SampleNavigationApp.pro create mode 100644 SampleNavigationApp/main.cpp create mode 100644 SampleNavigationApp/mainwindow.cpp create mode 100644 SampleNavigationApp/mainwindow.h create mode 100644 SampleNavigationApp/mainwindow.ui diff --git a/HomeScreen.pro b/HomeScreen.pro index c85f759..3a16a99 100644 --- a/HomeScreen.pro +++ b/HomeScreen.pro @@ -22,7 +22,9 @@ SUBDIRS = interfaces \ InputEventManager \ SampleAppTimeDate \ WindowManager \ - SampleHomeScreenInterfaceApp + SampleHomeScreenInterfaceApp \ + SampleNavigationApp \ + SampleMediaApp HomeScreen.depends = interfaces HomeScreenSimulator.depends = interfaces diff --git a/SampleMediaApp/SampleMediaApp.pro b/SampleMediaApp/SampleMediaApp.pro new file mode 100644 index 0000000..5ea066f --- /dev/null +++ b/SampleMediaApp/SampleMediaApp.pro @@ -0,0 +1,17 @@ +# Add more folders to ship with the application, here +folder_01.source = qml/SampleMediaApp +folder_01.target = qml +DEPLOYMENTFOLDERS = folder_01 + +# Additional import path used to resolve QML modules in Creator's code model +QML_IMPORT_PATH = + +# The .cpp file which was generated for your project. Feel free to hack it. +SOURCES += main.cpp + +# Installation path +# target.path = + +# Please do not modify the following two lines. Required for deployment. +include(qtquick2applicationviewer/qtquick2applicationviewer.pri) +qtcAddDeployment() diff --git a/SampleMediaApp/SampleMediaApp64.png b/SampleMediaApp/SampleMediaApp64.png new file mode 100644 index 0000000000000000000000000000000000000000..207f059745d4d9e8304c01fe1ade092649a1c557 GIT binary patch literal 2843 zcmV+$3*_{PP)q0K6sDzm-$TEYPrlwN2+zOPd zKB>9nF1Y}*xn&h}5_X}-2$`-gJ85g9ZMgTVEZ~%|;#D zr*?)sSwKn|`gmWD@i4&H$j0RVQ(NfR&?G#0F~65D~!~?g5>jk65F$67gSY2Z`~|iRs^&FJ1*HBx&S42_wyk#RO%3k|VmSdg6cQu>oFxG)?||uuGEE|BY2gSkC4jq8G^BE-2#j_kt`dA7^iaoC zCi4S%!U8Y}5=j7Q2$%|E(eXJ)+%Rr?4@})L5Gzi6gl*@SV1MH0*mY$wLVxzb(u5&k zCKs^SP$G#;fGvq73!v%?pdrHN?}T+lmqo5vyf*}wk`qx-T!e~>3J6xgpW?Ctq~s;y z_^mLkI62&e2rBV&MvZ`pnTG=CazG6X0XYGYD!8ob06SkL_WyKTbo${|fux+vLPY39 zP(gCq9sSpI#=Gm^M&!*cICd)(TQ2x9y84KHNKFm_(*kJ7TkE>uCGQUS?$iO8V-E`M zVBI+{I_*|UtKDUbFtL^ zXJ}V6nc|GdOYvq2Kx#GzXvpjcH#BFs4*A>*MWw|sv@-kU0OVb>S^6s2WbR$IjCS4I(86V>gb(psxlXG$tHd6ZWE{tOS*ons*(W&(Fj9 zb5ro|Gw%yx7>e*DX8~JC0*F)z(C5p}4A=IEy?WYc_^&=YK}c{_{k^{Lg@%)D;s4!o z7}}JL{&+((7&!&G@;QS)rR7B^D$7S&{tbkj9wkJAwT6I%^Fn8|nytc}j3gLZM!{Wt zc5;~Tk5(njSsXGi_}F2@Y9D6!GQIw5j%`A(1@FoPkSEm#_~MMGQ2|KJtOba;I&3k| z0X-HDLr$UWpBCr&C2<4wLY3QS`0H$Y^!{`-i=;xm{?S)sF(70Jww>IAI}h{)EiNrW zdTuH*^B*8NM~VO|5EF*5xzaWS!Z=>A43m|maX7M(RikX4Wa zNXF2<4xjG_ps|-d)-oFY-)?Dt!Sc8mdPss#_UQ)91~w(nE-8ronSY&k8CQ;E6ITG!4Wb6WR;+ZyY&U| z+3$j9r`W>#KS3~N7w<<4^}9@fb_<+f%fxvvBU!J1L8%t=4~>3^03OyTg-r|ap&0^j zOI#G7wNU}G;D30GsR)oeZ~Y-28V=r8C?b5luv`=HEaXg z!71QvJjm7R_16|9Vdnn96u|aT1d#0rSzG{lA*94>a~q*!r^$_?xc- zx-S^Y;wewBe@fmJ`0Viz1gP~nK$_AtPG~c)FQ>FL6Q!{Dx9~lx#49t~z+?GX6qOVi z44DK>*{wvQNea0D+FB)mv>J3>)e$dF>x3U~{Q^VFE79Vsv*QH;WO>7L-Av|2;?>HDo0kcF?$_`+-JJ6IGk3#(3g3Tpyu?g~qJVECqP zysP#IjoNB-SLpcdFsP&YqVJa-(cu%g@uloBbqWtOy3*~L(4A6 zrpRf?FDk&+i-E$>k_k|=o1)Tm$j{rM3-7G7k0)7ac_HF&9z{sRI>cQ&OHs;Y1=C{P zbQ#Fdc3$X&f3QwSk`_xcQ6&Mac{C>F0x@)(Pq&A6c#yEsVaB<@UER5WG*e9DHhU{S zC$2F9#GNJL-9hLXM5QhSoKl)=_K2v0P=`1a8z}jMDz7V;!lQ?H%Lp;nAH3ATPFQ$ z-S-9R6E8j>kzpbN%1Ac3L1O4kINJcWBT0ACk~HBRt;ah`N4x#bz9-~qJG!mLIfX~t z6}oSM+#<1L6H${;Kkc#hX tqmESC)LEU?S)J8coz+>L)!84w{s*SZ5par>%;W$7002ovPDHLkV1oJ=YQq2k literal 0 HcmV?d00001 diff --git a/SampleMediaApp/SampleMediaApp80.png b/SampleMediaApp/SampleMediaApp80.png new file mode 100644 index 0000000000000000000000000000000000000000..ebc444e445ef82497677465ddc627f58b082eabe GIT binary patch literal 4185 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 +#include "qtquick2applicationviewer.h" + +int main(int argc, char *argv[]) +{ + QGuiApplication app(argc, argv); + + QtQuick2ApplicationViewer viewer; + viewer.setMainQmlFile(QStringLiteral("qml/SampleMediaApp/main.qml")); + viewer.setFlags(Qt::FramelessWindowHint); + viewer.showExpanded(); + + return app.exec(); +} diff --git a/SampleMediaApp/qml/SampleMediaApp/main.qml b/SampleMediaApp/qml/SampleMediaApp/main.qml new file mode 100644 index 0000000..7d63362 --- /dev/null +++ b/SampleMediaApp/qml/SampleMediaApp/main.qml @@ -0,0 +1,30 @@ +import QtQuick 2.0 + +Rectangle { + width: 400 + height: 300 + + + Rectangle { + width: parent.width / 2 + height: parent.height + color: "yellow" + + Text { + text: qsTr("SampleMediaApp") + anchors.centerIn: parent + } + } + + Rectangle { + width: parent.width / 2 + height: parent.height + x: parent.width / 2 + color: "yellow" + + Text { + text: qsTr("default size: 400x300px") + anchors.centerIn: parent + } + } +} diff --git a/SampleMediaApp/qtquick2applicationviewer/qtquick2applicationviewer.cpp b/SampleMediaApp/qtquick2applicationviewer/qtquick2applicationviewer.cpp new file mode 100644 index 0000000..b58190f --- /dev/null +++ b/SampleMediaApp/qtquick2applicationviewer/qtquick2applicationviewer.cpp @@ -0,0 +1,87 @@ +// checksum 0xc01f version 0x90005 +/* + This file was generated by the Qt Quick 2 Application wizard of Qt Creator. + QtQuick2ApplicationViewer is a convenience class containing mobile device specific + code such as screen orientation handling. Also QML paths and debugging are + handled here. + It is recommended not to modify this file, since newer versions of Qt Creator + may offer an updated version of it. +*/ + +#include "qtquick2applicationviewer.h" + +#include +#include +#include + +class QtQuick2ApplicationViewerPrivate +{ + QString mainQmlFile; + friend class QtQuick2ApplicationViewer; + static QString adjustPath(const QString &path); +}; + +QString QtQuick2ApplicationViewerPrivate::adjustPath(const QString &path) +{ +#if defined(Q_OS_IOS) + if (!QDir::isAbsolutePath(path)) + return QString::fromLatin1("%1/%2") + .arg(QCoreApplication::applicationDirPath(), path); +#elif defined(Q_OS_MAC) + if (!QDir::isAbsolutePath(path)) + return QString::fromLatin1("%1/../Resources/%2") + .arg(QCoreApplication::applicationDirPath(), path); +#elif defined(Q_OS_BLACKBERRY) + if (!QDir::isAbsolutePath(path)) + return QString::fromLatin1("app/native/%1").arg(path); +#elif !defined(Q_OS_ANDROID) + QString pathInInstallDir = + QString::fromLatin1("%1/../%2").arg(QCoreApplication::applicationDirPath(), path); + if (QFileInfo(pathInInstallDir).exists()) + return pathInInstallDir; + pathInInstallDir = + QString::fromLatin1("%1/%2").arg(QCoreApplication::applicationDirPath(), path); + if (QFileInfo(pathInInstallDir).exists()) + return pathInInstallDir; +#elif defined(Q_OS_ANDROID_NO_SDK) + return QLatin1String("/data/user/qt/") + path; +#endif + return path; +} + +QtQuick2ApplicationViewer::QtQuick2ApplicationViewer(QWindow *parent) + : QQuickView(parent) + , d(new QtQuick2ApplicationViewerPrivate()) +{ + connect(engine(), SIGNAL(quit()), SLOT(close())); + setResizeMode(QQuickView::SizeRootObjectToView); +} + +QtQuick2ApplicationViewer::~QtQuick2ApplicationViewer() +{ + delete d; +} + +void QtQuick2ApplicationViewer::setMainQmlFile(const QString &file) +{ + d->mainQmlFile = QtQuick2ApplicationViewerPrivate::adjustPath(file); +#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_NO_SDK) + setSource(QUrl(QLatin1String("assets:/")+d->mainQmlFile)); +#else + setSource(QUrl::fromLocalFile(d->mainQmlFile)); +#endif +} + +void QtQuick2ApplicationViewer::addImportPath(const QString &path) +{ + engine()->addImportPath(QtQuick2ApplicationViewerPrivate::adjustPath(path)); +} + +void QtQuick2ApplicationViewer::showExpanded() +{ +#if defined(Q_WS_SIMULATOR) || defined(Q_OS_QNX) + showFullScreen(); +#else + show(); +#endif +} diff --git a/SampleMediaApp/qtquick2applicationviewer/qtquick2applicationviewer.h b/SampleMediaApp/qtquick2applicationviewer/qtquick2applicationviewer.h new file mode 100644 index 0000000..cf66f14 --- /dev/null +++ b/SampleMediaApp/qtquick2applicationviewer/qtquick2applicationviewer.h @@ -0,0 +1,33 @@ +// checksum 0xfde6 version 0x90005 +/* + This file was generated by the Qt Quick 2 Application wizard of Qt Creator. + QtQuick2ApplicationViewer is a convenience class containing mobile device specific + code such as screen orientation handling. Also QML paths and debugging are + handled here. + It is recommended not to modify this file, since newer versions of Qt Creator + may offer an updated version of it. +*/ + +#ifndef QTQUICK2APPLICATIONVIEWER_H +#define QTQUICK2APPLICATIONVIEWER_H + +#include + +class QtQuick2ApplicationViewer : public QQuickView +{ + Q_OBJECT + +public: + explicit QtQuick2ApplicationViewer(QWindow *parent = 0); + virtual ~QtQuick2ApplicationViewer(); + + void setMainQmlFile(const QString &file); + void addImportPath(const QString &path); + + void showExpanded(); + +private: + class QtQuick2ApplicationViewerPrivate *d; +}; + +#endif // QTQUICK2APPLICATIONVIEWER_H diff --git a/SampleMediaApp/qtquick2applicationviewer/qtquick2applicationviewer.pri b/SampleMediaApp/qtquick2applicationviewer/qtquick2applicationviewer.pri new file mode 100644 index 0000000..ce35a9b --- /dev/null +++ b/SampleMediaApp/qtquick2applicationviewer/qtquick2applicationviewer.pri @@ -0,0 +1,202 @@ +# checksum 0x21c9 version 0x90005 +# This file was generated by the Qt Quick 2 Application wizard of Qt Creator. +# The code below adds the QtQuick2ApplicationViewer to the project and handles +# the activation of QML debugging. +# It is recommended not to modify this file, since newer versions of Qt Creator +# may offer an updated version of it. + +QT += qml quick + +SOURCES += $$PWD/qtquick2applicationviewer.cpp +HEADERS += $$PWD/qtquick2applicationviewer.h +INCLUDEPATH += $$PWD +# This file was generated by an application wizard of Qt Creator. +# The code below handles deployment to Android and Maemo, aswell as copying +# of the application data to shadow build directories on desktop. +# It is recommended not to modify this file, since newer versions of Qt Creator +# may offer an updated version of it. + +defineTest(qtcAddDeployment) { +for(deploymentfolder, DEPLOYMENTFOLDERS) { + item = item$${deploymentfolder} + greaterThan(QT_MAJOR_VERSION, 4) { + itemsources = $${item}.files + } else { + itemsources = $${item}.sources + } + $$itemsources = $$eval($${deploymentfolder}.source) + itempath = $${item}.path + $$itempath= $$eval($${deploymentfolder}.target) + export($$itemsources) + export($$itempath) + DEPLOYMENT += $$item +} + +MAINPROFILEPWD = $$PWD + +android-no-sdk { + for(deploymentfolder, DEPLOYMENTFOLDERS) { + item = item$${deploymentfolder} + itemfiles = $${item}.files + $$itemfiles = $$eval($${deploymentfolder}.source) + itempath = $${item}.path + $$itempath = /data/user/qt/$$eval($${deploymentfolder}.target) + export($$itemfiles) + export($$itempath) + INSTALLS += $$item + } + + target.path = /data/user/qt + + export(target.path) + INSTALLS += target +} else:android { + for(deploymentfolder, DEPLOYMENTFOLDERS) { + item = item$${deploymentfolder} + itemfiles = $${item}.files + $$itemfiles = $$eval($${deploymentfolder}.source) + itempath = $${item}.path + $$itempath = /assets/$$eval($${deploymentfolder}.target) + export($$itemfiles) + export($$itempath) + INSTALLS += $$item + } + + x86 { + target.path = /libs/x86 + } else: armeabi-v7a { + target.path = /libs/armeabi-v7a + } else { + target.path = /libs/armeabi + } + + export(target.path) + INSTALLS += target +} else:win32 { + copyCommand = + for(deploymentfolder, DEPLOYMENTFOLDERS) { + source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) + source = $$replace(source, /, \\) + sourcePathSegments = $$split(source, \\) + target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments) + target = $$replace(target, /, \\) + target ~= s,\\\\\\.?\\\\,\\, + !isEqual(source,$$target) { + !isEmpty(copyCommand):copyCommand += && + isEqual(QMAKE_DIR_SEP, \\) { + copyCommand += $(COPY_DIR) \"$$source\" \"$$target\" + } else { + source = $$replace(source, \\\\, /) + target = $$OUT_PWD/$$eval($${deploymentfolder}.target) + target = $$replace(target, \\\\, /) + copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\" + } + } + } + !isEmpty(copyCommand) { + copyCommand = @echo Copying application data... && $$copyCommand + copydeploymentfolders.commands = $$copyCommand + first.depends = $(first) copydeploymentfolders + export(first.depends) + export(copydeploymentfolders.commands) + QMAKE_EXTRA_TARGETS += first copydeploymentfolders + } +} else:ios { + copyCommand = + for(deploymentfolder, DEPLOYMENTFOLDERS) { + source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) + source = $$replace(source, \\\\, /) + target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target) + target = $$replace(target, \\\\, /) + sourcePathSegments = $$split(source, /) + targetFullPath = $$target/$$last(sourcePathSegments) + targetFullPath ~= s,/\\.?/,/, + !isEqual(source,$$targetFullPath) { + !isEmpty(copyCommand):copyCommand += && + copyCommand += mkdir -p \"$$target\" + copyCommand += && cp -r \"$$source\" \"$$target\" + } + } + !isEmpty(copyCommand) { + copyCommand = echo Copying application data... && $$copyCommand + !isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";" + QMAKE_POST_LINK += "$$copyCommand" + export(QMAKE_POST_LINK) + } +} else:unix { + maemo5 { + desktopfile.files = $${TARGET}.desktop + desktopfile.path = /usr/share/applications/hildon + icon.files = $${TARGET}64.png + icon.path = /usr/share/icons/hicolor/64x64/apps + } else:!isEmpty(MEEGO_VERSION_MAJOR) { + desktopfile.files = $${TARGET}_harmattan.desktop + desktopfile.path = /usr/share/applications + icon.files = $${TARGET}80.png + icon.path = /usr/share/icons/hicolor/80x80/apps + } else { # Assumed to be a Desktop Unix + copyCommand = + for(deploymentfolder, DEPLOYMENTFOLDERS) { + source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) + source = $$replace(source, \\\\, /) + macx { + target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) + } else { + target = $$OUT_PWD/$$eval($${deploymentfolder}.target) + } + target = $$replace(target, \\\\, /) + sourcePathSegments = $$split(source, /) + targetFullPath = $$target/$$last(sourcePathSegments) + targetFullPath ~= s,/\\.?/,/, + !isEqual(source,$$targetFullPath) { + !isEmpty(copyCommand):copyCommand += && + copyCommand += $(MKDIR) \"$$target\" + copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\" + } + } + !isEmpty(copyCommand) { + copyCommand = @echo Copying application data... && $$copyCommand + copydeploymentfolders.commands = $$copyCommand + first.depends = $(first) copydeploymentfolders + export(first.depends) + export(copydeploymentfolders.commands) + QMAKE_EXTRA_TARGETS += first copydeploymentfolders + } + } + !isEmpty(target.path) { + installPrefix = $${target.path} + } else { + installPrefix = /opt/$${TARGET} + } + for(deploymentfolder, DEPLOYMENTFOLDERS) { + item = item$${deploymentfolder} + itemfiles = $${item}.files + $$itemfiles = $$eval($${deploymentfolder}.source) + itempath = $${item}.path + $$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target) + export($$itemfiles) + export($$itempath) + INSTALLS += $$item + } + + !isEmpty(desktopfile.path) { + export(icon.files) + export(icon.path) + export(desktopfile.files) + export(desktopfile.path) + INSTALLS += icon desktopfile + } + + isEmpty(target.path) { + target.path = $${installPrefix}/bin + export(target.path) + } + INSTALLS += target +} + +export (ICON) +export (INSTALLS) +export (DEPLOYMENT) +export (LIBS) +export (QMAKE_EXTRA_TARGETS) +} diff --git a/SampleNavigationApp/SampleNavigationApp.pro b/SampleNavigationApp/SampleNavigationApp.pro new file mode 100644 index 0000000..ab57a0c --- /dev/null +++ b/SampleNavigationApp/SampleNavigationApp.pro @@ -0,0 +1,20 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2016-11-04T17:03:47 +# +#------------------------------------------------- + +QT += core gui + +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets + +TARGET = SampleNavigationApp +TEMPLATE = app + + +SOURCES += main.cpp\ + mainwindow.cpp + +HEADERS += mainwindow.h + +FORMS += mainwindow.ui diff --git a/SampleNavigationApp/main.cpp b/SampleNavigationApp/main.cpp new file mode 100644 index 0000000..b48f94e --- /dev/null +++ b/SampleNavigationApp/main.cpp @@ -0,0 +1,11 @@ +#include "mainwindow.h" +#include + +int main(int argc, char *argv[]) +{ + QApplication a(argc, argv); + MainWindow w; + w.show(); + + return a.exec(); +} diff --git a/SampleNavigationApp/mainwindow.cpp b/SampleNavigationApp/mainwindow.cpp new file mode 100644 index 0000000..e79aeb8 --- /dev/null +++ b/SampleNavigationApp/mainwindow.cpp @@ -0,0 +1,17 @@ +#include "mainwindow.h" +#include "ui_mainwindow.h" + +MainWindow::MainWindow(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::MainWindow) +{ + // no window decoration + setWindowFlags(Qt::FramelessWindowHint); + + ui->setupUi(this); +} + +MainWindow::~MainWindow() +{ + delete ui; +} diff --git a/SampleNavigationApp/mainwindow.h b/SampleNavigationApp/mainwindow.h new file mode 100644 index 0000000..a3948a9 --- /dev/null +++ b/SampleNavigationApp/mainwindow.h @@ -0,0 +1,22 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include + +namespace Ui { +class MainWindow; +} + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit MainWindow(QWidget *parent = 0); + ~MainWindow(); + +private: + Ui::MainWindow *ui; +}; + +#endif // MAINWINDOW_H diff --git a/SampleNavigationApp/mainwindow.ui b/SampleNavigationApp/mainwindow.ui new file mode 100644 index 0000000..07ea34d --- /dev/null +++ b/SampleNavigationApp/mainwindow.ui @@ -0,0 +1,91 @@ + + + MainWindow + + + + 0 + 0 + 400 + 300 + + + + MainWindow + + + + + + 20 + 10 + 171 + 17 + + + + Sample Navigation App + + + + + + 140 + 60 + 100 + 100 + + + + 100x100px + + + + + + 110 + 220 + 161 + 17 + + + + 400x300px default size + + + + + + + 0 + 0 + 400 + 25 + + + + + SampleMenu + + + + + Yet Another Sample + + + + + + + + TopToolBarArea + + + false + + + + + + + -- 2.16.6