Exemplo n.º 1
0
Player::Player(PlayerMode mode, VKApi *_vk)
{
    vk = _vk;
    player = new QMediaPlayer();
    songs = new QList<jSong>();

    // for online
    if (mode == Online)
    {
        // session for playlist
        session = new jSession(vk->GetUserId());
        session->load();
    }

    // signals from player
    connect(player, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), this, SLOT(changeSong(QMediaPlayer::MediaStatus)));
    connect(player, SIGNAL(stateChanged(QMediaPlayer::State)), this, SLOT(emitPlayerStateChanged(QMediaPlayer::State)));
    connect(player, SIGNAL(positionChanged(qint64)), this, SLOT(emitPositionChanged(qint64)));
    connect(player, SIGNAL(durationChanged(qint64)), this, SLOT(emitDurationChanged(qint64)));
}
Exemplo n.º 2
0
void ViewWidget::mouseReleaseEvent(QMouseEvent* e)
{
	switch (_dragMode) {
	case DRAG_NONE:
		break;
	case DRAG_ZOOM_IN: {
		int offset = (e->pos() - _startPos).manhattanLength();
		if (offset != 0) {
			double zoom = std::pow(10.0, -offset / 256.0);
			int bx = width();
			int by = height();
			double px = (bx / 2.0 - _startPos.x()) * zoom + _startPos.x();
			double py = (by / 2.0 - _startPos.y()) * zoom + _startPos.y();
			_generator.zoom(px, py, offset / 256.0);
			_generator.addToQueue();
			emitPositionChanged();
		} else {
			_transform = false;
			update();
		}
		break;
	}
	case DRAG_ZOOM: {
		int offset = e->y() - _startPos.y();
		if (offset != 0) {
			_generator.zoom(width() / 2.0, height() / 2.0, offset / 256.0);
			_generator.addToQueue();
			emitPositionChanged();
		} else {
			_transform = false;
			update();
		}
		break;
	}
	case DRAG_MOVE: {
		int offsetX = _startPos.x() - e->x();
		int offsetY = _startPos.y() - e->y();
		if (offsetX != 0 || offsetY != 0) {
			_generator.move(offsetX, offsetY);
			_generator.addToQueue();
			emitPositionChanged();
		} else {
			_transform = false;
			update();
		}
		break;
	}
	case DRAG_ROTATE: {
		double px = width() / 2.0;
		double py = height() / 2.0;
		double startAngle = std::atan2(_startPos.x() - px, _startPos.y() - py);
		double currentAngle = std::atan2(e->x() - px, e->y() - py);
		if (currentAngle != startAngle) {
			_generator.rotate((currentAngle - startAngle) * 180.0 / M_PI);
			_generator.addToQueue();
			emitPositionChanged();
		} else {
			_transform = false;
			update();
		}
		break;
	}
	}
	_dragMode = DRAG_NONE;
}