⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 toplevel.cpp

📁 Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3.10平台上编译为嵌入式图形界面操作系统。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/************************************************************************ Copyright (C) 2000-2005 Trolltech AS.  All rights reserved.**** This file is part of the Qtopia Environment.** ** This program is free software; you can redistribute it and/or modify it** under the terms of the GNU General Public License as published by the** Free Software Foundation; either version 2 of the License, or (at your** option) any later version.** ** A copy of the GNU GPL license version 2 is included in this package as ** LICENSE.GPL.**** This program is distributed in the hope that it will be useful, but** WITHOUT ANY WARRANTY; without even the implied warranty of** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ** See the GNU General Public License for more details.**** In addition, as a special exception Trolltech gives permission to link** the code of this program with Qtopia applications copyrighted, developed** and distributed by Trolltech under the terms of the Qtopia Personal Use** License Agreement. You must comply with the GNU General Public License** in all respects for all of the code used other than the applications** licensed under the Qtopia Personal Use License Agreement. If you modify** this file, you may extend this exception to your version of the file,** but you are not obligated to do so. If you do not wish to do so, delete** this exception statement from your version.** ** See http://www.trolltech.com/gpl/ for GPL licensing information.**** Contact info@trolltech.com if any conditions of this licensing are** not clear to you.************************************************************************//* * KAsteroids - Copyright (c) Martin R. Jones 1997 * * Part of the KDE project *///	--- toplevel.cpp ---#include "toplevel.h"#include "ledmeter.h"#include <qtopia/qpeapplication.h>#include <qtopia/resource.h>#include <qtopia/devicebuttonmanager.h>#include <qtopia/contextbar.h>#include <qaccel.h>#include <qlabel.h>#include <qlayout.h>#include <qlcdnumber.h>#include <qpushbutton.h>#define SB_SCORE	1#define SB_LEVEL	2#define SB_SHIPS	3struct SLevel{    int    nrocks;    double rockSpeed;};#define MAX_LEVELS	16#ifndef QTOPIA_PHONESLevel levels[MAX_LEVELS] ={    { 1, 0.4 },    { 1, 0.6 },    { 2, 0.5 },    { 2, 0.7 },    { 2, 0.8 },    { 3, 0.6 },    { 3, 0.7 },    { 3, 0.8 },    { 4, 0.6 },    { 4, 0.7 },    { 4, 0.8 },    { 5, 0.7 },    { 5, 0.8 },    { 5, 0.9 },    { 5, 1.0 }};#elseSLevel levels[MAX_LEVELS] ={    { 1, 0.1 },    { 1, 0.2 },    { 1, 0.3 },    { 1, 0.4 },    { 2, 0.1 },    { 2, 0.2 },    { 2, 0.3 },    { 2, 0.4 },    { 3, 0.1 },    { 3, 0.2 },    { 3, 0.3 },    { 3, 0.4 },    { 4, 0.1 },    { 4, 0.2 },    { 4, 0.3 }};#endifKAstTopLevel::KAstTopLevel( QWidget *parent, const char *name, WFlags fl )    : QMainWindow( parent, name, fl ),    shipDestroyed("qasteroids/shipdestroyed"),    rockDestroyed("qasteroids/rockdestroyed"),    missileFired("qasteroids/missilefired"){    QPEApplication::grabKeyboard();#ifdef QTOPIA_PHONE    contextMenu = 0;#endif    setCaption( tr("Asteroids") );    QWidget *border = new QWidget( this );    border->setBackgroundColor( black );    setCentralWidget( border );    QVBoxLayout *borderLayout = new QVBoxLayout( border );        QWidget *mainWin = new QWidget( border );    borderLayout->addWidget( mainWin, 2, AlignHCenter );    view = new KAsteroidsView( mainWin );    connect( view, SIGNAL( shipKilled() ), SLOT( slotShipKilled() ) );    connect( view, SIGNAL( missileFired() ), SLOT( slotMissileFired() ) );    connect( view, SIGNAL( rockHit(int) ), SLOT( slotRockHit(int) ) );    connect( view, SIGNAL( rocksRemoved() ), SLOT( slotRocksRemoved() ) );    connect( view, SIGNAL( updateVitals() ), SLOT( slotUpdateVitals() ) );    QVBoxLayout *vb = new QVBoxLayout( mainWin );    QHBoxLayout *hb = new QHBoxLayout;    vb->addLayout( hb );    QFont labelFont( "helvetica", 12 );    QColorGroup grp( darkGreen, black, QColor( 128, 128, 128 ),	    QColor( 64, 64, 64 ), black, darkGreen, black );    QPalette pal( grp, grp, grp );    mainWin->setPalette( pal );    QLabel *label;    if (qApp->desktop()->width() > 200) {	label = new QLabel( tr("Score"), mainWin );	label->setFont( labelFont );	label->setPalette( pal );	//    label->setFixedWidth( label->sizeHint().width() );	hb->addWidget( label );    }    scoreLCD = new QLCDNumber( 5, mainWin );    scoreLCD->setFrameStyle( QFrame::NoFrame );    scoreLCD->setSegmentStyle( QLCDNumber::Flat );    scoreLCD->setFixedHeight( 16 );    scoreLCD->setPalette( pal );    hb->addWidget( scoreLCD );    hb->addStretch( 1 );    label = new QLabel( tr("Level"), mainWin );    label->setFont( labelFont );    label->setPalette( pal );//    label->setFixedWidth( label->sizeHint().width() );    hb->addWidget( label );    levelLCD = new QLCDNumber( 2, mainWin );    levelLCD->setFrameStyle( QFrame::NoFrame );    levelLCD->setSegmentStyle( QLCDNumber::Flat );    levelLCD->setFixedHeight( 16 );    levelLCD->setPalette( pal );    hb->addWidget( levelLCD );    hb->addStretch( 1 );#ifdef QTOPIA_PHONE    label = new QLabel( mainWin );    label->setPixmap( Resource::loadPixmap("ship/ship0000") );#else    label = new QLabel( tr("Ships"), mainWin );#endif    label->setFont( labelFont );//    label->setFixedWidth( label->sizeHint().width() );    label->setPalette( pal );    hb->addWidget( label );    shipsLCD = new QLCDNumber( 1, mainWin );    shipsLCD->setFrameStyle( QFrame::NoFrame );    shipsLCD->setSegmentStyle( QLCDNumber::Flat );    shipsLCD->setFixedHeight( 16 );    shipsLCD->setPalette( pal );    hb->addWidget( shipsLCD );//    hb->addStrut( 14 );    vb->addWidget( view, 10 );// -- bottom layout:    QHBoxLayout *hbd = new QHBoxLayout(vb, 0);    int hbdSpace = qApp->desktop()->width() > 200 ? 5 : 3;    QFont smallFont( "helvetica", 12 );    hbd->addSpacing( hbdSpace );/*    label = new QLabel( tr( "T" ), mainWin );    label->setFont( smallFont );    label->setFixedWidth( label->sizeHint().width() );    label->setPalette( pal );    hbd->addWidget( label );    teleportsLCD = new QLCDNumber( 1, mainWin );    teleportsLCD->setFrameStyle( QFrame::NoFrame );    teleportsLCD->setSegmentStyle( QLCDNumber::Flat );    teleportsLCD->setPalette( pal );    teleportsLCD->setFixedHeight( 18 );    hbd->addWidget( teleportsLCD );    hbd->addSpacing( 10 );*/    label = new QLabel( mainWin );    label->setPixmap( Resource::loadPixmap("powerups/brake") );    label->setFixedWidth( 16 );    label->setPalette( pal );    hbd->addWidget( label );    brakesLCD = new QLCDNumber( 1, mainWin );    brakesLCD->setFrameStyle( QFrame::NoFrame );    brakesLCD->setSegmentStyle( QLCDNumber::Flat );    brakesLCD->setPalette( pal );    brakesLCD->setFixedHeight( 16 );    hbd->addWidget( brakesLCD );    hbd->addSpacing( hbdSpace );    label = new QLabel( mainWin );    label->setPixmap( Resource::loadPixmap("powerups/shield") );    label->setFixedWidth( 16 );    label->setPalette( pal );    hbd->addWidget( label );    shieldLCD = new QLCDNumber( 1, mainWin );    shieldLCD->setFrameStyle( QFrame::NoFrame );    shieldLCD->setSegmentStyle( QLCDNumber::Flat );    shieldLCD->setPalette( pal );    shieldLCD->setFixedHeight( 16 );    hbd->addWidget( shieldLCD );    hbd->addSpacing( hbdSpace );    label = new QLabel( mainWin );    label->setPixmap( Resource::loadPixmap("powerups/shoot") );    label->setFixedWidth( 16 );    label->setPalette( pal );    hbd->addWidget( label );    shootLCD = new QLCDNumber( 1, mainWin );    shootLCD->setFrameStyle( QFrame::NoFrame );    shootLCD->setSegmentStyle( QLCDNumber::Flat );    shootLCD->setPalette( pal );    shootLCD->setFixedHeight( 16 );    hbd->addWidget( shootLCD );    hbd->addStretch( 1 );    if (qApp->desktop()->width() > 200) {	label = new QLabel( tr( "Fuel" ), mainWin );	label->setFont( smallFont );	label->setFixedWidth( label->sizeHint().width() + 5 );	label->setPalette( pal );	hbd->addWidget( label );    }    powerMeter = new KALedMeter( mainWin );    powerMeter->setFrameStyle( QFrame::Box | QFrame::Plain );    powerMeter->setRange( MAX_POWER_LEVEL );    powerMeter->addColorRange( 10, darkRed );    powerMeter->addColorRange( 20, QColor(160, 96, 0) );    powerMeter->addColorRange( 70, darkGreen );    powerMeter->setCount( qApp->desktop()->width() > 200 ? 15 : 10 );    powerMeter->setPalette( pal );    powerMeter->setFixedSize( qApp->desktop()->width() > 200 ? 60 : 40, 12 );    hbd->addWidget( powerMeter );    shipsRemain = 3;    showHiscores = FALSE;    actions.insert( Qt::Key_Up, Thrust );    actions.insert( Qt::Key_Left, RotateLeft );    actions.insert( Qt::Key_Right, RotateRight );    actions.insert( Qt::Key_Down, Brake );#ifndef QTOPIA_PHONE    actions.insert( Qt::Key_Enter, Shoot );    actions.insert( Qt::Key_Z, Teleport );    actions.insert( Qt::Key_Space, Shoot );    actions.insert( Qt::Key_P, Pause );#else    actions.insert( Qt::Key_Select, Shoot );    actions.insert( Qt::Key_Context1, Shield );        ContextBar::setLabel(this, Key_Select, "qasteroids/ship/ship0000", tr("Launch"));    contextMenu = new ContextMenu(this);#endif#ifndef QTOPIA_PHONE    const QValueList<DeviceButton>& buttons = DeviceButtonManager::instance().buttons();    actions.insert( buttons[0].keycode(), Launch );    actions.insert( buttons[1].keycode(), Shield );    launchButtonText = buttons[0].userText();#else

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -