1 /****************************************************************************
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
7 ** This file is part of the demonstration applications of the Qt Toolkit.
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** No Commercial Usage
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
16 ** GNU Lesser General Public License Usage
17 ** Alternatively, this file may be used under the terms of the GNU Lesser
18 ** General Public License version 2.1 as published by the Free Software
19 ** Foundation and appearing in the file LICENSE.LGPL included in the
20 ** packaging of this file. Please review the following information to
21 ** ensure the GNU Lesser General Public License version 2.1 requirements
22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 ** In addition, as a special exception, Nokia gives you certain additional
25 ** rights. These rights are described in the Nokia Qt LGPL Exception
26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 ** If you have questions regarding the use of this file, please contact
29 ** Nokia at qt-info@nokia.com.
40 ****************************************************************************/
42 #ifndef MENU_MANAGER_H
43 #define MENU_MANAGER_H
47 #include <QtHelp/QHelpEngineCore>
50 #include "textbutton.h"
51 #include "mainwindow.h"
52 #include "itemcircleanimation.h"
54 typedef QHash
<QString
, QString
> StringHash
;
55 typedef QHash
<QString
, StringHash
> HashHash
;
59 class MenuManager
: public QObject
64 enum BUTTON_TYPE
{ROOT
, MENU1
, MENU2
, LAUNCH
, DOCUMENTATION
, QUIT
, FULLSCREEN
, UP
, DOWN
, BACK
};
67 static MenuManager
*instance();
68 virtual ~MenuManager();
70 void init(MainWindow
*window
);
71 void itemSelected(int userCode
, const QString
&menuName
= "");
73 QByteArray
getHtml(const QString
&name
);
74 QByteArray
getImage(const QString
&name
);
75 QString
resolveExeFile(const QString
&name
);
76 QString
resolveDocUrl(const QString
&name
);
77 QString
resolveImageUrl(const QString
&name
);
78 QString
resolveDataDir(const QString
&name
);
81 ItemCircleAnimation
*ticker
;
87 void exampleFinished();
88 void exampleError(QProcess::ProcessError error
);
93 static MenuManager
*pInstance
;
95 QByteArray
getResource(const QString
&name
);
97 void readXmlDocument();
98 void initHelpEngine();
99 void getDocumentationDir();
100 void readInfoAboutExample(const QDomElement
&example
);
101 void showDocInAssistant(const QString
&docFile
);
102 void launchExample(const QString
&uniqueName
);
104 void createMenu(const QDomElement
&category
, BUTTON_TYPE type
);
105 void createLowLeftButton(const QString
&label
, BUTTON_TYPE type
,
106 Movie
*movieIn
, Movie
*movieOut
, Movie
*movieShake
, const QString
&menuString
= QString());
107 void createLowRightButton(const QString
&label
, BUTTON_TYPE type
, Movie
*movieIn
, Movie
*movieOut
, Movie
*movieShake
);
108 void createLowRightLeafButton(const QString
&label
, int pos
, BUTTON_TYPE type
, Movie
*movieIn
, Movie
*movieOut
, Movie
* /*movieShake*/);
109 void createRootMenu(const QDomElement
&el
);
110 void createSubMenu(const QDomElement
&el
);
111 void createLeafMenu(const QDomElement
&el
);
112 void createInfo(DemoItem
*item
, const QString
&name
);
114 void createUpnDownButtons();
115 void createBackButton();
117 QDomDocument
*contentsDoc
;
118 QProcess assistantProcess
;
120 QString currentCategory
;
121 QString currentMenuButtons
;
124 DemoItemAnimation
*tickerInAnim
;
127 QHelpEngineCore
*helpEngine
;
129 TextButton
*upButton
;
130 TextButton
*downButton
;
133 #endif // MENU_MANAGER_H