rubymotion/BubbleWrap

View on GitHub
motion/core/ios/device.rb

Summary

Maintainability
A
0 mins
Test Coverage
module BubbleWrap
  module Device
    module_function

    # Verifies that the device running the app is an iPhone.
    # @return [TrueClass, FalseClass] true will be returned if the device is an iPhone, false otherwise.
    def iphone?(idiom=UIDevice.currentDevice.userInterfaceIdiom)
      idiom == UIUserInterfaceIdiomPhone
    end

    # Verifies that the device running the app is an iPad.
    # @return [TrueClass, FalseClass] true will be returned if the device is an iPad, false otherwise.
    def ipad?(idiom=UIDevice.currentDevice.userInterfaceIdiom)
      idiom == UIUserInterfaceIdiomPad
    end

    # Verifies that the device having a long screen (4 inch iPhone/iPod)
    # @return [TrueClass, FalseClass] true will be returned if the device is an iPhone/iPod with 4 inche screen, false otherwise.
    def long_screen?(idiom=UIDevice.currentDevice.userInterfaceIdiom, screen_height=UIScreen.mainScreen.bounds.size.height)
      iphone?(idiom) && screen_height == 568.0
    end

    # Use this to make a DSL-style call for picking images
    # @example Device.camera.front
    # @return [Device::Camera::CameraWrapper]
    def camera
      BubbleWrap::Device::CameraWrapper
    end

    # Verifies that the device running has a front facing camera.
    # @return [TrueClass, FalseClass] true will be returned if the device has a front facing camera, false otherwise.
    def front_camera?(picker=UIImagePickerController)
      p "This method (front_camera?) is DEPRECATED. Transition to using Device.camera.front?"
      picker.isCameraDeviceAvailable(UIImagePickerControllerCameraDeviceFront)
    end

    # Verifies that the device running has a rear facing camera.
    # @return [TrueClass, FalseClass] true will be returned if the device has a rear facing camera, false otherwise.
    def rear_camera?(picker=UIImagePickerController)
      p "This method (rear_camera?) is DEPRECATED. Transition to using Device.camera.rear?"
      picker.isCameraDeviceAvailable(UIImagePickerControllerCameraDeviceRear)
    end

    # Return whether app is being run in simulator
    # @return [TrueClass, FalseClass] true will be returned if simulator, false otherwise.
    def simulator?
      @simulator_state ||= begin
        if ios_version.to_i >= 9
          NSBundle.mainBundle.bundlePath !~ /^(\/private)?\/var/
        else
          !(UIDevice.currentDevice.model =~ /simulator/i).nil?
        end
      end
    end

    def force_touch?
      if defined?(UIForceTouchCapabilityAvailable) && defined?(UIScreen.mainScreen.traitCollection) && defined?(UIScreen.mainScreen.traitCollection.forceTouchCapability)
        UIScreen.mainScreen.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable
      else
        false
      end
    end

    # Returns the IOS SDK version currently running (i.e. "5.1" or "6.0" etc)
    # @return [String] the IOS SDK version currently running
    def ios_version
      UIDevice.currentDevice.systemVersion
    end

    # Returns an identifier unique to the vendor across the vendors app.
    # @return [NSUUID]
    def vendor_identifier
      UIDevice.currentDevice.identifierForVendor
    end

    # Delegates to BubbleWrap::Screen.orientation
    def orientation
      screen.orientation
    end

    # Delegates to BubbleWrap::Screen.interface_orientation
    def interface_orientation
      screen.interface_orientation
    end
  end
end