static void Process_TP_Down(unsigned int X, unsigned int Y) { object_pressed = 0; exec_button = 0; exec_image = 0; exec_radio_button = 0; Get_Object(X, Y); if (_object_count != -1) { if (_object_count == button_order) { if (exec_button->Active == 1) { if (exec_button->PressColEnabled == 1) { object_pressed = 1; DrawButton(exec_button); } PressedObject = (void *)exec_button; PressedObjectType = 0; if (exec_button->OnDownPtr != 0) { exec_button->OnDownPtr(); return; } } } if (_object_count == image_order) { if (exec_image->Active == 1) { PressedObject = (void *)exec_image; PressedObjectType = 3; if (exec_image->OnDownPtr != 0) { exec_image->OnDownPtr(); return; } } } if (_object_count == radio_button_order) { if (exec_radio_button->Active == 1) { if (exec_radio_button->PressColEnabled == 1) { object_pressed = 1; DrawRadioButton(exec_radio_button); } PressedObject = (void *)exec_radio_button; PressedObjectType = 17; if (exec_radio_button->OnDownPtr != 0) { exec_radio_button->OnDownPtr(); return; } } } } }
static void Process_TP_Up(unsigned int X, unsigned int Y) { switch (PressedObjectType) { // Button case 0: { if (PressedObject != 0) { exec_button = (TButton*)PressedObject; if ((exec_button->PressColEnabled == 1) && (exec_button->OwnerScreen == CurrentScreen)) { DrawButton(exec_button); } break; } break; } // RadioButton case 17: { if (PressedObject != 0) { exec_radio_button = (TRadioButton*)PressedObject; if ((exec_radio_button->PressColEnabled == 1) && (exec_radio_button->OwnerScreen == CurrentScreen)) { DrawRadioButton(exec_radio_button); } break; } break; } } exec_image = 0; Get_Object(X, Y); if (_object_count != -1) { // Buttons if (_object_count == button_order) { if (exec_button->Active == 1) { if (exec_button->OnUpPtr != 0) exec_button->OnUpPtr(); if (PressedObject == (void *)exec_button) if (exec_button->OnClickPtr != 0) exec_button->OnClickPtr(); PressedObject = 0; PressedObjectType = -1; return; } } // Images if (_object_count == image_order) { if (exec_image->Active == 1) { if (exec_image->OnUpPtr != 0) exec_image->OnUpPtr(); if (PressedObject == (void *)exec_image) if (exec_image->OnClickPtr != 0) exec_image->OnClickPtr(); PressedObject = 0; PressedObjectType = -1; return; } } // RadioButtons if (_object_count == radio_button_order) { if (exec_radio_button->Active == 1) { if (exec_radio_button->OnUpPtr != 0) exec_radio_button->OnUpPtr(); if (PressedObject == (void *)exec_radio_button) if (exec_radio_button->OnClickPtr != 0) exec_radio_button->OnClickPtr(); PressedObject = 0; PressedObjectType = -1; return; } } } PressedObject = 0; PressedObjectType = -1; }
void DrawScreen(TScreen *aScreen) { int order; unsigned short button_idx; TButton *local_button; unsigned short image_idx; TImage *local_image; unsigned short radio_button_idx; TRadioButton *local_radio_button; char save_bled, save_bled_direction; object_pressed = 0; order = 0; button_idx = 0; image_idx = 0; radio_button_idx = 0; CurrentScreen = aScreen; if ((display_width != CurrentScreen->Width) || (display_height != CurrentScreen->Height)) { save_bled = TFT_BLED; save_bled_direction = TFT_BLED_Direction; TFT_BLED_Direction = 0; TFT_BLED = 0; TFT_Set_Active(Set_Index, Write_Command, Write_Data); TFT_Init(CurrentScreen->Width, CurrentScreen->Height); TFT_Set_Ext_Buffer(TFT_Get_Data); TP_TFT_Init(CurrentScreen->Width, CurrentScreen->Height, 13, 12); // Initialize touch panel TP_TFT_Set_ADC_Threshold(ADC_THRESHOLD); // Set touch panel ADC threshold TFT_Fill_Screen(CurrentScreen->Color); display_width = CurrentScreen->Width; display_height = CurrentScreen->Height; TFT_BLED = save_bled; TFT_BLED_Direction = save_bled_direction; } else TFT_Fill_Screen(CurrentScreen->Color); while (order < CurrentScreen->ObjectsCount) { if (button_idx < CurrentScreen->ButtonsCount) { local_button = GetButton(button_idx); if (order == local_button->Order) { button_idx++; order++; DrawButton(local_button); } } if (image_idx < CurrentScreen->ImagesCount) { local_image = GetImage(image_idx); if (order == local_image->Order) { image_idx++; order++; DrawImage(local_image); } } if (radio_button_idx < CurrentScreen->RadioButtonsCount) { local_radio_button = GetRadioButton(radio_button_idx); if (order == local_radio_button->Order) { radio_button_idx++; order++; DrawRadioButton(local_radio_button); } } } }
long XSetupSetup( ScreenParams *params ) { XSetupGlobals *setup; Point *xPosition; segaCharRect jizzleRect; char *phoneString; phoneNumber *local1, *local2; setup = (XSetupGlobals *)NewMemory( kTemp, sizeof(XSetupGlobals) ); EraseGDevice ( kScrollA ); SetBackdropID ( kBlackBackground, true, 0 ); SetCurrentDevice( kScrollA ); SetCurFont( kXBandHeavy ); SetFontColors( 0, kDarkYellowColor, kYellowColor, 0 ); setup->titlePatterns = DrawScreenLayoutString( kXBandSetupScreen, kSetupTitleString ); setup->bgGraphic = DrawDBGraphicAt( 0, kSettingsIcon, 29, 2, kScrollA ); setup->lineGraphic = DrawDBGraphicAt( 0, kGrayHorizontalLine, 5, 18, kScrollA ); GetScreenLayoutCharRect( kXBandSetupScreen, 0, &jizzleRect ); setup->jizzle = DrawTextBox( &jizzleRect, 8, kScrollA ); StartTextBoxAnimation( setup->jizzle, 10 ); GetScreenLayoutCharRect( kXBandSetupScreen, kSetupDescriptionRect, &setup->descriptionRect ); setup->descriptionPatterns = LinearizeScreenArea( &setup->descriptionRect, 0 ); // Accept Challenges: setup->radioRefs[kAcceptChallengesButton] = SetupRadioButton( kAcceptChallengesButton+1, phoneString ); RadioButtonSetSelection(setup->radioRefs[kAcceptChallengesButton], GetAcceptChallengesOption( GetCurUserID() ) ); DrawRadioButton( setup->radioRefs[kAcceptChallengesButton] ); // Call Waiting: setup->radioRefs[kCallWaitingButton] = SetupRadioButton( kCallWaitingButton+1, nil ); RadioButtonSetSelection(setup->radioRefs[kCallWaitingButton], GetCallWaitingOption( GetCurUserID() ) ); DrawRadioButton(setup->radioRefs[kCallWaitingButton]); // Calling From: phoneString = (char *) GetBoxPhoneNumber()->phoneNumber; GetLocalAccessPhoneNumber(&local1, &local2); if ( local1->phoneNumber[0] == 0 ) { phoneString = GetSegaString(kBoxPhoneNumber); setup->newPhoneNumber = true; } else setup->newPhoneNumber = false; setup->radioRefs[kIMovedButton] = SetupRadioButton( kIMovedButton+1, phoneString ); RadioButtonSetSelection(setup->radioRefs[kIMovedButton], setup->newPhoneNumber || GetIMovedOption() ); DrawRadioButton( setup->radioRefs[kIMovedButton] ); // Keyboard Type: setup->radioRefs[kKeyboardButton] = SetupRadioButton( kKeyboardButton+1, nil ); RadioButtonSetSelection(setup->radioRefs[kKeyboardButton], GetQwertyKeyboardOption( GetCurUserID() ) ); DrawRadioButton( setup->radioRefs[kKeyboardButton] ); // Set active button setup->activeButton = kAcceptChallengesButton; ActivateRadioButton(setup->radioRefs[setup->activeButton]); VDPIdle(); // Set up the DITL setup->theDitlList = SetupDITLItemList( kXBandSetupScreen ); setup->myControlTable = SetupControlTable( kXBandSetupScreen ); NewDITL( setup->myControlTable, setup->theDitlList ); // Invalidate the description text setup->descriptionInvalid = true; return (long) setup; }