diff options
author | axis <qt-info@nokia.com> | 2009-04-24 11:34:15 (GMT) |
---|---|---|
committer | axis <qt-info@nokia.com> | 2009-04-24 11:34:15 (GMT) |
commit | 8f427b2b914d5b575a4a7c0ed65d2fb8f45acc76 (patch) | |
tree | a17e1a767a89542ab59907462206d7dcf2e504b2 /src/s60main | |
download | Qt-8f427b2b914d5b575a4a7c0ed65d2fb8f45acc76.zip Qt-8f427b2b914d5b575a4a7c0ed65d2fb8f45acc76.tar.gz Qt-8f427b2b914d5b575a4a7c0ed65d2fb8f45acc76.tar.bz2 |
Long live Qt for S60!
Diffstat (limited to 'src/s60main')
-rw-r--r-- | src/s60main/qts60main.cpp | 32 | ||||
-rw-r--r-- | src/s60main/qts60main_mcrt0.cpp | 77 | ||||
-rw-r--r-- | src/s60main/qts60mainapplication.cpp | 61 | ||||
-rw-r--r-- | src/s60main/qts60mainapplication.h | 64 | ||||
-rw-r--r-- | src/s60main/qts60mainappui.cpp | 169 | ||||
-rw-r--r-- | src/s60main/qts60mainappui.h | 99 | ||||
-rw-r--r-- | src/s60main/qts60maindocument.cpp | 87 | ||||
-rw-r--r-- | src/s60main/qts60maindocument.h | 93 | ||||
-rw-r--r-- | src/s60main/s60main.pro | 55 | ||||
-rw-r--r-- | src/s60main/s60main.rss | 56 |
10 files changed, 793 insertions, 0 deletions
diff --git a/src/s60main/qts60main.cpp b/src/s60main/qts60main.cpp new file mode 100644 index 0000000..1d19cc6 --- /dev/null +++ b/src/s60main/qts60main.cpp @@ -0,0 +1,32 @@ +/**************************************************************************** +** +** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the $MODULE$ of the Qt Toolkit. +** +** $TROLLTECH_DUAL_EMBEDDED_LICENSE$ +** +****************************************************************************/ + +// INCLUDE FILES +#include <eikstart.h> +#include "qts60mainapplication.h" + +/** + * factory function to create the QtS60Main application class + */ +LOCAL_C CApaApplication* NewApplication() + { + return new CQtS60MainApplication; + } + +/** + * A normal Symbian OS executable provides an E32Main() function which is + * called by the operating system to start the program. + */ +GLDEF_C TInt E32Main() + { + return EikStart::RunApplication( NewApplication ); + } + diff --git a/src/s60main/qts60main_mcrt0.cpp b/src/s60main/qts60main_mcrt0.cpp new file mode 100644 index 0000000..10a784a --- /dev/null +++ b/src/s60main/qts60main_mcrt0.cpp @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** This file is part of the $MODULE$ of the Qt Toolkit. +** +** $TROLLTECH_3RDPARTY_LICENSE$ +** +****************************************************************************/ + +// MCRT0.CPP +// +// © Portions copyright (c) 2005-2006 Nokia Corporation. All rights reserved. +// Copyright (c) Symbian Software Ltd 1997-2004. All rights reserved. +// + +// EPOC32 version of crt0.c for C programs which always want multi-threaded support + +#include <e32std.h> +#include <e32base.h> +#include "estlib.h" + +#ifdef __ARMCC__ +__asm int CallMain(int argc, char *argv[], char *envp[]) +{ + import main + code32 + b main +} +#define CALLMAIN(argc, argv, envp) CallMain(argc, argv, envp) +#else +extern "C" int main (int argc, char *argv[], char *envp[]); +#define CALLMAIN(argc, argv, envp) main(argc, argv, envp) +#endif + +// Dummy function to handle GCCE toolchain problem +extern "C" GLDEF_C int __GccGlueInit() +{ + return 0; +} + +extern "C" IMPORT_C void exit (int ret); + +GLDEF_C TInt QtMainWrapper() +{ + int argc=0; + char **argv=0; + char **envp=0; + // get args & environment + __crt0(argc,argv,envp); + CleanupArrayDelete<char*>::PushL(argv); + CleanupArrayDelete<char*>::PushL(envp); + //Call user(application)'s main + int ret = CALLMAIN(argc,argv,envp); + CleanupStack::PopAndDestroy(2,argv); + return ret; +} + + +#ifdef __GCC32__ + +/* stub function inserted into main() by GCC */ +extern "C" void __gccmain (void) {} + +/* Default GCC entrypoint */ +extern "C" TInt _mainCRTStartup (void) +{ + extern TInt _E32Startup(); + return _E32Startup(); +} + +#endif /* __GCC32__ */ + +#ifdef __EABI__ + +// standard entrypoint for C runtime, expected by some linkers +// Symbian OS does not currently use this function +extern "C" void __main() {} +#endif diff --git a/src/s60main/qts60mainapplication.cpp b/src/s60main/qts60mainapplication.cpp new file mode 100644 index 0000000..807b5af --- /dev/null +++ b/src/s60main/qts60mainapplication.cpp @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the $MODULE$ of the Qt Toolkit. +** +** $TROLLTECH_DUAL_EMBEDDED_LICENSE$ +** +****************************************************************************/ + +// INCLUDE FILES +#include "qts60maindocument.h" +#include "qts60mainapplication.h" +#include <bautils.h> +#include <coemain.h> + +// ============================ MEMBER FUNCTIONS =============================== + + +_LIT( KQtWrapperResourceFile,"\\resource\\apps\\s60main.rsc" ); + +// ----------------------------------------------------------------------------- +// CQtS60MainApplication::CreateDocumentL() +// Creates CApaDocument object +// ----------------------------------------------------------------------------- +// +CApaDocument* CQtS60MainApplication::CreateDocumentL() + { + // Create an QtS60Main document, and return a pointer to it + return (static_cast<CApaDocument*>( CQtS60MainDocument::NewL( *this ) ) ); + } + +// ----------------------------------------------------------------------------- +// CQtS60MainApplication::AppDllUid() +// Returns application UID +// ----------------------------------------------------------------------------- +// +TUid CQtS60MainApplication::AppDllUid() const + { + // Return the UID for the QtS60Main application + return ProcessUid(); + } + +// ----------------------------------------------------------------------------- +// CQtS60MainApplication::ResourceFileName() +// Returns application resource filename +// ----------------------------------------------------------------------------- +// +TFileName CQtS60MainApplication::ResourceFileName() const + { + TFindFile finder(iCoeEnv->FsSession()); + TInt err = finder.FindByDir(KQtWrapperResourceFile, KNullDesC); + if (err == KErrNone) + return finder.File(); + return KNullDesC(); + } + + +// End of File + diff --git a/src/s60main/qts60mainapplication.h b/src/s60main/qts60mainapplication.h new file mode 100644 index 0000000..318f83b --- /dev/null +++ b/src/s60main/qts60mainapplication.h @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the $MODULE$ of the Qt Toolkit. +** +** $TROLLTECH_DUAL_EMBEDDED_LICENSE$ +** +****************************************************************************/ + +#ifndef __QtS60MainAPPLICATION_H__ +#define __QtS60MainAPPLICATION_H__ + +// INCLUDES +#include <aknapp.h> + +// CLASS DECLARATION + +static TUid ProcessUid() + { + RProcess me; + TSecureId securId = me.SecureId(); + me.Close(); + return securId.operator TUid(); + } + +/** +* CQtS60MainApplication application class. +* Provides factory to create concrete document object. +* An instance of CQtS60MainApplication is the application part of the +* AVKON application framework for the QtS60Main example application. +*/ +class CQtS60MainApplication : public CAknApplication + { + public: // Functions from base classes + + /** + * From CApaApplication, AppDllUid. + * @return Application's UID (KUidQtS60MainApp). + */ + TUid AppDllUid() const; + + /** + * From CApaApplication, ResourceFileName + * @return Application's resource filename (KUidQtS60MainApp). + */ + TFileName ResourceFileName() const; + + protected: // Functions from base classes + + /** + * From CApaApplication, CreateDocumentL. + * Creates CQtS60MainDocument document object. The returned + * pointer in not owned by the CQtS60MainApplication object. + * @return A pointer to the created document object. + */ + CApaDocument* CreateDocumentL(); + }; + +#endif // __QtS60MainAPPLICATION_H__ + +// End of File + diff --git a/src/s60main/qts60mainappui.cpp b/src/s60main/qts60mainappui.cpp new file mode 100644 index 0000000..016d49b --- /dev/null +++ b/src/s60main/qts60mainappui.cpp @@ -0,0 +1,169 @@ +/**************************************************************************** +** +** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the $MODULE$ of the Qt Toolkit. +** +** $TROLLTECH_DUAL_EMBEDDED_LICENSE$ +** +****************************************************************************/ + +// INCLUDE FILES +#include <avkon.hrh> +#include <eikmenub.h> +#include <eikmenup.h> +#include <barsread.h> +#include <s60main.rsg> +#include <avkon.rsg> + +#include "qts60mainappui.h" +#include <QtGui/qapplication.h> +#include <QtGui/qmenu.h> +#include <QtGui/qmenubar.h> +#include <QtGui/private/qt_s60_p.h> + +// ============================ MEMBER FUNCTIONS =============================== + + +// ----------------------------------------------------------------------------- +// CQtS60MainAppUi::ConstructL() +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CQtS60MainAppUi::ConstructL() +{ + // Initialise app UI with standard value. + // ENoAppResourceFile and ENonStandardResourceFile makes UI to work without + // resource files in most SDKs. S60 3rd FP1 public seems to require resource file + // even these flags are defined + BaseConstructL(CAknAppUi::EAknEnableSkin); + + // Create async callback to call Qt main, + // this is required to give S60 app FW to finish starting correctly + TCallBack callBack( OpenCMainStaticCallBack, this ); + iAsyncCallBack = new(ELeave) CAsyncCallBack( callBack, CActive::EPriorityIdle ); + iAsyncCallBack->Call(); +} + +// ----------------------------------------------------------------------------- +// CQtS60MainAppUi::CQtS60MainAppUi() +// C++ default constructor can NOT contain any code, that might leave. +// ----------------------------------------------------------------------------- +// +CQtS60MainAppUi::CQtS60MainAppUi() +{ + // No implementation required +} + +// ----------------------------------------------------------------------------- +// CQtS60MainAppUi::~CQtS60MainAppUi() +// Destructor. +// ----------------------------------------------------------------------------- +// +CQtS60MainAppUi::~CQtS60MainAppUi() +{ + delete iAsyncCallBack; +} + +// ----------------------------------------------------------------------------- +// CQtS60MainAppUi::HandleCommandL() +// Takes care of command handling. +// ----------------------------------------------------------------------------- +// +void CQtS60MainAppUi::HandleCommandL( TInt aCommand ) +{ + switch (aCommand) { + case EEikCmdExit: + case EAknSoftkeyBack: + case EAknSoftkeyExit: + if (qApp) + qApp->exit(); + break; + default: + // For now assume all unknown menu items are Qt menu items + QMenuBar::symbianCommands(aCommand); + break; + } +} + +void CQtS60MainAppUi::HandleWsEventL(const TWsEvent& aEvent, CCoeControl *control) +{ + int result = 0; + if (qApp) + result = qApp->s60ProcessEvent(const_cast<TWsEvent*>(&aEvent)); + + if (result <= 0) + CAknAppUi::HandleWsEventL(aEvent, control); +} + + +// ----------------------------------------------------------------------------- +// Called by the framework when the application status pane +// size is changed. Passes the new client rectangle to the +// AppView +// ----------------------------------------------------------------------------- +// +void CQtS60MainAppUi::HandleStatusPaneSizeChange() +{ + HandleResourceChangeL(KInternalStatusPaneChange); + HandleStackedControlsResourceChange(KInternalStatusPaneChange); +} + +// ----------------------------------------------------------------------------- +// Called asynchronously from ConstructL() - passes call to nan static method +// ----------------------------------------------------------------------------- +// +TInt CQtS60MainAppUi::OpenCMainStaticCallBack( TAny* aObject ) +{ + CQtS60MainAppUi* myObj = static_cast<CQtS60MainAppUi*>( aObject ); + myObj->OpenCMainCallBack(); + return 0; +} + +#include "qtS60main_mcrt0.cpp" + +// ----------------------------------------------------------------------------- +// Invokes Qt main, the Qt main will block and when we return from there +// application should be closed. -> Call Exit(); +// ----------------------------------------------------------------------------- +// +void CQtS60MainAppUi::OpenCMainCallBack() +{ + TInt ret = QtMainWrapper(); + Exit(); +} + +void CQtS60MainAppUi::DynInitMenuBarL(TInt, CEikMenuBar *) +{ +} + +void CQtS60MainAppUi::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane *aMenuPane) +{ + if (aResourceId == R_QT_WRAPPERAPP_MENU){ + if (aMenuPane->NumberOfItemsInPane() <= 1) + qt_symbian_show_toplevel(aMenuPane); + + } + else if( aResourceId != R_AVKON_MENUPANE_FEP_DEFAULT && aResourceId != R_AVKON_MENUPANE_EDITTEXT_DEFAULT && aResourceId != R_AVKON_MENUPANE_LANGUAGE_DEFAULT ){ + qt_symbian_show_submenu(aMenuPane, aResourceId); + } +} + +void CQtS60MainAppUi::RestoreMenuL(CCoeControl* aMenuWindow,TInt aMenuId,TMenuType aMenuType) +{ + if ((aMenuId==R_QT_WRAPPERAPP_MENUBAR) || (aMenuId == R_AVKON_MENUPANE_FEP_DEFAULT)) { + TResourceReader reader; + iCoeEnv->CreateResourceReaderLC(reader,aMenuId); + aMenuWindow->ConstructFromResourceL(reader); + CleanupStack::PopAndDestroy(); + } + + if (aMenuType==EMenuPane) + DynInitMenuPaneL(aMenuId,(CEikMenuPane*)aMenuWindow); + else + DynInitMenuBarL(aMenuId,(CEikMenuBar*)aMenuWindow); + } + +// End of File + diff --git a/src/s60main/qts60mainappui.h b/src/s60main/qts60mainappui.h new file mode 100644 index 0000000..3addb0c --- /dev/null +++ b/src/s60main/qts60mainappui.h @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the $MODULE$ of the Qt Toolkit. +** +** $TROLLTECH_DUAL_EMBEDDED_LICENSE$ +** +****************************************************************************/ + +#ifndef __QtS60MainAPPUI_H__ +#define __QtS60MainAPPUI_H__ + +// INCLUDES +#include <aknappui.h> + +// FORWARD DECLARATIONS + +// CLASS DECLARATION +/** +* CQtS60MainAppUi application UI class. +* Interacts with the user through the UI and request message processing +* from the handler class +*/ +class CQtS60MainAppUi : public CAknAppUi + { + public: // Constructors and destructor + + /** + * ConstructL. + * 2nd phase constructor. + */ + void ConstructL(); + + /** + * CQtS60MainAppUi. + * C++ default constructor. This needs to be public due to + * the way the framework constructs the AppUi + */ + CQtS60MainAppUi(); + + /** + * ~CQtS60MainAppUi. + * Virtual Destructor. + */ + virtual ~CQtS60MainAppUi(); + + protected: + void RestoreMenuL(CCoeControl* aMenuWindow,TInt aMenuId,TMenuType aMenuType); + void DynInitMenuBarL(TInt aResourceId, CEikMenuBar *aMenuBar); + void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane *aMenuPane); + + private: // Functions from base classes + + /** + * From CEikAppUi, HandleCommandL. + * Takes care of command handling. + * @param aCommand Command to be handled. + */ + void HandleCommandL( TInt aCommand ); + + /** + * HandleStatusPaneSizeChange. + * Called by the framework when the application status pane + * size is changed. + */ + void HandleStatusPaneSizeChange(); + + /** + * Static callback method for invoking Qt main. + * Called asynchronously from ConstructL() - passes call to non static method. + */ + static TInt OpenCMainStaticCallBack( TAny* aObject ); + + /** + * Callback method for invoking Qt main. + * Called from static OpenCMainStaticCallBack. + */ + void OpenCMainCallBack(); + + protected: + void HandleWsEventL(const TWsEvent& aEvent, CCoeControl* aDestination); + + + private: // Data + + /** + * Async callback object to call Qt main + * Owned by CQtS60MainAppUi + */ + CAsyncCallBack* iAsyncCallBack; + + }; + +#endif // __QtS60MainAPPUI_H__ + +// End of File + diff --git a/src/s60main/qts60maindocument.cpp b/src/s60main/qts60maindocument.cpp new file mode 100644 index 0000000..9ab426d --- /dev/null +++ b/src/s60main/qts60maindocument.cpp @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the $MODULE$ of the Qt Toolkit. +** +** $TROLLTECH_DUAL_EMBEDDED_LICENSE$ +** +****************************************************************************/ + +// INCLUDE FILES +#include "qts60mainappui.h" +#include "qts60maindocument.h" + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CQtS60MainDocument::NewL() +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CQtS60MainDocument* CQtS60MainDocument::NewL( CEikApplication& aApp ) + { + CQtS60MainDocument* self = NewLC( aApp ); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CQtS60MainDocument::NewLC() +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CQtS60MainDocument* CQtS60MainDocument::NewLC( CEikApplication& aApp ) + { + CQtS60MainDocument* self = new ( ELeave ) CQtS60MainDocument( aApp ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// ----------------------------------------------------------------------------- +// CQtS60MainDocument::ConstructL() +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CQtS60MainDocument::ConstructL() + { + // No implementation required + } + +// ----------------------------------------------------------------------------- +// CQtS60MainDocument::CQtS60MainDocument() +// C++ default constructor can NOT contain any code, that might leave. +// ----------------------------------------------------------------------------- +// +CQtS60MainDocument::CQtS60MainDocument( CEikApplication& aApp ) + : CAknDocument( aApp ) + { + // No implementation required + } + +// --------------------------------------------------------------------------- +// CQtS60MainDocument::~CQtS60MainDocument() +// Destructor. +// --------------------------------------------------------------------------- +// +CQtS60MainDocument::~CQtS60MainDocument() + { + // No implementation required + } + +// --------------------------------------------------------------------------- +// CQtS60MainDocument::CreateAppUiL() +// Constructs CreateAppUi. +// --------------------------------------------------------------------------- +// +CEikAppUi* CQtS60MainDocument::CreateAppUiL() + { + // Create the application user interface, and return a pointer to it; + // the framework takes ownership of this object + return ( static_cast <CEikAppUi*> ( new ( ELeave )CQtS60MainAppUi ) ); + } + +// End of File + diff --git a/src/s60main/qts60maindocument.h b/src/s60main/qts60maindocument.h new file mode 100644 index 0000000..4979e7f --- /dev/null +++ b/src/s60main/qts60maindocument.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the $MODULE$ of the Qt Toolkit. +** +** $TROLLTECH_DUAL_EMBEDDED_LICENSE$ +** +****************************************************************************/ + +#ifndef __QTS60MAINDOCUMENT_H__ +#define __QTS60MAINDOCUMENT_H__ + +// INCLUDES +#include <akndoc.h> + +// FORWARD DECLARATIONS +class CQtS60MainAppUi; +class CEikApplication; + + +// CLASS DECLARATION + +/** +* CQtS60MainDocument application class. +* An instance of class CQtS60MainDocument is the Document part of the +* AVKON application framework for the QtS60Main application. +*/ +class CQtS60MainDocument : public CAknDocument + { + public: // Constructors and destructor + + /** + * NewL. + * Two-phased constructor. + * Construct a CQtS60MainDocument for the AVKON application aApp + * using two phase construction, and return a pointer + * to the created object. + * @param aApp Application creating this document. + * @return A pointer to the created instance of CQtS60MainDocument. + */ + static CQtS60MainDocument* NewL( CEikApplication& aApp ); + + /** + * NewLC. + * Two-phased constructor. + * Construct a CQtS60MainDocument for the AVKON application aApp + * using two phase construction, and return a pointer + * to the created object. + * @param aApp Application creating this document. + * @return A pointer to the created instance of CQtS60MainDocument. + */ + static CQtS60MainDocument* NewLC( CEikApplication& aApp ); + + /** + * ~CQtS60MainDocument + * Virtual Destructor. + */ + virtual ~CQtS60MainDocument(); + + public: // Functions from base classes + + /** + * CreateAppUiL + * From CEikDocument, CreateAppUiL. + * Create a CQtS60MainAppUi object and return a pointer to it. + * The object returned is owned by the Uikon framework. + * @return Pointer to created instance of AppUi. + */ + CEikAppUi* CreateAppUiL(); + + private: // Constructors + + /** + * ConstructL + * 2nd phase constructor. + */ + void ConstructL(); + + /** + * CQtS60MainDocument. + * C++ default constructor. + * @param aApp Application creating this document. + */ + CQtS60MainDocument( CEikApplication& aApp ); + + }; + +#endif // __QTS60MAINDOCUMENT_H__ + +// End of File + diff --git a/src/s60main/s60main.pro b/src/s60main/s60main.pro new file mode 100644 index 0000000..f74943f --- /dev/null +++ b/src/s60main/s60main.pro @@ -0,0 +1,55 @@ +# Additional Qt project file for qtmain lib on Symbian +TEMPLATE = lib +TARGET = qtmain +DESTDIR = $$QMAKE_LIBDIR_QT +QT = + +CONFIG += staticlib warn_on +CONFIG -= qt shared + +symbian { + # Note: UID only needed for ensuring that no filename generation conflicts occur + TARGET.UID3 = 0x2001E61F + CONFIG += png zlib + CONFIG -= jpeg + INCLUDEPATH += tmp $$QMAKE_INCDIR_QT/QtCore $$MW_LAYER_SYSTEMINCLUDE + SOURCES = qts60main.cpp \ + qts60mainapplication.cpp \ + qts60mainappui.cpp \ + qts60maindocument.cpp + + HEADERS = qts60mainapplication.h \ + qts60mainappui.h \ + qts60maindocument.h + + # This block serves the minimalistic resource file for S60 3.1 platforms. + # Note there is no way to ifdef S60 version in mmp file, that is why the resource + # file is always compiled for WINSCW + minimalAppResource31 = \ + "START RESOURCE s60main.rss" \ + "HEADER" \ + "TARGETPATH resource\apps" \ + "END" + MMP_RULES += minimalAppResource31 + + # s60main needs to be built in ARM mode for GCCE to work. + MMP_RULES+="ALWAYS_BUILD_AS_ARM" + + # staticlib should not have any lib depencies in s60 + # This seems not to work, some hard coded libs are still added as dependency + LIBS = +} else { + error("$$_FILE_ is intended only for Symbian!") +} + +symbian-abld: { + # abld build commands generated resources after the static library is built, and + # we have dependency to resource from static lib -> resources need to be generated + # explicitly before library + rsgFix2.commands = "-$(DEL_FILE) $(EPOCROOT)Epoc32\Data\z\resource\apps\s60main.rsc >NUL 2>&1" + rsgFix.commands = "-$(ABLD) resource $(PLATFORM) $(CFG) 2>NUL" + QMAKE_EXTRA_TARGETS += rsgFix rsgFix2 + PRE_TARGETDEPS += rsgFix rsgFix2 +} + +include(../qbase.pri) diff --git a/src/s60main/s60main.rss b/src/s60main/s60main.rss new file mode 100644 index 0000000..569f59e --- /dev/null +++ b/src/s60main/s60main.rss @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (qt-info@nokia.com) +** +** This file is part of the $MODULE$ of the Qt Toolkit. +** +** $TROLLTECH_DUAL_EMBEDDED_LICENSE$ +** +****************************************************************************/ + +// Even S60 application have ENoAppResourceFile and ENonStandardResourceFile +// flags set, the S60 3rd Edition FP1 emulator requires applications to have +// very minimalistic application resource file, otherwise apps refures to start +// This file serves the minimalistic resource file for S60 3.1 platforms. + +// RESOURCE IDENTIFIER +NAME QTMA // 4 letter ID + +// INCLUDES +//#include <eikon.rh> +#include <appinfo.rh> +#include <eikon.rh> +#include <avkon.rsg> +#include <avkon.rh> +#include <avkon.mbg> + +// RESOURCE DEFINITIONS +RESOURCE RSS_SIGNATURE + { + } + +RESOURCE TBUF r_default_document_name + { + buf="QTMA"; + } + +RESOURCE EIK_APP_INFO + { + menubar = r_qt_wrapperapp_menubar; + cba = R_AVKON_SOFTKEYS_EXIT; + } + +RESOURCE MENU_BAR r_qt_wrapperapp_menubar + { + titles = + { + MENU_TITLE { menu_pane = r_qt_wrapperapp_menu; } + }; + } + +RESOURCE MENU_PANE r_qt_wrapperapp_menu + { + } +// End of File + |