void AlbumArtManagerDialog::on_BrowseButton__released () { const auto& filename = QFileDialog::getOpenFileName (this, tr ("Choose album art"), QDir::homePath (), tr ("Images (*.png *.jpg *.jpeg);;All files (*.*)")); if (filename.isEmpty ()) return; QImage image (filename); if (image.isNull ()) return; handleImages ({ GetArtist (), GetAlbum () }, { image }); }
AlbumArtManagerDialog::AlbumArtManagerDialog (const QString& artist, const QString& album, AlbumArtManager *aamgr, QWidget *parent) : QDialog (parent) , AAMgr_ (aamgr) , Model_ (new QStandardItemModel (this)) , SourceInfo_ ({ artist, album }) , RequestScheduled_ (false) { Ui_.setupUi (this); Ui_.ArtistLine_->setText (artist); Ui_.ArtistLine_->installEventFilter (new ReturnPressSwallower (this)); Ui_.AlbumLine_->setText (album); Ui_.AlbumLine_->installEventFilter (new ReturnPressSwallower (this)); new Util::ClearLineEditAddon (Core::Instance ().GetProxy (), Ui_.ArtistLine_); new Util::ClearLineEditAddon (Core::Instance ().GetProxy (), Ui_.AlbumLine_); Ui_.ArtView_->setModel (Model_); connect (Ui_.ArtistLine_, SIGNAL (textChanged (QString)), this, SLOT (scheduleRequest ())); connect (Ui_.AlbumLine_, SIGNAL (textChanged (QString)), this, SLOT (scheduleRequest ())); connect (Ui_.ArtistLine_, SIGNAL (returnPressed ()), this, SLOT (request ())); connect (Ui_.AlbumLine_, SIGNAL (returnPressed ()), this, SLOT (request ())); connect (aamgr, SIGNAL (gotImages (Media::AlbumInfo, QList<QImage>)), this, SLOT (handleImages (Media::AlbumInfo, QList<QImage>))); connect (Ui_.ArtView_, SIGNAL (activated (QModelIndex)), this, SLOT (accept ())); scheduleRequest (); }
DWORD WINAPI KinectHandler::runNuiThread() { const int numEvents = 3; HANDLE events[numEvents] = { _nuiProcessStopEvent, _nextSkeletonEvent, _nextImageFrameEvent }; int eventIndex = 0; DWORD trackingID = -1; NUI_TRANSFORM_SMOOTH_PARAMETERS smoothParams; smoothParams.fCorrection = 0.5f; smoothParams.fJitterRadius = 1.0f; smoothParams.fMaxDeviationRadius = 0.5f; smoothParams.fPrediction = 0.4f; smoothParams.fSmoothing = 0.2f; bool continueProcessing = true; while ( continueProcessing ) { eventIndex = WaitForMultipleObjects( numEvents, events, FALSE, 100 ); switch ( eventIndex ) { case WAIT_TIMEOUT: continue; case WAIT_OBJECT_0: continueProcessing = false; continue; case WAIT_OBJECT_0+1: // get skeleton if ( _context ) { NUI_SKELETON_FRAME skeletonFrame = {0}; if ( FAILED(_context->NuiSkeletonGetNextFrame(0, &skeletonFrame)) ) continue; HRESULT hr = _context->NuiTransformSmooth( &skeletonFrame, &smoothParams ); if ( FAILED(hr) ) continue; int startIndex = 0, maxCount = NUI_SKELETON_COUNT; for ( int n=0 ; n<maxCount; ++n ) { NUI_SKELETON_DATA& skeletonData = skeletonFrame.SkeletonData[n]; if ( trackingID==skeletonData.dwTrackingID ) { startIndex = n; break; } } for ( int n=startIndex; n<maxCount; ) { NUI_SKELETON_DATA& skeletonData = skeletonFrame.SkeletonData[n]; if ( skeletonData.eTrackingState==NUI_SKELETON_TRACKED && skeletonData.eSkeletonPositionTrackingState[NUI_SKELETON_POSITION_SHOULDER_CENTER]!=NUI_SKELETON_POSITION_NOT_TRACKED ) { if ( handleJoints(skeletonData) ) { trackingID = skeletonData.dwTrackingID; break; // Only handle the first available skeleton } } if ( startIndex>0 && n==NUI_SKELETON_COUNT-1 ) { n = 0; maxCount = startIndex; } else ++n; } } break; case WAIT_OBJECT_0+2: // get depth image if ( _context && _videoStreamHandle ) { NUI_IMAGE_FRAME imageFrame; HRESULT hr = _context->NuiImageStreamGetNextFrame( _videoStreamHandle, 0, &imageFrame ); if ( FAILED(hr) ) continue; else handleImages( imageFrame ); _context->NuiImageStreamReleaseFrame( _videoStreamHandle, &imageFrame ); } break; default: break; } } return 0; }