Exemple #1
0
void MainWindowActions::recordFullscreen()
{
	QString path = patientService()->generateFilePath("Screenshots", "mp4");

	if(vlc()->isRecording())
		vlc()->stopRecording();
	else
		vlc()->startRecording(path);
}
Exemple #2
0
void MainWindowActions::createActions()
{
	this->createAction("GotoDocumentation", "Web Documentation",
					   QIcon(":/icons/open_icon_library/applications-internet.png"),
					   QKeySequence(""), "",
					   &MainWindowActions::onGotoDocumentation);

	this->createAction("StartLogConsole", "Start Log Console",
					   QIcon(),
					   QKeySequence("Ctrl+D"), "Open Log Console as external application",
					   &MainWindowActions::onStartLogConsole);

	this->createAction("ShootScreen", "Shoot Screen",
					   QIcon(":/icons/screenshot-screen.png"),
					   QKeySequence("Ctrl+f"), "Save a screenshot to the patient folder.",
					   &MainWindowActions::shootScreen);

	this->createAction("ShootWindow", "Shoot Window",
					   QIcon(":/icons/screenshot-window.png"),
					   QKeySequence("Ctrl+Shift+f"), "Save an image of the application to the patient folder.",
					   &MainWindowActions::shootWindow);

	mRecordFullscreenStreamingAction = this->createAction("RecordFullscreen", "Record Fullscreen",
					   QIcon(),
					   QKeySequence("F8"), "Record a video of the full screen.",
					   &MainWindowActions::recordFullscreen);
	connect(vlc(), &VLCRecorder::stateChanged, this, &MainWindowActions::updateRecordFullscreenActionSlot);
	this->updateRecordFullscreenActionSlot();

	mShowPointPickerAction = this->createAction("ShowPointPicker", "Point Picker",
												QIcon(":/icons/point_picker.png"),
												QKeySequence(""), "Activate the 3D Point Picker Probe",
												&MainWindowActions::togglePointPickerActionSlot);
	mShowPointPickerAction->setCheckable(true);

	if (viewService()->getGroup(0))
		connect(viewService()->getGroup(0).get(), &ViewGroupData::optionsChanged, this, &MainWindowActions::updatePointPickerActionSlot);
	this->updatePointPickerActionSlot();

	mStartStreamingAction = this->createAction("StartStreaming", "Start Streaming",
											   QIcon(":/icons/open_icon_library/.png"),
											   QKeySequence("Ctrl+V"), "",
											   &MainWindowActions::toggleStreamingSlot);
	connect(videoService().get(), &VideoService::connected, this, &MainWindowActions::updateStreamingActionSlot);
	this->updateStreamingActionSlot();

	this->createAction("CenterToImageCenter", "Center Image",
					   QIcon(":/icons/center_image.png"),
					   QKeySequence(), "",
					   &MainWindowActions::centerToImageCenterSlot);

	this->createAction("CenterToTooltip", "Center Tool",
					   QIcon(":/icons/center_tool.png"),
					   QKeySequence(""), "",
					   &MainWindowActions::centerToTooltipSlot);

	this->createPatientActions();
	this->createTrackingActions();
}
Exemple #3
0
void MainWindowActions::updateRecordFullscreenActionSlot()
{
	mRecordFullscreenStreamingAction->setCheckable(true);
	mRecordFullscreenStreamingAction->blockSignals(true);
	mRecordFullscreenStreamingAction->setChecked(vlc()->isRecording());
	mRecordFullscreenStreamingAction->blockSignals(false);

	if(vlc()->isRecording())
	{
		mRecordFullscreenStreamingAction->setIcon(QIcon(":/icons/Video-icon_green.png"));
	}
	else
	{
		mRecordFullscreenStreamingAction->setIcon(QIcon(":/icons/Video-icon_gray.png"));
	}

}
Exemple #4
0
void NowListening::slotPrepareNowListening()
{
    QVariantMap trackInfo;
    QString player;
    bool playerFound = false;
    bool isPlaying = false;

    MPRIS amarok(QLatin1String("amarok"));
    if (amarok.isValid()) {
        if (amarok.isPlaying()) {
            trackInfo = amarok.getTrackMetadata();
            isPlaying = true;
        }
        playerFound = true;
        player = QLatin1String("Amarok");
    }

    MPRIS audacious(QLatin1String("audacious"));
    if (!isPlaying && audacious.isValid()) {
        if (audacious.isPlaying()) {
            trackInfo = audacious.getTrackMetadata();
            isPlaying = true;
        }
        playerFound = true;
        player = QLatin1String("Audacious");
    }

    // MPRIS id of Dragon Player contain pid of it.
    QStringList playersList = MPRIS::getRunningPlayers();
    if (!playersList.isEmpty() && playersList.indexOf(QRegExp(QLatin1String("dragonplayer(.*)"))) > -1) {
        int i = playersList.indexOf(QRegExp(QLatin1String("dragonplayer(.*)")));
        MPRIS dragon(playersList.at(i));
        if (!isPlaying && dragon.isValid()) {
            if (dragon.isPlaying()) {
                trackInfo = dragon.getTrackMetadata();
                isPlaying = true;
            }
            playerFound = true;
            player = QLatin1String("Dragon Player");
        }
    }

    //need to enable MPRIS Plugin (Qmmp +0.4)
    MPRIS qmmp(QLatin1String("qmmp"));
    if (!isPlaying && qmmp.isValid()) {
        if (qmmp.isPlaying()) {
            trackInfo = qmmp.getTrackMetadata();
            isPlaying = true;
        }
        playerFound = true;
        player = QLatin1String("Qmmp");
    }

    // only works if enabled D-BUS control interface in VLC (VLC 0.9.0+)
    MPRIS vlc(QLatin1String("vlc"));
    if (!isPlaying && vlc.isValid()) {
        if (vlc.isPlaying()) {
            trackInfo = vlc.getTrackMetadata();
            isPlaying = true;
        }
        playerFound = true;
        player = QLatin1String("VLC");
    }

    //Mpris not complete supported by Kaffeine Version 1.0-svn3
    /*
    MPRIS kaffeine("kaffeine");
    if(!isPlaying && kaffeine.isValid()){
      if(kaffeine.isPlaying()){
    trackInfo=kaffeine.getTrackMetadata();
    isPlaying=true;
      }
      playerFound=true;
      player="Kaffeine";
    }
    */

    if (!isPlaying && QDBusConnection::sessionBus().interface()->isServiceRegistered(QLatin1String("org.kde.juk")).value()) {
        QDBusInterface jukPlayer(QLatin1String("org.kde.juk"),
                                 QLatin1String("/Player"),
                                 QLatin1String("org.kde.juk.player"));
        if (((QDBusReply<bool>)jukPlayer.call(QLatin1String("playing"))).value()) {
            QDBusReply< QString> reply = jukPlayer.call(QLatin1String("trackProperty"), QLatin1String("Title"));
            trackInfo.insert(QLatin1String("title"), reply.value());

            reply = jukPlayer.call(QLatin1String("trackProperty"), QLatin1String("Track"));
            trackInfo.insert(QLatin1String("track"), reply.value());

            reply = jukPlayer.call(QLatin1String("trackProperty"), QLatin1String("Album"));
            trackInfo.insert(QLatin1String("album"), reply.value());

            reply = jukPlayer.call(QLatin1String("trackProperty"), QLatin1String("Artist"));
            trackInfo.insert(QLatin1String("artist"), reply.value());

            reply = jukPlayer.call(QLatin1String("trackProperty"), QLatin1String("Year"));
            trackInfo.insert(QLatin1String("year"), reply.value());

            reply = jukPlayer.call(QLatin1String("trackProperty"), QLatin1String("Genre"));
            trackInfo.insert(QLatin1String("genre"), reply.value());
            isPlaying = true;
        }
        playerFound = true;
        player = QLatin1String("JuK");
    }

    if (!isPlaying && QDBusConnection::sessionBus().interface()->isServiceRegistered(QLatin1String("org.gnome.Rhythmbox")).value())  {
        QDBusInterface rhythmboxPlayer(QLatin1String("org.gnome.Rhythmbox") ,
                                       QLatin1String("/org/gnome/Rhythmbox/Player"),
                                       QLatin1String("org.gnome.Rhythmbox.Player"));
        if (((QDBusReply<bool>)rhythmboxPlayer.call(QLatin1String("getPlaying"))).value()) {
            QDBusReply<QString> uri = rhythmboxPlayer.call(QLatin1String("getPlayingUri"));

            QDBusInterface rhythmboxShell(QLatin1String("org.gnome.Rhythmbox") ,
                                          QLatin1String("/org/gnome/Rhythmbox/Shell"),
                                          QLatin1String("org.gnome.Rhythmbox.Shell"));

            QDBusReply< QMap<QString, QVariant> > reply = rhythmboxShell.call(QLatin1String("getSongProperties"), uri.value());
            trackInfo = reply.value();
            isPlaying = true;
        }
        playerFound = true;
        player = QLatin1String("Rhythmbox");
    }

    if (!isPlaying && QDBusConnection::sessionBus().interface()->isServiceRegistered(QLatin1String("org.exaile.Exaile")).value()) {

        QDBusInterface exailePlayer(QLatin1String("org.exaile.Exaile"),
                                    QLatin1String("/org/exaile/Exaile"),
                                    QLatin1String("org.exaile.Exaile"));
        if (((QDBusReply<bool>) exailePlayer.call(QLatin1String("IsPlaying"))).value()) {
            QDBusReply<QString> reply = exailePlayer.call(QLatin1String("GetTrackAttr"), QLatin1String("tracknumber"));
            trackInfo.insert(QLatin1String("tracknumber"), reply.value());
            reply = exailePlayer.call(QLatin1String("GetTrackAttr"), QLatin1String("title"));
            trackInfo.insert(QLatin1String("title"), reply.value());
            reply = exailePlayer.call(QLatin1String("GetTrackAttr"), QLatin1String("album"));
            trackInfo.insert(QLatin1String("album"), reply.value());
            reply = exailePlayer.call(QLatin1String("GetTrackAttr"), QLatin1String("artist"));
            trackInfo.insert(QLatin1String("artist"), reply.value());
            reply = exailePlayer.call(QLatin1String("GetTrackAttr"), QLatin1String("year"));
            trackInfo.insert(QLatin1String("year"), reply.value());
            reply = exailePlayer.call(QLatin1String("GetTrackAttr"), QLatin1String("genre"));
            trackInfo.insert(QLatin1String("genre"), reply.value());
            isPlaying = true;
        }
        playerFound = true;
        player = QLatin1String("Exaile");
    }

    if (!isPlaying && QDBusConnection::sessionBus().interface()->isServiceRegistered(QLatin1String("org.bansheeproject.Banshee")).value()) {
        // provide for new interface in Banshee 1.0+
        QDBusInterface bansheePlayer(QLatin1String("org.bansheeproject.Banshee"),
                                     QLatin1String("/org/bansheeproject/Banshee/PlayerEngine"),
                                     QLatin1String("org.bansheeproject.Banshee.PlayerEngine"));
        if (!((QDBusReply<QString>) bansheePlayer.call(QLatin1String("GetCurrentState"))).value().compare(QLatin1String("playing"))) {
            QDBusReply< QMap<QString, QVariant> > reply = bansheePlayer.call(QLatin1String("GetCurrentTrack"));
            trackInfo = reply.value();
            trackInfo.insert(QLatin1String("title"), trackInfo[QLatin1String("name")]);
            isPlaying = true;
        }
        playerFound = true;
        player = QLatin1String("Banshee");
    }

    //trying to find not supported players that implamented the MPRIS-Dbus interface
    if (!isPlaying && !MPRIS::getRunningPlayers().isEmpty()) {

        for (const QString &playerName: MPRIS::getRunningPlayers()) {
            playerFound = true;
            MPRIS mprisPlayer(playerName);
            if (mprisPlayer.isValid() && mprisPlayer.isPlaying()) {
                trackInfo = mprisPlayer.getTrackMetadata();
                isPlaying = true;
                player = mprisPlayer.getPlayerIdentification().left(
                             mprisPlayer.getPlayerIdentification().lastIndexOf(QLatin1Char(' '))); //remove the version of player
                break;
            }
        }
    }
    if (!isPlaying) {
        if (playerFound)
            KMessageBox::information(Choqok::UI::Global::mainWindow(),
                                     i18nc("Player is running, But it's not playing.",
                                           "Play your desired music player."));
        else
            KMessageBox::sorry(Choqok::UI::Global::mainWindow(),
                               i18n("No supported player found."));
        return;
    }

    NowListeningSettings::self()->load();
    QString text = NowListeningSettings::templateString();
    text.replace(QLatin1String("%track%"), trackInfo[QLatin1String("tracknumber")].toString());
    text.replace(QLatin1String("%title%"), trackInfo[QLatin1String("title")].toString());
    text.replace(QLatin1String("%album%"), trackInfo[QLatin1String("album")].toString());
    text.replace(QLatin1String("%artist%"), trackInfo[QLatin1String("artist")].toString());
    text.replace(QLatin1String("%year%"), trackInfo[QLatin1String("year")].toString());
    text.replace(QLatin1String("%genre%"), trackInfo[QLatin1String("genre")].toString());
    text.replace(QLatin1String("%player%"), player);

    if (Choqok::UI::Global::quickPostWidget()) {
        Choqok::UI::Global::quickPostWidget()->setText(text);
    }
}