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 ();
	}
Ejemplo n.º 3
0
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;
}