/*! \brief Constructor. Creates a new instance of ProjectWindow. \param pro project data to show, not null. \param parent parent widgets of this window, default value is 0. */ Ui::ProjectWindow::ProjectWindow(Core::Project *pro, QWidget *parent /* = 0 */) : QMdiSubWindow(parent), project(pro) { // entry conditions Q_CHECK_PTR(pro); setAttribute(Qt::WA_DeleteOnClose); setWindowIcon(QIcon(":/proj")); setWindowTitle(project->name()); setMinimumSize(200, 200); // project view, the main widget view = new ProjectView(this); scene = new ProjectScene(project, this); view->setScene(scene); view->setSceneRect(0, 0, project->width(), project->height()); QScrollArea* centerPanel = new QScrollArea(this); centerPanel->viewport()->setStyleSheet(QString("background-color:#C0C0C0")); centerPanel->setAlignment(Qt::AlignCenter); centerPanel->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); centerPanel->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); centerPanel->setWidget(view); // status bar statusBar = new QWidget(this); QHBoxLayout *statusLayout = new QHBoxLayout(statusBar); statusLayout->setMargin(0); statusBar->setLayout(statusLayout); QLineEdit* percentInput = new QLineEdit(statusBar); percentInput->setText("100"); percentInput->setFixedSize(40, 18); QLabel *msgLabel = new QLabel(statusBar); msgLabel->setText("%"); msgLabel->setFixedWidth(8); QPushButton *gridButton = new QPushButton(statusBar); gridButton->setText("#"); gridButton->setCheckable(true); gridButton->setFixedSize(20, 18); QLabel *ctrlLabel = new QLabel(statusBar); ctrlLabel->setFixedWidth(qApp->style()->pixelMetric(QStyle::PM_ScrollBarExtent) - 6); statusLayout->addWidget(percentInput); statusLayout->addWidget(msgLabel); statusLayout->addWidget(gridButton); statusLayout->addWidget(centerPanel->horizontalScrollBar(), 100); statusLayout->addWidget(ctrlLabel); QWidget *mainPanel = new QWidget(this); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->setMargin(0); mainLayout->setSpacing(0); mainLayout->addWidget(centerPanel); mainLayout->addWidget(statusBar); mainPanel->setLayout(mainLayout); setWidget(mainPanel); connect(gridButton, SIGNAL(clicked(bool)), scene, SLOT(showGrid(bool))); connect(appCtx->mainWindow(), SIGNAL(antialiasingChanged(bool)), scene, SLOT(setAntialiasing(bool))); }
void tst_QScrollArea::ensureMicroFocusVisible_Task_167838() { QScrollArea scrollArea; scrollArea.resize(100, 100); scrollArea.show(); QWidget *parent = new QWidget; parent->setLayout(new QVBoxLayout); QWidget *child = new WidgetWithMicroFocus; parent->layout()->addWidget(child); parent->resize(300, 300); scrollArea.setWidget(parent); scrollArea.ensureWidgetVisible(child, 10, 10); QRect microFocus = child->inputMethodQuery(Qt::ImMicroFocus).toRect(); QPoint p = child->mapTo(scrollArea.viewport(), microFocus.topLeft()); microFocus.translate(p - microFocus.topLeft()); QVERIFY(scrollArea.viewport()->rect().contains(microFocus)); }
int main(int argc, char *argv[]) { application app(argc, argv); icon_editor* editor = new icon_editor; editor->set_icon_image(QImage(":/icon_editor_images/mouse.png")); QScrollArea area; area.setWidget(editor); area.setWidgetResizable(true); area.setFocusPolicy(Qt::NoFocus); area.viewport()->setBackgroundRole(QPalette::Dark); area.viewport()->setAutoFillBackground(true); area.setWindowTitle(QObject::tr("Icon Editor")); editor->setFocus(Qt::OtherFocusReason); // TODO: simpler way of focusing scroll area's widget? area.show(); return app.exec(); }
QProjectWidget::QProjectWidget(QWidget * parent): QAbstractPageWidget(parent), m_projectPropertyView(new QPropertyListView(this)), m_projectBar(new StyledBar(this)), m_pageView(new QPageView(this)), m_pageViewBar(new StyledBar(this)) { QVBoxLayout *vl = new QVBoxLayout; MiniSplitter *sp = new MiniSplitter; vl->setMargin(0); vl->addWidget(sp); setLayout(vl); QWidget* wid = new QWidget; sp->addWidget(wid); vl = new QVBoxLayout; vl->setMargin(0); vl->setSpacing(0); vl->addWidget(m_projectBar); vl->addWidget(m_projectPropertyView); wid->setLayout(vl); QScrollArea * pagePane = new QScrollArea; pagePane->setWidget(m_pageView); pagePane->setFrameStyle(QFrame::NoFrame); pagePane->viewport()->setStyleSheet("background-color:rgb(255,255,255);"); wid = new QWidget; vl = new QVBoxLayout; vl->setMargin(0); vl->setSpacing(0); vl->addWidget(m_pageViewBar); vl->addWidget(pagePane); wid->setLayout(vl); sp->addWidget(wid); sp->setStretchFactor(0,0); sp->setStretchFactor(1,1); connect(QSoftCore::getInstance()->getProject(),SIGNAL(hostAdded(QAbstractWidgetHost*,int)), m_pageView,SLOT(addHost(QAbstractWidgetHost*,int))); }
QwwTaskPanel::QwwTaskPanel(QWidget *parent) : QWidget(parent) /*: QScrollArea(parent)*/ { QScrollArea *sa = new QScrollArea(this); QVBoxLayout *la = new QVBoxLayout(this); la->setMargin(0); la->addWidget(sa); m_animated = false; m_panel = new QWidget(sa->viewport()); m_panel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::MinimumExpanding); m_panel->setObjectName("ww_taskpanel_panel"); m_current = -1; QVBoxLayout *l = new QVBoxLayout(m_panel); l->addStretch(); sa->setWidget(m_panel); sa->setWidgetResizable(true); setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding); }
void ModuleView::addModule( KCModuleInfo *module ) { if( !module ) { return; } if( !module->service() ) { qWarning() << "ModuleInfo has no associated KService" ; return; } if ( !KAuthorized::authorizeControlModule( module->service()->menuId() ) ) { qWarning() << "Not authorised to load module" ; return; } if( module->service()->noDisplay() ) { return; } // Create the scroller QScrollArea * moduleScroll = new QScrollArea( this ); // Prepare the scroll area moduleScroll->setWidgetResizable( true ); moduleScroll->setFrameStyle( QFrame::NoFrame ); moduleScroll->viewport()->setAutoFillBackground( false ); // Create the page KPageWidgetItem *page = new KPageWidgetItem( moduleScroll, module->moduleName() ); // Provide information to the users KCModuleProxy * moduleProxy = new KCModuleProxy( *module, moduleScroll ); moduleScroll->setWidget( moduleProxy ); moduleProxy->setAutoFillBackground( false ); connect( moduleProxy, SIGNAL(changed(bool)), this, SLOT(stateChanged())); d->mPages.insert( page, moduleProxy ); d->mModules.insert( page, module ); updatePageIconHeader( page, true ); // Add the new page d->mPageWidget->addPage( page ); }
void MainWindow::createPlotSettingsView() { groupSettings = new GroupSettings(this); plotSettings = new PlotSettings(this); { QScrollArea* scroller = new QScrollArea(this); QVBoxLayout* content = new QVBoxLayout(scroller->viewport()); content->setMargin(0); content->setSpacing(0); content->addWidget(groupSettings); content->addWidget(plotSettings); ui->commonSettings->setWidget(scroller); } { connect(groupSettings, SIGNAL(groupNameWasChanged()), groups, SLOT(retitle())); connect(groups, SIGNAL(groupChanged(Group*)), groupSettings, SLOT(catchGroup(Group*))); connect(groups, SIGNAL(noMoreGroup()), groupSettings, SLOT(freeGroup())); connect(groups, SIGNAL(wasActivated(QMdiSubWindow*)), plotSettings, SLOT(catchPlot(QMdiSubWindow*))); connect(groups, SIGNAL(noMoreGroup()), plotSettings, SLOT(toDefaultState())); connect(groups, SIGNAL(noMorePlots()), plotSettings, SLOT(toDefaultState())); connect(plotSettings, SIGNAL(copySettings(PlotSettingsFiller*)), groups, SLOT(copySettingsToActiveGroup(PlotSettingsFiller*))); } }
//@@@ basic definitions int main(int argc, char *argv[]) { QApplication a(argc, argv); Arena *w = new Arena; //vector<string> vec; w->vec.push_back("1"); w->vec.push_back("2"); w->vec.push_back("3"); w->vec.push_back("4"); /* w->vec.push_back("5"); w->vec.push_back("6"); w->vec.push_back("7"); w->vec.push_back("8"); w->vec.push_back("9"); w->vec.push_back("10"); w->vec.push_back("11"); w->vec.push_back("12");w->vec.push_back("13");w->vec.push_back("14");w->vec.push_back("15"); w->vec.push_back("16");w->vec.push_back("17");w->vec.push_back("18");w->vec.push_back("19");w->vec.push_back("20"); w->vec.push_back("21");w->vec.push_back("22");w->vec.push_back("23");w->vec.push_back("24");w->vec.push_back("25"); w->vec.push_back("26");w->vec.push_back("27");w->vec.push_back("28");w->vec.push_back("29");w->vec.push_back("30"); w->vec.push_back("31");w->vec.push_back("32");w->vec.push_back("33");w->vec.push_back("34");w->vec.push_back("35"); w->vec.push_back("36");w->vec.push_back("37");w->vec.push_back("38");w->vec.push_back("39");w->vec.push_back("40"); w->vec.push_back("41"); // ################################################################// /**********************Creating indexes ******************************/ ifstream iput; int updateCounter=100; //to update index files // int n=10; // display list size string str1="qvlc"; int flag=0,flag1=0; FILE* fp; fp=fopen("counter.txt","r"); if(fp==NULL) { flag=1; } else fclose(fp); if(flag==1) { int k=1; fp=fopen("counter.txt","w"); fprintf(fp,"%i",k); fclose(fp); } else { iput.open("counter.txt"); int count; iput>>count; iput.close(); if(count>=updateCounter) { // callFileList(); flag1=1; count=-1; } count++; fp=fopen("counter.txt","w+"); fprintf(fp,"%i",count); fclose(fp); } if(flag1==1 || flag==1) { fileList f1; f1.runner(); } /********************Reading files in Prefix -trie********************************/ Btree b1; b1.takeInput(str1); tries t2; callPrefixTrie(t2); /*************************history trie*****************************************/ tries t1; callHistoryTrie(t1); /**************************************************************/ string str; cout<<"enter the string :"<<endl; //cin>>str; //vector<fax*> inputVector; //inputVector=process(str,t2,t1,n); /* for(int i=0;i<star.size();i++) { cout<<star[i]->nam<<endl; } */ /* fax* fax1=new fax("rhythmbox-client","##"); show(fax1,t2,t1); onClose(t1); */ //##########################################################################3 w->startArena(t1,t2, 15); QScrollArea scrollarea; scrollarea.setWidget(w); scrollarea.setWidgetResizable(true); scrollarea.viewport()->setBackgroundRole(QPalette::Dark); scrollarea.viewport()->setAutoFillBackground(true); scrollarea.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn); scrollarea.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); scrollarea.setWindowTitle(QObject::tr("arena")); scrollarea.show(); //w->show(); return a.exec(); }
/// continue the creation of the widgets once the pieces XML was loaded. /// this is where all the work of creating the family tabs and their content is performed. void PicsSelectWidget::continueCreate() { const PicBucket& bucket = PicBucket::instance(); m_tabs = new QTabWidget(this); connect(m_tabs, SIGNAL(currentChanged(int)), this, SLOT(updateSetsSpinBox(int))); m_layout->addWidget(m_tabs); m_groups.resize(bucket.grps.size()); for (int f = 0; f < bucket.families.size(); ++f) { const PicFamily &fam = bucket.families[f]; SizedWidget *tab = new SizedWidget(QSize(6 * BOT_TOTAL_X + BOT_OFFS_X + FRAME_OFFS_SPACE_RIGHT - 5, NUM_DEFS * BOT_TOTAL_Y + FRAME_OFFS_Y), nullptr); //QWidget *tab = new QWidget(); //tab->resize(QSize(6 * BOT_TOTAL_X + BOT_OFFS_X + FRAME_OFFS_SPACE_RIGHT, NUM_DEFS * BOT_TOTAL_Y + FRAME_OFFS_Y)); QScrollArea *scroll = new QScrollArea(); scroll->setWidget(tab); // the following is the voodoo needed to make the scroll area the same color as the tab // if this wasn't here, the scroll area would have gotten the default window color // this is significant in Windows XP with new apperance style where the tab color is // different from the default window color scroll->viewport()->setAutoFillBackground(false); tab->setAutoFillBackground(false); // scroll area has a frame by default. get rid of it. scroll->setFrameShape(QFrame::NoFrame); m_tabs->addTab(scroll, fam.name.c_str()); for (int g = fam.startIndex; g < fam.startIndex + fam.numGroups; ++g) { const PicGroupDef *grp = &(bucket.grps[g]); GroupCtrl &grpctrl = m_groups[g]; int normg = (g - fam.startIndex); // normalized g with start of family QGroupBox *groupbox = new QGroupBox(grp->name.c_str(), tab); groupbox->move(BOT_OFFS_X-FRAME_OFFS_SPACE_LEFT, FRAME_OFFS_Y + normg*BOT_TOTAL_Y - 30); groupbox->resize(FRAME_OFFS_SPACE_RIGHT + grp->numPics() * BOT_TOTAL_X, BOT_Y + 55); grpctrl.num = new DataSpinBox(g, tab); grpctrl.num->move(grp->numPics() * BOT_TOTAL_X + BOT_OFFS_X + FRAME_OFFS_SPACE_RIGHT - 65, BOT_OFFS_Y + normg*BOT_TOTAL_Y + 40); grpctrl.num->resize(45, 23); grpctrl.num->setButtonSymbols(QAbstractSpinBox::PlusMinus); grpctrl.num->setRange(-1, MAX_IDENTICAL_PIECES); grpctrl.num->setSpecialValueText("X"); connect(grpctrl.num, SIGNAL(dvalueChanged(int, int)), this, SLOT(changedGrpBox(int, int))); for (int p = 0; p < bucket.grps[g].numPics(); ++p) { const PicDef* pic = &(grp->getPic(p)); PicCtrl picctrl; int data = (g << 16) | p; DataPushButton *button = new DataPushButton(data, QIcon(pic->pixmap), QString(), tab); picctrl.bot = button; button->setCheckable(true); button->move(BOT_OFFS_X + p*BOT_TOTAL_X, BOT_OFFS_Y + normg * BOT_TOTAL_Y); // g normalized to start of family button->resize(BOT_X, BOT_Y); button->setIconSize(pic->pixmap.size()); // +1 because it's the texture + line, from Pieces.h connect(button, SIGNAL(pclicked(int, bool)), this, SLOT(pressedPicButton(int, bool))); DataSpinBox *spinbox = new DataSpinBox(data, tab); picctrl.num = spinbox; spinbox->setRange(0, MAX_IDENTICAL_PIECES); spinbox->move(BOT_OFFS_X + p*BOT_TOTAL_X + (BOT_X/5*2 + 2), BOT_OFFS_Y + normg*BOT_TOTAL_Y + BOT_Y + 5); spinbox->resize(BOT_X/5*3 - 4, EDIT_THICK + 1); spinbox->setButtonSymbols(QAbstractSpinBox::PlusMinus); connect(spinbox, SIGNAL(dvalueChanged(int, int)), this, SLOT(changedNumBox(int, int))); QLabel *solnum = new QLabel("0", tab); picctrl.snum = solnum; solnum->move(BOT_OFFS_X + p*BOT_TOTAL_X + 2, BOT_OFFS_Y + normg*BOT_TOTAL_Y + BOT_Y + 6); solnum->resize(BOT_X/5*2 - 4, EDIT_THICK); solnum->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); solnum->setFrameShadow(QFrame::Sunken); solnum->setFrameShape(QFrame::Panel); solnum->setPalette(*m_slvPalette); solnum->setVisible(false); grpctrl.pics.push_back(picctrl); } } } setBuildTilesCount(m_doc->getBuild().tilesCount()); // prevent the build Help sidebar to get notifications. it might not be there yet. // eventually the sidebar will take care of itself. blockSignals(true); changeToResetValues(); blockSignals(false); m_bFinishedCreate = true; }
SettingsPageUnits::SettingsPageUnits(QWidget *parent) : QWidget(parent) { setObjectName("SettingsPageUnits"); setWindowFlags( Qt::Tool ); setWindowModality( Qt::WindowModal ); setAttribute(Qt::WA_DeleteOnClose); setWindowTitle( tr("Settings - Units") ); if( parent ) { resize( parent->size() ); } // Layout used by scroll area QHBoxLayout *sal = new QHBoxLayout; // new widget used as container for the dialog layout. QWidget* sw = new QWidget; // Scroll area QScrollArea* sa = new QScrollArea; sa->setWidgetResizable( true ); sa->setFrameStyle( QFrame::NoFrame ); sa->setWidget( sw ); #ifdef ANDROID QScrollBar* lvsb = sa->verticalScrollBar(); lvsb->setStyleSheet( Layout::getCbSbStyle() ); #endif #ifdef QSCROLLER QScroller::grabGesture( sa->viewport(), QScroller::LeftMouseButtonGesture ); #endif #ifdef QTSCROLLER QtScroller::grabGesture( sa->viewport(), QtScroller::LeftMouseButtonGesture ); #endif // Add scroll area to its own layout sal->addWidget( sa ); QHBoxLayout *contentLayout = new QHBoxLayout; setLayout(contentLayout); // Pass scroll area layout to the content layout. contentLayout->addLayout( sal, 10 ); // The parent of the layout is the scroll widget QGridLayout *topLayout = new QGridLayout(sw); int row=0; QLabel *label = new QLabel(tr("Altitude:"), this); topLayout->addWidget(label, row, 0); UnitAlt = new QComboBox(this); UnitAlt->setObjectName("UnitAlt"); UnitAlt->setEditable(false); topLayout->addWidget(UnitAlt,row++,1); UnitAlt->addItem(tr("meters")); UnitAlt->addItem(tr("feet")); altitudes[0] = int(Altitude::meters); altitudes[1] = int(Altitude::feet); label = new QLabel(tr("Speed:"), this); topLayout->addWidget(label, row, 0); UnitSpeed = new QComboBox(this); UnitSpeed->setObjectName("UnitSpeed"); UnitSpeed->setEditable(false); topLayout->addWidget(UnitSpeed,row++,1); UnitSpeed->addItem(tr("meters per second")); UnitSpeed->addItem(tr("kilometers per hour")); UnitSpeed->addItem(tr("knots")); UnitSpeed->addItem(tr("miles per hour")); speeds[0] = Speed::metersPerSecond; speeds[1] = Speed::kilometersPerHour; speeds[2] = Speed::knots; speeds[3] = Speed::milesPerHour; label = new QLabel(tr("Distance:"), this); topLayout->addWidget(label, row, 0); UnitDistance = new QComboBox(this); UnitDistance->setObjectName("UnitDistance"); UnitDistance->setEditable(false); topLayout->addWidget(UnitDistance,row++,1); UnitDistance->addItem(tr("kilometers")); UnitDistance->addItem(tr("statute miles")); UnitDistance->addItem(tr("nautical miles")); distances[0] = Distance::kilometers; distances[1] = Distance::miles; distances[2] = Distance::nautmiles; label = new QLabel(tr("Vario:"), this); topLayout->addWidget(label, row, 0); UnitVario = new QComboBox(this); UnitVario->setObjectName("UnitVario"); UnitVario->setEditable(false); topLayout->addWidget(UnitVario,row++,1); UnitVario->addItem(tr("meters per second")); UnitVario->addItem(tr("feet per minute")); UnitVario->addItem(tr("knots")); varios[0] = Speed::metersPerSecond; varios[1] = Speed::feetPerMinute; varios[2] = Speed::knots; label = new QLabel(tr("Wind:"), this); topLayout->addWidget(label, row, 0); UnitWind = new QComboBox(this); UnitWind->setObjectName("UnitWind"); UnitWind->setEditable(false); topLayout->addWidget(UnitWind,row++,1); UnitWind->addItem(tr("meters per second")); UnitWind->addItem(tr("kilometers per hour")); UnitWind->addItem(tr("knots")); UnitWind->addItem(tr("miles per hour")); winds[0] = Speed::metersPerSecond; winds[1] = Speed::kilometersPerHour; winds[2] = Speed::knots; winds[3] = Speed::milesPerHour; label = new QLabel(tr("Position:"), this); topLayout->addWidget(label, row, 0); UnitPosition = new QComboBox(this); UnitPosition->setObjectName("UnitPosition"); UnitPosition->setEditable(false); topLayout->addWidget(UnitPosition,row++,1); UnitPosition->addItem(QString("ddd") + Qt::Key_degree + "mm'ss\""); UnitPosition->addItem(QString("ddd") + Qt::Key_degree + "mm.mmm'"); UnitPosition->addItem(QString("ddd.ddddd") + Qt::Key_degree); positions[0] = WGSPoint::DMS; positions[1] = WGSPoint::DDM; positions[2] = WGSPoint::DDD; label = new QLabel(tr("Time:"), this); topLayout->addWidget(label, row, 0); UnitTime = new QComboBox(this); UnitTime->setObjectName("UnitTime"); UnitTime->setEditable(false); topLayout->addWidget(UnitTime,row++,1); UnitTime->addItem(tr("UTC")); UnitTime->addItem(tr("Local")); times[0] = Time::utc; times[1] = Time::local; label = new QLabel(tr("Temperature:"), this); topLayout->addWidget(label, row, 0); UnitTemperature = new QComboBox(this); UnitTemperature->setObjectName("UnitTemperature"); UnitTemperature->setEditable(false); topLayout->addWidget(UnitTemperature,row++,1); UnitTemperature->addItem(tr("Celsius")); UnitTemperature->addItem(tr("Fahrenheit")); temperature[0] = GeneralConfig::Celsius; temperature[1] = GeneralConfig::Fahrenheit; label = new QLabel(tr("Air Pressure:"), this); topLayout->addWidget(label, row, 0); UnitAirPressure = new QComboBox(this); UnitAirPressure->setObjectName("UnitAirPressure"); UnitAirPressure->setEditable(false); topLayout->addWidget(UnitAirPressure,row++,1); UnitAirPressure->addItem(tr("hPa")); UnitAirPressure->addItem(tr("inHg")); airPressure[0] = GeneralConfig::hPa; airPressure[1] = GeneralConfig::inHg; topLayout->setRowStretch(row++, 10); topLayout->setColumnStretch(2, 10); QPushButton *help = new QPushButton(this); help->setIcon(QIcon(GeneralConfig::instance()->loadPixmap("help32.png"))); help->setIconSize(QSize(Layout::getButtonSize(12), Layout::getButtonSize(12))); help->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::QSizePolicy::Preferred); QPushButton *cancel = new QPushButton(this); cancel->setIcon(QIcon(GeneralConfig::instance()->loadPixmap("cancel.png"))); cancel->setIconSize(QSize(Layout::getButtonSize(12), Layout::getButtonSize(12))); cancel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::QSizePolicy::Preferred); QPushButton *ok = new QPushButton(this); ok->setIcon(QIcon(GeneralConfig::instance()->loadPixmap("ok.png"))); ok->setIconSize(QSize(Layout::getButtonSize(12), Layout::getButtonSize(12))); ok->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::QSizePolicy::Preferred); QLabel *titlePix = new QLabel(this); titlePix->setAlignment( Qt::AlignCenter ); titlePix->setPixmap(GeneralConfig::instance()->loadPixmap("setup.png")); connect(help, SIGNAL(pressed()), this, SLOT(slotHelp())); connect(ok, SIGNAL(pressed()), this, SLOT(slotAccept())); connect(cancel, SIGNAL(pressed()), this, SLOT(slotReject())); QVBoxLayout *buttonBox = new QVBoxLayout; buttonBox->setSpacing(0); buttonBox->addWidget(help, 1); buttonBox->addStretch(2); buttonBox->addWidget(cancel, 1); buttonBox->addSpacing(30); buttonBox->addWidget(ok, 1); buttonBox->addStretch(2); buttonBox->addWidget(titlePix); contentLayout->addLayout(buttonBox); load(); }
SettingsPageTerrainColors::SettingsPageTerrainColors(QWidget *parent) : QWidget(parent), colorsChanged(false), m_autoSip( true ) { setObjectName("SettingsPageTerrainColors"); setWindowFlags( Qt::Tool ); setWindowModality( Qt::WindowModal ); setAttribute(Qt::WA_DeleteOnClose); setWindowTitle( tr("Settings - Terrain Colors") ); if( parent ) { resize( parent->size() ); } // Layout used by scroll area QHBoxLayout *sal = new QHBoxLayout; // new widget used as container for the dialog layout. QWidget* sw = new QWidget; // Scroll area QScrollArea* sa = new QScrollArea; sa->setWidgetResizable( true ); sa->setFrameStyle( QFrame::NoFrame ); sa->setWidget( sw ); #ifdef QSCROLLER QScroller::grabGesture( sa->viewport(), QScroller::LeftMouseButtonGesture ); #endif #ifdef QTSCROLLER QtScroller::grabGesture( sa->viewport(), QtScroller::LeftMouseButtonGesture ); #endif // Add scroll area to its own layout sal->addWidget( sa ); QHBoxLayout *contentLayout = new QHBoxLayout(this); // Pass scroll area layout to the content layout. contentLayout->addLayout( sal ); /** * Altitude levels in meters to be displayed in color combo box. */ const char *altitudes[51] = { "< 0", "0", "10", "25", "50", "75", "100", "150", "200", "250", "300", "350", "400", "450", "500", "600", "700", "800", "900", "1000", "1250", "1500", "1750", "2000", "2250", "2500", "2750", "3000", "3250", "3500", "3750", "4000", "4250", "4500", "4750", "5000", "5250", "5500", "5750", "6000", "6250", "6500", "6750", "7000", "7250", "7500", "7750", "8000", "8250", "8500", "8750" }; // Determine pixmap size to be used for icons in dependency of the used font int size = QFontMetrics(font()).boundingRect("XM").height() - 2; pixmapSize = QSize( size, size ); QPixmap pixmap(pixmapSize); // load stored terrain colors into working list for( int i = 0; i < SIZEOF_TERRAIN_COLORS; i++ ) { QColor color = GeneralConfig::instance()->getTerrainColor(i); terrainColor[i] = color; } // load ground color groundColor = GeneralConfig::instance()->getGroundColor(); // put all widgets in a HBox layout QHBoxLayout *topLayout = new QHBoxLayout(sw); // create elevation color bar as image elevationImage = new ElevationColorImage( &terrainColor[0], this ); topLayout->addWidget( elevationImage ); // all editor widgets will be put into a group box to get a better view QGroupBox *editBox = new QGroupBox( tr("Color Selection"), this ); // put group box in an extra VBox layout to center it vertically QVBoxLayout *editAll = new QVBoxLayout; editAll->addStretch( 10 ); editAll->addWidget( editBox ); editAll->addStretch( 10 ); topLayout->addLayout( editAll ); // put all edit widgets (combo box and buttons) in a separate VBox layout QVBoxLayout *editLayout = new QVBoxLayout; editLayout->setSpacing( editLayout->spacing() * Layout::getIntScaledDensity() ); QLabel *label = new QLabel( tr("Terrain Level") ); editLayout->addWidget( label ); //-------------------------------------------------------------------------- // The users altitude unit (meters/feed) must be considered during // elevation display in the combo box. QString unit; elevationBox = new QComboBox( this ); #ifdef ANDROID QAbstractItemView* listView = elevationBox->view(); QScrollBar* lvsb = listView->verticalScrollBar(); lvsb->setStyleSheet( Layout::getCbSbStyle() ); #endif #ifdef QSCROLLER elevationBox->view()->setVerticalScrollMode( QAbstractItemView::ScrollPerPixel ); QScroller::grabGesture( elevationBox->view()->viewport(), QScroller::LeftMouseButtonGesture ); #endif #ifdef QTSCROLLER elevationBox->view()->setVerticalScrollMode( QAbstractItemView::ScrollPerPixel ); QtScroller::grabGesture( elevationBox->view()->viewport(), QtScroller::LeftMouseButtonGesture ); #endif if( Altitude::getUnit() == Altitude::meters ) { // use unit meter unit = "m"; for( int i = SIZEOF_TERRAIN_COLORS-1; i > 1; i-- ) { pixmap.fill( terrainColor[i] ); elevationBox->addItem( QIcon( pixmap ), QString(altitudes[i]) + unit ); } } else { // use unit feed unit = "ft"; for( int i = SIZEOF_TERRAIN_COLORS-1; i > 1; i-- ) { int altFeed = static_cast<int>(QString(altitudes[i]).toDouble() * 3.28095); pixmap.fill( terrainColor[i] ); elevationBox->addItem( QIcon( pixmap ), QString::number(altFeed) + unit ); } } pixmap.fill( terrainColor[1] ); elevationBox->addItem( QIcon( pixmap ), QString(altitudes[1]) ); pixmap.fill( terrainColor[0] ); elevationBox->addItem( QIcon( pixmap ), QString(altitudes[0]) ); // set index to level 0 elevationBox->setCurrentIndex( SIZEOF_TERRAIN_COLORS-2 ); editLayout->addWidget( elevationBox ); //-------------------------------------------------------------------------- // add push button for elevation color chooser dialog editColorButton = new QPushButton( tr("Terrain Color") ); // on click the color chooser dialog will be opened connect( editColorButton, SIGNAL(clicked()), this, SLOT(slot_editColor()) ); editLayout->addWidget( editColorButton ); //-------------------------------------------------------------------------- // add push button for ground color chooser dialog groundColorButton = new QPushButton( tr("Ground Color") ); pixmap.fill( groundColor ); groundColorButton->setIcon( QIcon(pixmap) ); // on click the color chooser dialog will be opened connect( groundColorButton, SIGNAL(clicked()), this, SLOT(slot_editGroundColor()) ); editLayout->addSpacing( 10 * Layout::getIntScaledDensity() ); editLayout->addWidget( groundColorButton ); editLayout->addSpacing( 20 * Layout::getIntScaledDensity() ); //-------------------------------------------------------------------------- // add button for assigning of default colors defaultColorButton = new QPushButton( tr("Color Defaults") ); // on click all colors are reset to the defaults connect( defaultColorButton, SIGNAL(clicked()), this, SLOT(slot_setColorDefaults()) ); editLayout->addWidget( defaultColorButton ); // add stretch items to posit editor widgets in the center of the VBox layout editLayout->insertStretch(0, 10 ); editLayout->addStretch( 10 ); editBox->setLayout(editLayout); //-------------------------------------------------------------------------- // add spin box for moving elevation zero line QGroupBox *setOffsetBox = new QGroupBox( tr("Elevation Offset"), this ); // put group box in an extra VBox layout to center it vertically QVBoxLayout *offsetLayout = new QVBoxLayout; offsetLayout->addStretch( 10 ); offsetLayout->addWidget( setOffsetBox ); offsetLayout->addStretch( 10 ); QVBoxLayout *spinboxLayout = new QVBoxLayout; elevationOffset = new QSpinBox; elevationOffset->setSingleStep(1); elevationOffset->setRange(-50, 50); connect( elevationOffset, SIGNAL(editingFinished()), MainWindow::mainWindow(), SLOT(slotCloseSip()) ); VarSpinBox* hspin = new VarSpinBox( elevationOffset ); spinboxLayout->addWidget(hspin); setOffsetBox->setLayout(spinboxLayout); topLayout->addLayout( offsetLayout ); topLayout->insertSpacing(1, 60 ); topLayout->addStretch( 10 ); QPushButton *cancel = new QPushButton(this); cancel->setIcon(QIcon(GeneralConfig::instance()->loadPixmap("cancel.png"))); cancel->setIconSize(QSize(Layout::getButtonSize(12), Layout::getButtonSize(12))); cancel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::QSizePolicy::Preferred); QPushButton *ok = new QPushButton(this); ok->setIcon(QIcon(GeneralConfig::instance()->loadPixmap("ok.png"))); ok->setIconSize(QSize(Layout::getButtonSize(12), Layout::getButtonSize(12))); ok->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::QSizePolicy::Preferred); QLabel *titlePix = new QLabel(this); titlePix->setAlignment( Qt::AlignCenter ); titlePix->setPixmap(GeneralConfig::instance()->loadPixmap("setup.png")); connect(ok, SIGNAL(pressed()), this, SLOT(slotAccept())); connect(cancel, SIGNAL(pressed()), this, SLOT(slotReject())); QVBoxLayout *buttonBox = new QVBoxLayout; buttonBox->setSpacing(0); buttonBox->addStretch(2); buttonBox->addWidget(cancel, 1); buttonBox->addSpacing(30); buttonBox->addWidget(ok, 1); buttonBox->addStretch(2); buttonBox->addWidget(titlePix); contentLayout->addLayout(buttonBox); load(); }
KviModeEditor::KviModeEditor(QWidget * par, KviWindowToolPageButton * button, const char * name, KviChannelWindow * pChan) : KviWindowToolWidget(par, button) { setObjectName(name); m_pChannel = pChan; QGridLayout * pMasterLayout = new QGridLayout(this); setFocusPolicy(Qt::ClickFocus); QScrollArea * pScrollArea = new QScrollArea(this); pScrollArea->viewport()->setBackgroundRole(QPalette::Background); pMasterLayout->addWidget(pScrollArea, 0, 0); pMasterLayout->setRowStretch(1, 1); m_pButton = new QPushButton("", this); pMasterLayout->addWidget(m_pButton, 1, 0); connect(m_pButton, SIGNAL(clicked()), this, SLOT(commit())); if(!m_pChannel || !m_pChannel->connection()) m_pButton->setText(__tr2qs("Close")); QWidget * pBackground = new QWidget(pScrollArea->viewport()); QGridLayout * g = new QGridLayout(pBackground); QLabel * l = new QLabel("", pBackground); l->setPixmap(*(g_pIconManager->getSmallIcon(KviIconManager::Mode))); g->addWidget(l, 0, 0); l = new QLabel(__tr2qs("Channel modes"), pBackground); g->addWidget(l, 0, 1, 1, 1); QFrame * f = new QFrame(pBackground); f->setFrameStyle(QFrame::HLine | QFrame::Sunken); g->addWidget(f, 1, 0, 1, 3); QCheckBox * pCheckBox = nullptr; QLineEdit * pLineEdit = nullptr; int iRow = 1; QString szTmp; QString cDesc; char cMode = 0; //NOTE: this is a fallback is for some reason we don't have a serverInfo() struct available fot this connection // The connection is dead and the context was destroyed, don't guess on what was there if(!m_pChannel || !m_pChannel->connection()) return; // first, the basic checkable modes pstnmi QString szModes = "pstnmi"; while(!szModes.isEmpty()) { cMode = szModes[0].unicode(); szModes.remove(0, 1); szTmp = QString("%1: %2").arg(cMode).arg(*(getModeDescription(cMode))); pCheckBox = new QCheckBox(szTmp, pBackground); m_pCheckBoxes.insert(cMode, pCheckBox); if(pChan) pCheckBox->setChecked(pChan->plainChannelMode().contains(cMode)); iRow++; g->addWidget(pCheckBox, iRow, 0, 1, 3); } // second, che basic modes with parameter lk szModes = "lk"; while(!szModes.isEmpty()) { cMode = szModes[0].unicode(); szModes.remove(0, 1); szTmp = QString("%1: %2").arg(cMode).arg(*(getModeDescription(cMode))); pCheckBox = new QCheckBox(szTmp, pBackground); m_pCheckBoxes.insert(cMode, pCheckBox); iRow++; g->addWidget(pCheckBox, iRow, 0, 1, 3); connect(pCheckBox, SIGNAL(toggled(bool)), this, SLOT(checkBoxToggled(bool))); pLineEdit = new QLineEdit(pBackground); m_pLineEdits.insert(cMode, pLineEdit); iRow++; g->addWidget(pLineEdit, iRow, 1, 1, 2); if(pChan) { if(pChan->hasChannelMode(cMode)) { pCheckBox->setChecked(true); pLineEdit->setText(pChan->channelModeParam(cMode)); } else { pLineEdit->setEnabled(false); } } } // third, check if the we have any info about other modes supported by the server KviIrcConnectionServerInfo * pServerInfo = nullptr; if(m_pChannel) pServerInfo = m_pChannel->serverInfo(); if(!pServerInfo) { g->setRowStretch(++iRow, 1); g->setColumnStretch(2, 1); pScrollArea->setWidget(pBackground); return; } // 4th, more plain modes supported by the server szModes = pServerInfo->supportedPlainModes(); // remove modes that we already implemented szModes.remove("p"); szModes.remove("s"); szModes.remove("t"); szModes.remove("n"); szModes.remove("m"); szModes.remove("i"); while(!szModes.isEmpty()) { cMode = szModes[0].unicode(); szModes.remove(0, 1); cDesc = *(getModeDescription(cMode)); szTmp = QString("%1: %2").arg(cMode).arg(!cDesc.isEmpty() ? cDesc : "Unknown"); pCheckBox = new QCheckBox(szTmp, pBackground); m_pCheckBoxes.insert(cMode, pCheckBox); if(pChan) pCheckBox->setChecked(pChan->plainChannelMode().contains(cMode)); iRow++; g->addWidget(pCheckBox, iRow, 0, 1, 3); } iRow++; // parameterized modes szModes = pServerInfo->supportedParameterModes(); szModes.append(pServerInfo->supportedParameterWhenSetModes()); // remove modes that we already implemented szModes.remove("k"); szModes.remove("l"); while(!szModes.isEmpty()) { cMode = szModes[0].unicode(); szModes.remove(0, 1); cDesc = *(getModeDescription(cMode)); szTmp = QString("%1: %2").arg(cMode).arg(!cDesc.isEmpty() ? cDesc : "Unknown"); pCheckBox = new QCheckBox(szTmp, pBackground); m_pCheckBoxes.insert(cMode, pCheckBox); iRow++; g->addWidget(pCheckBox, iRow, 0, 1, 3); connect(pCheckBox, SIGNAL(toggled(bool)), this, SLOT(checkBoxToggled(bool))); pLineEdit = new QLineEdit(pBackground); m_pLineEdits.insert(cMode, pLineEdit); iRow++; g->addWidget(pLineEdit, iRow, 1, 1, 2); if(pChan->hasChannelMode(cMode)) { pCheckBox->setChecked(true); pLineEdit->setText(pChan->channelModeParam(cMode)); } else { pLineEdit->setEnabled(false); } } g->setRowStretch(++iRow, 1); g->setColumnStretch(2, 1); pScrollArea->setWidget(pBackground); updateOpStatus(); if(m_pChannel) connect(m_pChannel, SIGNAL(opStatusChanged()), this, SLOT(updateOpStatus())); }
PreFlightMiscPage::PreFlightMiscPage(QWidget *parent) : QWidget(parent) { setObjectName("PreFlightMiscPage"); setWindowFlags( Qt::Tool ); setWindowModality( Qt::WindowModal ); setAttribute(Qt::WA_DeleteOnClose); setWindowTitle( tr("PreFlight - Common") ); if( parent ) { resize( parent->size() ); } // Layout used by scroll area QHBoxLayout *sal = new QHBoxLayout; // new widget used as container for the dialog layout. QWidget* sw = new QWidget; // Scroll area QScrollArea* sa = new QScrollArea; sa->setWidgetResizable( true ); sa->setFrameStyle( QFrame::NoFrame ); sa->setWidget( sw ); #ifdef QSCROLLER QScroller::grabGesture( sa->viewport(), QScroller::LeftMouseButtonGesture ); #endif #ifdef QTSCROLLER QtScroller::grabGesture( sa->viewport(), QtScroller::LeftMouseButtonGesture ); #endif // Add scroll area to its own layout sal->addWidget( sa ); QHBoxLayout *contentLayout = new QHBoxLayout(this); // Pass scroll area layout to the content layout. contentLayout->addLayout( sal, 10 ); // Top layout's parent is the scroll widget QGridLayout *topLayout = new QGridLayout(sw); int row = 0; QLabel *lbl = new QLabel(tr("Minimal arrival altitude:")); topLayout->addWidget(lbl, row, 0); // get current set altitude unit. This unit must be considered during // storage. The internal storage is always in meters. m_altUnit = Altitude::getUnit(); // Input accept only feet and meters all other make no sense. Therefore all // other (FL) is treated as feet. m_edtMinimalArrival = new NumberEditor; m_edtMinimalArrival->setDecimalVisible( false ); m_edtMinimalArrival->setPmVisible( false ); m_edtMinimalArrival->setRange( 0, 9999); m_edtMinimalArrival->setMaxLength(4); m_edtMinimalArrival->setSuffix(" " + Altitude::getUnitText()); QRegExpValidator* eValidator = new QRegExpValidator( QRegExp( "([0-9]{1,4})" ), this ); m_edtMinimalArrival->setValidator( eValidator ); int maw = QFontMetrics(font()).width("9999 ft") + 10; m_edtMinimalArrival->setMinimumWidth( maw ); topLayout->addWidget(m_edtMinimalArrival, row, 1); topLayout->setColumnStretch(2, 2); row++; lbl = new QLabel(tr("Arrival altitude display:")); topLayout->addWidget(lbl, row, 0); m_edtArrivalAltitude = new QComboBox; m_edtArrivalAltitude->addItem( tr("Landing Target"), GeneralConfig::landingTarget ); m_edtArrivalAltitude->addItem( tr("Next Target"), GeneralConfig::nextTarget ); topLayout->addWidget(m_edtArrivalAltitude, row, 1); row++; lbl = new QLabel(tr("QNH:")); topLayout->addWidget(lbl, row, 0); m_edtQNH = new NumberEditor; m_edtQNH->setDecimalVisible( false ); m_edtQNH->setPmVisible( false ); m_edtQNH->setRange( 0, 9999); m_edtQNH->setMaxLength(4); m_edtQNH->setSuffix(" hPa"); eValidator = new QRegExpValidator( QRegExp( "([0-9]{1,4})" ), this ); m_edtQNH->setValidator( eValidator ); int mqw = QFontMetrics(font()).width("9999 hPa") + 10; m_edtQNH->setMinimumWidth( mqw ); topLayout->addWidget(m_edtQNH, row, 1); row++; lbl = new QLabel(tr("LD average time") + ":"); topLayout->addWidget(lbl, row, 0); m_edtLDTime = new NumberEditor; m_edtLDTime->setDecimalVisible( false ); m_edtLDTime->setPmVisible( false ); m_edtLDTime->setRange( 5, 600 ); m_edtLDTime->setMaxLength(3); m_edtLDTime->setSuffix(" s"); m_edtLDTime->setTitle( tr("LD average time") ); m_edtLDTime->setTip( "5 ... 600 s" ); eValidator = new QRegExpValidator( QRegExp( "([0-9]{1,3})" ), this ); m_edtLDTime->setValidator( eValidator ); topLayout->addWidget(m_edtLDTime, row, 1); row++; topLayout->setRowMinimumHeight(row, 10); row++; m_chkLogAutoStart = new QCheckBox(tr("Autostart IGC logger")); topLayout->addWidget(m_chkLogAutoStart, row, 0 ); // get current used horizontal speed unit. This unit must be considered // during storage. m_speedUnit = Speed::getHorizontalUnit(); m_logAutoStartSpeed = new DoubleNumberEditor( this ); m_logAutoStartSpeed->setDecimalVisible( true ); m_logAutoStartSpeed->setPmVisible( false ); m_logAutoStartSpeed->setMaxLength(4); m_logAutoStartSpeed->setRange( 1.0, 99.9); m_logAutoStartSpeed->setPrefix( "> " ); m_logAutoStartSpeed->setSuffix( QString(" ") + Speed::getHorizontalUnitText() ); m_logAutoStartSpeed->setDecimals( 1 ); int mlw = QFontMetrics(font()).width("99.9" + Speed::getHorizontalUnitText()) + 10; m_logAutoStartSpeed->setMinimumWidth( mlw ); topLayout->addWidget( m_logAutoStartSpeed, row, 1 ); row++; lbl = new QLabel(tr("B-Record Interval:")); topLayout->addWidget(lbl, row, 0); m_bRecordInterval = new NumberEditor; m_bRecordInterval->setDecimalVisible( false ); m_bRecordInterval->setPmVisible( false ); m_bRecordInterval->setRange( 1, 60); m_bRecordInterval->setTip("1...60 s"); m_bRecordInterval->setMaxLength(2); m_bRecordInterval->setSuffix(" s"); eValidator = new QRegExpValidator( QRegExp( "([0-9]{1,2})" ), this ); m_bRecordInterval->setValidator( eValidator ); int mbrw = QFontMetrics(font()).width("99 s") + 10; m_bRecordInterval->setMinimumWidth( mbrw ); topLayout->addWidget(m_bRecordInterval, row, 1); row++; lbl = new QLabel(tr("K-Record Interval:")); topLayout->addWidget(lbl, row, 0); m_kRecordInterval = new NumberEditor; m_kRecordInterval->setDecimalVisible( false ); m_kRecordInterval->setPmVisible( false ); m_kRecordInterval->setRange( 0, 300); m_kRecordInterval->setTip("0...300 s"); m_kRecordInterval->setMaxLength(3); m_kRecordInterval->setSuffix(" s"); m_kRecordInterval->setSpecialValueText(tr("Off")); eValidator = new QRegExpValidator( QRegExp( "([0-9]{1,2})" ), this ); m_kRecordInterval->setValidator( eValidator ); int mkrw = QFontMetrics(font()).width("999 s") + 10; m_kRecordInterval->setMinimumWidth( mkrw ); topLayout->addWidget(m_kRecordInterval, row, 1); row++; topLayout->setRowMinimumHeight(row, 10); row++; topLayout->setRowStretch(row, 10); QPushButton *help = new QPushButton(this); help->setIcon(QIcon(GeneralConfig::instance()->loadPixmap("help32.png"))); help->setIconSize(QSize(Layout::getButtonSize(12), Layout::getButtonSize(12))); help->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::QSizePolicy::Preferred); QPushButton *cancel = new QPushButton(this); cancel->setIcon(QIcon(GeneralConfig::instance()->loadPixmap("cancel.png"))); cancel->setIconSize(QSize(Layout::getButtonSize(12), Layout::getButtonSize(12))); cancel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::QSizePolicy::Preferred); QPushButton *ok = new QPushButton(this); ok->setIcon(QIcon(GeneralConfig::instance()->loadPixmap("ok.png"))); ok->setIconSize(QSize(Layout::getButtonSize(12), Layout::getButtonSize(12))); ok->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::QSizePolicy::Preferred); QLabel *titlePix = new QLabel(this); titlePix->setAlignment( Qt::AlignCenter ); titlePix->setPixmap( _globalMapConfig->createGlider(315, 1.6) ); connect(help, SIGNAL(pressed()), this, SLOT(slotHelp())); connect(ok, SIGNAL(pressed()), this, SLOT(slotAccept())); connect(cancel, SIGNAL(pressed()), this, SLOT(slotReject())); QVBoxLayout *buttonBox = new QVBoxLayout; buttonBox->setSpacing(0); buttonBox->addWidget(help, 1); buttonBox->addStretch(2); buttonBox->addWidget(cancel, 1); buttonBox->addSpacing(30); buttonBox->addWidget(ok, 1); buttonBox->addStretch(2); buttonBox->addWidget(titlePix); contentLayout->addLayout(buttonBox); load(); }
int KMessageBox::createKMessageBox(KDialog *dialog, const QIcon &icon, const QString &text, const QStringList &strlist, const QString &ask, bool *checkboxReturn, Options options, const QString &details, QMessageBox::Icon notifyType) { QWidget *mainWidget = new QWidget(dialog); QVBoxLayout *mainLayout = new QVBoxLayout(mainWidget); mainLayout->setSpacing(KDialog::spacingHint() * 2); // provide extra spacing mainLayout->setMargin(0); QHBoxLayout *hLayout = new QHBoxLayout(); hLayout->setMargin(0); hLayout->setSpacing(-1); // use default spacing mainLayout->addLayout(hLayout,5); QLabel *iconLabel = new QLabel(mainWidget); if (!icon.isNull()) { QStyleOption option; option.initFrom(mainWidget); iconLabel->setPixmap(icon.pixmap(mainWidget->style()->pixelMetric(QStyle::PM_MessageBoxIconSize, &option, mainWidget))); } QVBoxLayout *iconLayout = new QVBoxLayout(); iconLayout->addStretch(1); iconLayout->addWidget(iconLabel); iconLayout->addStretch(5); hLayout->addLayout(iconLayout,0); hLayout->addSpacing(KDialog::spacingHint()); QLabel *messageLabel = new QLabel(text, mainWidget); messageLabel->setOpenExternalLinks(options & KMessageBox::AllowLink); Qt::TextInteractionFlags flags = Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard; if (options & KMessageBox::AllowLink) { flags |= Qt::LinksAccessibleByMouse | Qt::LinksAccessibleByKeyboard; } messageLabel->setTextInteractionFlags(flags); QRect desktop = KGlobalSettings::desktopGeometry(dialog); bool usingSqueezedTextLabel = false; if (messageLabel->sizeHint().width() > desktop.width() * 0.5) { // enable automatic wrapping of messages which are longer than 50% of screen width messageLabel->setWordWrap(true); // display a text widget with scrollbar if still too wide usingSqueezedTextLabel = messageLabel->sizeHint().width() > desktop.width() * 0.85; if (usingSqueezedTextLabel) { delete messageLabel; messageLabel = new KSqueezedTextLabel(text, mainWidget); messageLabel->setOpenExternalLinks(options & KMessageBox::AllowLink); messageLabel->setTextInteractionFlags(flags); } } QPalette messagePal(messageLabel->palette()); messagePal.setColor(QPalette::Window, Qt::transparent); messageLabel->setPalette(messagePal); bool usingScrollArea=desktop.height() / 3 < messageLabel->sizeHint().height(); if (usingScrollArea) { QScrollArea* messageScrollArea = new QScrollArea(mainWidget); messageScrollArea->setWidget(messageLabel); messageScrollArea->setFrameShape(QFrame::NoFrame); messageScrollArea->setWidgetResizable(true); QPalette scrollPal(messageScrollArea->palette()); scrollPal.setColor(QPalette::Window, Qt::transparent); messageScrollArea->viewport()->setPalette(scrollPal); hLayout->addWidget(messageScrollArea,5); } else hLayout->addWidget(messageLabel,5); const bool usingListWidget=!strlist.isEmpty(); if (usingListWidget) { // enable automatic wrapping since the listwidget has already a good initial width messageLabel->setWordWrap(true); QListWidget *listWidget = new QListWidget(mainWidget); listWidget->addItems(strlist); QStyleOptionViewItem styleOption; styleOption.initFrom(listWidget); QFontMetrics fm(styleOption.font); int w = listWidget->width(); Q_FOREACH(const QString &str, strlist) { w = qMax(w, fm.width(str)); } const int borderWidth = listWidget->width() - listWidget->viewport()->width() + listWidget->verticalScrollBar()->height(); w += borderWidth; if (w > desktop.width() * 0.85) { // limit listWidget size to 85% of screen width w = qRound(desktop.width() * 0.85); } listWidget->setMinimumWidth(w); mainLayout->addWidget(listWidget,usingScrollArea?10:50); listWidget->setSelectionMode(QListWidget::NoSelection); messageLabel->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Minimum); }
// we need to make sure the viewport internal widget is named // qt_scrollarea_viewport, otherwise we're going to confuse Squish // and friends. void tst_QAbstractScrollArea::objectNaming() { QScrollArea area; QCOMPARE(area.viewport()->objectName(), QString("qt_scrollarea_viewport")); }
GpsStatusDialog::GpsStatusDialog(QWidget * parent) : QWidget( parent ), showNmeaData( true ), nmeaLines( 0 ), cntSIVSentence( 1 ) { noOfInstances++; setWindowTitle(tr("GPS Status")); setWindowFlags( Qt::Tool ); setWindowModality( Qt::WindowModal ); setAttribute(Qt::WA_DeleteOnClose); if( _globalMainWindow ) { // Resize the window to the same size as the main window has. That will // completely hide the parent window. resize( _globalMainWindow->size() ); } uTimer = new QTimer( this ); uTimer->setSingleShot( true ); connect( uTimer, SIGNAL(timeout()), this, SLOT(slot_updateGpsMessageDisplay()) ); elevAziDisplay = new GpsElevationAzimuthDisplay(this); snrDisplay = new GpsSnrDisplay(this); nmeaBox = new QLabel; nmeaBox->setObjectName("NmeaBox"); nmeaBox->setTextFormat(Qt::PlainText); nmeaBox->setBackgroundRole( QPalette::Light ); nmeaBox->setAutoFillBackground( true ); nmeaBox->setMargin(5); QFont f = font(); #if defined MAEMO f.setPixelSize(16); #elif ANDROID f.setPointSize(6); #else f.setPixelSize(14); #endif nmeaBox->setFont(f); QScrollArea *nmeaScrollArea = new QScrollArea; nmeaScrollArea->setWidgetResizable( true ); nmeaScrollArea->setWidget(nmeaBox); #ifdef ANDROID // Make the vertical scrollbar bigger for Android QScrollBar* vsb = nmeaScrollArea->verticalScrollBar(); vsb->setStyleSheet( Layout::getCbSbStyle() ); #endif #ifdef QSCROLLER QScroller::grabGesture( nmeaScrollArea->viewport(), QScroller::LeftMouseButtonGesture ); #endif #ifdef QTSCROLLER QtScroller::grabGesture( nmeaScrollArea->viewport(), QtScroller::LeftMouseButtonGesture ); #endif QVBoxLayout* nmeaBoxLayout = new QVBoxLayout; nmeaBoxLayout->setSpacing( 0 ); nmeaBoxLayout->addWidget( nmeaScrollArea ); satSource = new QComboBox; satSource->setToolTip( tr("GPS source filter") ); satSource->addItem( "$GP" ); satSource->addItem( "$BD" ); satSource->addItem( "$GA" ); satSource->addItem( "$GL" ); satSource->addItem( "$GN" ); satSource->addItem( "ALL" ); startStop = new QPushButton( tr("Stop"), this ); save = new QPushButton( tr("Save"), this ); QPushButton* close = new QPushButton( tr("Close"), this ); QVBoxLayout* buttonBox = new QVBoxLayout; buttonBox->addWidget( satSource ); buttonBox->addStretch( 5 ); buttonBox->addWidget( startStop ); buttonBox->addSpacing( 5 ); buttonBox->addWidget( save ); buttonBox->addSpacing( 5 ); buttonBox->addWidget( close ); QHBoxLayout* hBox = new QHBoxLayout; hBox->addWidget(elevAziDisplay, 1); hBox->addWidget(snrDisplay, 2); hBox->addLayout( buttonBox ); QVBoxLayout* topLayout = new QVBoxLayout( this ); topLayout->addLayout( hBox ); topLayout->addLayout( nmeaBoxLayout ); connect( satSource, SIGNAL(currentIndexChanged(int)), SLOT(slot_GpsSourceChanged(int)) ); connect( GpsNmea::gps, SIGNAL(newSentence(const QString&)), this, SLOT(slot_Sentence(const QString&)) ); connect( startStop, SIGNAL(clicked()), this, SLOT(slot_ToggleStartStop()) ); connect( save, SIGNAL(clicked()), this, SLOT(slot_SaveNmeaData()) ); connect( close, SIGNAL(clicked()), this, SLOT(slot_Close()) ); }
SettingsPageInformation::SettingsPageInformation( QWidget *parent ) : QWidget(parent) { setObjectName("SettingsPageInformation"); setWindowFlags( Qt::Tool ); setWindowModality( Qt::WindowModal ); setAttribute(Qt::WA_DeleteOnClose); setWindowTitle( tr("Settings - Information") ); if( parent ) { resize( parent->size() ); } // Layout used by scroll area QHBoxLayout *sal = new QHBoxLayout; // new widget used as container for the dialog layout. QWidget* sw = new QWidget; // Scroll area QScrollArea* sa = new QScrollArea; sa->setWidgetResizable( true ); sa->setFrameStyle( QFrame::NoFrame ); sa->setWidget( sw ); #ifdef QSCROLLER QScroller::grabGesture( sa->viewport(), QScroller::LeftMouseButtonGesture ); #endif #ifdef QTSCROLLER QtScroller::grabGesture( sa->viewport(), QtScroller::LeftMouseButtonGesture ); #endif // Add scroll area to its own layout sal->addWidget( sa ); QHBoxLayout *contentLayout = new QHBoxLayout; setLayout(contentLayout); // Pass scroll area layout to the content layout. contentLayout->addLayout( sal, 10 ); // The parent of the layout is the scroll widget QGridLayout *topLayout = new QGridLayout(sw); topLayout->setHorizontalSpacing(20 * Layout::getIntScaledDensity() ); topLayout->setVerticalSpacing(10 * Layout::getIntScaledDensity() ); int row=0; #ifndef ANDROID QHBoxLayout *hBox = new QHBoxLayout(); QPushButton *soundSelection = new QPushButton( tr("Sound Player"), this ); soundSelection->setToolTip(tr("Select a sound player, use %s if played file is enclosed in command line arguments")); hBox->addWidget(soundSelection); connect(soundSelection, SIGNAL( clicked()), this, SLOT(slot_openToolDialog()) ); Qt::InputMethodHints imh; soundTool = new QLineEdit( this ); imh = (soundTool->inputMethodHints() | Qt::ImhNoPredictiveText); soundTool->setInputMethodHints(imh); connect( soundTool, SIGNAL(returnPressed()), MainWindow::mainWindow(), SLOT(slotCloseSip()) ); hBox->addWidget(soundTool); topLayout->addLayout( hBox, row++, 0, 1, 3 ); topLayout->setRowMinimumHeight( row++, 10 ); #endif topLayout->addWidget(new QLabel(tr("Airfield display time:"), this), row, 0); spinAirfield = createNumEd( this ); topLayout->addWidget( spinAirfield, row, 1 ); row++; topLayout->addWidget(new QLabel(tr("Airspace display time:"), this), row, 0); spinAirspace = createNumEd( this ); topLayout->addWidget( spinAirspace, row, 1 ); row++; topLayout->addWidget(new QLabel(tr("Info display time:"), this), row, 0); spinInfo = createNumEd( this ); topLayout->addWidget( spinInfo, row, 1 ); row++; topLayout->addWidget(new QLabel(tr("Waypoint display time:"), this), row, 0); spinWaypoint = createNumEd( this ); topLayout->addWidget( spinWaypoint, row, 1 ); row++; topLayout->addWidget(new QLabel(tr("Warning display time:"), this), row, 0); spinWarning = createNumEd( this ); topLayout->addWidget( spinWarning, row, 1 ); row++; topLayout->addWidget(new QLabel(tr("Warning suppress time:"), this), row, 0); spinSuppress = new NumberEditor; spinSuppress->setDecimalVisible( false ); spinSuppress->setPmVisible( false ); spinSuppress->setMaxLength(3); spinSuppress->setRange(0, 60); spinSuppress->setSpecialValueText(tr("Off")); spinSuppress->setSuffix( " min" ); spinSuppress->setTip("0...60 min"); QRegExpValidator* eValidator = new QRegExpValidator( QRegExp( "([0-9]{1,2})" ), this ); spinSuppress->setValidator( eValidator ); // Sets a minimum width for the widget int mw = QFontMetrics(font()).width(QString("999 min")) + 10; spinSuppress->setMinimumWidth( mw ); topLayout->addWidget( spinSuppress, row, 1 ); buttonReset = new QPushButton (tr("Defaults"), this); topLayout->addWidget( buttonReset, row, 2, Qt::AlignLeft ); row++; checkAlarmSound = new QCheckBox(tr("Alarm Sound"), this); checkAlarmSound->setObjectName("checkAlarmSound"); checkAlarmSound->setChecked(true); topLayout->addWidget( checkAlarmSound, row, 0 ); checkFlarmAlarms = new QCheckBox(tr("Flarm Alarms"), this); checkFlarmAlarms->setObjectName("checkFlarmAlarms"); checkFlarmAlarms->setChecked(true); topLayout->addWidget( checkFlarmAlarms, row, 1, 1, 2 ); row++; calculateNearestSites = new QCheckBox(tr("Nearest Site Calculator"), this); calculateNearestSites->setObjectName("calcNearest"); calculateNearestSites->setChecked(true); topLayout->addWidget( calculateNearestSites, row, 0 ); inverseInfoDisplay = new QCheckBox(tr("Black Display"), this); inverseInfoDisplay->setObjectName("inverseDisplay"); inverseInfoDisplay->setChecked(false); topLayout->addWidget( inverseInfoDisplay, row, 1, 1, 2 ); row++; topLayout->setRowStretch ( row, 10 ); topLayout->setColumnStretch( 2, 10 ); connect( buttonReset, SIGNAL(clicked()), SLOT(slot_setFactoryDefault()) ); QPushButton *cancel = new QPushButton(this); cancel->setIcon(QIcon(GeneralConfig::instance()->loadPixmap("cancel.png"))); cancel->setIconSize(QSize(Layout::getButtonSize(12), Layout::getButtonSize(12))); cancel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::QSizePolicy::Preferred); QPushButton *ok = new QPushButton(this); ok->setIcon(QIcon(GeneralConfig::instance()->loadPixmap("ok.png"))); ok->setIconSize(QSize(Layout::getButtonSize(12), Layout::getButtonSize(12))); ok->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::QSizePolicy::Preferred); QLabel *titlePix = new QLabel(this); titlePix->setAlignment( Qt::AlignCenter ); titlePix->setPixmap(GeneralConfig::instance()->loadPixmap("setup.png")); connect(ok, SIGNAL(pressed()), this, SLOT(slotAccept())); connect(cancel, SIGNAL(pressed()), this, SLOT(slotReject())); QVBoxLayout *buttonBox = new QVBoxLayout; buttonBox->setSpacing(0); buttonBox->addStretch(2); buttonBox->addWidget(cancel, 1); buttonBox->addSpacing(30); buttonBox->addWidget(ok, 1); buttonBox->addStretch(2); buttonBox->addWidget(titlePix); contentLayout->addLayout(buttonBox); load(); }
WpEditDialog::WpEditDialog(QWidget *parent, Waypoint *wp ) : QWidget( parent ) { setWindowFlags( Qt::Tool ); setWindowModality( Qt::WindowModal ); setAttribute(Qt::WA_DeleteOnClose); if( _globalMainWindow ) { // Resize the window to the same size as the main window has. That will // completely hide the parent window. resize( _globalMainWindow->size() ); } if( wp == 0 ) { setWindowTitle(tr("New Waypoint")); m_oldName = ""; } else { setWindowTitle(tr("Edit Waypoint")); m_oldName = wp->name; } m_wp = wp; QTabWidget* tabWidget = new QTabWidget(this); // Put all pages into a scroll area. Needed by Maemo Qt, if virtual // keyboard is pop up. QScrollArea* pgArea = new QScrollArea( tabWidget ); pgArea->setWidgetResizable( true ); pgArea->setFrameStyle( QFrame::NoFrame ); WpEditDialogPageGeneral *pageG = new WpEditDialogPageGeneral(this); pgArea->setWidget( pageG ); tabWidget->addTab( pgArea, tr("General") ); #ifdef QSCROLLER QScroller::grabGesture( pgArea->viewport(), QScroller::LeftMouseButtonGesture ); #endif #ifdef QTSCROLLER QtScroller::grabGesture( pgArea->viewport(), QtScroller::LeftMouseButtonGesture ); #endif QScrollArea* paArea = new QScrollArea( tabWidget ); paArea->setWidgetResizable( true ); paArea->setFrameStyle( QFrame::NoFrame ); WpEditDialogPageAero *pageA = new WpEditDialogPageAero(this); paArea->setWidget( pageA ); tabWidget->addTab( paArea, tr("Aero") ); #ifdef QSCROLLER QScroller::grabGesture( paArea->viewport(), QScroller::LeftMouseButtonGesture ); #endif #ifdef QTSCROLLER QtScroller::grabGesture( paArea->viewport(), QtScroller::LeftMouseButtonGesture ); #endif QScrollArea* pcArea = new QScrollArea( tabWidget ); pcArea->setWidgetResizable( true ); pcArea->setFrameStyle( QFrame::NoFrame ); m_comment = new QTextEdit(this); m_comment->setWordWrapMode(QTextOption::WordWrap); Qt::InputMethodHints imh = (m_comment->inputMethodHints() | Qt::ImhNoPredictiveText); m_comment->setInputMethodHints(imh); pcArea->setWidget( m_comment ); tabWidget->addTab( pcArea, tr("Comment") ); #ifdef QSCROLLER QScroller::grabGesture( pcArea->viewport(), QScroller::LeftMouseButtonGesture ); #endif #ifdef QTSCROLLER QtScroller::grabGesture( pcArea->viewport(), QtScroller::LeftMouseButtonGesture ); #endif connect(this, SIGNAL(load(Waypoint *)), pageG, SLOT(slot_load(Waypoint *))); connect(this, SIGNAL(load(Waypoint *)), pageA, SLOT(slot_load(Waypoint *))); connect(this, SIGNAL(save(Waypoint *)), pageG, SLOT(slot_save(Waypoint *))); connect(this, SIGNAL(save(Waypoint *)), pageA, SLOT(slot_save(Waypoint *))); // Add ok and cancel buttons QPushButton *cancel = new QPushButton; cancel->setIcon(QIcon(GeneralConfig::instance()->loadPixmap("cancel.png"))); cancel->setIconSize(QSize(Layout::getButtonSize(12), Layout::getButtonSize(12))); cancel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::QSizePolicy::Preferred); QPushButton *ok = new QPushButton; ok->setIcon(QIcon(GeneralConfig::instance()->loadPixmap("ok.png"))); ok->setIconSize(QSize(Layout::getButtonSize(12), Layout::getButtonSize(12))); ok->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::QSizePolicy::Preferred); connect(ok, SIGNAL(clicked()), this, SLOT(accept())); connect(cancel, SIGNAL(clicked()), this, SLOT(close())); QVBoxLayout *buttonBox = new QVBoxLayout; buttonBox->setSpacing(0); buttonBox->addStretch(2); buttonBox->addWidget(cancel, 1); buttonBox->addSpacing(30); buttonBox->addWidget(ok, 1); buttonBox->addStretch(2); QHBoxLayout *mainLayout = new QHBoxLayout; mainLayout->addWidget(tabWidget); mainLayout->addLayout(buttonBox); setLayout(mainLayout); tabWidget->setCurrentWidget(pageG); // load waypoint data into tabulator widgets loadWaypointData(); }
SettingsPageTask::SettingsPageTask( QWidget *parent) : QWidget( parent ), m_selectedSwitchScheme(0), m_distUnit(Distance::getUnit()), m_startLineValue(0), m_startRingValue(0), m_startSectorInnerRadiusValue(0), m_startSectorOuterRadiusValue(0), m_startSectorAngleValue(0), m_finishLineValue(0), m_finishRingValue(0), m_finishSectorInnerRadiusValue(0), m_finishSectorOuterRadiusValue(0), m_finishSectorAngleValue(0), m_obsCircleRadiusValue(0), m_obsSectorInnerRadiusValue(0), m_obsSectorOuterRadiusValue(0), m_obsSectorAngleValue(0) { setObjectName("SettingsPageTask"); setWindowFlags( Qt::Tool ); setWindowModality( Qt::WindowModal ); setAttribute(Qt::WA_DeleteOnClose); setWindowTitle( tr("Settings - Task") ); if( parent ) { resize( parent->size() ); } // Layout used by scroll area QHBoxLayout *sal = new QHBoxLayout; // new widget used as container for the dialog layout. QWidget* sw = new QWidget; // Scroll area QScrollArea* sa = new QScrollArea; sa->setWidgetResizable( true ); sa->setFrameStyle( QFrame::NoFrame ); sa->setWidget( sw ); #ifdef ANDROID QScrollBar* lvsb = sa->verticalScrollBar(); lvsb->setStyleSheet( Layout::getCbSbStyle() ); #endif #ifdef QSCROLLER QScroller::grabGesture( sa->viewport(), QScroller::LeftMouseButtonGesture ); #endif #ifdef QTSCROLLER QtScroller::grabGesture( sa->viewport(), QtScroller::LeftMouseButtonGesture ); #endif // Add scroll area to its own layout sal->addWidget( sa ); QHBoxLayout *contentLayout = new QHBoxLayout(this); // Pass scroll area layout to the content layout. contentLayout->addLayout( sal ); GeneralConfig *conf = GeneralConfig::instance(); int row = 0; QGridLayout *topLayout = new QGridLayout(sw); //contentLayout->addLayout(topLayout); topLayout->setMargin(10); topLayout->setSpacing(20); topLayout->setColumnStretch( 3, 5 ); //--------------------------------------------------------------- QGroupBox *ssBox = new QGroupBox( tr("Switch Scheme"), this ); topLayout->addWidget( ssBox, row, 0 ); ntScheme = new QButtonGroup(this); QRadioButton* nearest = new QRadioButton( tr("Minimum"), this ); QRadioButton* touched = new QRadioButton( tr("Touched"), this ); ntScheme->addButton( nearest, 0 ); ntScheme->addButton( touched, 1 ); m_reportSwitch = new QCheckBox( tr("Report"), this ); QVBoxLayout* vbox = new QVBoxLayout; vbox->addWidget( nearest ); vbox->addWidget( touched ); vbox->addWidget( m_reportSwitch ); vbox->addStretch(1); ssBox->setLayout(vbox); nearest->setEnabled(true); touched->setEnabled(true); touched->setChecked(true); // set active button as selected m_selectedSwitchScheme = (int) conf->getActiveTaskSwitchScheme(); if( ntScheme->button(m_selectedSwitchScheme) ) { ntScheme->button(m_selectedSwitchScheme)->setChecked(true); } connect( ntScheme, SIGNAL(buttonClicked(int)), this, SLOT(slot_buttonPressedNT(int)) ); //-------------------------------------------------------------- // as next shape group is added QGroupBox* shapeGroup = new QGroupBox( tr("Shape"), this ); topLayout->addWidget( shapeGroup, row, 1 ); QGridLayout *gBox = new QGridLayout; shapeGroup->setLayout(gBox); m_drawShape = new QCheckBox( tr("Draw"), this ); gBox->addWidget(m_drawShape, 0, 0 ); m_fillShape = new QCheckBox( tr("Fill"), this ); gBox->addWidget(m_fillShape, 1, 0 ); gBox->setColumnStretch( 2, 5 ); connect( m_fillShape, SIGNAL(stateChanged(int)), SLOT(slot_fillShapeStateChanged(int)) ); m_transShape = new NumberEditor( this ); m_transShape->setDecimalVisible( false ); m_transShape->setPmVisible( false ); m_transShape->setMaxLength(3); m_transShape->setSuffix( " %" ); m_transShape->setRange( 0, 100 ); m_transShape->setTip(tr("Opacity ") + "0...100"); m_transShape->setValue( 0 ); QRegExpValidator* eValidator = new QRegExpValidator( QRegExp( "(0|[1-9][0-9]{0,2})" ), this ); m_transShape->setValidator( eValidator ); // Sets a minimum width for the widget int mw1 = QFontMetrics(font()).width("100 %") + 10; m_transShape->setMinimumWidth( mw1 ); gBox->addWidget(m_transShape, 1, 1 ); m_drawShape->setChecked( conf->getTaskDrawShape() ); m_fillShape->setChecked( conf->getTaskFillShape() ); //-------------------------------------------------------------- // as next auto zoom group is added QGroupBox* zoomGroup = new QGroupBox( tr("Zoom"), this ); topLayout->addWidget( zoomGroup, row, 2 ); QVBoxLayout *zBox = new QVBoxLayout; zoomGroup->setLayout(zBox); m_autoZoom = new QCheckBox( tr("Auto"), this ); zBox->addWidget(m_autoZoom); zBox->addStretch(10); m_autoZoom->setChecked( conf->getTaskPointAutoZoom() ); #ifdef ANDROID topLayout->setRowMinimumHeight( ++row, 30 ); #endif row++; //-------------------------------------------------------------- // as next start group is added QGroupBox* startGroup1 = new QGroupBox( tr("Start"), this ); topLayout->addWidget( startGroup1, row, 0 ); QFormLayout *formLayout = new QFormLayout; startGroup1->setLayout(formLayout); m_startLine = createDNE( this ); m_startLine->setTip(tr("Line Length")); formLayout->addRow(tr("Line:"), m_startLine); m_startRing = createDNE( this ); m_startRing->setTip(tr("Circle Radius")); formLayout->addRow(tr("Circle:"), m_startRing); //-------------------------------------------------------------- // as next inner sector group is added QGroupBox* startGroup2 = new QGroupBox( tr("Sectors"), this ); topLayout->addWidget( startGroup2, row, 1 ); formLayout = new QFormLayout; startGroup2->setLayout(formLayout); m_startSectorInnerRadius = createDNE( this ); m_startSectorInnerRadius->setTip(tr("Inner Radius")); formLayout->addRow(tr("Radius 1:"), m_startSectorInnerRadius); m_startSectorOuterRadius = createDNE( this ); m_startSectorOuterRadius->setTip(tr("Outer Radius")); formLayout->addRow(tr("Radius 2:"), m_startSectorOuterRadius); m_startSectorAngle = createNE( this ); m_startSectorAngle->setTip(tr("Angle 1...360")); formLayout->addRow(tr("Angle:"), m_startSectorAngle); //-------------------------------------------------------------- // as next inner scheme group is added QGroupBox* startGroup3 = new QGroupBox( tr("Scheme"), this ); topLayout->addWidget( startGroup3, row, 2 ); formLayout = new QFormLayout; startGroup3->setLayout(formLayout); QRadioButton* circle = new QRadioButton( tr("Circle"), this ); QRadioButton* sector = new QRadioButton( tr("Sector"), this ); QRadioButton* keyhole = new QRadioButton( tr("Keyhole"), this ); QRadioButton* line = new QRadioButton( tr("Line"), this ); startScheme = new QButtonGroup(this); startScheme->addButton( circle, GeneralConfig::Circle ); startScheme->addButton( sector, GeneralConfig::Sector ); startScheme->addButton( keyhole, GeneralConfig::Keyhole ); startScheme->addButton( line, GeneralConfig::Line ); formLayout->addWidget( circle ); formLayout->addWidget( sector ); formLayout->addWidget( keyhole ); formLayout->addWidget( line ); circle->setEnabled(true); circle->setChecked(false); sector->setEnabled(true); sector->setChecked(false); keyhole->setEnabled(true); keyhole->setChecked(false); line->setEnabled(true); line->setChecked(false); // set active button as selected m_selectedStartScheme = (int) conf->getActiveTaskStartScheme(); if( startScheme->button(m_selectedStartScheme) ) { startScheme->button(m_selectedStartScheme)->setChecked(true); } #ifdef ANDROID topLayout->setRowMinimumHeight( ++row, 30 ); #endif row++; //-------------------------------------------------------------- // as next finish group is added QGroupBox* finishGroup1 = new QGroupBox( tr("Finish"), this ); topLayout->addWidget( finishGroup1, row, 0 ); formLayout = new QFormLayout; finishGroup1->setLayout(formLayout); m_finishLine = createDNE( this ); m_finishLine->setTip(tr("Line Length")); formLayout->addRow(tr("Line:"), m_finishLine); m_finishRing = createDNE( this ); m_finishRing->setTip(tr("Circle Radius")); formLayout->addRow(tr("Circle"), m_finishRing); //-------------------------------------------------------------- // as next inner sector group is added QGroupBox* finishGroup2 = new QGroupBox( tr("Sectors"), this ); topLayout->addWidget( finishGroup2, row, 1 ); formLayout = new QFormLayout; finishGroup2->setLayout(formLayout); m_finishSectorInnerRadius = createDNE( this ); m_finishSectorInnerRadius->setTip(tr("Inner Radius")); formLayout->addRow(tr("Radius 1:"), m_finishSectorInnerRadius); m_finishSectorOuterRadius = createDNE( this ); m_finishSectorOuterRadius->setTip(tr("Outer Radius")); formLayout->addRow(tr("Radius 2:"), m_finishSectorOuterRadius); m_finishSectorAngle = createNE( this ); m_finishSectorAngle->setTip(tr("Angle 1...360")); formLayout->addRow(tr("Angle:"), m_finishSectorAngle); //-------------------------------------------------------------- // as next inner scheme group is added QGroupBox* finishGroup3 = new QGroupBox( tr("Scheme"), this ); topLayout->addWidget( finishGroup3, row, 2 ); formLayout = new QFormLayout; finishGroup3->setLayout(formLayout); circle = new QRadioButton( tr("Circle"), this ); sector = new QRadioButton( tr("Sector"), this ); keyhole = new QRadioButton( tr("Keyhole"), this ); line = new QRadioButton( tr("Line"), this ); finishScheme = new QButtonGroup(this); finishScheme->addButton( circle, GeneralConfig::Circle ); finishScheme->addButton( sector, GeneralConfig::Sector ); finishScheme->addButton( keyhole, GeneralConfig::Keyhole ); finishScheme->addButton( line, GeneralConfig::Line ); formLayout->addWidget( circle ); formLayout->addWidget( sector ); formLayout->addWidget( keyhole ); formLayout->addWidget( line ); circle->setEnabled(true); circle->setChecked(false); sector->setEnabled(true); sector->setChecked(false); keyhole->setEnabled(true); keyhole->setChecked(false); line->setEnabled(true); line->setChecked(false); // set active button as selected m_selectedFinishScheme = (int) conf->getActiveTaskFinishScheme(); if( finishScheme->button(m_selectedFinishScheme) ) { finishScheme->button(m_selectedFinishScheme)->setChecked(true); } #ifdef ANDROID topLayout->setRowMinimumHeight( ++row, 30 ); #endif row++; //-------------------------------------------------------------- // as next observation zone is added QGroupBox* obZoneGroup1 = new QGroupBox( tr("Observation"), this ); topLayout->addWidget( obZoneGroup1, row, 0 ); formLayout = new QFormLayout; obZoneGroup1->setLayout(formLayout); m_obsCircleRadius = createDNE( this ); m_obsCircleRadius->setTip(tr("Circle Radius")); formLayout->addRow(tr("Circle:"), m_obsCircleRadius); //-------------------------------------------------------------- // as next inner sector group is added QGroupBox* obZoneGroup2 = new QGroupBox( tr("Sectors"), this ); topLayout->addWidget( obZoneGroup2, row, 1 ); formLayout = new QFormLayout; obZoneGroup2->setLayout(formLayout); m_obsSectorInnerRadius = createDNE( this ); m_obsSectorInnerRadius->setTip(tr("Inner Radius")); formLayout->addRow(tr("Radius 1:"), m_obsSectorInnerRadius); m_obsSectorOuterRadius = createDNE( this ); m_obsSectorOuterRadius->setTip(tr("Outer Radius")); formLayout->addRow(tr("Radius 2:"), m_obsSectorOuterRadius); m_obsSectorAngle = createNE( this ); m_obsSectorAngle->setTip(tr("Angle 1...360")); formLayout->addRow(tr("Angle:"), m_obsSectorAngle); //-------------------------------------------------------------- // as next inner observer scheme group is added QGroupBox* obZoneGroup3 = new QGroupBox( tr("Scheme"), this ); topLayout->addWidget( obZoneGroup3, row, 2 ); formLayout = new QFormLayout; obZoneGroup3->setLayout(formLayout); circle = new QRadioButton( tr("Circle"), this ); sector = new QRadioButton( tr("Sector"), this ); keyhole = new QRadioButton( tr("Keyhole"), this ); // no line for observer area obsScheme = new QButtonGroup(this); obsScheme->addButton( circle, GeneralConfig::Circle ); obsScheme->addButton( sector, GeneralConfig::Sector ); obsScheme->addButton( keyhole, GeneralConfig::Keyhole ); formLayout->addWidget( circle ); formLayout->addWidget( sector ); formLayout->addWidget( keyhole ); circle->setEnabled(true); circle->setChecked(false); sector->setEnabled(true); sector->setChecked(false); keyhole->setEnabled(true); keyhole->setChecked(false); // set active button as selected m_selectedObsScheme = (int) conf->getActiveTaskObsScheme(); if( obsScheme->button(m_selectedObsScheme) ) { obsScheme->button(m_selectedObsScheme)->setChecked(true); } //-------------------------------------------------------------- // Connect sector check controls. connect( m_startSectorOuterRadius, SIGNAL(numberEdited(const QString&)), this, SLOT(slot_outerSectorStartChanged(const QString&)) ); connect( m_finishSectorOuterRadius, SIGNAL(numberEdited(const QString&)), this, SLOT(slot_outerSectorFinishChanged(const QString&)) ); connect( m_obsSectorOuterRadius, SIGNAL(numberEdited(const QString&)), this, SLOT(slot_outerSectorObsChanged(const QString&)) ); connect( startScheme, SIGNAL(buttonClicked(int)), this, SLOT(slot_buttonPressedSS(int)) ); connect( finishScheme, SIGNAL(buttonClicked(int)), this, SLOT(slot_buttonPressedFS(int)) ); connect( obsScheme, SIGNAL(buttonClicked(int)), this, SLOT(slot_buttonPressedOS(int)) ); QPushButton *cancel = new QPushButton(this); cancel->setIcon(QIcon(GeneralConfig::instance()->loadPixmap("cancel.png"))); cancel->setIconSize(QSize(Layout::getButtonSize(12), Layout::getButtonSize(12))); cancel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::QSizePolicy::Preferred); QPushButton *ok = new QPushButton(this); ok->setIcon(QIcon(GeneralConfig::instance()->loadPixmap("ok.png"))); ok->setIconSize(QSize(Layout::getButtonSize(12), Layout::getButtonSize(12))); ok->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::QSizePolicy::Preferred); QLabel *titlePix = new QLabel(this); titlePix->setAlignment( Qt::AlignCenter ); titlePix->setPixmap(GeneralConfig::instance()->loadPixmap("setup.png")); connect(ok, SIGNAL(pressed()), this, SLOT(slotAccept())); connect(cancel, SIGNAL(pressed()), this, SLOT(slotReject())); QVBoxLayout *buttonBox = new QVBoxLayout; buttonBox->setSpacing(0); buttonBox->addStretch(2); buttonBox->addWidget(cancel, 1); buttonBox->addSpacing(30); buttonBox->addWidget(ok, 1); buttonBox->addStretch(2); buttonBox->addWidget(titlePix); contentLayout->addLayout(buttonBox); load(); }