Beispiel #1
0
QMenu* ItemBase::get_single_item_context_menu() const
{
    QMenu* menu = new QMenu(treeWidget());

    if (m_allow_edition)
        menu->addAction("Edit...", this, SLOT(slot_edit()));

    if (m_allow_deletion)
        menu->addAction("Delete", this, SLOT(slot_delete()), QKeySequence(Qt::Key_Delete));

    return menu;
}
Beispiel #2
0
WPInfoWidget::WPInfoWidget( QWidget *parent ) :
  QWidget(parent)
{
  setObjectName("WPInfoWidget");
  setWindowTitle( tr("Point Info") );
  setWindowFlags( Qt::Tool );
  setWindowModality( Qt::WindowModal );
  setAttribute(Qt::WA_DeleteOnClose);

  m_returnView = MainWindow::mapView;

  m_homeChanged = false;
  m_editedWpIsTarget = false;

  if( parent )
    {
      resize( parent->size() );
    }

  QFont bfont = font();
  bfont.setBold(true);

  QBoxLayout *topLayout = new QVBoxLayout(this);

  text = new QTextEdit(this);
  text->setReadOnly( true );

#ifdef QSCROLLER
  QScroller::grabGesture( text->viewport(), QScroller::LeftMouseButtonGesture );
#endif

#ifdef QTSCROLLER
  QtScroller::grabGesture( text->viewport(), QtScroller::LeftMouseButtonGesture );
#endif

  topLayout->addWidget(text, 10);

  buttonrow2 = new QHBoxLayout;
  topLayout->addLayout(buttonrow2);

  cmdAddWaypoint = new QPushButton(tr("Add Waypoint"), this);
  cmdAddWaypoint->setFont(bfont);
  buttonrow2->addWidget(cmdAddWaypoint);
  connect(cmdAddWaypoint, SIGNAL(clicked()), SLOT(slot_addAsWaypoint()));

  cmdHome = new QPushButton(tr("Home"), this);
  cmdHome->setFont(bfont);
  buttonrow2->addWidget(cmdHome);
  connect(cmdHome, SIGNAL(clicked()), SLOT(slot_setNewHome()));

  cmdArrival = new QPushButton(tr("Arrival"), this);
  cmdArrival->setFont(bfont);
  buttonrow2->addWidget(cmdArrival);
  connect(cmdArrival, SIGNAL(clicked()), SLOT(slot_arrival()));

  cmdEdit = new QPushButton(tr("Edit"), this);
  cmdEdit->setFont(bfont);
  buttonrow2->addWidget(cmdEdit);
  connect(cmdEdit, SIGNAL(clicked()), SLOT(slot_edit()));

  cmdDelete = new QPushButton(tr("Delete"), this);
  cmdDelete->setFont(bfont);
  buttonrow2->addWidget(cmdDelete);
  connect(cmdDelete, SIGNAL(clicked()), SLOT(slot_delete()));

  buttonrow1=new QHBoxLayout;
  topLayout->addLayout(buttonrow1);

  cmdClose = new QPushButton(tr("Close"), this);
  cmdClose->setFont(bfont);
  buttonrow1->addWidget(cmdClose);
  connect(cmdClose, SIGNAL(clicked()), SLOT(slot_SwitchBack()));

  // Activate keyboard shortcut cancel to close the window too
  scClose = new QShortcut( this );

#ifndef ANDROID
  scClose->setKey( Qt::Key_Escape );
  connect( scClose, SIGNAL(activated()), SLOT( slot_SwitchBack() ));
#endif

  cmdKeep = new QPushButton(tr("Stop"), this);
  cmdKeep->setFont(bfont);
  buttonrow1->addWidget(cmdKeep);
  connect(cmdKeep, SIGNAL(clicked()), SLOT(slot_KeepOpen()));

  cmdUnselectWaypoint = new QPushButton(tr("Unselect"), this);
  cmdUnselectWaypoint->setFont(bfont);
  buttonrow1->addWidget(cmdUnselectWaypoint);
  connect(cmdUnselectWaypoint, SIGNAL(clicked()), SLOT(slot_unselectWaypoint()));

  cmdSelectWaypoint = new QPushButton(tr("Select"), this);
  cmdSelectWaypoint->setFont(bfont);
  buttonrow1->addWidget(cmdSelectWaypoint);
  connect(cmdSelectWaypoint, SIGNAL(clicked()), SLOT(slot_selectWaypoint()));

  m_timer = new QTimer(this);
  connect(m_timer, SIGNAL(timeout()), SLOT(slot_timeout()));
}
Beispiel #3
0
/* run the state driven loop until game is broken up or finished */
void client_game_run( void )
{
	int ms, frame_delay = config.fps?10:1;
	int button_clicked, key_pressed;
	SDL_Event event;
	int abort = 0, i, j, penalty;
	/* frame rate */
	int frames = 0;
	int frame_time = SDL_GetTicks();

	event_clear_sdl_queue();
	
	stk_display_fade( STK_FADE_IN, STK_FADE_DEFAULT_TIME );
	
	stats_received = 0;
	stk_timer_reset(); ms = 1;
	while ( !abort && !stk_quit_request ) {
		/* check wether an event occured */
		button_clicked = key_pressed = 0;
		if ( SDL_PollEvent( &event ) ) {
			if ( client_state == CS_PAUSE && game->game_type == GT_NETWORK )
				gui_dispatch_event( &event, ms );
			else
			if ( event.type == SDL_MOUSEBUTTONDOWN )
				button_clicked = event.button.button;
			else
			if ( event.type == SDL_KEYDOWN ) {
				key_pressed = event.key.keysym.sym;
				if ( handle_default_key( key_pressed, &abort ) )
					key_pressed = 0;
			}
			else
			if (event.type == SDL_ACTIVEEVENT)
		          {
			    if (event.active.state == SDL_APPINPUTFOCUS ||
				event.active.state == SDL_APPACTIVE )
                            if (event.active.gain == 0 )
			      client_set_pause(1);
			  }
		}
		else if ( client_state == CS_PAUSE && game->game_type == GT_NETWORK )
			gui_dispatch_event( 0, ms );

		/* check whether Shift is pressed to switch between own and highest score */
		if (game->game_type == GT_LOCAL)
		  handle_display_switch();

		/* let server know we're still alive except
		 * in CS_PLAY as we send paddle updates there */
		if ( game->game_type == GT_NETWORK )
			comm_send_heartbeat();

		/* handle client */
		switch ( client_state ) {

		case CS_FINAL_STATS:
			if ( key_pressed==SDLK_SPACE ) abort = 1;
			break;
			
		case CS_FATAL_ERROR:
			/* after game was violently broken up the server
			 * may still send the stats of the game so far */
			if ( button_clicked || key_pressed ) {
				SDL_Delay(250); /* give time to release button */
				set_state( CS_RECV_STATS );
				display_text( font, "Receiving final stats..." );
			}
			break;
			
		case CS_FINAL_TABLE:
			if ( button_clicked || key_pressed ) {
				check_highscores();
				select_chart( game_set->name, 0 );
                                /* remove saved game */
                                slot_delete( 0 );
                                slot_update_hint( 0, item_resume_0->hint );
				/* quit local game */
				abort = 1;
			}
			break;

		case CS_SCORE_TABLE:
			/* show who's next player and scores in local game */
			display_score_table( "Next Player: %s", cur_player->name );
			set_state( CS_GET_READY );
			break;
        
        case CS_BONUS_LEVEL_SCORE:
            /* display total score from this level for player */
            display_bonus_level_score();
			set_state( CS_GET_READY_FOR_NEXT_LEVEL );
            break;
			
		case CS_FINAL_PLAYER_INFO:
			if ( button_clicked || key_pressed ) {
				SDL_Delay(250); /* give time to release button */
				set_state( CS_NEXT_PLAYER );
			}
			break;

		case CS_RECV_LEVEL:
			comm_recv();
			if ( cur_player->next_level_received ) {
				cur_player->next_level_received = 0;
				cur_player->paddle_id = cur_player->next_paddle_id;
				init_next_round();
			}
			break;

		case CS_RECV_STATS:
			comm_recv();
			if ( stats_received ) {
				set_state( CS_FINAL_STATS );
				display_final_stats();
			}
			break;
			
		case CS_ROUND_RESULT:
			if ( button_clicked || key_pressed ) {
				SDL_Delay(250); /* give time to release button */
				if ( game_over ) {
					set_state( CS_RECV_STATS );
					display_text( font, "Receiving final stats..." );
				} else {
					set_state( CS_RECV_LEVEL );
					display_text( font, "Receiving level data..." );
 				}
			}
			break;
			
		case CS_GET_READY:
			if ( button_clicked || key_pressed ) {
				SDL_Delay(250); /* give time to release button */
				comm_send_short( MSG_READY );
				set_state( CS_PLAY );
			}
			break;

		case CS_GET_READY_FOR_NEXT_LEVEL:
			if ( button_clicked || key_pressed ) {
				SDL_Delay(250); /* give time to release button */
				set_state( CS_NEXT_LEVEL );
			}
			break;

		case CS_PAUSE:
			if ( game->game_type == GT_LOCAL ) break;

			/* check wether pause chatroom has been closed
			 * either by client or remote */
			comm_recv();
			break;
			
		case CS_PLAY:
			/* hide objects */
			begin_frame();
			
			/* apply events to local paddle */
			paddle_handle_events( l_paddle, ms );

			/* update local objects and communicate if
			 * comm_delay ms have passed */
			update_game( ms );
			
			/* show objects */
			end_frame();

			/* handle local level over */
			if ( game->level_over ) {
				if ( game->game_type == GT_LOCAL ) {
					if ( game_set == 0 ) {
						abort = 1; /* was a test level */
						grab_input(0);
						break;
					}
					if ( game->winner == PADDLE_BOTTOM )
                    {
                        if (local_game->isBonusLevel)
                            set_state( CS_BONUS_LEVEL_SCORE );
                        else
                            set_state( CS_NEXT_LEVEL );
                    }
					else
						set_state( CS_LOOSE_LIFE );
				} else {
					finalize_round();
				}
			}
			break;

		case CS_NEXT_LEVEL:
			/* apply paddle stats to player */
			game_set_current( local_game );
			game_update_stats( PADDLE_BOTTOM, &cur_player->stats );
			game_set_current( game );
			/* init next level for player in local game */
			cur_player->level_id++;
			if ( cur_player->level_id >= game_set->count ) {
				/* deactivate player */
				cur_player->lives = 0;
				display_text( font, 
					"You've cleared all levels...#Congratulations!!!" );
				set_state( CS_FINAL_PLAYER_INFO );
				break;
			}
			/* get snapshot for next init */
			cur_player->snapshot = *game_set->levels[cur_player->level_id];
			/* cycle players */
			set_state( CS_NEXT_PLAYER );
			break;

		case CS_RESTART_LEVEL:
			/* apply paddle stats to player */
			game_set_current( local_game );
			game_update_stats( PADDLE_BOTTOM, &cur_player->stats );
			game_set_current( game );
			/* reset level for next turn */
			cur_player->snapshot = *game_set->levels[cur_player->level_id];
			/* decrease lives (is checked that this wasn't the last one) */
			cur_player->lives--;
			/* cycle players */
			set_state( CS_NEXT_PLAYER );
			break;
			
		case CS_LOOSE_LIFE:
			/* apply paddle stats to player */
			game_set_current( local_game );
			game_update_stats( PADDLE_BOTTOM, &cur_player->stats );
			game_set_current( game );

			/* remember level for next turn */
			game_get_level_snapshot( &cur_player->snapshot );

			/* decrease lives */
			cur_player->lives--;
			if ( cur_player->lives == 0 ) {
				display_text( font, 
					"You've lost all lives...#Do you want to buy a continue#for 100%% of your score? y/n" );
                                set_state( CS_CONFIRM_CONTINUE );
				//set_state( CS_FINAL_PLAYER_INFO );
				break;
			}
			set_state( CS_NEXT_PLAYER );
			break;

		case CS_NEXT_PLAYER:
			/* game over? */
			if ( players_count() == 0 ) {
				display_score_table( "Game Over!" );
				set_state( CS_FINAL_TABLE );
				break;
			}
			/* speak and fade */
			play_speech();
			fade_anims();
			/* finalize current game context */
			finalize_level();
			/* set next player */
			cur_player = players_get_next();
			init_level( cur_player, PADDLE_BOTTOM );
			if ( player_count > 1 )
				set_state( CS_SCORE_TABLE );
			else {
				set_state( CS_PLAY ); /* one player starts immediately */
				stk_display_update( STK_UPDATE_ALL );
			}
			break;
		
                case CS_CONFIRM_CONTINUE:
		case CS_CONFIRM_QUIT:
		case CS_CONFIRM_WARP:
		case CS_CONFIRM_RESTART:
			if ( key_pressed == 0 ) break;
			if ( key_pressed==SDLK_n||key_pressed==SDLK_ESCAPE ) {
                            /* if denying continue... DIE!!! */
                            if ( client_state == CS_CONFIRM_CONTINUE )
                            {
				SDL_Delay(250); /* give time to release button */
				set_state( CS_NEXT_PLAYER );
                                //set_state( CS_FINAL_PLAYER_INFO );
                            }
                            else
				set_state( CS_PLAY );
			    break;
			}
			if ( key_pressed != SDLK_y && key_pressed != SDLK_z ) break;
			/* handle confirmed action */
			SDL_Delay(250); /* give time to release button */
			switch( client_state ) {
                                case CS_CONFIRM_CONTINUE:
                                    /* clear score and give full lives again */
                                    cur_player->lives = game->diff->lives;
                                    cur_player->stats.total_score = 0;
                                    set_state( CS_NEXT_PLAYER );
                                    break;
				case CS_CONFIRM_QUIT:
					comm_send_short( MSG_QUIT_GAME );
					if ( game->game_type == GT_LOCAL ) {
						/* apply paddle stats to player */
						game_set_current( local_game );
						game_update_stats( PADDLE_BOTTOM, &cur_player->stats );
						game_set_current( game );
                                                /* no higscore check anymore as game is supposed to
                                                 * be resumed until normal game over */
						/* testing levels don't got for
						 * high scores ***
						if ( game_set ) {
							check_highscores();
							select_chart( game_set->name, 0 );
						}*/
                                                /* save local game */
                                                if ( game_set != 0 /*not testing a level*/ )
                                                    save_local_game( 0 );
						
                                                abort = 1;
					}
					else {
						/* await game stats */
						set_state( CS_RECV_STATS );
						display_text( font, "Receiving final stats..." );
					}
					break;
				case CS_CONFIRM_WARP:
					game->winner = -1; /* no speech */
					local_game->winner = -1; /* not counted as win */
                                        /* substract doubled score of remaining bricks */
                                        penalty = 0;
                                        for ( i = 0; i < MAP_WIDTH; i++ )
                                            for ( j = 0; j < MAP_HEIGHT; j++ )
                                                if ( local_game->bricks[i][j].dur != -1 )
                                                    penalty += local_game->bricks[i][j].score;
                                        printf( "warp penalty: -%d\n", penalty );
                                        local_game->paddles[0]->score -= penalty;
					set_state( CS_NEXT_LEVEL );
					break;
				case CS_CONFIRM_RESTART:
					game->winner = -1; /* no speech */
					local_game->winner = -1; /* not counted as win */
					local_game->level_over = 1;
					set_state( CS_RESTART_LEVEL );
					break;
			}
			break;

		}

		/* update anything that was changed */
		stk_display_update( STK_UPDATE_RECTS );

		/* get time since last call and delay if below frame_delay */
		ms = stk_timer_get_time();
		if ( ms < frame_delay ) {
			SDL_Delay( frame_delay - ms );
			ms += stk_timer_get_time();
		}
		frames++;
	}
	finalize_level();
	client_state = CLIENT_NONE;

	stk_display_fade( STK_FADE_OUT, STK_FADE_DEFAULT_TIME );
	if ( stk_quit_request )
		comm_send_short( MSG_DISCONNECT );
	else
		comm_send_short( MSG_UNHIDE );

	/* frame rate */
	frame_time = SDL_GetTicks() - frame_time;
	printf( "Time: %.2f, Frames: %i -> FPS: %.2f\n", 
		(double)frame_time / 1000, frames, 1000.0*frames/frame_time );

	event_clear_sdl_queue();

	/* update the selected user and the user list in network as 
	 * we received ADD/REMOVE_USER messages */
	gui_list_update( list_users, client_users->count );
	/* re-select current entry */
	if ( client_user ) {
		i = list_check( client_users, client_user );
		if ( i != -1 )
			gui_list_select( list_users, 0, i, 1 );
	}
}
Beispiel #4
0
MF::MF(QSplashScreen *psplash, QWidget *parent) : QMainWindow(parent),settings("NNCSM","Journal")


{
//load settings


 setupUi(this);
 plf = new LF;
 pdst = new dSt(this);


    settings.beginGroup("/Settings");
         Path = settings.value("/Path","./").toString();
            splash =  settings.value("/Splash",true).toBool();
            font.fromString(settings.value("/Font",font.toString()).toString());
     settings.endGroup();
     main_tblv->setFont(font);
     change_tblv->setFont(font);
     pdst->set_Pash(&Path);
     pdst->set_splash(&splash);
if(splash) psplash->show();
ldb = QSqlDatabase::database();

ldb.setDatabaseName(Path + "/db.sqlite");
if(!ldb.open())
{
    this->close();
}
QTime time;
time.start();
for(int i = 0; i < 100;)
{
    if (time.elapsed() > 40)
    {
        time.start();
        ++i;
    }
    psplash->showMessage(tr("Loading modules:") + QString::number(i) + "%",
                               Qt::AlignCenter | Qt::AlignBottom  , Qt::white);
}
//Login

psplash->finish(plf);

plf->show();
//Login End


    this->move(QApplication::desktop()->availableGeometry().center() - this->rect().center());

    sqtmodel.setTable("main");
    sqtmodel.select();

    sqtmodel.setHeaderData(1,Qt::Horizontal,QObject::tr("id"));
    sqtmodel.setHeaderData(2,Qt::Horizontal,QObject::tr("Date"));
    sqtmodel.setHeaderData(3,Qt::Horizontal,QObject::tr("Reg_Num"));
    sqtmodel.setHeaderData(4,Qt::Horizontal,QObject::tr("Obozn_Tu"));
    sqtmodel.setHeaderData(5,Qt::Horizontal,QObject::tr("Naim_Tu"));
    sqtmodel.setHeaderData(6,Qt::Horizontal,QObject::tr("Razrab_Tu"));
    sqtmodel.setHeaderData(8,Qt::Horizontal,QObject::tr("Prim"));


    main_tblv->setModel(&sqtmodel); // model for main

    sqqmodel.setTable("change");
    sqqmodel.setHeaderData(1,Qt::Horizontal,QObject::tr("date"));
    sqqmodel.setHeaderData(2,Qt::Horizontal,QObject::tr("number"));


    change_tblv->setModel(&sqqmodel); // model for changes
//proxy model for search
     prxmod.setSourceModel(&sqtmodel); //model fo search
     prxmod.setFilterKeyColumn(-1); //search for all 0 for 1
//delete unuse row
    main_tblv->hideColumn(0);
    main_tblv->hideColumn(7);
    main_tblv->hideColumn(9);

    change_tblv->hideColumn(0);
    change_tblv->hideColumn(3);
    change_tblv->hideColumn(4);
    change_tblv->hideColumn(5);
//end.
     main_tblv->setModel(&prxmod); //install proxy model

     main_tblv->resizeRowsToContents();
     main_tblv->resizeColumnsToContents();

// form

padduser = new admf();
pmAdd = new mAdd();
pchf = new addChForm();

//conections
////////////////////////////////////adm form
QObject::connect(padduser,SIGNAL(signal_close()),this,SLOT(close())); // call destructor
//end adm form

//////////////////////////////////login form
QObject::connect(plf,SIGNAL(signal_admin()),padduser,SLOT(show())); // if admin login show user add form
QObject::connect(plf,SIGNAL(signal_user()),this,SLOT(show())); // if user login show main form
QObject::connect(plf,SIGNAL(signal_close()),this,SLOT(close())); //call destruktor
//end login form

////////////////////////////////add main form
QObject::connect(pmAdd,SIGNAL(signal_hidForm()),this,SLOT(slot_en_main())); // enable form refresh main_tblv
//end add main form


//////////////////////////////add ch form
QObject::connect(pchf,SIGNAL(signal_hidForm()),this,SLOT(slot_en_main())); // enable main form
//end add ch form

//////////////////////////////main form

QObject::connect(main_tblv,SIGNAL(clicked(const QModelIndex&)),this,SLOT(slot_change_case(const QModelIndex&))); // case change
//search
QObject::connect(bSearch,SIGNAL(clicked()),this,SLOT(slot_search())); // search
//add main
QObject::connect(b_add,SIGNAL(clicked()),this,SLOT(slot_add())); // Call slot that transmits a signal form to be added.
QObject::connect(this,SIGNAL(signal_clicked_add()),pmAdd,SLOT(slot_add())); //method call form to add
//edit main
QObject::connect(b_edit,SIGNAL(clicked()),this,SLOT(slot_edit_main()));  // edit button
QObject::connect(this,SIGNAL(signal_clicked_edit(const QModelIndex&)),pmAdd,SLOT(slot_changes(const QModelIndex&))); // method call from to change
// del main
QObject::connect(b_delete,SIGNAL(clicked()),this,SLOT(slot_delete())); //delete button call slot for emit signals
QObject::connect(this,SIGNAL(signal_clicked_delete(const QModelIndex&)),this,SLOT(slot_delete_main(const QModelIndex&))); // remove row from main_tblv
//add ch
QObject::connect(b_addChange,SIGNAL(clicked()),this,SLOT(slot_ch_add()));// generate signal for add ch
QObject::connect(this,SIGNAL(signal_clicked_ch_add(const QModelIndex&)),pchf,SLOT(slot_add(const QModelIndex&))); //add change
// edit ch
QObject::connect(b_editChanges,SIGNAL(clicked()),this,SLOT(slot_ch_changes())); //generate signal for ed ch
QObject::connect(this,SIGNAL(signal_clicked_ch_chenges(const QModelIndex&)),pchf,SLOT(slot_edit(const QModelIndex&))); // call edit changes
//del ch
QObject::connect(b_deleteChanges,SIGNAL(clicked()),this,SLOT(slot_ch_delete())); //generate signal for delete ch
QObject::connect(this,SIGNAL(signal_clicked_ch_delete(const QModelIndex&)),this,SLOT(slot_delete_change(const QModelIndex&))); //delete ch
//end main form

//connect menu
QObject::connect(actionQuit,SIGNAL(triggered()),this,SLOT(close())); // quit
QObject::connect(action_Font,SIGNAL(triggered()),this,SLOT(slot_set_font())); // Set Font
QObject::connect(action_Main_Settings,SIGNAL(triggered()),this,SLOT(slot_settings()));  //settings
QObject::connect(action_About_Developer,SIGNAL(triggered()),this,SLOT(slot_about())); //about
QObject::connect(action_About_QT,SIGNAL(triggered()),this,SLOT(slot_aboutQt())); //aboutQt
QObject::connect(action_Help,SIGNAL(triggered()),this,SLOT(slot_help())); // about programm
//end connect menu
/////////////////////////connection for save settings

}