static BOOL onWM_COMMAND(uiControl *c, HWND hwnd, WORD code, LRESULT *lResult) { uiColorButton *b = uiColorButton(c); HWND parent; struct colorDialogRGBA rgba; if (code != BN_CLICKED) return FALSE; parent = GetAncestor(b->hwnd, GA_ROOT); // TODO didn't we have a function for this rgba.r = b->r; rgba.g = b->g; rgba.b = b->b; rgba.a = b->a; if (showColorDialog(parent, &rgba)) { b->r = rgba.r; b->g = rgba.g; b->b = rgba.b; b->a = rgba.a; invalidateRect(b->hwnd, NULL, TRUE); (*(b->onChanged))(b, b->onChangedData); } *lResult = 0; return TRUE; }
bool ColorMapEditor::eventFilter(QObject *object, QEvent *e) { if (e->type() == QEvent::MouseMove && object == table->viewport()) { const QMouseEvent *me = (const QMouseEvent *)e; QPoint pos = table->viewport()->mapToParent(me->pos()); int row = table->rowAt(pos.y() - table->horizontalHeader()->height()); if (table->columnAt(pos.x()) == 1 && row >= 0 && row < table->rowCount()) setCursor(QCursor(Qt::PointingHandCursor)); else setCursor(QCursor(Qt::ArrowCursor)); return true; } else if (e->type() == QEvent::Leave && object == table->viewport()) { setCursor(QCursor(Qt::ArrowCursor)); return true; } else if (e->type() == QEvent::KeyPress && object == table) { QKeyEvent *ke = (QKeyEvent *)e; if (ke->key() == Qt::Key_Return && table->currentColumn() == 1) { showColorDialog(table->currentRow(), 1); return true; } return false; } return QObject::eventFilter(object, e); }
void BtColorWidget::mouseReleaseEvent(QMouseEvent* event) { if (event->button() == Qt::LeftButton) { event->accept(); showColorDialog(); return; } }
/** * Activates all action buttons. */ void FotoLab::activateActions() { connect(ui.actionClose, SIGNAL(triggered()), qApp, SLOT(quit())); connect(ui.actionOpen, SIGNAL(triggered()), this, SLOT(openImage())); connect(ui.actionReload, SIGNAL(triggered()), this, SLOT(reloadImageData())); connect(ui.actionSaveAs, SIGNAL(triggered()), this, SLOT(saveImage())); connect(ui.actionAreaColor, SIGNAL(triggered()), this, SLOT(showColorDialog())); connect(ui.actionFillArea, SIGNAL(triggered()), ui.graphicsView, SLOT(fillArea())); connect(ui.actionCut, SIGNAL(triggered()), this, SLOT(cutArea())); connect(ui.actionEdges, SIGNAL(triggered()), this, SLOT(proposeEdges())); connect(ui.actionLines, SIGNAL(triggered()), this, SLOT(proposeLines())); connect(ui.actionDrawArea, SIGNAL(triggered()), ui.graphicsView, SLOT(switchDrawing())); // connect(ui.actionProcess, SIGNAL(triggered()), ui.graphicsView, SLOT(processErase())); connect(ui.actionProcess, SIGNAL(triggered()), ui.graphicsView, SLOT(processShowEdges())); connect(ui.actionProperties, SIGNAL(triggered()), this, SLOT(showProperties())); connect(ui.actionHelpAbout, SIGNAL(triggered()), this, SLOT(showHelpAbout())); // processShowEdges connect(ui.actionZoomIn, SIGNAL(triggered()), ui.graphicsView, SLOT(zoomIn())); connect(ui.actionZoomOut, SIGNAL(triggered()), ui.graphicsView, SLOT(zoomOut())); connect(ui.actionZoomNormal, SIGNAL(triggered()), ui.graphicsView, SLOT(zoomNormal())); connect(ui.actionAboutQt, SIGNAL(triggered()), qApp, SLOT(aboutQt())); connect(&tlowSpin, SIGNAL(valueChanged(double)), this, SLOT(validateLowTreshold(double))); connect(&thighSpin, SIGNAL(valueChanged(double)), this, SLOT(validateHighTreshold(double))); }
QgsColorButtonV2::QgsColorButtonV2( QWidget *parent, QString cdt, QColorDialog::ColorDialogOptions cdo, QgsColorSchemeRegistry* registry ) : QToolButton( parent ) , mColorDialogTitle( cdt.isEmpty() ? tr( "Select Color" ) : cdt ) , mColor( Qt::black ) , mDefaultColor( QColor() ) //default to invalid color , mColorDialogOptions( cdo ) , mAcceptLiveUpdates( true ) , mColorSet( false ) , mShowNoColorOption( false ) , mNoColorString( tr( "No color" ) ) , mPickingColor( false ) , mMenu( 0 ) { //if a color scheme registry was specified, use it, otherwise use the global instance mColorSchemeRegistry = registry ? registry : QgsColorSchemeRegistry::instance(); setAcceptDrops( true ); setMinimumSize( QSize( 24, 16 ) ); connect( this, SIGNAL( clicked() ), this, SLOT( showColorDialog() ) ); //setup dropdown menu mMenu = new QMenu( this ); connect( mMenu, SIGNAL( aboutToShow() ), this, SLOT( prepareMenu() ) ); setMenu( mMenu ); setPopupMode( QToolButton::MenuButtonPopup ); }
ConfigAppearanceWidget::ConfigAppearanceWidget(QWidget *parent) : QWidget(parent) { m_itemMargin = 10; ui.setupUi(this); QButtonGroup *buttonGroup = new QButtonGroup(this); buttonGroup->addButton(ui.standardAppearanceCheck); buttonGroup->addButton(ui.customAppearanceCheck); buttonGroup->setExclusive(true); connect(buttonGroup, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(toggleCustom())); QPalette palette = ui.itemTable->palette(); QColor highlightBackgroundColor(QApplication::style()->standardPalette().color(QPalette::Normal, QPalette::AlternateBase)); if (highlightBackgroundColor == QApplication::style()->standardPalette().color(QPalette::Normal, QPalette::Base)) highlightBackgroundColor = highlightBackgroundColor.darker(110); palette.setColor(QPalette::Normal, QPalette::Highlight, highlightBackgroundColor); palette.setColor(QPalette::Normal, QPalette::HighlightedText, QPalette::Text); palette.setColor(QPalette::Inactive, QPalette::Highlight, highlightBackgroundColor); palette.setColor(QPalette::Inactive, QPalette::HighlightedText, QPalette::Text); palette.setColor(QPalette::Disabled, QPalette::Highlight, highlightBackgroundColor); ui.itemTable->setPalette(palette); m_itemHighlighted = -1; connect(ui.itemTable, SIGNAL(currentItemChanged(QTableWidgetItem*,QTableWidgetItem*)), this, SLOT(setItemHighlighted(QTableWidgetItem*))); connect(ui.fontButton, SIGNAL(clicked()), this, SLOT(showFontDialog())); connect(ui.colorButton, SIGNAL(clicked()), this, SLOT(showColorDialog())); }
void DeclarativeSettingsPageImpl::addColorField(const QString &key, const DeclarativeSettingsPage::Entry &entry) { QToolButton * control = new QToolButton(pClass_); QColor defColor(Qt::black); if (entry.defaultValue.isValid()) { defColor = QColor(entry.defaultValue.toString()); } setButtonColor(control, defColor); connect(control, SIGNAL(clicked()), this, SLOT(showColorDialog())); widgets_[key] = control; addField(entry.title, control); }
void KnobGuiColor::addExtraWidgets(QHBoxLayout* containerLayout) { containerLayout->addSpacing( TO_DPIX(10) ); KnobColorPtr knob = _knob.lock(); if (!knob) { return; } KnobGuiPtr knobUI = getKnobGui(); if (!knobUI) { return; } _colorLabel = new ColorPickerLabel( _useSimplifiedUI, knobUI->getLayoutType(), this, containerLayout->widget() ); if (!_useSimplifiedUI && knobUI->getLayoutType() != KnobGui::eKnobLayoutTypeTableItemWidget) { _colorLabel->setToolTip( NATRON_NAMESPACE::convertFromPlainText(tr("To pick a color on a viewer, click this and then press control + left click on any viewer.\n" "You can also pick the average color of a given rectangle by holding control + shift + left click\n. " "To deselect the picker left click anywhere." "Note that by default %1 converts to linear the color picked\n" "because all the processing pipeline is linear, but you can turn this off in the\n" "preferences panel.").arg( QString::fromUtf8(NATRON_APPLICATION_NAME) ), NATRON_NAMESPACE::WhiteSpaceNormal) ); } QSize medSize( TO_DPIX(NATRON_MEDIUM_BUTTON_SIZE), TO_DPIY(NATRON_MEDIUM_BUTTON_SIZE) ); QSize medIconSize( TO_DPIX(NATRON_MEDIUM_BUTTON_ICON_SIZE), TO_DPIY(NATRON_MEDIUM_BUTTON_ICON_SIZE) ); _colorLabel->setFixedSize(medSize); QObject::connect( _colorLabel, SIGNAL(pickingEnabled(bool)), this, SLOT(onColorLabelPickingEnabled(bool)) ); containerLayout->addWidget(_colorLabel); if (_useSimplifiedUI) { containerLayout->addSpacing( TO_DPIX(5) ); } if (knobUI->getLayoutType() != KnobGui::eKnobLayoutTypeTableItemWidget) { QPixmap buttonPix; appPTR->getIcon(NATRON_PIXMAP_COLORWHEEL, NATRON_MEDIUM_BUTTON_ICON_SIZE, &buttonPix); _colorDialogButton = new Button( QIcon(buttonPix), QString(), containerLayout->widget() ); _colorDialogButton->setFixedSize(medSize); _colorDialogButton->setIconSize(medIconSize); _colorDialogButton->setToolTip( NATRON_NAMESPACE::convertFromPlainText(tr("Open the color dialog."), NATRON_NAMESPACE::WhiteSpaceNormal) ); _colorDialogButton->setFocusPolicy(Qt::NoFocus); QObject::connect( _colorDialogButton, SIGNAL(clicked()), this, SLOT(showColorDialog()) ); containerLayout->addWidget(_colorDialogButton); } if (_useSimplifiedUI) { setWidgetsVisibleInternal(false); KnobGuiWidgets::enableRightClickMenu(getKnobGui(), _colorLabel, DimSpec::all(), getView()); } }
void QgsColorButton::buttonClicked() { if ( linkedProjectColor().isValid() ) { QToolButton::showMenu(); } else { switch ( mBehavior ) { case ShowDialog: showColorDialog(); return; case SignalOnly: emit colorClicked( mColor ); return; } } }
void LVRMainWindow::connectSignalsAndSlots() { QObject::connect(m_actionOpen, SIGNAL(activated()), this, SLOT(loadModel())); QObject::connect(m_actionExport, SIGNAL(activated()), this, SLOT(exportSelectedModel())); QObject::connect(treeWidget, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(showTreeContextMenu(const QPoint&))); QObject::connect(treeWidget, SIGNAL(itemClicked(QTreeWidgetItem*, int)), this, SLOT(restoreSliders(QTreeWidgetItem*, int))); QObject::connect(treeWidget, SIGNAL(itemChanged(QTreeWidgetItem*, int)), this, SLOT(setModelVisibility(QTreeWidgetItem*, int))); QObject::connect(m_actionQuit, SIGNAL(activated()), qApp, SLOT(quit())); QObject::connect(m_actionShowColorDialog, SIGNAL(activated()), this, SLOT(showColorDialog())); QObject::connect(m_actionRenameModelItem, SIGNAL(activated()), this, SLOT(renameModelItem())); QObject::connect(m_actionDeleteModelItem, SIGNAL(activated()), this, SLOT(deleteModelItem())); QObject::connect(m_actionExportModelTransformed, SIGNAL(activated()), this, SLOT(exportSelectedModel())); QObject::connect(m_actionReset_Camera, SIGNAL(activated()), this, SLOT(updateView())); QObject::connect(m_actionStore_Current_View, SIGNAL(activated()), this, SLOT(saveCamera())); QObject::connect(m_actionRecall_Stored_View, SIGNAL(activated()), this, SLOT(loadCamera())); QObject::connect(m_actionCameraPathTool, SIGNAL(activated()), this, SLOT(openCameraPathTool())); QObject::connect(m_actionEstimate_Normals, SIGNAL(activated()), this, SLOT(estimateNormals())); QObject::connect(m_actionMarching_Cubes, SIGNAL(activated()), this, SLOT(reconstructUsingMarchingCubes())); QObject::connect(m_actionPlanar_Marching_Cubes, SIGNAL(activated()), this, SLOT(reconstructUsingPlanarMarchingCubes())); QObject::connect(m_actionExtended_Marching_Cubes, SIGNAL(activated()), this, SLOT(reconstructUsingExtendedMarchingCubes())); QObject::connect(m_actionPlanar_Optimization, SIGNAL(activated()), this, SLOT(optimizePlanes())); QObject::connect(m_actionRemove_Artifacts, SIGNAL(activated()), this, SLOT(removeArtifacts())); QObject::connect(m_actionRemove_Outliers, SIGNAL(activated()), this, SLOT(removeOutliers())); QObject::connect(m_actionMLS_Projection, SIGNAL(activated()), this, SLOT(applyMLSProjection())); QObject::connect(m_actionICP_Using_Manual_Correspondance, SIGNAL(activated()), this, SLOT(manualICP())); QObject::connect(m_menuAbout, SIGNAL(triggered(QAction*)), this, SLOT(showAboutDialog(QAction*))); QObject::connect(m_correspondanceDialog->m_dialog, SIGNAL(accepted()), m_pickingInteractor, SLOT(correspondenceSearchOff())); QObject::connect(m_correspondanceDialog->m_dialog, SIGNAL(accepted()), this, SLOT(alignPointClouds())); QObject::connect(m_correspondanceDialog->m_dialog, SIGNAL(rejected()), m_pickingInteractor, SLOT(correspondenceSearchOff())); QObject::connect(m_correspondanceDialog, SIGNAL(addArrow(LVRVtkArrow*)), this, SLOT(addArrow(LVRVtkArrow*))); QObject::connect(m_correspondanceDialog, SIGNAL(removeArrow(LVRVtkArrow*)), this, SLOT(removeArrow(LVRVtkArrow*))); QObject::connect(m_correspondanceDialog, SIGNAL(disableCorrespondenceSearch()), m_pickingInteractor, SLOT(correspondenceSearchOff())); QObject::connect(m_correspondanceDialog, SIGNAL(enableCorrespondenceSearch()), m_pickingInteractor, SLOT(correspondenceSearchOn())); QObject::connect(m_actionShow_Points, SIGNAL(toggled(bool)), this, SLOT(togglePoints(bool))); QObject::connect(m_actionShow_Normals, SIGNAL(toggled(bool)), this, SLOT(toggleNormals(bool))); QObject::connect(m_actionShow_Mesh, SIGNAL(toggled(bool)), this, SLOT(toggleMeshes(bool))); QObject::connect(m_actionShow_Wireframe, SIGNAL(toggled(bool)), this, SLOT(toggleWireframe(bool))); QObject::connect(m_actionShowBackgroundSettings, SIGNAL(activated()), this, SLOT(showBackgroundDialog())); QObject::connect(m_horizontalSliderPointSize, SIGNAL(valueChanged(int)), this, SLOT(changePointSize(int))); QObject::connect(m_horizontalSliderTransparency, SIGNAL(valueChanged(int)), this, SLOT(changeTransparency(int))); QObject::connect(m_comboBoxShading, SIGNAL(currentIndexChanged(int)), this, SLOT(changeShading(int))); QObject::connect(m_buttonCameraPathTool, SIGNAL(pressed()), this, SLOT(openCameraPathTool())); QObject::connect(m_buttonCreateMesh, SIGNAL(pressed()), this, SLOT(reconstructUsingMarchingCubes())); QObject::connect(m_buttonExportData, SIGNAL(pressed()), this, SLOT(exportSelectedModel())); QObject::connect(m_buttonTransformModel, SIGNAL(pressed()), this, SLOT(showTransformationDialog())); QObject::connect(m_pickingInteractor, SIGNAL(firstPointPicked(double*)),m_correspondanceDialog, SLOT(firstPointPicked(double*))); QObject::connect(m_pickingInteractor, SIGNAL(secondPointPicked(double*)),m_correspondanceDialog, SLOT(secondPointPicked(double*))); QObject::connect(this, SIGNAL(correspondenceDialogOpened()), m_pickingInteractor, SLOT(correspondenceSearchOn())); }
void TransferFunctionPropertyDialog::generateWidget() { vec2 minEditorDims = vec2(255.0f, 100.0f); tfEditorView_ = new TransferFunctionEditorView(tfProperty_); tfProperty_->get().addObserver(tfEditorView_); // put origin to bottom left corner tfEditorView_->scale(1.0, -1.0); tfEditorView_->setAlignment(Qt::AlignLeft | Qt::AlignBottom); tfEditorView_->setMinimumSize(minEditorDims.x, minEditorDims.y); tfEditorView_->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); tfEditorView_->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); tfEditor_ = new TransferFunctionEditor(&tfProperty_->get(), tfEditorView_); connect(tfEditor_, SIGNAL(doubleClick()), this, SLOT(showColorDialog())); connect(tfEditor_, SIGNAL(selectionChanged()), this, SLOT(updateColorWheel())); tfEditorView_->setScene(tfEditor_); zoomVSlider_ = new RangeSliderQt(Qt::Vertical, this); zoomVSlider_->setRange(0, sliderRange_); zoomVSlider_->setMinSeparation(5); // flip slider values to compensate for vertical slider layout zoomVSlider_->setValue(sliderRange_ - static_cast<int>(tfProperty_->getZoomV().y*sliderRange_), sliderRange_ - static_cast<int>(tfProperty_->getZoomV().x*sliderRange_)); connect(zoomVSlider_, SIGNAL(valuesChanged(int, int)), this, SLOT(changeVerticalZoom(int, int))); zoomHSlider_ = new RangeSliderQt(Qt::Horizontal, this); zoomHSlider_->setRange(0, sliderRange_); zoomHSlider_->setMinSeparation(5); zoomHSlider_->setValue(static_cast<int>(tfProperty_->getZoomH().x*sliderRange_), static_cast<int>(tfProperty_->getZoomH().y*sliderRange_)); connect(zoomHSlider_, SIGNAL(valuesChanged(int, int)), this, SLOT(changeHorizontalZoom(int, int))); maskSlider_ = new RangeSliderQt(Qt::Horizontal, this); maskSlider_->setRange(0, sliderRange_); maskSlider_->setValue(static_cast<int>(tfProperty_->getMask().x*sliderRange_), static_cast<int>(tfProperty_->getMask().y*sliderRange_)); connect(maskSlider_, SIGNAL(valuesChanged(int, int)), this, SLOT(changeMask(int, int))); colorWheel_ = new ColorWheel(); connect(colorWheel_, SIGNAL(colorChange(QColor)), this, SLOT(setPointColor(QColor))); btnClearTF_ = new QPushButton("Reset"); connect(btnClearTF_, SIGNAL(clicked()), tfEditor_, SLOT(resetTransferFunction())); btnClearTF_->setStyleSheet(QString("min-width: 30px; padding-left: 7px; padding-right: 7px;")); btnImportTF_ = new QPushButton("Import"); connect(btnImportTF_, SIGNAL(clicked()), this, SLOT(importTransferFunction())); btnImportTF_->setStyleSheet(QString("min-width: 30px; padding-left: 7px; padding-right: 7px;")); btnExportTF_ = new QPushButton("Export"); connect(btnExportTF_, SIGNAL(clicked()), this, SLOT(exportTransferFunction())); btnExportTF_->setStyleSheet(QString("min-width: 30px; padding-left: 7px; padding-right: 7px;")); tfPreview_ = new QLabel(); tfPreview_->setMinimumSize(1,20); QSizePolicy sliderPol = tfPreview_->sizePolicy(); sliderPol.setHorizontalStretch(3); tfPreview_->setSizePolicy(sliderPol); cmbInterpolation_ = new QComboBox(); cmbInterpolation_->addItem("Interpolation: Linear"); //cmbInterpolation_->addItem("Interpolation: Cubic"); // Not implemented... (yet) cmbInterpolation_->setCurrentIndex(tfProperty_->get().getInterpolationType()); connect(cmbInterpolation_, SIGNAL(currentIndexChanged(int)), this, SLOT(switchInterpolationType(int))); chkShowHistogram_ = new QComboBox(); chkShowHistogram_->addItem("Histogram: Off"); chkShowHistogram_->addItem("Histogram: 100%"); chkShowHistogram_->addItem("Histogram: 99%"); chkShowHistogram_->addItem("Histogram: 95%"); chkShowHistogram_->addItem("Histogram: 90%"); chkShowHistogram_->addItem("Histogram: Log"); chkShowHistogram_->setCurrentIndex(tfProperty_->getShowHistogram()); connect(chkShowHistogram_, SIGNAL(currentIndexChanged(int)), this, SLOT(showHistogram(int))); pointMoveMode_ = new QComboBox(); pointMoveMode_->addItem("Point Movement: Free"); pointMoveMode_->addItem("Point Movement: Restrict"); pointMoveMode_->addItem("Point Movement: Push"); pointMoveMode_->setCurrentIndex(0); connect(pointMoveMode_, SIGNAL(currentIndexChanged(int)), this, SLOT(changeMoveMode(int))); colorDialog_ = new QColorDialog(this); colorDialog_->hide(); colorDialog_->setOption(QColorDialog::ShowAlphaChannel, true); colorDialog_->setOption(QColorDialog::NoButtons, true); colorDialog_->setWindowModality(Qt::NonModal); colorDialog_->setWindowTitle(QString::fromStdString(tfProperty_->getDisplayName())); connect(colorDialog_, SIGNAL(currentColorChanged(QColor)), this, SLOT(setPointColorDialog(QColor))); QFrame* leftPanel = new QFrame(this); QGridLayout* leftLayout = new QGridLayout(); leftLayout->setContentsMargins(0, 0, 0, 0); leftLayout->setSpacing(7); leftLayout->addWidget(zoomVSlider_, 0, 0); leftLayout->addWidget(tfEditorView_, 0, 1); leftLayout->addWidget(zoomHSlider_, 1, 1); leftLayout->addWidget(tfPreview_, 2, 1); leftLayout->addWidget(maskSlider_, 3, 1); leftPanel->setLayout(leftLayout); QFrame* rightPanel = new QFrame(this); QVBoxLayout* rightLayout = new QVBoxLayout(); rightLayout->setContentsMargins(0, 0, 0, 0); rightLayout->setSpacing(7); rightLayout->setAlignment(Qt::AlignTop); rightLayout->addWidget(colorWheel_); rightLayout->addWidget(cmbInterpolation_); rightLayout->addWidget(chkShowHistogram_); rightLayout->addWidget(pointMoveMode_); rightLayout->addStretch(3); QHBoxLayout* rowLayout = new QHBoxLayout(); rowLayout->addWidget(btnClearTF_); rowLayout->addWidget(btnImportTF_); rowLayout->addWidget(btnExportTF_); rightLayout->addLayout(rowLayout); rightPanel->setLayout(rightLayout); QWidget* mainPanel = new QWidget(this); QHBoxLayout* mainLayout = new QHBoxLayout(); mainLayout->setContentsMargins(7, 7, 7, 7); mainLayout->setSpacing(7); mainLayout->addWidget(leftPanel); mainLayout->addWidget(rightPanel); mainPanel->setLayout(mainLayout); setWidget(mainPanel); connect(this, SIGNAL(dockLocationChanged(Qt::DockWidgetArea)), this, SLOT(dockLocationChanged(Qt::DockWidgetArea))); initialize(tfProperty_); setFloating(true); setVisible(false); }
Player::Player(QWidget *parent) : QWidget(parent) , videoWidget(0) , coverLabel(0) , slider(0) , colorDialog(0) { //! [create-objs] player = new QMediaPlayer; playlist = new QMediaPlaylist(player); //! [create-objs] connect(player, SIGNAL(durationChanged(qint64)), SLOT(durationChanged(qint64))); connect(player, SIGNAL(positionChanged(qint64)), SLOT(positionChanged(qint64))); connect(player, SIGNAL(metaDataChanged()), SLOT(metaDataChanged())); connect(playlist, SIGNAL(playlistPositionChanged(int)), SLOT(playlistPositionChanged(int))); connect(player, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), this, SLOT(statusChanged(QMediaPlayer::MediaStatus))); connect(player, SIGNAL(bufferStatusChanged(int)), this, SLOT(bufferingProgress(int))); videoWidget = new VideoWidget(player); playlistModel = new PlaylistModel(this); playlistModel->setPlaylist(playlist); playlistView = new QListView; playlistView->setModel(playlistModel); playlistView->setCurrentIndex(playlistModel->index(playlist->currentPosition(), 0)); connect(playlistView, SIGNAL(activated(QModelIndex)), this, SLOT(jump(QModelIndex))); slider = new QSlider(Qt::Horizontal); slider->setRange(0, player->duration() / 1000); connect(slider, SIGNAL(sliderMoved(int)), this, SLOT(seek(int))); QPushButton *openButton = new QPushButton(tr("Open")); connect(openButton, SIGNAL(clicked()), this, SLOT(open())); PlayerControls *controls = new PlayerControls; controls->setState(player->state()); controls->setVolume(player->volume()); controls->setMuted(controls->isMuted()); connect(controls, SIGNAL(play()), player, SLOT(play())); connect(controls, SIGNAL(pause()), player, SLOT(pause())); connect(controls, SIGNAL(stop()), player, SLOT(stop())); connect(controls, SIGNAL(next()), playlist, SLOT(next())); connect(controls, SIGNAL(previous()), playlist, SLOT(previous())); connect(controls, SIGNAL(changeVolume(int)), player, SLOT(setVolume(int))); connect(controls, SIGNAL(changeMuting(bool)), player, SLOT(setMuted(bool))); connect(controls, SIGNAL(changeRate(qreal)), player, SLOT(setPlaybackRate(qreal))); connect(player, SIGNAL(stateChanged(QMediaPlayer::State)), controls, SLOT(setState(QMediaPlayer::State))); connect(player, SIGNAL(volumeChanged(int)), controls, SLOT(setVolume(int))); connect(player, SIGNAL(mutingChanged(bool)), controls, SLOT(setMuted(bool))); QPushButton *fullScreenButton = new QPushButton(tr("FullScreen")); fullScreenButton->setCheckable(true); if (videoWidget != 0) { connect(fullScreenButton, SIGNAL(clicked(bool)), videoWidget, SLOT(setFullScreen(bool))); connect(videoWidget, SIGNAL(fullScreenChanged(bool)), fullScreenButton, SLOT(setChecked(bool))); } else { fullScreenButton->setEnabled(false); } QPushButton *colorButton = new QPushButton(tr("Color Options...")); if (videoWidget) connect(colorButton, SIGNAL(clicked()), this, SLOT(showColorDialog())); else colorButton->setEnabled(false); QBoxLayout *displayLayout = new QHBoxLayout; if (videoWidget) displayLayout->addWidget(videoWidget, 2); else displayLayout->addWidget(coverLabel, 2); displayLayout->addWidget(playlistView); QBoxLayout *controlLayout = new QHBoxLayout; controlLayout->setMargin(0); controlLayout->addWidget(openButton); controlLayout->addStretch(1); controlLayout->addWidget(controls); controlLayout->addStretch(1); controlLayout->addWidget(fullScreenButton); controlLayout->addWidget(colorButton); QBoxLayout *layout = new QVBoxLayout; layout->addLayout(displayLayout); layout->addWidget(slider); layout->addLayout(controlLayout); setLayout(layout); metaDataChanged(); }
ColorButton::ColorButton(const QColor &color, QWidget *parent) : QToolButton(parent) { setColor(color); connect(this, SIGNAL(clicked()), this, SLOT(showColorDialog())); }
Player::Player(QWidget *parent) : QWidget(parent) , videoWidget(0) , coverLabel(0) , slider(0) , colorDialog(0) { player = new QMediaPlayer(this); playlist = new QMediaPlaylist(this); playlist->setMediaObject(player); connect(player, SIGNAL(durationChanged(qint64)), SLOT(durationChanged(qint64))); connect(player, SIGNAL(positionChanged(qint64)), SLOT(positionChanged(qint64))); connect(player, SIGNAL(metaDataChanged()), SLOT(metaDataChanged())); connect(playlist, SIGNAL(currentIndexChanged(int)), SLOT(playlistPositionChanged(int))); connect(player, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), this, SLOT(statusChanged(QMediaPlayer::MediaStatus))); connect(player, SIGNAL(bufferStatusChanged(int)), this, SLOT(bufferingProgress(int))); videoWidget = new VideoWidget; videoWidget->setMediaObject(player); playlistModel = new PlaylistModel(this); playlistModel->setPlaylist(playlist); playlistView = new QListView; playlistView->setModel(playlistModel); playlistView->setCurrentIndex(playlistModel->index(playlist->currentIndex(), 0)); connect(playlistView, SIGNAL(activated(QModelIndex)), this, SLOT(jump(QModelIndex))); playbackModeBox = new QComboBox; playbackModeBox->addItem(tr("Linear"), QVariant::fromValue<QMediaPlaylist::PlaybackMode>(QMediaPlaylist::Linear)); playbackModeBox->addItem(tr("Loop"), QVariant::fromValue<QMediaPlaylist::PlaybackMode>(QMediaPlaylist::Loop)); playbackModeBox->addItem(tr("Random"), QVariant::fromValue<QMediaPlaylist::PlaybackMode>(QMediaPlaylist::Random)); playbackModeBox->addItem(tr("Current Item Once"), QVariant::fromValue<QMediaPlaylist::PlaybackMode>(QMediaPlaylist::CurrentItemOnce)); playbackModeBox->addItem(tr("Current Item In Loop"), QVariant::fromValue<QMediaPlaylist::PlaybackMode>(QMediaPlaylist::CurrentItemInLoop)); playbackModeBox->setCurrentIndex(0); connect(playbackModeBox, SIGNAL(activated(int)), SLOT(updatePlaybackMode())); updatePlaybackMode(); slider = new QSlider(Qt::Horizontal); slider->setRange(0, player->duration() / 1000); connect(slider, SIGNAL(sliderMoved(int)), this, SLOT(seek(int))); QPushButton *openButton = new QPushButton(tr("Open")); connect(openButton, SIGNAL(clicked()), this, SLOT(open())); PlayerControls *controls = new PlayerControls; controls->setState(player->state()); controls->setVolume(player->volume()); controls->setMuted(controls->isMuted()); connect(controls, SIGNAL(play()), player, SLOT(play())); connect(controls, SIGNAL(pause()), player, SLOT(pause())); connect(controls, SIGNAL(stop()), player, SLOT(stop())); connect(controls, SIGNAL(next()), playlist, SLOT(next())); connect(controls, SIGNAL(previous()), this, SLOT(previousClicked())); connect(controls, SIGNAL(changeVolume(int)), player, SLOT(setVolume(int))); connect(controls, SIGNAL(changeMuting(bool)), player, SLOT(setMuted(bool))); connect(controls, SIGNAL(changeRate(qreal)), player, SLOT(setPlaybackRate(qreal))); connect(player, SIGNAL(stateChanged(QMediaPlayer::State)), controls, SLOT(setState(QMediaPlayer::State))); connect(player, SIGNAL(volumeChanged(int)), controls, SLOT(setVolume(int))); connect(player, SIGNAL(mutedChanged(bool)), controls, SLOT(setMuted(bool))); QPushButton *fullScreenButton = new QPushButton(tr("FullScreen")); fullScreenButton->setCheckable(true); if (videoWidget != 0) { connect(fullScreenButton, SIGNAL(clicked(bool)), videoWidget, SLOT(setFullScreen(bool))); connect(videoWidget, SIGNAL(fullScreenChanged(bool)), fullScreenButton, SLOT(setChecked(bool))); } else { fullScreenButton->setEnabled(false); } QPushButton *colorButton = new QPushButton(tr("Color Options...")); if (videoWidget) connect(colorButton, SIGNAL(clicked()), this, SLOT(showColorDialog())); else colorButton->setEnabled(false); QBoxLayout *playlistLayout = new QVBoxLayout; playlistLayout->addWidget(playlistView); playlistLayout->addWidget(playbackModeBox); QBoxLayout *displayLayout = new QHBoxLayout; if (videoWidget) displayLayout->addWidget(videoWidget, 2); else displayLayout->addWidget(coverLabel, 2); displayLayout->addLayout(playlistLayout); QBoxLayout *controlLayout = new QHBoxLayout; controlLayout->setMargin(0); controlLayout->addWidget(openButton); controlLayout->addStretch(1); controlLayout->addWidget(controls); controlLayout->addStretch(1); controlLayout->addWidget(fullScreenButton); controlLayout->addWidget(colorButton); QBoxLayout *layout = new QVBoxLayout; layout->addLayout(displayLayout); layout->addWidget(slider); layout->addLayout(controlLayout); setLayout(layout); metaDataChanged(); QStringList arguments = qApp->arguments(); arguments.removeAt(0); foreach (QString const &argument, arguments) { QFileInfo fileInfo(argument); if (fileInfo.exists()) { QUrl url = QUrl::fromLocalFile(fileInfo.absoluteFilePath()); if (fileInfo.suffix().toLower() == QLatin1String("m3u")) { playlist->load(url); } else playlist->addMedia(url); } else { QUrl url(argument); if (url.isValid()) { playlist->addMedia(url); } } }
Player::Player(QWidget *parent) : QWidget(parent) , videoWidget(0) , coverLabel(0) , slider(0) #ifndef PLAYER_NO_COLOROPTIONS , colorDialog(0) #endif //, ioDevice(0) { //! [create-objs] player = new QMediaPlayer(this); // owned by PlaylistModel //! [create-objs] connect(player, SIGNAL(durationChanged(qint64)), SLOT(durationChanged(qint64))); connect(player, SIGNAL(positionChanged(qint64)), SLOT(positionChanged(qint64))); connect(player, SIGNAL(metaDataChanged()), SLOT(metaDataChanged())); connect(player, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), this, SLOT(statusChanged(QMediaPlayer::MediaStatus))); connect(player, SIGNAL(bufferStatusChanged(int)), this, SLOT(bufferingProgress(int))); connect(player, SIGNAL(videoAvailableChanged(bool)), this, SLOT(videoAvailableChanged(bool))); connect(player, SIGNAL(error(QMediaPlayer::Error)), this, SLOT(displayErrorMessage())); //! [2] videoWidget = new VideoWidget(this); player->setVideoOutput(videoWidget); //! [2] slider = new QSlider(Qt::Horizontal, this); slider->setRange(0, player->duration() / 1000); labelDuration = new QLabel(this); connect(slider, SIGNAL(sliderMoved(int)), this, SLOT(seek(int))); //QPushButton *openButton = new QPushButton(tr("Open"), this); //connect(openButton, SIGNAL(clicked()), this, SLOT(open())); PlayerControls *controls = new PlayerControls(this); controls->setState(player->state()); controls->setVolume(player->volume()); controls->setMuted(controls->isMuted()); connect(controls, SIGNAL(play()), player, SLOT(play())); connect(controls, SIGNAL(pause()), player, SLOT(pause())); connect(controls, SIGNAL(stop()), player, SLOT(stop())); connect(controls, SIGNAL(changeVolume(int)), player, SLOT(setVolume(int))); connect(controls, SIGNAL(changeMuting(bool)), player, SLOT(setMuted(bool))); connect(controls, SIGNAL(changeRate(qreal)), player, SLOT(setPlaybackRate(qreal))); connect(controls, SIGNAL(stop()), videoWidget, SLOT(update())); connect(player, SIGNAL(stateChanged(QMediaPlayer::State)), controls, SLOT(setState(QMediaPlayer::State))); connect(player, SIGNAL(volumeChanged(int)), controls, SLOT(setVolume(int))); connect(player, SIGNAL(mutedChanged(bool)), controls, SLOT(setMuted(bool))); fullScreenButton = new QPushButton(tr("FullScreen"), this); fullScreenButton->setCheckable(true); #ifndef PLAYER_NO_COLOROPTIONS colorButton = new QPushButton(tr("Color Options..."), this); colorButton->setEnabled(false); connect(colorButton, SIGNAL(clicked()), this, SLOT(showColorDialog())); #endif QBoxLayout *displayLayout = new QHBoxLayout; videoWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); displayLayout->addWidget(videoWidget, 2); QBoxLayout *controlLayout = new QHBoxLayout; controlLayout->setMargin(0); //controlLayout->addWidget(openButton); controlLayout->addStretch(1); controlLayout->addWidget(controls); controlLayout->addStretch(1); controlLayout->addWidget(fullScreenButton); #ifndef PLAYER_NO_COLOROPTIONS controlLayout->addWidget(colorButton); #endif QBoxLayout *layout = new QVBoxLayout; layout->addLayout(displayLayout); QHBoxLayout *hLayout = new QHBoxLayout; hLayout->addWidget(slider); hLayout->addWidget(labelDuration); layout->addLayout(hLayout); layout->addLayout(controlLayout); setLayout(layout); if (!player->isAvailable()) { QMessageBox::warning(this, tr("Service not available"), tr("The QMediaPlayer object does not have a valid service.\n"\ "Please check the media service plugins are installed.")); controls->setEnabled(false); //openButton->setEnabled(false); #ifndef PLAYER_NO_COLOROPTIONS colorButton->setEnabled(false); #endif fullScreenButton->setEnabled(false); } metaDataChanged(); }
void SearchWidget::initConnect(){ connect(searchButton, SIGNAL(clicked()), this, SLOT(onSearchClicked())); connect(colorButton, SIGNAL(clicked()), this, SLOT(showColorDialog())); connect(changeButton, SIGNAL(clicked()), this, SLOT(changeType())); }
Player::Player(QWidget *parent) : QWidget(parent) , videoWidget(0) , coverLabel(0) , slider(0) #ifndef PLAYER_NO_COLOROPTIONS , colorDialog(0) #endif { //! [create-objs] player = new QMediaPlayer(this); // owned by PlaylistModel playlist = new QMediaPlaylist(); player->setPlaylist(playlist); //! [create-objs] connect(player, SIGNAL(durationChanged(qint64)), SLOT(durationChanged(qint64))); connect(player, SIGNAL(positionChanged(qint64)), SLOT(positionChanged(qint64))); connect(player, SIGNAL(metaDataChanged()), SLOT(metaDataChanged())); connect(playlist, SIGNAL(currentIndexChanged(int)), SLOT(playlistPositionChanged(int))); connect(player, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), this, SLOT(statusChanged(QMediaPlayer::MediaStatus))); connect(player, SIGNAL(bufferStatusChanged(int)), this, SLOT(bufferingProgress(int))); connect(player, SIGNAL(videoAvailableChanged(bool)), this, SLOT(videoAvailableChanged(bool))); connect(player, SIGNAL(error(QMediaPlayer::Error)), this, SLOT(displayErrorMessage())); //! [2] videoWidget = new VideoWidget(this); player->setVideoOutput(videoWidget); playlistModel = new PlaylistModel(this); playlistModel->setPlaylist(playlist); //! [2] playlistView = new QListView(this); playlistView->setModel(playlistModel); playlistView->setCurrentIndex(playlistModel->index(playlist->currentIndex(), 0)); connect(playlistView, SIGNAL(activated(QModelIndex)), this, SLOT(jump(QModelIndex))); slider = new QSlider(Qt::Horizontal, this); slider->setRange(0, player->duration() / SLIDER_DIVISOR); labelDuration = new QLabel(this); connect(slider, SIGNAL(sliderMoved(int)), this, SLOT(seek(int))); labelHistogram = new QLabel(this); labelHistogram->setText("Histogram:"); histogram = new HistogramWidget(this); QHBoxLayout *histogramLayout = new QHBoxLayout; histogramLayout->addWidget(labelHistogram); histogramLayout->addWidget(histogram, 1); probe = new QVideoProbe(this); connect(probe, SIGNAL(videoFrameProbed(QVideoFrame)), histogram, SLOT(processFrame(QVideoFrame))); probe->setSource(player); QPushButton *openButton = new QPushButton(tr("Open"), this); connect(openButton, SIGNAL(clicked()), this, SLOT(open())); PlayerControls *controls = new PlayerControls(this); controls->setState(player->state()); controls->setVolume(player->volume()); controls->setMuted(controls->isMuted()); connect(controls, SIGNAL(play()), player, SLOT(play())); connect(controls, SIGNAL(pause()), player, SLOT(pause())); connect(controls, SIGNAL(stop()), player, SLOT(stop())); connect(controls, SIGNAL(next()), playlist, SLOT(next())); connect(controls, SIGNAL(previous()), this, SLOT(previousClicked())); connect(controls, SIGNAL(changeVolume(int)), player, SLOT(setVolume(int))); connect(controls, SIGNAL(changeMuting(bool)), player, SLOT(setMuted(bool))); connect(controls, SIGNAL(changeRate(qreal)), player, SLOT(setPlaybackRate(qreal))); connect(controls, SIGNAL(stop()), videoWidget, SLOT(update())); connect(player, SIGNAL(stateChanged(QMediaPlayer::State)), controls, SLOT(setState(QMediaPlayer::State))); connect(player, SIGNAL(volumeChanged(int)), controls, SLOT(setVolume(int))); connect(player, SIGNAL(mutedChanged(bool)), controls, SLOT(setMuted(bool))); fullScreenButton = new QPushButton(tr("FullScreen"), this); fullScreenButton->setCheckable(true); #ifndef PLAYER_NO_COLOROPTIONS colorButton = new QPushButton(tr("Color Options..."), this); colorButton->setEnabled(false); connect(colorButton, SIGNAL(clicked()), this, SLOT(showColorDialog())); #endif QBoxLayout *displayLayout = new QHBoxLayout; displayLayout->addWidget(videoWidget, 2); displayLayout->addWidget(playlistView); QBoxLayout *controlLayout = new QHBoxLayout; controlLayout->setMargin(0); controlLayout->addWidget(openButton); controlLayout->addStretch(1); controlLayout->addWidget(controls); controlLayout->addStretch(1); controlLayout->addWidget(fullScreenButton); #ifndef PLAYER_NO_COLOROPTIONS controlLayout->addWidget(colorButton); #endif QBoxLayout *layout = new QVBoxLayout; layout->addLayout(displayLayout); QHBoxLayout *hLayout = new QHBoxLayout; hLayout->addWidget(slider); hLayout->addWidget(labelDuration); layout->addLayout(hLayout); layout->addLayout(controlLayout); layout->addLayout(histogramLayout); setLayout(layout); if (!player->isAvailable()) { QMessageBox::warning(this, tr("Service not available"), tr("The QMediaPlayer object does not have a valid service.\n"\ "Please check the media service plugins are installed.")); controls->setEnabled(false); playlistView->setEnabled(false); openButton->setEnabled(false); #ifndef PLAYER_NO_COLOROPTIONS colorButton->setEnabled(false); #endif fullScreenButton->setEnabled(false); } metaDataChanged(); QStringList arguments = qApp->arguments(); arguments.removeAt(0); addToPlaylist(arguments); }
ColorButton::ColorButton(QWidget *parent) : QToolButton(parent) { connect(this, SIGNAL(clicked()), this, SLOT(showColorDialog())); }