/*public*/ EnginesTableFrame::EnginesTableFrame(QWidget* parent) : OperationsFrame(tr("Engines Table"), parent) { //super(tr("Engines Table")); // general GUI config setObjectName("EnginesTableFrame"); log = new Logger("EnginesTableFrame"); engineManager = EngineManager::instance(); // labels numEngines = new QLabel(); textEngines = new QLabel(); textSep1 = new QLabel(" "); f = NULL; setStatusBar(new QStatusBar()); statusBar()->setSizeGripEnabled(true); // radio buttons sortByNumber = new QRadioButton(tr("Number")); sortByRoad = new QRadioButton(tr("Road")); sortByModel = new QRadioButton(tr("Model")); sortByConsist = new QRadioButton(tr("Consist")); sortByLocation = new QRadioButton(tr("Location")); sortByDestination = new QRadioButton(tr("Destination")); sortByTrain = new QRadioButton(tr("Train")); sortByMoves = new QRadioButton(tr("Moves")); sortByBuilt = new QRadioButton(tr("Built")); sortByOwner = new QRadioButton(tr("Owner")); sortByValue = new QRadioButton(Setup::getValueLabel()); sortByRfid = new QRadioButton(Setup::getRfidLabel()); sortByLast = new QRadioButton(tr("Last")); QButtonGroup* group = new QButtonGroup(); // major buttons addButton = new QPushButton(tr("Add")); findButton = new QPushButton(tr("Find")); saveButton = new QPushButton(tr("Save")); findEngineTextBox = new JTextField(6); QVBoxLayout* thisLayout; log->debug(tr("getContentPane returned %1").arg(getContentPane()->objectName())); getContentPane()->setLayout(thisLayout = new QVBoxLayout); //(getContentPane(), BoxLayout.Y_AXIS)); // Set up the jtable in a Scroll Pane.. enginesModel = new EnginesTableModel(); //sorter = new TableSorter(enginesModel); sorter = new QSortFilterProxyModel(); sorter->setSourceModel(enginesModel); enginesTable = new JTable(sorter); //sorter.setTableHeader(enginesTable.getTableHeader()); // enginesPane = new JScrollPane(enginesTable); // enginesPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); enginesModel->initTable(enginesTable, this); // load the number of engines and listen for changes numEngines->setText(QString::number(engineManager->getNumEntries())); //engineManager.addPropertyChangeListener(this); connect(engineManager->pcs, SIGNAL(propertyChange(PropertyChangeEvent*)), this, SLOT(propertyChange(PropertyChangeEvent*))); textEngines->setText(tr("engines")); // Set up the control panel // row 1 QGroupBox* cp1 = new QGroupBox(); //cp1.setBorder(BorderFactory.createTitledBorder(tr("SortBy"))); QString gbStyleSheet = "QGroupBox { border: 2px solid gray; border-radius: 3px;} QGroupBox::title { /*background-color: transparent;*/ subcontrol-position: top left; /* position at the top left*/ padding:0 0px;} "; cp1->setStyleSheet(gbStyleSheet); FlowLayout * cp1Layout = new FlowLayout(cp1); cp1->setTitle(tr("Sort By")); cp1Layout->addWidget(sortByNumber); cp1Layout->addWidget(sortByRoad); cp1Layout->addWidget(sortByModel); cp1Layout->addWidget(sortByConsist); cp1Layout->addWidget(sortByLocation); cp1Layout->addWidget(sortByDestination); cp1Layout->addWidget(sortByTrain); QFrame* movep = new QFrame(); //movep.setBorder(BorderFactory.createTitledBorder("")); FlowLayout * movepLayout = new FlowLayout(movep); movepLayout->addWidget(sortByMoves); movepLayout->addWidget(sortByBuilt); movepLayout->addWidget(sortByOwner); if (Setup::isValueEnabled()) { movepLayout->addWidget(sortByValue); } if (Setup::isRfidEnabled()) { movepLayout->addWidget(sortByRfid); } movepLayout->addWidget(sortByLast); cp1Layout->addWidget(movep); // row 2 QWidget* cp2 = new QWidget(); //cp2.setLayout(new BoxLayout(cp2, BoxLayout.X_AXIS)); QHBoxLayout* cp2Layout = new QHBoxLayout(cp2); QFrame* cp2Add = new QFrame(); //cp2Add.setBorder(BorderFactory.createTitledBorder("")); cp2Add->setFrameShape(QFrame::StyledPanel); cp2Add->setFrameShadow(QFrame::Raised); QHBoxLayout* cp2AddLayout = new QHBoxLayout(cp2Add); cp2AddLayout->addWidget(numEngines); cp2AddLayout->addWidget(textEngines); cp2AddLayout->addWidget(textSep1); cp2AddLayout->addWidget(addButton); cp2Layout->addWidget(cp2Add); QGroupBox* cp2Find = new QGroupBox(); //cp2Find.setBorder(BorderFactory.createTitledBorder("")); cp2Find->setStyleSheet(gbStyleSheet); cp2Find->setTitle(""); FlowLayout* cp2FindLayout = new FlowLayout(cp2Find); findButton->setToolTip(tr("Find locomotive by road number. Asterisk \"*\" = wild card.")); findEngineTextBox->setToolTip(tr("Find locomotive by road number. Asterisk \"*\" = wild card.")); cp2FindLayout->addWidget(findButton); cp2FindLayout->addWidget(findEngineTextBox); cp2Layout->addWidget(cp2Find); QWidget* cp2Save = new QWidget(); //cp2Save.setBorder(BorderFactory.createTitledBorder("")); FlowLayout* cp2SaveLayout = new FlowLayout(cp2Save); cp2SaveLayout->addWidget(saveButton); cp2Layout->addWidget(cp2Save); // place controls in scroll pane QWidget* controlPanel = new QWidget(); //controlPanel.setLayout(new BoxLayout(controlPanel, BoxLayout.Y_AXIS)); QVBoxLayout* controlPanelLayout = new QVBoxLayout(controlPanel); controlPanelLayout->addWidget(cp1); controlPanelLayout->addWidget(cp2); // some tool tips sortByLast->setToolTip(tr("Last Moved")); QScrollArea* controlPane = new QScrollArea(); controlPane->setWidget(controlPanel); controlPane->setWidgetResizable(true); thisLayout->addWidget(/*enginesPane*/enginesTable); thisLayout->addWidget(controlPane); // setup buttons addButtonAction(addButton); addButtonAction(findButton); addButtonAction(saveButton); sortByNumber->setChecked(true); addRadioButtonAction(sortByNumber); addRadioButtonAction(sortByRoad); addRadioButtonAction(sortByModel); addRadioButtonAction(sortByConsist); addRadioButtonAction(sortByLocation); addRadioButtonAction(sortByDestination); addRadioButtonAction(sortByTrain); addRadioButtonAction(sortByMoves); addRadioButtonAction(sortByBuilt); addRadioButtonAction(sortByOwner); addRadioButtonAction(sortByValue); addRadioButtonAction(sortByRfid); addRadioButtonAction(sortByLast); group->addButton(sortByNumber); group->addButton(sortByRoad); group->addButton(sortByModel); group->addButton(sortByConsist); group->addButton(sortByLocation); group->addButton(sortByDestination); group->addButton(sortByTrain); group->addButton(sortByMoves); group->addButton(sortByBuilt); group->addButton(sortByOwner); group->addButton(sortByValue); group->addButton(sortByRfid); group->addButton(sortByLast); // build menu QMenuBar* menuBar = new QMenuBar(); QMenu* toolMenu = new QMenu(tr("Tools")); toolMenu->addMenu(new EngineRosterMenu(tr("Engine Roster"), EngineRosterMenu::MAINMENU, this)); // toolMenu.add(new NceConsistEngineAction(tr("MenuItemNceSync"), this)); menuBar->addMenu(toolMenu); menuBar->addMenu(new OperationsMenu()); setMenuBar(menuBar); addHelpMenu("package.jmri.jmrit.operations.Operations_Locomotives", true); // NOI18N initMinimumSize(); //addHorizontalScrollBarKludgeFix(controlPane, controlPanel); // create ShutDownTasks createShutDownTask(); }
CConfCore::CConfCore( const char *sDev, const char *sName, const char *sAon, int nMixPlata, int nMaxActivePorts, int nPartys, QWidget *parent ) : QGroupBox(parent) { m_pOwner = qobject_cast<CConfSMPClient*>(parent); if(!m_pOwner) QCoreApplication::exit(EXIT_FAILURE); QTextCodec *codec = QTextCodec::codecForName("Windows-1251"); QString name = codec->toUnicode(sName); if(name.isEmpty()) name = QString::number(m_pOwner->pOwner()->m_nVirtLink); QString title; title = name; title += '@'; QString connected = m_pOwner->pOwner()->m_sHost; if(m_pOwner->pOwner()->m_nPort != 10011) { connected += ':'; connected += QString::number(m_pOwner->pOwner()->m_nPort); } title += connected; title += " ("; title += sDev; title += ')'; setAlignment(Qt::AlignHCenter); setTitle(title); QString tooltip; tooltip += tr("Название"); tooltip += ": "; tooltip += name; tooltip += '\n'; tooltip += tr("Номер"); tooltip += ": "; tooltip += sAon; tooltip += '\n'; tooltip += tr("Подключен"); tooltip += ": "; tooltip += connected; tooltip += '\n'; tooltip += tr("Слот"); tooltip += ": "; tooltip += QString::number(m_pOwner->pOwner()->m_nVirtLink - 768); tooltip += '\n'; tooltip += tr("Плата"); tooltip += ": "; tooltip += QString::number(nMixPlata); tooltip += '\n'; tooltip += tr("Максимум активных"); tooltip += ": "; tooltip += QString::number(nMaxActivePorts); setToolTip(tooltip); m_nMaxActivePorts = nMaxActivePorts; #ifdef ANDROID FlowLayout* pLayout = new FlowLayout(6, 10, 7); #else FlowLayout* pLayout = new FlowLayout(8, 8, 6); #endif for(int i = 0; i < nPartys; i++) { CConfParty* party = new CConfParty(this); m_pPartys.push_back(party); pLayout->addWidget(party); } QVBoxLayout* pTopLayout = new QVBoxLayout; QScrollArea* scrl = new QScrollArea(); #ifdef ANDROID QScroller::grabGesture(scrl, QScroller::LeftMouseButtonGesture); QScroller* s = QScroller::scroller(scrl); QScrollerProperties p = s->scrollerProperties(); p.setScrollMetric(QScrollerProperties::HorizontalOvershootPolicy, QScrollerProperties::OvershootAlwaysOff); p.setScrollMetric(QScrollerProperties::VerticalOvershootPolicy, QScrollerProperties::OvershootAlwaysOff); p.setScrollMetric(QScrollerProperties::OvershootDragDistanceFactor, 0); p.setScrollMetric(QScrollerProperties::OvershootScrollDistanceFactor, 0); //p.setScrollMetric(QScrollerProperties::OvershootDragResistanceFactor, 0.9); //p.setScrollMetric(QScrollerProperties::DragStartDistance, 0.001 ); //p.setScrollMetric(QScrollerProperties::ScrollingCurve, QEasingCurve::Linear ); //p.setScrollMetric(QScrollerProperties::AxisLockThreshold, 0.9); //Does this help? //p.setScrollMetric(QScrollerProperties::SnapTime, 1); //p.setScrollMetric(QScrollerProperties::SnapPositionRatio, 1); //p.setScrollMetric(QScrollerProperties::AcceleratingFlickSpeedupFactor, 2.5); //p.setScrollMetric(QScrollerProperties::AcceleratingFlickMaximumTime, 1.25); s->setScrollerProperties(p); #endif QWidget* wgt = new QWidget(); scrl->setWidget(wgt); scrl->setWidgetResizable(true); wgt->setLayout(pLayout); pTopLayout->addWidget(scrl); m_pBtnGather = new QPushButton(tr("Собрать всех")); m_pBtnGather->setIcon(m_pOwner->pOwner()->pix_gather); connect(m_pBtnGather, SIGNAL(clicked()), SLOT(slotGatherClicked())); m_pBtnGather->setToolTip(tr("Вызвать всех участников конференции")); m_pBtnDestroy = new QPushButton(tr("Отбить всех")); m_pBtnDestroy->setIcon(m_pOwner->pOwner()->pix_call_down); connect(m_pBtnDestroy, SIGNAL(clicked()), SLOT(slotDestroyClicked())); m_pBtnDestroy->setToolTip(tr("Отбить всех участников конференции")); m_pBtnReconnect = new QPushButton(tr("Обновить соединение")); m_pBtnReconnect->setIcon(m_pOwner->pOwner()->pix_connection); connect(m_pBtnReconnect, SIGNAL(clicked()), SLOT(slotReconnectClicked())); m_pBtnReconnect->setToolTip(tr("Обновить соединение с АТС")); QHBoxLayout* pLayoutH = new QHBoxLayout; pLayoutH->addWidget(m_pBtnGather); pLayoutH->addWidget(m_pBtnDestroy); pLayoutH->addWidget(m_pBtnReconnect); pTopLayout->addLayout(pLayoutH); pTopLayout->setMargin(4); setLayout(pTopLayout); }
CaptureDialog::CaptureDialog(ICaptureContext &ctx, OnCaptureMethod captureCallback, OnInjectMethod injectCallback, MainWindow *main, QWidget *parent) : QFrame(parent), ui(new Ui::CaptureDialog), m_Ctx(ctx), m_Main(main) { ui->setupUi(this); ui->exePath->setFont(Formatter::PreferredFont()); ui->workDirPath->setFont(Formatter::PreferredFont()); ui->cmdline->setFont(Formatter::PreferredFont()); ui->processList->setFont(Formatter::PreferredFont()); // setup FlowLayout for options group { QLayout *oldLayout = ui->optionsGroup->layout(); QObjectList options = ui->optionsGroup->children(); options.removeOne((QObject *)oldLayout); delete oldLayout; FlowLayout *optionsFlow = new FlowLayout(ui->optionsGroup, -1, 3, 3); optionsFlow->setFixedGrid(true); for(QObject *o : options) optionsFlow->addWidget(qobject_cast<QWidget *>(o)); ui->optionsGroup->setLayout(optionsFlow); } ui->envVar->setEnabled(false); m_ProcessModel = new QStandardItemModel(0, 3, this); m_ProcessModel->setHeaderData(0, Qt::Horizontal, tr("Name")); m_ProcessModel->setHeaderData(1, Qt::Horizontal, tr("PID")); m_ProcessModel->setHeaderData(2, Qt::Horizontal, tr("Window Title")); QSortFilterProxyModel *proxy = new QSortFilterProxyModel(this); proxy->setSourceModel(m_ProcessModel); // filter on all columns proxy->setFilterKeyColumn(-1); // allow updating the underlying model proxy->setDynamicSortFilter(true); // use case-insensitive filtering proxy->setFilterCaseSensitivity(Qt::CaseInsensitive); ui->processList->setModel(proxy); ui->processList->setAlternatingRowColors(true); // sort by PID by default ui->processList->sortByColumn(1, Qt::AscendingOrder); // Set up warning for host layer config initWarning(ui->vulkanLayerWarn); ui->vulkanLayerWarn->setVisible(RENDERDOC_NeedVulkanLayerRegistration(NULL, NULL, NULL)); QObject::connect(ui->vulkanLayerWarn, &RDLabel::clicked, this, &CaptureDialog::vulkanLayerWarn_mouseClick); // Set up scanning for Android apps initWarning(ui->androidScan); // Set up warning for Android apps initWarning(ui->androidWarn); QObject::connect(ui->androidWarn, &RDLabel::clicked, this, &CaptureDialog::androidWarn_mouseClick); m_AndroidFlags = AndroidFlags::NoFlags; m_CaptureCallback = captureCallback; m_InjectCallback = injectCallback; SetSettings(CaptureSettings()); UpdateGlobalHook(); }