[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    playground/games/astrododge
From:       Rivo Laks <rivolaks () hot ! ee>
Date:       2009-08-08 19:17:29
Message-ID: 1249759049.258669.27125.nullmailer () svn ! kde ! org
[Download RAW message or body]

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 <kgllib/widgetproxy.h>
 
+#include <KDebug>
+
 #include <QVBoxLayout>
 #include <QPushButton>
 #include <QGraphicsProxyWidget>
+#include <QFile>
+#include <QLabel>
 
 
 MenuView::MenuView(KGLLib::GLWidget* parent): GLView(parent)
 {
-    mMainMenu = 0;
     mMainMenuProxy = 0;
 }
 
@@ -43,24 +47,54 @@
     return static_cast<DisplayWidget*>(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;
 };
 
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic