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; }
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())); }
/* 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 ); } }
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 }