]> Nutra Git (v1) - gamesguru/feather.git/commitdiff
macOS: fix camera permissions
authortobtoht <tob@featherwallet.org>
Thu, 4 Jan 2024 14:03:26 +0000 (15:03 +0100)
committertobtoht <tob@featherwallet.org>
Thu, 4 Jan 2024 15:15:32 +0000 (16:15 +0100)
CMakeLists.txt
src/CMakeLists.txt
src/qrcode/scanner/QrCodeScanWidget.cpp
src/qrcode/scanner/QrCodeScanWidget.h

index 1e4c131cfd291f423a995ae1964eda1717a8120c..c62b3d2e8fda8e37e75d07316000b7be2a9cac8b 100644 (file)
@@ -302,19 +302,6 @@ add_subdirectory(src)
 
 configure_file("${CMAKE_SOURCE_DIR}/contrib/installers/windows/setup.nsi.in" "${CMAKE_SOURCE_DIR}/contrib/installers/windows/setup.nsi" @ONLY)
 
-if(APPLE)
-    configure_file(${CMAKE_SOURCE_DIR}/contrib/macdeploy/Info.plist.in ${CMAKE_SOURCE_DIR}/contrib/macdeploy/Info.plist @ONLY)
-
-    set_target_properties(feather PROPERTIES
-            RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
-            MACOSX_BUNDLE TRUE
-            MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR}/contrib/macdeploy/Info.plist"
-            LINK_FLAGS_RELEASE -s
-    )
-
-    file(COPY "${CMAKE_SOURCE_DIR}/src/assets/images/appicons/appicon.icns" DESTINATION "${CMAKE_SOURCE_DIR}/installed/feather.app/Contents/Resources/" )
-endif()
-
 #### Summary ####
 
 message("\n")
index 2d2b3f131ccff0a6ae51dd3b87dbea5b33f1fe6a..22a9bb129aaa505f2d0bb738d88c97d658a51604 100644 (file)
@@ -251,7 +251,7 @@ if (DEPENDS)
     target_link_directories(feather PRIVATE "${LIB_DIR}")
 endif()
 
-target_link_libraries(feather
+target_link_libraries(feather PRIVATE
         wallet_merged
         ${LMDB_LIBRARY}
         epee
@@ -280,19 +280,19 @@ target_link_libraries(feather
 )
 
 if(CHECK_UPDATES)
-    target_link_libraries(feather openpgp)
+    target_link_libraries(feather PRIVATE openpgp)
 endif()
 
 if(DEPENDS)
-    target_link_libraries(feather ${ICONV_LIBRARIES})
+    target_link_libraries(feather PRIVATE ${ICONV_LIBRARIES})
 endif()
 
 if(DEVICE_TREZOR_READY)
-    target_link_libraries(feather ${TREZOR_DEP_LIBS})
+    target_link_libraries(feather PRIVATE ${TREZOR_DEP_LIBS})
 endif()
 
 if (WITH_SCANNER)
-    target_link_libraries(feather
+    target_link_libraries(feather PRIVATE
             Qt::Multimedia
             Qt::MultimediaWidgets
             ${ZXING_LIBRARIES}
@@ -300,16 +300,16 @@ if (WITH_SCANNER)
 endif()
 
 if(STATIC AND APPLE)
-    target_link_libraries(feather Qt6::QDarwinCameraPermissionPlugin)
+    target_link_libraries(feather PRIVATE Qt6::QDarwinCameraPermissionPlugin)
 endif()
 
 if(STATIC AND UNIX AND NOT APPLE)
-    target_link_libraries(feather Qt6::QComposePlatformInputContextPlugin)
+    target_link_libraries(feather PRIVATE Qt6::QComposePlatformInputContextPlugin)
 endif()
 
 if(DEPENDS AND APPLE)
     # TODO: Needed for ___isOSVersionAtLeast
-    target_link_libraries(feather
+    target_link_libraries(feather PRIVATE
             ${CMAKE_OSX_SYSROOT}/lib/darwin/libclang_rt.osx.a)
 endif()
 
@@ -334,4 +334,19 @@ else()
         install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/assets/feather.desktop DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications)
         install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/assets/images/appicons/256x256.png DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/256x256/apps RENAME "feather.png")
     endif()
-endif()
\ No newline at end of file
+endif()
+
+if(APPLE)
+    configure_file(${CMAKE_SOURCE_DIR}/contrib/macdeploy/Info.plist.in ${CMAKE_SOURCE_DIR}/contrib/macdeploy/Info.plist @ONLY)
+
+    set_target_properties(feather PROPERTIES
+            RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
+            MACOSX_BUNDLE TRUE
+            MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR}/contrib/macdeploy/Info.plist"
+            LINK_FLAGS_RELEASE -s
+    )
+
+    file(COPY "${CMAKE_SOURCE_DIR}/src/assets/images/appicons/appicon.icns" DESTINATION "${CMAKE_SOURCE_DIR}/installed/feather.app/Contents/Resources/" )
+endif()
+
+qt_finalize_executable(feather)
\ No newline at end of file
index b1dfc357d8918fd7cdf2ee8370a453829a01d7b8..e1d941892adfb613a389d593db8591d1a147919c 100644 (file)
@@ -70,10 +70,21 @@ void QrCodeScanWidget::startCapture(bool scan_ur) {
     ui->progressBar_UR->setVisible(m_scan_ur);
     ui->progressBar_UR->setFormat("Progress: %v%");
 
-    if (!getPermission()) {
-        ui->frame_error->setText("No permission to start camera.");
-        ui->frame_error->show();
-        return;
+    QCameraPermission cameraPermission;
+    switch (qApp->checkPermission(cameraPermission)) {
+        case Qt::PermissionStatus::Undetermined:
+            qDebug() << "Camera permission undetermined";
+            qApp->requestPermission(cameraPermission, [this] {
+                startCapture(m_scan_ur);
+            });
+            return;
+        case Qt::PermissionStatus::Denied:
+            ui->frame_error->setText("No permission to start camera.");
+            ui->frame_error->show();
+            return;
+        case Qt::PermissionStatus::Granted:
+            qDebug() << "Camera permission granted";
+            break;
     }
 
     if (ui->combo_camera->count() < 1) {
@@ -89,20 +100,6 @@ void QrCodeScanWidget::startCapture(bool scan_ur) {
     }
 }
 
-bool QrCodeScanWidget::getPermission() {
-    QCameraPermission cameraPermission;
-    switch (qApp->checkPermission(cameraPermission)) {
-        case Qt::PermissionStatus::Undetermined:
-            qApp->requestPermission(cameraPermission, this,
-                                    &QrCodeScanWidget::getPermission);
-            return false;
-        case Qt::PermissionStatus::Denied:
-            return false;
-        case Qt::PermissionStatus::Granted:
-            return true;
-    }
-}
-
 void QrCodeScanWidget::reset() {
     this->decodedString = "";
     m_done = false;
index 8cefd08bbd511c877c9c480a8f14f0996584782d..700c31678c6293c1ad7d7dabb74941c014f8e9d4 100644 (file)
@@ -49,7 +49,6 @@ private:
     void refreshCameraList();
     QImage videoFrameToImage(const QVideoFrame &videoFrame);
     void handleFrameCaptured(const QVideoFrame &videoFrame);
-    bool getPermission();
 
     QScopedPointer<Ui::QrCodeScanWidget> ui;