OBSPermissions.cpp 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /******************************************************************************
  2. Copyright (C) 2023 by Lain Bailey <[email protected]>
  3. This program is free software: you can redistribute it and/or modify
  4. it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation, either version 2 of the License, or
  6. (at your option) any later version.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with this program. If not, see <http://www.gnu.org/licenses/>.
  13. ******************************************************************************/
  14. #include "OBSPermissions.hpp"
  15. #include <OBSApp.hpp>
  16. #include "moc_OBSPermissions.cpp"
  17. OBSPermissions::OBSPermissions(QWidget *parent, MacPermissionStatus capture, MacPermissionStatus video,
  18. MacPermissionStatus audio, MacPermissionStatus accessibility)
  19. : QDialog(parent),
  20. ui(new Ui::OBSPermissions)
  21. {
  22. ui->setupUi(this);
  23. SetStatus(ui->capturePermissionButton, capture, QTStr("MacPermissions.Item.ScreenRecording"));
  24. SetStatus(ui->videoPermissionButton, video, QTStr("MacPermissions.Item.Camera"));
  25. SetStatus(ui->audioPermissionButton, audio, QTStr("MacPermissions.Item.Microphone"));
  26. SetStatus(ui->accessibilityPermissionButton, accessibility, QTStr("MacPermissions.Item.Accessibility"));
  27. }
  28. void OBSPermissions::SetStatus(QPushButton *btn, MacPermissionStatus status, const QString &preference)
  29. {
  30. if (status == kPermissionAuthorized) {
  31. btn->setText(QTStr("MacPermissions.AccessGranted"));
  32. } else if (status == kPermissionNotDetermined) {
  33. btn->setText(QTStr("MacPermissions.RequestAccess"));
  34. } else {
  35. btn->setText(QTStr("MacPermissions.OpenPreferences").arg(preference));
  36. }
  37. btn->setEnabled(status != kPermissionAuthorized);
  38. btn->setProperty("status", status);
  39. }
  40. void OBSPermissions::on_capturePermissionButton_clicked()
  41. {
  42. OpenMacOSPrivacyPreferences("ScreenCapture");
  43. RequestPermission(kScreenCapture);
  44. }
  45. void OBSPermissions::on_videoPermissionButton_clicked()
  46. {
  47. MacPermissionStatus status = (MacPermissionStatus)ui->videoPermissionButton->property("status").toInt();
  48. if (status == kPermissionNotDetermined) {
  49. status = RequestPermission(kVideoDeviceAccess);
  50. SetStatus(ui->videoPermissionButton, status, QTStr("MacPermissions.Item.Camera"));
  51. } else {
  52. OpenMacOSPrivacyPreferences("Camera");
  53. }
  54. }
  55. void OBSPermissions::on_audioPermissionButton_clicked()
  56. {
  57. MacPermissionStatus status = (MacPermissionStatus)ui->audioPermissionButton->property("status").toInt();
  58. if (status == kPermissionNotDetermined) {
  59. status = RequestPermission(kAudioDeviceAccess);
  60. SetStatus(ui->audioPermissionButton, status, QTStr("MacPermissions.Item.Microphone"));
  61. } else {
  62. OpenMacOSPrivacyPreferences("Microphone");
  63. }
  64. }
  65. void OBSPermissions::on_accessibilityPermissionButton_clicked()
  66. {
  67. OpenMacOSPrivacyPreferences("Accessibility");
  68. RequestPermission(kAccessibility);
  69. }
  70. void OBSPermissions::on_continueButton_clicked()
  71. {
  72. config_set_int(App()->GetAppConfig(), "General", "MacOSPermissionsDialogLastShown",
  73. MACOS_PERMISSIONS_DIALOG_VERSION);
  74. close();
  75. }