AdminMainWidget::AdminMainWidget(LinQedInAdmin* ad,QWidget* parent):QFrame(parent),admin(ad){ setAttribute(Qt::WA_DeleteOnClose); setStyleSheet(GUIStyle::generalStyle()); mainVerticalLayout=new QVBoxLayout; logo=new QLabel; GUIStyle::initLogo(logo); mainVerticalLayout->addWidget(logo,0,Qt::AlignRight); loggedAsAdmin=new QLabel(tr("Modalità amministratore")); loggedAsAdmin->setStyleSheet(GUIStyle::headerStyle()); mainVerticalLayout->addWidget(loggedAsAdmin,0,Qt::AlignCenter); mainVerticalLayout->addSpacing(15); searchLayout=new QHBoxLayout; initUsernameSearch(); users=new QListWidget; users->setHidden(true); users->setEditTriggers(users->NoEditTriggers); users->setSelectionMode(QAbstractItemView::NoSelection); users->setMinimumWidth(450); users->setMinimumHeight(430); users->setStyleSheet("QListWidget{"+GUIStyle::borderStyle()+"padding:20px;padding-top:5px;}"); searchLayout->addWidget(users,5,Qt::AlignHCenter | Qt::AlignTop); initNameSurnameSearch(); mainVerticalLayout->addLayout(searchLayout); noUsers=new QLabel(tr("Nessun utente nel DB")); noUsers->setStyleSheet(GUIStyle::errorLabelStyle()); mainVerticalLayout->addWidget(noUsers,0,Qt::AlignCenter); buttonsLayout=new QHBoxLayout; save=new QPushButton(tr("Salva modifiche al DB")); save->setCursor(QCursor(Qt::PointingHandCursor)); save->setMaximumWidth(buttonsMaxWidth); connect(save,SIGNAL(clicked()),this,SLOT(saveDB())); buttonsLayout->addWidget(save,0,Qt::AlignCenter); add=new QPushButton(tr("Aggiungi un nuovo utente")); add->setCursor(QCursor(Qt::PointingHandCursor)); add->setMaximumWidth(buttonsMaxWidth); connect(add,SIGNAL(clicked()),this,SLOT(addUserRequest())); buttonsLayout->addWidget(add,0,Qt::AlignCenter); logout=new QPushButton(tr("Logout")); logout->setCursor(QCursor(Qt::PointingHandCursor)); connect(logout,SIGNAL(clicked()),this,SLOT(logoutRequest())); logout->setMaximumWidth(buttonsMaxWidth); buttonsLayout->addWidget(logout,0,Qt::AlignCenter); mainVerticalLayout->addLayout(buttonsLayout); populateList(admin->allUsers()); setLayout(mainVerticalLayout); QShortcut *save=new QShortcut(QKeySequence("Ctrl+S"),this); connect(save,SIGNAL(activated()),this,SLOT(saveDB())); }//AdminMainWidget
/******************************************************************* * * エレベーター制御文 * *******************************************************************/ void Elevator::CntorolStatement() { switch(m_ControlState) { case CONTROL::FREE://フリー状態 break; case CONTROL::MOVE://目的フロア移動する状態 //目的地でなければ if( !m_CDataSupport.isDestination() ){ //エレベーター稼働 Running(); } //目的地ならば else{ //エレベーター停止処理 StopProcess(); //全搭乗口の進路ガイドの方向を進路方向に変える setAllGuideVector(m_CDataSupport.m_CourseDirection); //制御を到着状態に m_ControlState = CONTROL::ARRIVE; } break; case CONTROL::ARRIVE://フロアに到着した状態 //ゲートを開く if( m_CGate[m_Gate_Ypos]!=NULL ){ //ゲートに開閉指示をだす m_CGate[m_Gate_Ypos]->StartOperation(); } //制御を待機状態に m_ControlState = CONTROL::WAIT; break; case CONTROL::WAIT://待機状態 //ゲートが完全に開いたら if( m_CGate[m_Gate_Ypos]->getDoorState() == ELEVATOR::OPEN ){ //降りたい利用者を降ろす UserTakeDown(); break; } //ゲートが半端なら else if( m_CGate[m_Gate_Ypos]->getDoorState() == ELEVATOR::HALF ){ break; } //ゲートが完全に閉まっていれば else if( m_CGate[m_Gate_Ypos]->getDoorState() == ELEVATOR::CLOSE ){ //待機時間をリセット m_CGate[m_Gate_Ypos]->OperationReset(); //乗客がいれば if(m_isUserRiding){ //同フロア対策 m_State = m_CDataSupport.m_CourseDirection; //利用者の要求を追加 addUserRequest(); //始動準備させる StartSetting(); break; } //要求が無ければ if( !m_CDataSupport.isCallRequest() ) { DirectionClear();//エレベーターの方向データを全て初期化 m_CGate[m_Gate_Ypos]->StateReset();//ゲートの状態を初期化 m_ControlState = CONTROL::FREE;//制御をフリー状態に初期化 } } break; } }