void MainWindowActions::recordFullscreen() { QString path = patientService()->generateFilePath("Screenshots", "mp4"); if(vlc()->isRecording()) vlc()->stopRecording(); else vlc()->startRecording(path); }
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(); }
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")); } }
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); } }