diff --git a/CronopiOS/Info.plist b/CronopiOS/Info.plist
index 570e3be..62250c6 100644
--- a/CronopiOS/Info.plist
+++ b/CronopiOS/Info.plist
@@ -15,7 +15,7 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 1.1
+ 1.3
CFBundleVersion
1
LSRequiresIPhoneOS
diff --git a/CronopiOS/SinglePageViewController.swift b/CronopiOS/SinglePageViewController.swift
index 11c2eb8..a68e900 100644
--- a/CronopiOS/SinglePageViewController.swift
+++ b/CronopiOS/SinglePageViewController.swift
@@ -43,44 +43,41 @@ class SinglePageViewController: UIViewController, UINavigationControllerDelegate
switch imageView.tag {
case 0:
let singleTap = UITapGestureRecognizer(target: self, action: #selector(SinglePageViewController.onImageTap))
- singleTap.numberOfTapsRequired = 1
+ let touchHold = UILongPressGestureRecognizer(target: self, action: #selector(SinglePageViewController.onImageHold))
+
imageView.addGestureRecognizer(singleTap)
+ imageView.addGestureRecognizer(touchHold)
imageView.image = bookPage?.pageImage
+
overlayImage = imageView.image
self.pageImageView = imageView
break
case 1:
let singleTap = UITapGestureRecognizer(target: self, action: #selector(SinglePageViewController.savePage))
- singleTap.numberOfTapsRequired = 1
imageView.addGestureRecognizer(singleTap)
self.cloudIconView = imageView
break
case 2:
let singleTap = UITapGestureRecognizer(target: self, action: #selector(SinglePageViewController.saveImageToDevice))
- singleTap.numberOfTapsRequired = 1
imageView.addGestureRecognizer(singleTap)
self.saveIconView = imageView
break
case 3:
let singleTap = UITapGestureRecognizer(target: self, action: #selector(SinglePageViewController.onRefreshIconTap))
- singleTap.numberOfTapsRequired = 1
imageView.addGestureRecognizer(singleTap)
break
case 4:
let singleTap = UITapGestureRecognizer(target: self, action: #selector(SinglePageViewController.backgroundTap))
- singleTap.numberOfTapsRequired = 1
imageView.addGestureRecognizer(singleTap)
break
case 5:
let singleTap = UITapGestureRecognizer(target: self, action: #selector(SinglePageViewController.onMuteIconTap))
- singleTap.numberOfTapsRequired = 1
imageView.addGestureRecognizer(singleTap)
self.muteIconView = imageView
break
default:
continue
}
-
}
else if subview.isKind(of: UITextView.self) {
let contentLabel = (subview as! UITextView)
@@ -127,6 +124,15 @@ class SinglePageViewController: UIViewController, UINavigationControllerDelegate
}
}
+ func onImageHold() {
+ if self.isKeyboardVisible == false {
+ self.openGallery()
+ }
+ else {
+ self.onEditingEnd()
+ }
+ }
+
func openCamera() {
AudioServicesPlaySystemSoundWithCompletion(kSystemSoundID_Vibrate, nil)
@@ -169,6 +175,23 @@ class SinglePageViewController: UIViewController, UINavigationControllerDelegate
}
}
+ func openGallery() {
+ AudioServicesPlaySystemSoundWithCompletion(kSystemSoundID_Vibrate, nil)
+
+ let imagePicker = UIImagePickerController()
+ imagePicker.delegate = self
+
+ if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {
+ imagePicker.sourceType = .photoLibrary
+ present(imagePicker, animated: true, completion: nil)
+ }
+ else {
+ let alert = UIAlertController(title: "¡Ups!", message: "No es posible presentar la galería de imágenes en este dispositivo.", preferredStyle: .alert)
+ alert.addAction(UIAlertAction(title: "Ni hablar", style: .default, handler: nil))
+ present(alert, animated: true, completion: nil)
+ }
+ }
+
func onEditingEnd() {
if self.content.text != self.bookPage.pageContent {
self.saveIconView.isUserInteractionEnabled = true
@@ -212,47 +235,41 @@ class SinglePageViewController: UIViewController, UINavigationControllerDelegate
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
picker.dismiss(animated: true, completion: nil)
- if picker.sourceType == .camera
- {
- var chosenImage = info[UIImagePickerControllerOriginalImage] as? UIImage
- let overlayImage = self.pageImageView.image
-
- let targetSize = (chosenImage?.size)!
- let targetRect = CGRect(x: 0.0, y: 0.0, width: targetSize.width, height: targetSize.height)
- let overlayRect = CGRect(x: 0.0, y: 0.0, width: targetSize.width / 2.0, height: targetSize.height)
-
- let croppedImage = self.cropImage(imageToCrop: overlayImage!, rect: overlayRect, fullRect: targetRect)
-
- UIGraphicsBeginImageContext(targetSize)
-
- let context = UIGraphicsGetCurrentContext()
-
- UIGraphicsPushContext(context!)
-
- if picker.cameraDevice == .front
- {
- chosenImage = UIImage(cgImage: (chosenImage?.cgImage)!, scale: 1.0, orientation: .leftMirrored)
- }
-
- chosenImage?.draw(in: targetRect)
- croppedImage?.draw(in: overlayRect)
-
- UIGraphicsPopContext()
-
- let renderedImage = UIGraphicsGetImageFromCurrentImageContext()
-
- UIGraphicsEndImageContext()
-
- self.pageImageView.image = renderedImage
- self.saveIconView.isUserInteractionEnabled = true
- }
- else
+ var chosenImage = info[UIImagePickerControllerOriginalImage] as? UIImage
+
+ let overlayImage = self.pageImageView.image
+
+ let targetSize = (chosenImage?.size)!
+ let targetRect = CGRect(x: 0.0, y: 0.0, width: targetSize.width, height: targetSize.height)
+ let overlayRect = CGRect(x: 0.0, y: 0.0, width: targetSize.width / 2.0, height: targetSize.height)
+
+ let croppedImage = self.cropImage(imageToCrop: overlayImage!, rect: overlayRect, fullRect: targetRect)
+
+ UIGraphicsBeginImageContext(targetSize)
+
+ let context = UIGraphicsGetCurrentContext()
+
+ UIGraphicsPushContext(context!)
+
+ let imageIsFromFrontCamera = picker.sourceType == .camera && picker.cameraDevice == .front
+
+ if imageIsFromFrontCamera
{
- self.overlayImage = info[UIImagePickerControllerEditedImage] as? UIImage
- self.pageImageView.image = self.overlayImage
- self.saveIconView.isUserInteractionEnabled = false
+ chosenImage = UIImage(cgImage: (chosenImage?.cgImage)!, scale: 1.0, orientation: .leftMirrored)
}
+ chosenImage?.draw(in: targetRect)
+ croppedImage?.draw(in: overlayRect)
+
+ UIGraphicsPopContext()
+
+ let renderedImage = UIGraphicsGetImageFromCurrentImageContext()
+
+ UIGraphicsEndImageContext()
+
+ self.pageImageView.image = renderedImage
+ self.saveIconView.isUserInteractionEnabled = true
+
dismiss(animated: true, completion: nil)
}