void MythWizard::showPage( QWidget * page ) { MythWizardPrivate::Page * p = d->page( page ); if ( p ) { int i; for( i = 0; i < d->pages.size() && d->pages[i] != p; i++ ); bool notFirst( false ); if (i) { i--; while ((i >= 0) && !notFirst) { notFirst |= appropriate(d->pages[i]->w); i--; } } setBackEnabled( notFirst ); setNextEnabled( true ); d->ws->setCurrentWidget(page); d->current = p; } layOut(); updateButtons(); emit selected( p ? p->t : QString() ); if (indexOf(page) == pageCount()-1) { // last page finishButton()->setEnabled(true); finishButton()->setFocus(); } else { nextButton()->setFocus(); } }
void QWizard::updateButtons() { if ( !d->current ) return; int i; for( i = 0; i < (int)d->pages.count() && d->pages.at( i ) != d->current; i++ ); bool notFirst( FALSE ); if( i ) { i--; while( ( i >= 0 ) && !notFirst ) { notFirst |= appropriate( d->pages.at( i )->w ); i--; } } setBackEnabled( d->current->backEnabled && notFirst ); setNextEnabled( d->current->nextEnabled ); d->finishButton->setEnabled( d->current->finishEnabled ); d->helpButton->setEnabled( d->current->helpEnabled ); if ( ( d->current->finishEnabled && !d->finishButton->isVisible() ) || ( d->current->backEnabled && !d->backButton->isVisible() ) || ( d->current->nextEnabled && !d->nextButton->isVisible() ) || ( d->current->helpEnabled && !d->helpButton->isVisible() ) ) layOut(); }
void QWizard::showPage( QWidget * page ) { QWizardPrivate::Page * p = d->page( page ); if ( p ) { int i; for( i = 0; i < (int)d->pages.count() && d->pages.at( i ) != p; i++ ); bool notFirst( FALSE ); if( i ) { i--; while( ( i >= 0 ) && !notFirst ) { notFirst |= appropriate( d->pages.at( i )->w ); i--; } } setBackEnabled( notFirst ); setNextEnabled( TRUE ); d->ws->raiseWidget( page ); d->current = p; } layOut(); updateButtons(); emit selected( p ? p->t : QString::null ); }
void MythWizard::layOutButtonRow( QHBoxLayout * layout ) { bool hasEarlyFinish = false; int i = d->pages.size() - 2; while ( !hasEarlyFinish && i >= 0 ) { hasEarlyFinish |= (d->pages.at(i) && d->pages.at(i)->finishEnabled); i--; } QHBoxLayout *h = new QHBoxLayout(); h->setSpacing(QBoxLayout::LeftToRight); layout->addLayout( h ); h->addWidget( d->cancelButton ); h->addStretch( 42 ); h->addWidget( d->backButton ); h->addSpacing( 6 ); if (hasEarlyFinish) { d->nextButton->show(); d->finishButton->show(); h->addWidget( d->nextButton ); h->addSpacing( 12 ); h->addWidget( d->finishButton ); } else if (d->pages.empty() || d->current->finishEnabled || d->current == d->pages.last()) { d->nextButton->hide(); d->finishButton->show(); h->addWidget( d->finishButton ); } else { d->nextButton->show(); d->finishButton->hide(); h->addWidget( d->nextButton ); } // if last page is disabled - show finished btn. at lastpage-1 i = d->pages.size() - 1; if (i > 0 && !appropriate(d->pages[i]->w) && d->current == d->pages[(uint)(i) - 1]) { d->nextButton->hide(); d->finishButton->show(); h->addWidget( d->finishButton ); } }
void MythWizard::next() { int i = 0; while( i < d->pages.size() && d->pages[i] && d->current && d->pages[i]->w != d->current->w ) i++; i++; while( i <= d->pages.size()-1 && ( !d->pages[i] || !appropriate( d->pages[i]->w ) ) ) i++; while ( i > 0 && (i >= d->pages.size() || !d->pages[i] ) ) i--; if ( d->pages[i] ) showPage( d->pages[i]->w ); }
/*! Called when the user clicks the Next button, this function shows the next relevant page in the sequence. \sa appropriate() */ void QWizard::next() { int i = 0; while( i < (int)d->pages.count() && d->pages.at( i ) && d->current && d->pages.at( i )->w != d->current->w ) i++; i++; while( i <= (int)d->pages.count()-1 && ( !d->pages.at( i ) || !appropriate( d->pages.at( i )->w ) ) ) i++; // if we fell of the end of the world, step back while ( i > 0 && (i >= (int)d->pages.count() || !d->pages.at( i ) ) ) i--; if ( d->pages.at( i ) ) showPage( d->pages.at( i )->w ); }
/*! Called when the user clicks the Back button; this function shows the preceding relevant page in the sequence. \sa appropriate() */ void QWizard::back() { int i = 0; while( i < (int)d->pages.count() && d->pages.at( i ) && d->current && d->pages.at( i )->w != d->current->w ) i++; i--; while( i >= 0 && ( !d->pages.at( i ) || !appropriate( d->pages.at( i )->w ) ) ) i--; if( i >= 0 ) if( d->pages.at( i ) ) showPage( d->pages.at( i )->w ); }
void MythWizard::back() { int i = 0; while( i < d->pages.size() && d->pages[i] && d->current && d->pages[i]->w != d->current->w ) i++; i--; while( i >= 0 && ( !d->pages[i] || !appropriate( d->pages[i]->w ) ) ) i--; if ( i >= 0 ) if ( d->pages[i] ) showPage( d->pages[i]->w ); }
void MythWizard::updateButtons() { if ( !d->current ) return; int i; for( i = 0; i < d->pages.size() && d->pages[i] != d->current; i++ ); bool notFirst( false ); if ( i ) { i--; while( ( i >= 0 ) && !notFirst ) { notFirst |= appropriate( d->pages[i]->w ); i--; } } setBackEnabled( d->current->backEnabled && notFirst ); setNextEnabled( d->current->nextEnabled ); d->finishButton->setEnabled( d->current->finishEnabled ); if ( ( d->current->finishEnabled && !d->finishButton->isVisible() ) || ( d->current->backEnabled && !d->backButton->isVisible() ) || ( d->current->nextEnabled && !d->nextButton->isVisible() ) ) layOut(); }
void QWizard::layOutButtonRow( QHBoxLayout * layout ) { bool hasHelp = FALSE; bool hasEarlyFinish = FALSE; int i = d->pages.count() - 2; while ( !hasEarlyFinish && i >= 0 ) { if ( d->pages.at( i ) && d->pages.at( i )->finishEnabled ) hasEarlyFinish = TRUE; i--; } i = 0; while ( !hasHelp && i < (int)d->pages.count() ) { if ( d->pages.at( i ) && d->pages.at( i )->helpEnabled ) hasHelp = TRUE; i++; } QBoxLayout * h = new QBoxLayout( QBoxLayout::LeftToRight ); layout->addLayout( h ); if ( hasHelp ) h->addWidget( d->helpButton ); else d->helpButton->hide(); h->addStretch( 42 ); h->addWidget( d->backButton ); h->addSpacing( 6 ); if (d->current == d->pages.at( d->pages.count()-1 )) hasEarlyFinish = FALSE; if ( hasEarlyFinish ) { d->nextButton->show(); d->finishButton->show(); h->addWidget( d->nextButton ); h->addSpacing( 12 ); h->addWidget( d->finishButton ); } else if ( d->pages.count() == 0 || d->current->finishEnabled || d->current == d->pages.at( d->pages.count()-1 ) ) { d->nextButton->hide(); d->finishButton->show(); h->addWidget( d->finishButton ); } else { d->nextButton->show(); d->finishButton->hide(); h->addWidget( d->nextButton ); } // if last page is disabled - show finished btn. at lastpage-1 i = d->pages.count()-1; if ( i >= 0 && !appropriate( d->pages.at( i )->w ) && d->current == d->pages.at( d->pages.count()-2 ) ) { d->nextButton->hide(); d->finishButton->show(); h->addWidget( d->finishButton ); } h->addSpacing( 12 ); h->addWidget( d->cancelButton ); }