SouSuoWidget::SouSuoWidget(QWidget *parent) : QWidget(parent) { mainGLayout = new QGridLayout(this); searchHboxLayout = new QHBoxLayout; searchEdit = new QLineEdit(this); searchBtn = new QPushButton(this); busyIndicator = new QLabel(this); QMovie *movie = new QMovie(":/app/skin/imgs/loading.gif"); movie->start(); musicListWidget = new MusicListWidget(this,true); searchEdit->setFixedSize(150,30); searchBtn->setFixedSize(30,30); searchBtn->setFlat(true); busyIndicator->setFixedSize(30,30); busyIndicator->setMovie(movie); busyIndicator->setVisible(false); searchBtn->setIconSize(QSize(30,30)); searchBtn->setIcon(QIcon(":/kuwoMusic/KuwoMusic/imgs/search.png")); searchHboxLayout->setMargin(0); searchHboxLayout->setSpacing(0); searchHboxLayout->addWidget(searchEdit); searchHboxLayout->addWidget(searchBtn); //mainGLayout->addItem(new QSpacerItem(100,10,QSizePolicy::Expanding,QSizePolicy::Minimum),0,0,1,2); mainGLayout->addWidget(busyIndicator,0,0,1,1); mainGLayout->addItem(new QSpacerItem(10,10,QSizePolicy::Expanding,QSizePolicy::Minimum),0,1,3,3); mainGLayout->addLayout(searchHboxLayout,0,4,1,1); mainGLayout->addWidget(musicListWidget,1,0,5,5); connect(searchBtn,SIGNAL(clicked()),this,SLOT(searchKeywordAct())); connect(searchEdit,SIGNAL(returnPressed()),this,SLOT(searchKeywordAct())); connect(musicListWidget,SIGNAL(pageChange(QString)),this,SLOT(handlePageChange(QString))); }
void updateDisplay(void) { uint32_t now = micros(); static uint8_t previousArmedState = 0; bool updateNow = (int32_t)(now - nextDisplayUpdateAt) >= 0L; if (!updateNow) { return; } nextDisplayUpdateAt = now + DISPLAY_UPDATE_FREQUENCY; bool armedState = ARMING_FLAG(ARMED) ? true : false; bool armedStateChanged = armedState != previousArmedState; previousArmedState = armedState; if (armedState) { if (!armedStateChanged) { return; } pageState.pageIdBeforeArming = pageState.pageId; pageState.pageId = PAGE_ARMED; pageState.pageChanging = true; } else { if (armedStateChanged) { pageState.pageFlags |= PAGE_STATE_FLAG_FORCE_PAGE_CHANGE; pageState.pageId = pageState.pageIdBeforeArming; } pageState.pageChanging = (pageState.pageFlags & PAGE_STATE_FLAG_FORCE_PAGE_CHANGE) || (((int32_t)(now - pageState.nextPageAt) >= 0L && (pageState.pageFlags & PAGE_STATE_FLAG_CYCLE_ENABLED))); if (pageState.pageChanging && (pageState.pageFlags & PAGE_STATE_FLAG_CYCLE_ENABLED)) { pageState.cycleIndex++; pageState.cycleIndex = pageState.cycleIndex % CYCLE_PAGE_ID_COUNT; pageState.pageId = cyclePageIds[pageState.cycleIndex]; } } if (pageState.pageChanging) { pageState.pageFlags &= ~PAGE_STATE_FLAG_FORCE_PAGE_CHANGE; pageState.nextPageAt = now + PAGE_CYCLE_FREQUENCY; // Some OLED displays do not respond on the first initialisation so refresh the display // when the page changes in the hopes the hardware responds. This also allows the // user to power off/on the display or connect it while powered. resetDisplay(); if (!displayPresent) { return; } handlePageChange(); } if (!displayPresent) { return; } switch(pageState.pageId) { case PAGE_WELCOME: showWelcomePage(); break; case PAGE_ARMED: showArmedPage(); break; case PAGE_BATTERY: showBatteryPage(); break; case PAGE_SENSORS: showSensorsPage(); break; case PAGE_RX: showRxPage(); break; case PAGE_PROFILE: showProfilePage(); break; #ifdef GPS case PAGE_GPS: if (feature(FEATURE_GPS)) { showGpsPage(); } else { pageState.pageFlags |= PAGE_STATE_FLAG_FORCE_PAGE_CHANGE; } break; #endif #ifdef ENABLE_DEBUG_OLED_PAGE case PAGE_DEBUG: showDebugPage(); break; #endif } if (!armedState) { updateFailsafeStatus(); updateRxStatus(); updateTicker(); } }
QgsComposerMultiFrame::QgsComposerMultiFrame( QgsComposition* c, bool createUndoCommands ): mComposition( c ), mResizeMode( UseExistingFrames ), mCreateUndoCommands( createUndoCommands ) { mComposition->addMultiFrame( this ); connect( mComposition, SIGNAL( nPagesChanged() ), this, SLOT( handlePageChange() ) ); }
void updateDisplay(void) { uint32_t now = micros(); static uint8_t previousArmedState = 0; bool updateNow = (int32_t)(now - nextDisplayUpdateAt) >= 0L; if (!updateNow) { return; } nextDisplayUpdateAt = now + DISPLAY_UPDATE_FREQUENCY; bool armedState = ARMING_FLAG(ARMED) ? true : false; bool armedStateChanged = armedState != previousArmedState; previousArmedState = armedState; if (armedState) { if (!armedStateChanged) { return; } pageState.pageIdBeforeArming = pageState.pageId; pageState.pageId = PAGE_ARMED; pageState.pageChanging = true; } else { if (armedStateChanged) { pageState.pageFlags |= PAGE_STATE_FLAG_FORCE_PAGE_CHANGE; pageState.pageId = pageState.pageIdBeforeArming; } pageState.pageChanging = (pageState.pageFlags & PAGE_STATE_FLAG_FORCE_PAGE_CHANGE) || (((int32_t)(now - pageState.nextPageAt) >= 0L && (pageState.pageFlags & PAGE_STATE_FLAG_CYCLE_ENABLED))); if (pageState.pageChanging && (pageState.pageFlags & PAGE_STATE_FLAG_CYCLE_ENABLED)) { pageState.cycleIndex++; pageState.cycleIndex = pageState.cycleIndex % CYCLE_PAGE_ID_COUNT; pageState.pageId = cyclePageIds[pageState.cycleIndex]; } } if (pageState.pageChanging) { handlePageChange(); pageState.pageFlags &= ~PAGE_STATE_FLAG_FORCE_PAGE_CHANGE; pageState.nextPageAt = now + PAGE_CYCLE_FREQUENCY; } switch(pageState.pageId) { case PAGE_WELCOME: showWelcomePage(); break; case PAGE_ARMED: showArmedPage(); break; case PAGE_BATTERY: showBatteryPage(); break; case PAGE_SENSORS: showSensorsPage(); break; case PAGE_RX: showRxPage(); break; case PAGE_PROFILE: showProfilePage(); break; #ifdef GPS case PAGE_GPS: if (feature(FEATURE_GPS)) { showGpsPage(); } else { pageState.pageFlags |= PAGE_STATE_FLAG_FORCE_PAGE_CHANGE; } break; #endif #ifdef ENABLE_DEBUG_OLED_PAGE case PAGE_DEBUG: showDebugPage(); break; #endif } if (!armedState) { updateTicker(); } }
void dashboardUpdate(timeUs_t currentTimeUs) { static uint8_t previousArmedState = 0; #ifdef CMS if (displayIsGrabbed(displayPort)) { return; } #endif const bool updateNow = (int32_t)(currentTimeUs - nextDisplayUpdateAt) >= 0L; if (!updateNow) { return; } nextDisplayUpdateAt = currentTimeUs + DISPLAY_UPDATE_FREQUENCY; bool armedState = ARMING_FLAG(ARMED) ? true : false; bool armedStateChanged = armedState != previousArmedState; previousArmedState = armedState; if (armedState) { if (!armedStateChanged) { return; } dashboardSetPage(PAGE_ARMED); pageState.pageChanging = true; } else { if (armedStateChanged) { pageState.pageFlags |= PAGE_STATE_FLAG_FORCE_PAGE_CHANGE; } pageState.pageChanging = (pageState.pageFlags & PAGE_STATE_FLAG_FORCE_PAGE_CHANGE) || (((int32_t)(currentTimeUs - pageState.nextPageAt) >= 0L && (pageState.pageFlags & PAGE_STATE_FLAG_CYCLE_ENABLED))); if (pageState.pageChanging && (pageState.pageFlags & PAGE_STATE_FLAG_CYCLE_ENABLED)) { do { pageState.cycleIndex++; pageState.cycleIndex = pageState.cycleIndex % PAGE_COUNT; pageState.page = &pages[pageState.cycleIndex]; } while (pageState.page->flags & PAGE_FLAGS_SKIP_CYCLING); } } if (pageState.pageChanging) { pageState.pageFlags &= ~PAGE_STATE_FLAG_FORCE_PAGE_CHANGE; pageState.nextPageAt = currentTimeUs + PAGE_CYCLE_FREQUENCY; // Some OLED displays do not respond on the first initialisation so refresh the display // when the page changes in the hopes the hardware responds. This also allows the // user to power off/on the display or connect it while powered. resetDisplay(); if (!dashboardPresent) { return; } handlePageChange(); } if (!dashboardPresent) { return; } pageState.page->drawFn(); if (!armedState) { updateFailsafeStatus(); updateRxStatus(); updateTicker(); } }