//-------------------------------------------------------------- /*protected */void ofxSimpleButton::touchDown(ofTouchEventArgs &touch) { if (touch.id == 0 && isInside(touch.x, touch.y)) { buttonAction(true); } }
void MythThemedMenu::customEvent(QEvent *event) { if (event->type() == DialogCompletionEvent::kEventType) { DialogCompletionEvent *dce = (DialogCompletionEvent*)(event); QString resultid = dce->GetId(); //int buttonnum = dce->GetResult(); QString halt_cmd = GetMythDB()->GetSetting("HaltCommand"); QString reboot_cmd = GetMythDB()->GetSetting("RebootCommand"); if (resultid == "popmenu") { QString action = dce->GetData().toString(); if (action == "shutdown") { if (!halt_cmd.isEmpty()) myth_system(halt_cmd); } else if (action == "reboot") { if (!reboot_cmd.isEmpty()) myth_system(reboot_cmd); } else if (action == "about") { aboutScreen(); } else if (action == "standby") { QString arg("standby_mode"); m_state->m_callback(m_state->m_callbackdata, arg); } } else if (resultid == "password") { QString text = dce->GetResultText(); MythUIButtonListItem *item = m_buttonList->GetItemCurrent(); ThemedButton button = item->GetData().value<ThemedButton>(); QString password = GetMythDB()->GetSetting(button.password); if (text == password) { QString timestamp_setting = QString("%1Time").arg(button.password); QDateTime curr_time = QDateTime::currentDateTime(); QString last_time_stamp = curr_time.toString(Qt::TextDate); GetMythDB()->SetSetting(timestamp_setting, last_time_stamp); GetMythDB()->SaveSetting(timestamp_setting, last_time_stamp); buttonAction(item, true); } } m_menuPopup = NULL; } }
void Frame::OnLButtonup(int x,int y) { for(int i=0; i<10; i++) { if(button[i]) { if(x > posButton[i].x && x < posButton[i].x+button[i]->clip_rect.w && y > posButton[i].y&& y < posButton[i].y+button[i]->clip_rect.h ) { switchButtonImg(i,false) ; buttonAction(i) ; printf( "ONLButton"); break; } } } }
bool Server::winEvent(MSG *m, long *result) { // HandleDevice *thread = new HandleDevice(m, result, this); // connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater())); // thread->start(); // return true; if(WM_INPUT == m->message){ HandleDevice *t = new HandleDevice(m, result, this); connect(t, SIGNAL(finished()), t, SLOT(deleteLater())); connect(t,SIGNAL(buttonAction(QString)), Mapper::instance(), SLOT(checkActions(QString))); t->start(); t->wait(); //return QWidget::winEvent(m, result); return true; } else{ return false; } }
void button_reaction_Method (ButtonValues sw_button) { static bool wait_unpressing = false; static uint16_t period = BUTTON_PERIOD_REACTION; if (wait_unpressing) { if (button_G == UNPRESSED) wait_unpressing=false; } else { if (button_G!=UNPRESSED) { wait_unpressing= buttonAction(button_G, &period); } else { period=longpress_check(sw_button); wait_unpressing=false; } } }
int spadAction (void) { int code, viewCommand; float f1, f2, f3; int i1, i2, i3; if (viewAloned==yes) { close(0); return(-1); } readViewman(&viewCommand, intSize); switch (viewCommand) { case rotate: readViewman(&f1, floatSize); readViewman(&f2, floatSize); viewport->theta = f1; viewport->phi = f2; while (viewport->theta >= two_pi) viewport->theta -= two_pi; while (viewport->theta < 0.0) viewport->theta += two_pi; while (viewport->phi > pi) viewport->phi -= two_pi; while (viewport->phi <= -pi) viewport->phi += two_pi; viewport->axestheta = viewport->theta; viewport->axesphi = viewport->phi; spadDraw=yes; rotated=yes; viewport->yzOn = viewport->xzOn = viewport->xyOn = no; break; case zoom: readViewman(&f1, floatSize); viewport->scale = f1; if (viewport->scale > maxScale) viewport->scale = maxScale; else if (viewport->scale < minScale) viewport->scale = minScale; spadDraw=yes; zoomed = yes; break; case zoomx: readViewman(&f1, floatSize); readViewman(&f2, floatSize); readViewman(&f3, floatSize); viewport->scaleX = f1; viewport->scaleY = f2; viewport->scaleZ = f3; if ((viewport->scaleX == 1.0) && (viewport->scaleY == 1.0) && (viewport->scaleZ == 1.0)) { viewport->zoomXOn = viewport->zoomYOn = viewport->zoomZOn = yes; } else { if (viewport->scaleX == 1.0) viewport->zoomXOn = no; else { if (viewport->scaleX > maxScale) viewport->scaleX = maxScale; else if (viewport->scaleX < minScale) viewport->scaleX = minScale; } if (viewport->scaleY == 1.0) viewport->zoomYOn = no; else { if (viewport->scaleY > maxScale) viewport->scaleY = maxScale; else if (viewport->scaleY < minScale) viewport->scaleY = minScale; } if (viewport->scaleZ == 1.0) viewport->zoomZOn = no; else { if (viewport->scaleZ > maxScale) viewport->scaleZ = maxScale; else if (viewport->scaleZ < minScale) viewport->scaleZ = minScale; } } spadDraw=yes; zoomed = yes; break; case translate: readViewman(&(viewport->deltaX),floatSize); readViewman(&(viewport->deltaY),floatSize); if (viewport->deltaX > maxDeltaX) viewport->deltaX = maxDeltaX; else if (viewport->deltaX < -maxDeltaX) viewport->deltaX = -maxDeltaX; if (viewport->deltaY > maxDeltaY) viewport->deltaY = maxDeltaY; else if (viewport->deltaY < -maxDeltaY) viewport->deltaY = -maxDeltaY; spadDraw=yes; translated = yes; break; case modifyPOINT: readViewman(&i1,intSize); i1--; readViewman(&(refPt3D(viewData,i1)->x),floatSize); readViewman(&(refPt3D(viewData,i1)->y),floatSize); readViewman(&(refPt3D(viewData,i1)->z),floatSize); readViewman(&(refPt3D(viewData,i1)->c),floatSize); scalePoint(refPt3D(viewData,i1)); spadDraw=yes; break; case hideControl: readViewman(&i1,intSize); if (i1) { /* show control panel */ if (viewport->haveControl) XUnmapWindow(dsply,control->controlWindow); putControlPanelSomewhere(someInt); } else { /* turn off control panel */ if (viewport->haveControl) { viewport->haveControl = no; XUnmapWindow(dsply,control->controlWindow); } } break; case axesOnOff: readViewman(&i1,intSize); viewport->axesOn = i1; spadDraw=yes; if (viewData.style == smooth) { if (multiColorFlag) redoDither = yes; else redoColor = yes; } if (viewport->haveControl) drawControlPanel(); break; /* Non-uniform scaling is not in AXIOM yet. */ /* Neither is object or origin rotation. */ case perspectiveOnOff: readViewman(&i1,intSize); viewData.perspective = i1; switchedPerspective = yes; spadDraw=yes; break; case region3D: readViewman(&i1,intSize); viewport->regionOn = i1; viewData.box = i1; spadDraw=yes; if (viewport->haveControl) drawControlPanel(); redoSmooth = yes; break; case clipRegionOnOff: readViewman(&i1,intSize); viewData.clipbox = i1; spadDraw=yes; break; case clipSurfaceOnOff: readViewman(&i1,intSize); viewData.clipStuff = i1; spadDraw=yes; break; case eyeDistanceData: readViewman(&f1,floatSize); viewData.eyeDistance = f1; if (viewData.eyeDistance > maxEyeDistance) viewData.eyeDistance = maxEyeDistance; else if (viewData.eyeDistance < minEyeDistance) viewData.eyeDistance = minEyeDistance; spadDraw=yes; changedEyeDistance = yes; break; case hitherPlaneData: readViewman(&f1,floatSize); viewData.clipPlane = f1; spadDraw=yes; changedEyeDistance = yes; break; case queryVIEWPOINT: f1 = viewport->deltaX; code = check(write(Socket, &f1, floatSize)); f1 = viewport->deltaY; code = check(write(Socket, &f1, floatSize)); f1 = viewport->scale; code = check(write(Socket, &f1, floatSize)); f1 = viewport->scaleX; code = check(write(Socket, &f1, floatSize)); f1 = viewport->scaleY; code = check(write(Socket, &f1, floatSize)); f1 = viewport->scaleZ; code = check(write(Socket, &f1, floatSize)); f1 = viewport->theta; code = check(write(Socket, &f1, floatSize)); f1 = viewport->phi; code = check(write(Socket, &f1, floatSize)); break; case changeVIEWPOINT: readViewman(&f1, floatSize); readViewman(&f2, floatSize); viewport->deltaX = f1; viewport->deltaY = f2; if (viewport->deltaX > maxDeltaX) viewport->deltaX = maxDeltaX; else if (viewport->deltaX < -maxDeltaX) viewport->deltaX = -maxDeltaX; if (viewport->deltaY > maxDeltaY) viewport->deltaY = maxDeltaY; else if (viewport->deltaY < -maxDeltaY) viewport->deltaY = -maxDeltaY; translated = yes; readViewman(&f1, floatSize); viewport->scale = f1; if (viewport->scale > maxScale) viewport->scale = maxScale; else if (viewport->scale < minScale) viewport->scale = minScale; zoomed = yes; readViewman(&f1, floatSize); readViewman(&f2, floatSize); readViewman(&f3, floatSize); viewport->scaleX = f1; viewport->scaleY = f2; viewport->scaleZ = f3; if ((viewport->scaleX == 1.0) && (viewport->scaleY == 1.0) && (viewport->scaleZ == 1.0)) { viewport->zoomXOn = viewport->zoomYOn = viewport->zoomZOn = yes; } else { if (viewport->scaleX == 1.0) viewport->zoomXOn = no; else { if (viewport->scaleX > maxScale) viewport->scaleX = maxScale; else if (viewport->scaleX < minScale) viewport->scaleX = minScale; } if (viewport->scaleY == 1.0) viewport->zoomYOn = no; else { if (viewport->scaleY > maxScale) viewport->scaleY = maxScale; else if (viewport->scaleY < minScale) viewport->scaleY = minScale; } if (viewport->scaleZ == 1.0) viewport->zoomZOn = no; else { if (viewport->scaleZ > maxScale) viewport->scaleZ = maxScale; else if (viewport->scaleZ < minScale) viewport->scaleZ = minScale; } } readViewman(&f1, floatSize); readViewman(&f2, floatSize); viewData.theta = f1; viewData.phi = f2; while (viewport->theta >= two_pi) viewport->theta -= two_pi; while (viewport->theta < 0.0) viewport->theta += two_pi; while (viewport->phi > pi) viewport->phi -= two_pi; while (viewport->phi <= -pi) viewport->phi += two_pi; viewport->axestheta = viewport->theta; viewport->axesphi = viewport->phi; spadDraw=yes; rotated=yes; break; case colorDef: readViewman(&(viewport->hueOffset),intSize); readViewman(&(viewport->numberOfHues),intSize); /* spadcolors is indexed by 0 */ viewport->hueOffset --; viewport->numberOfHues --; viewport->hueTop = viewport->numberOfHues; if (viewport->hueOffset < 0) viewport->hueOffset = 0; if (viewport->hueTop < 0) viewport->hueTop = 0; if (viewport->hueOffset >= totalHues) viewport->hueOffset = totalHues-1; if (viewport->hueTop >= totalHues) viewport->hueTop = totalHues-1; viewport->numberOfHues = viewport->hueTop - viewport->hueOffset; if ((viewport->hueTop == viewport->hueOffset) && (!viewport->monoOn)) redoColor = yes; else { redoColor = no; redoDither = yes; } if (viewport->haveControl) drawColorMap(); break; case closeAll: code = check(write(Socket,&ack,intSize)); goodbye(-1); case moveViewport: readViewman(&i1,intSize); readViewman(&i2,intSize); XMoveWindow(dsply,viewport->titleWindow,i1,i2); XSync(dsply,0); break; case resizeViewport: readViewman(&i1,intSize); readViewman(&i2,intSize); XResizeWindow(dsply,viewport->titleWindow,i1,i2+titleHeight); XResizeWindow(dsply,viewport->viewWindow,i1,i2); spadDraw=yes; redoSmooth =yes; break; case transparent: case opaqueMesh: case render: case smooth: viewData.style = viewCommand; spadDraw=yes; redoSmooth =yes; break; case lightDef: readViewman(&(viewport->lightVector[0]),floatSize); readViewman(&(viewport->lightVector[1]),floatSize); readViewman(&(viewport->lightVector[2]),floatSize); normalizeVector(viewport->lightVector); movingLight = yes; drawLightingAxes(); XSync(dsply,0); break; case translucenceDef: readViewman(&backLightIntensity,floatSize); tempLightIntensity = backLightIntensity; lightIntensity = tempLightIntensity; changedIntensity = yes; drawLightTransArrow(); XSync(dsply,0); break; case changeTitle: readViewman(&i1,intSize); readViewman(viewport->title,i1); viewport->title[i1] = '\0'; writeTitle(); switch (doingPanel) { case CONTROLpanel: case CONTOURpanel: writeControlTitle(control->controlWindow); break; case VOLUMEpanel: writeControlTitle(volumeWindow); break; case LIGHTpanel: writeControlTitle(lightingWindow); break; } /* switch */ XFlush(dsply); break; case writeView: readViewman(&i1,intSize); readViewman(filename,i1); filename[i1] = '\0'; sprintf(errorStr,"writing of viewport data"); i3 = 0; readViewman(&i2,intSize); while (i2) { i3 = i3 | (1<<i2); readViewman(&i2,intSize); } if (writeViewport(i3) < 0) fprintf(stderr," Nothing was written\n"); break; case diagOnOff: readViewman(&i1,intSize); if (viewData.outlineRenderOn) { viewport->diagonals = i1; spadDraw=yes; } else { strcpy(control->message," Use this option with Outline "); writeControlMessage(); } break; case outlineOnOff: readViewman(&i1,intSize); if (viewData.style == render) { viewData.outlineRenderOn = i1; spadDraw=yes; if (viewport->haveControl) drawControlPanel(); } else { strcpy(control->message," Use this option in Shaded mode "); writeControlMessage(); } break; case spadPressedAButton: readViewman(&i1,intSize); buttonAction(i1); break; default: return(-1); } /* switch */ ack++; code = check(write(Socket,&ack,intSize)); return(0); }
/** * @brief Processes serial input and button preses * @param None * @retval None */ void processInput(void) { static uint8_t buffer[BUFFER_SIZE]; static uint8_t bufferSize = 0; static uint32_t bufferTimeout = TIMEOUT_VALUE; if (bufferSize ==0) { bufferTimeout = TIMEOUT_VALUE; } if (__io_getcharNonBlocking(buffer+bufferSize)) { bufferSize+=1; } if (getButtonStatus(BUTTON_S1) == BUTTON_CLICKED) { buttonAction(BUTTON_ACTION_1); } #ifdef USE_MB950 else if (getButtonStatus(BUTTON_S2) == BUTTON_CLICKED) { buttonAction(BUTTON_ACTION_2); } else if (getButtonStatus(BUTTON_S3) == BUTTON_CLICKED) { buttonAction(BUTTON_ACTION_3); } else if (getButtonStatus(BUTTON_S4) == BUTTON_CLICKED) { buttonAction(BUTTON_ACTION_4); } else if (getButtonStatus(BUTTON_S5) == BUTTON_CLICKED) { buttonAction(BUTTON_ACTION_5); } #endif /* USE_MB950 */ else { bufferTimeout--; if ((bufferTimeout == 0) || (bufferSize == BUFFER_SIZE)) { if (bufferSize > 0) { sendData(bufferSize, buffer, TYPE_SERIAL); /*if (0==mz_t_) { mz_t_=1; printf("MZ Start\n"); //ST_RadioStartTransmitTone(); ST_RadioStartTransmitStream(); } else { mz_t_=0; printf("MZ Stop\n"); //ST_RadioStopTransmitTone(); ST_RadioStopTransmitStream(); }*/ bufferSize = 0; } } } }
void HandleDevice::handleIt(RAWINPUT *raw) { // Find Vid and Pid UINT size = 256; TCHAR tBuffer[256] = {0}; // Error in reading device name if(GetRawInputDeviceInfo(raw->header.hDevice, RIDI_DEVICENAME, tBuffer, &size) < 0) return; int VendorID; int ProductID; QString myString = QString::fromWCharArray(tBuffer); if(myString.contains("HID")) { int index = myString.toLower().indexOf("vid"); QString VID = "0000"; VID[0] = '0'; VID[1] = 'x'; VID[2] = myString[index+4]; VID[3] = myString[index+5]; VID[4] = myString[index+6]; VID[5] = myString[index+7]; VID.toLower(); VendorID = 0; if(VID.startsWith("0x")) VendorID = VID.mid(2).toInt(0,16); else VendorID = VID.toInt(); index = myString.toLower().indexOf("pid"); QString PID = "0000"; PID[0] = '0'; PID[1] = 'x'; PID[2] = myString[index+4]; PID[3] = myString[index+5]; PID[4] = myString[index+6]; PID[5] = myString[index+7]; PID.toLower(); ProductID = 0; if(PID.startsWith("0x")) ProductID = PID.mid(2).toInt(0,16); else ProductID = PID.toInt(); } unsigned long long keyValue; unsigned long long value; unsigned long long mask3; unsigned long long value3; switch (raw->header.dwType) { case RIM_TYPEHID: keyValue = *reinterpret_cast<unsigned long long *>(&raw->data.hid.bRawData); break; case RIM_TYPEKEYBOARD: keyValue = raw->data.keyboard.VKey; break; case RIM_TYPEMOUSE: default: break; } QString message; int i = 0; while(i < UsableControllers::getList().size()) { if(UsableControllers::getList()[i].getVendorID() == VendorID && UsableControllers::getList()[i].getProductID() == ProductID) { QString nrContr; nrContr = nrContr.setNum(i); message += nrContr; int k = 0; while(k<UsableControllers::getList()[i].getSensorXYList().size()) { QString nr; nr = nr.setNum(k); bool pressed = true; switch (raw->header.dwType) { case RIM_TYPEHID: // value after using bitmask value = keyValue; //UsableControllers::getList()[i].getSensorXYList()[k].getGeneralXYMask() & break; case RIM_TYPEKEYBOARD: value = raw->data.keyboard.VKey; // Check if press or release if(raw->data.keyboard.Flags == 3 || raw->data.keyboard.Flags == 1){ pressed = false; } break; case RIM_TYPEMOUSE: default: break; } //qDebug() << "Keyboard" << value; if(!pressed) return; //test if we have axis or buttons if(UsableControllers::getList()[i].getSensorXYList()[k].getFixed()) { //fixed buttons //qDebug() << "fixed"; unsigned int up = UsableControllers::getList()[i].getSensorXYList()[k].getUp(); unsigned int down = UsableControllers::getList()[i].getSensorXYList()[k].getDown(); unsigned int left = UsableControllers::getList()[i].getSensorXYList()[k].getLeft(); unsigned int right = UsableControllers::getList()[i].getSensorXYList()[k].getRight(); unsigned int upLeft; unsigned int upRight; unsigned int downLeft; unsigned int downRight; mask3 = UsableControllers::getList()[i].getSensorXYList()[k].getGeneralXYMask(); //qDebug() << mask3; value3 = value & mask3; //qDebug() << up << value << value3; //qDebug() << down; //qDebug() << left; //qDebug() << right; if(UsableControllers::getList()[i].getSensorXYList()[k].getNumberOfButtons() == 4 && raw->header.dwType == RIM_TYPEHID) { upLeft = up|left; upRight = up|right; downLeft = down|left; downRight = down|right; } else if(UsableControllers::getList()[i].getSensorXYList()[k].getNumberOfButtons() == 8) { upLeft = UsableControllers::getList()[i].getSensorXYList()[k].getUpLeft(); upRight = UsableControllers::getList()[i].getSensorXYList()[k].getUpRight(); downLeft = UsableControllers::getList()[i].getSensorXYList()[k].getDownLeft(); downRight = UsableControllers::getList()[i].getSensorXYList()[k].getDownRight(); } //qDebug() << up << value << value3; //qDebug() << down; //qDebug() << left; //qDebug() << right; if(up == value3){message += " Up" + nr;} if(down == value3){message += " Down" + nr;} if(left == value3){message += " Left" + nr;} if(right == value3){message += " Right" + nr;} if(upLeft == value3){message += " Up" + nr + " Left" + nr;} if(upRight == value3){message += " Up" + nr + " Right" + nr;} if(downLeft == value3){message += " Down" + nr + " Left" + nr;} if(downRight == value3){message += " Down" + nr + " Right" + nr;} } else { //XY-axis, because XY was not fixed //X-axis signed long long valueX = UsableControllers::getList()[i].getSensorXYList()[k].getXAxis().getMask() & value; qDebug("%x %x %x \n", valueX , value , UsableControllers::getList()[i].getSensorXYList()[k].getXAxis().getMask()); valueX /= (UsableControllers::getList()[i].getSensorXYList()[k].getXAxis().getMask()/0xff); //qDebug() << valueX; if(valueX > UsableControllers::getList()[i].getSensorXYList()[k].getXAxis().getRangeStop()){ valueX -= (UsableControllers::getList()[i].getSensorXYList()[k].getXAxis().getRangeStop()-UsableControllers::getList()[i].getSensorXYList()[k].getXAxis().getRangeStart() + 1); } QString valX; valX = valX.setNum(valueX); message += " PX" + nr + "_" + valX; //Y-axis long long valueY = UsableControllers::getList()[i].getSensorXYList()[k].getYAxis().getMask() & value; valueY /= (UsableControllers::getList()[i].getSensorXYList()[k].getYAxis().getMask()/0xff); if(valueY > UsableControllers::getList()[i].getSensorXYList()[k].getYAxis().getRangeStop() && UsableControllers::getList()[i].getSensorXYList()[k].getYAxis().getFormat().toLower() == "signed"){ valueY -= (UsableControllers::getList()[i].getSensorXYList()[k].getYAxis().getRangeStop()-UsableControllers::getList()[i].getSensorXYList()[k].getYAxis().getRangeStart() + 1); } QString valY; valY = valY.setNum(valueY); message += " PY" + nr + "_" + valY; } k++; } // Check buttons if(raw->header.dwType == RIM_TYPEHID) { int j = 0; int value2 = UsableControllers::getList()[i].getGeneralButtonMask() & keyValue; while(j < UsableControllers::getList()[i].getButtonList().size()) { if(UsableControllers::getList()[i].getButtonList()[j].getBitMaskPressed() & value2 ) { message += " " + UsableControllers::getList()[i].getButtonList()[j].getName(); } j++; } } else if(raw->header.dwType == RIM_TYPEKEYBOARD) { int j = 0; int value2 = raw->data.keyboard.VKey; while(j<UsableControllers::getList()[i].getButtonList().size()) { if(UsableControllers::getList()[i].getButtonList()[j].getBitMaskPressed() == value2 ) { message += " " + UsableControllers::getList()[i].getButtonList()[j].getName(); } j++; } } } i++; } if(message != "") { qDebug() << message; emit buttonAction(message); } }
//-------------------------------------------------------------- /*public */void ofxSimpleButton::mousePressed(float x, float y) { if (isInside(x, y)) { buttonAction(true); } }
//-------------------------------------------------------------- /*public */void ofxSimpleButton::touchDown(float x, float y) { if (isInside(x, y)) { buttonAction(true); } }
void MythThemedMenu::customEvent(QEvent *event) { if (event->type() == DialogCompletionEvent::kEventType) { DialogCompletionEvent *dce = (DialogCompletionEvent*)(event); QString resultid = dce->GetId(); int buttonnum = dce->GetResult(); QString halt_cmd = GetMythDB()->GetSetting("HaltCommand"); QString reboot_cmd = GetMythDB()->GetSetting("RebootCommand"); if (resultid == "popmenu_exit") { switch (buttonnum) { case 0: if (!halt_cmd.isEmpty()) myth_system(halt_cmd); break; case 1: if (!reboot_cmd.isEmpty()) myth_system(reboot_cmd); break; case 2: aboutScreen(); break; } } else if (resultid == "popmenu_noexit") { if (buttonnum == 0) aboutScreen(); } else if (resultid == "popmenu_reboot") { switch (buttonnum) { case 0: if (!reboot_cmd.isEmpty()) myth_system(reboot_cmd); break; case 1: aboutScreen(); break; } } else if (resultid == "popmenu_shutdown") { switch (buttonnum) { case 0: if (!halt_cmd.isEmpty()) myth_system(halt_cmd); break; case 1: aboutScreen(); break; } } else if (resultid == "password") { QString text = dce->GetResultText(); MythUIButtonListItem *item = m_buttonList->GetItemCurrent(); ThemedButton button = item->GetData().value<ThemedButton>(); QString password = GetMythDB()->GetSetting(button.password); if (text == password) { QString timestamp_setting = QString("%1Time").arg(button.password); QDateTime curr_time = QDateTime::currentDateTime(); QString last_time_stamp = curr_time.toString(Qt::TextDate); GetMythDB()->SetSetting(timestamp_setting, last_time_stamp); GetMythDB()->SaveSetting(timestamp_setting, last_time_stamp); buttonAction(item, true); } } m_menuPopup = NULL; } }
/** \brief keyboard/LIRC event handler. * * This translates key presses through the "Main Menu" context into MythTV * actions and then handles them as appropriate. */ bool MythThemedMenu::keyPressEvent(QKeyEvent *event) { if (m_ignorekeys) return false; m_ignorekeys = true; MythUIType *type = GetFocusWidget(); if (type && type->keyPressEvent(event)) { m_ignorekeys = false; return true; } QStringList actions; bool handled = false; handled = GetMythMainWindow()->TranslateKeyPress("Main Menu", event, actions); for (int i = 0; i < actions.size() && !handled; i++) { QString action = actions[i]; handled = true; if (action == "RIGHT") { MythUIButtonListItem *item = m_buttonList->GetItemCurrent(); buttonAction(item); } else if (action == "LEFT" || action == "ESCAPE" || action == "EXIT" ) { bool callbacks = m_state->m_callback; bool lastScreen = (GetMythMainWindow()->GetMainStack() ->TotalScreens() == 1); QString menuaction = "UPMENU"; QString selExit = "EXITING_APP"; if (!m_allocedstate) handleAction(menuaction); else if (m_state->m_killable) { m_wantpop = true; if (callbacks) { QString sel = "EXITING_MENU"; m_state->m_callback(m_state->m_callbackdata, sel); } if (lastScreen) { if (callbacks) m_state->m_callback(m_state->m_callbackdata, selExit); QCoreApplication::exit(); } } else if ((action == "EXIT" || (action == "ESCAPE" && (QCoreApplication::applicationName() == MYTH_APPNAME_MYTHTV_SETUP))) && lastScreen) { if (callbacks) m_state->m_callback(m_state->m_callbackdata, selExit); else { QCoreApplication::exit(); m_wantpop = true; } } } else if (action == "HELP") { aboutScreen(); } else if (action == "EJECT") { handleAction(action); } else handled = false; } if (!handled && MythScreenType::keyPressEvent(event)) handled = true; m_ignorekeys = false; if (m_wantpop) m_ScreenStack->PopScreen(); return handled; }
//-------------------------------------------------------------- void testApp::mousePressed(int x, int y, int button){ //if we pressed a button, and we were in a dropdown menu if(d->active && x > d->x && x < d->x + d->cw - d->sliderWidth && y > d->y && y < d->y + d->th) { //read back the chosen property depending on which menu we were in switch(d->mode) { case 0: case 1: case 2: case 3: for (int i = 0; i < d->functionList.size(); i++) { if(d->activeList[d->activeOption] == d->functionList[i]) { ib->masterFunction = i; } //else //we're f****d and crashing } ib->smasterFunction=d->functionList[ib->masterFunction]; break; case 4: ib->toggle=d->activeOption; ib->stoggle=d->toggleList[ib->toggle]; break; case 5: ib->toggleOSC=d->activeOption; if(ib->toggleOSC) { if(ib->oldOscAddress=="") { ib->enterOscAddress(); ib->oldOscAddress=ib->oscAddress; } else ib->oscAddress=ib->oldOscAddress; } else ib->oscAddress=""; ib->stoggleOSC = d->onOffList[ib->toggleOSC]; break; case 9: ib->active = true; for(int i = 0; i < numberOfElements; i++) { if(i == d->activeOption) e[i]->selected = true; else e[i]->selected = false; copyElementDataToInterface(); } if(d->activeOption==22) { ib->reset(); ib->mode=3; } break; case 10: ib->resolution = d->activeOption; ib->sresolution = d->resList[d->activeOption]; break; case 11: ib->emulatorOne = d->activeOption; ib->semulatorOne = d->emuList[d->activeOption]; break; case 12: ib->emulatorTwo = d->activeOption; ib->semulatorTwo = d->emuList[d->activeOption]; break; case 6: ib->hdcpOutput = d->activeOption; ib->shdcpOutput = d->onOffList[d->activeOption]; break; case 7: ib->hdcpInputOne = d->activeOption; ib->shdcpInputOne = d->onOffList[d->activeOption]; break; case 8: ib->hdcpInputTwo = d->activeOption; ib->shdcpInputTwo = d->onOffList[d->activeOption]; break; case 13: ib->sourceLoss = d->activeOption; ib->ssourceLoss = d->sourceList[d->activeOption]; break; } //copy it back to the element copyInterfaceDateToElement(); d->active = false; return; //so we don't press another button underneath } //if we were in a dropdown but on a slider if(d->active && x > d->x + d->cw - d->sliderWidth && x < d->x + d->cw && y > d->y && y < d->y + d->th) { mousePos.set(x,y); d->slidering = true; return; } //if we were in a dropdown but not over it, just close it d->active = false; //then check if we were over an element for(int i = 0; i < numberOfElements; i++) { if (e[i]->mouseOver(x,y)) //check if we've clicked a controller { ib->mode = 0; ib->active = true; e[i]->selected = true; //set the controller to selected for(int j = 0; j < numberOfElements; j++) //deselect all the other controllers { if(i!=j) { e[j]->selected = false; } } //copy the relevant info into the inputBox copyElementDataToInterface(); return; } } //then check if we clicked a button for(int i = 0; i < numberOfButtons; i++) { if(b[i]->mouseOver(x,y)) //check if we've clicked a button { buttonAction(i); //do the action associated with that button //copy back all the info to the currently selected element //todo? maybe I should build in a 'has changed' check, but it's not really necessarry copyInterfaceDateToElement(); } } //if we haven't pressed anything, deselect and reset the ib, this should only happen on the left side of the interface, otherwise it's a missclick if(x < 578) { ib->reset(); for(int j = 0; j < numberOfElements; j++) { e[j]->selected = false; } } }
int spadAction(void) { int code,viewCommand; float f1,f2; int i1,i2,i3,viewGoAhead; static int ack = 1; if (viewAloned==yes) { close(0); return(-1); } readViewman(&viewCommand,intSize); switch (viewCommand) { case hideControl2D: readViewman(&i1,intSize); if (i1) { /* show control panel */ if (viewport->haveControl) XUnmapWindow(dsply,control->controlWindow); putControlPanelSomewhere(someInt); } else { /* turn off control panel */ if (viewport->haveControl) { viewport->haveControl = no; XUnmapWindow(dsply,control->controlWindow); } } break; case changeTitle: readViewman(&i1,intSize); readViewman(viewport->title,i1); viewport->title[i1] = '\0'; writeTitle(); writeControlTitle(); XFlush(dsply); spadDraw=no; break; case writeView: readViewman(&i1,intSize); readViewman(filename,i1); filename[i1] = '\0'; sprintf(errorStr,"writing of viewport data"); i3 = 0; readViewman(&i2,intSize); while (i2) { i3 = i3 | (1<<i2); readViewman(&i2,intSize); } if (writeViewport(i3) < 0) fprintf(stderr," Nothing was written\n"); break; case closeAll2D: code = check(write(Socket,&ack,intSize)); goodbye(-1); case ps2D: readViewman(&i1,intSize); buttonAction(viewCommand); break; case axesOnOff2D: readViewman(&i1,intSize); i1--; readViewman(&i2,intSize); graphStateArray[i1].axesOn = i2; if (graphStateArray[i1].showing) spadDraw=yes; break; case axesColor2D: readViewman(&i1,intSize); i1--; readViewman(&i2,intSize); graphStateArray[i1].axesColor = i2; if (graphStateArray[i1].showing) spadDraw=yes; break; case unitsOnOff2D: readViewman(&i1,intSize); i1--; readViewman(&i2,intSize); graphStateArray[i1].unitsOn = i2; if (graphStateArray[i1].showing) spadDraw=yes; break; case unitsColor2D: readViewman(&i1,intSize); i1--; readViewman(&i2,intSize); graphStateArray[i1].unitsColor = i2; if (graphStateArray[i1].showing) spadDraw=yes; break; case connectOnOff: readViewman(&i1,intSize); i1--; readViewman(&i2,intSize); graphStateArray[i1].connectOn = i2; if (graphStateArray[i1].showing) spadDraw=yes; break; case pointsOnOff: readViewman(&i1,intSize); i1--; readViewman(&i2,intSize); graphStateArray[i1].pointsOn = i2; if (graphStateArray[i1].showing) spadDraw=yes; break; case spline2D: readViewman(&i1,intSize); i1--; readViewman(&i2,intSize); graphStateArray[i1].splineOn = i2; if (graphStateArray[i1].showing) spadDraw=yes; break; case showing2D: readViewman(&i1,intSize); i1--; readViewman(&i2,intSize); /* simulate a button press to turn display number on/off */ graphStateArray[i1].showing = !i2; clickedOnGraph(i1,i1+graphStart); break; case scale2D: readViewman(&i1,intSize); i1--; /* passed index is [1..9] but internal representation is [0..8] */ readViewman(&f1,floatSize); readViewman(&f2,floatSize); graphStateArray[i1].scaleX = f1; graphStateArray[i1].scaleY = f2; if (graphStateArray[i1].scaleX > maxScale) graphStateArray[i1].scaleX = maxScale; else if (graphStateArray[i1].scaleX < minScale) graphStateArray[i1].scaleX = minScale; if (graphStateArray[i1].scaleY > maxScale) graphStateArray[i1].scaleY = maxScale; else if (graphStateArray[i1].scaleY < minScale) graphStateArray[i1].scaleY = minScale; if (graphStateArray[i1].showing) spadDraw=yes; break; /* scale2D */ case translate2D: readViewman(&i1,intSize); i1--; /* passed index is [1..9] but internal representation is [0..8] */ readViewman(&f1,floatSize); readViewman(&f2,floatSize); graphStateArray[i1].centerX = f1; graphStateArray[i1].centerY = f2; if (graphStateArray[i1].centerX > maxDelta) graphStateArray[i1].centerX = maxDelta; else if (graphStateArray[i1].centerX < -maxDelta) graphStateArray[i1].centerX = maxDelta; if (graphStateArray[i1].centerY > maxDelta) graphStateArray[i1].centerY = maxDelta; else if (graphStateArray[i1].centerY < -maxDelta) graphStateArray[i1].centerY = maxDelta; if (graphStateArray[i1].showing) spadDraw=yes; break; /* translate2D */ case moveViewport: readViewman(&i1,intSize); readViewman(&i2,intSize); XMoveWindow(dsply,viewport->titleWindow,i1,i2); XSync(dsply,False); break; case resizeViewport: readViewman(&i1,intSize); readViewman(&i2,intSize); XResizeWindow(dsply,viewport->titleWindow,i1,i2+titleHeight); XResizeWindow(dsply,viewport->viewWindow,i1,i2); spadDraw=yes; break; case putGraph: readViewman(&i1,intSize); /* key of graph to get */ readViewman(&i2,intSize); /* slot to drop graph onto 0..8*/ readViewman(&viewGoAhead,intSize); if (viewGoAhead < 0) { sprintf(control->message,"%s%d","Couldn't put into graph ",i2+1); writeControlMessage(); } else { sprintf(control->message,"%s%d","Dropped onto graph ",i2+1); writeControlMessage(); freeGraph(i2); graphArray[i2].key = i1; getGraphFromViewman(i2); /* simulate a button press to turn display number on and select on */ /* need !yes since it will be inverted */ graphStateArray[i2].selected = no; graphStateArray[i2].connectOn = yes; graphStateArray[i2].showing = !(graphStateArray[i2].showing); clickedOnGraph(i2,i2+graphStart); clickedOnGraphSelect(i2,i2+graphSelectStart); } break; case spadPressedAButton: readViewman(&i1,intSize); buttonAction(i1); break; default: return(-1); } /* switch */ ack++; code = check(write(Socket,&ack,intSize)); return(0); }