SVN commit 1008957 by rivol: Add a stylesheet for in-game menus to get fancier shaped menu. M +2 -0 data/CMakeLists.txt A data/menus.css M +43 -9 src/menuview.cpp M +8 -1 src/menuview.h --- trunk/playground/games/astrododge/data/CMakeLists.txt #1008956:1008957 @@ -27,3 +27,5 @@ file(GLOB AD_DATA_TEXTURES textures/*.png) install(FILES ${AD_DATA_TEXTURES} DESTINATION ${DATA_INSTALL_DIR}/astrododge/textures) + +install (FILES menus.css DESTINATION ${DATA_INSTALL_DIR}/astrododge) --- trunk/playground/games/astrododge/src/menuview.cpp #1008956:1008957 @@ -18,17 +18,21 @@ #include "menuview.h" #include "displaywidget.h" +#include "datastore.h" #include +#include + #include #include #include +#include +#include MenuView::MenuView(KGLLib::GLWidget* parent): GLView(parent) { - mMainMenu = 0; mMainMenuProxy = 0; } @@ -43,24 +47,54 @@ return static_cast(glWidget())->proxy(); } +QGraphicsProxyWidget* MenuView::createMenu(QFrame* menuContainer) +{ + menuContainer->setObjectName("menu"); + + QWidget* menu = new QWidget(); + menu->setWindowOpacity(0.8); + menu->setObjectName("menuContainer"); + menu->setLayout(new QVBoxLayout); + menu->setStyleSheet(mStyleSheet); + menu->layout()->addWidget(menuContainer); + + return proxy()->addWidget(menu); +} + void MenuView::init() { + loadStyleSheet(); + // Main menu - mMainMenu = new QWidget(); - mMainMenu->setWindowOpacity(0.8); - mMainMenu->setLayout(new QVBoxLayout); + QFrame* mainMenu = new QFrame(); + mainMenu->setLayout(new QVBoxLayout); - QPushButton* startButton = new QPushButton("New game", mMainMenu); + QLabel* header = new QLabel("AstroDodge"); + header->setObjectName("header"); + mainMenu->layout()->addWidget(header); + + QPushButton* startButton = new QPushButton("New game", mainMenu); connect(startButton, SIGNAL(clicked(bool)), this, SIGNAL(startNewGame())); - mMainMenu->layout()->addWidget(startButton); + mainMenu->layout()->addWidget(startButton); - QPushButton* quitButton = new QPushButton("Quit", mMainMenu); + QPushButton* quitButton = new QPushButton("Quit", mainMenu); connect(quitButton, SIGNAL(clicked(bool)), this, SIGNAL(quitGame())); - mMainMenu->layout()->addWidget(quitButton); + mainMenu->layout()->addWidget(quitButton); - mMainMenuProxy = proxy()->addWidget(mMainMenu); + mMainMenuProxy = createMenu(mainMenu); } +void MenuView::loadStyleSheet() +{ + QFile f(DataStore::instance()->dataDir() + "menus.css"); + if (!f.open(QIODevice::ReadOnly)) { + kError() << "Couldn't open" << f.fileName(); + return; + } + + mStyleSheet = f.readAll(); +} + void MenuView::render() { } --- trunk/playground/games/astrododge/src/menuview.h #1008956:1008957 @@ -25,6 +25,7 @@ class WidgetProxy; } class QGraphicsProxyWidget; +class QFrame; class MenuView : public GLView @@ -49,8 +50,14 @@ void startNewGame(); void quitGame(); + protected: + void loadStyleSheet(); + + QGraphicsProxyWidget* createMenu(QFrame* menuContainer); + private: - QWidget* mMainMenu; + QString mStyleSheet; + QGraphicsProxyWidget* mMainMenuProxy; };