             break
         case .progress:
             updateProgressLoadingView(withMessage: messageText, forProgress: 0.0)
+            break
+        case .progressWithCancelButton:
+            updateProgressLoadingView(withMessage: messageText, forProgress: 0.0)
+            
+            for view in subviews {
+                if view is UIButton {
+                    (view as! UIButton).setTitle("Cancel", for: UIControlState())
+                    (view as! UIButton).addTarget(self, action: #selector(ALLoadingView.cancelButtonTapped(_:)), for: .touchUpInside)
+                }
+            }
             break
         default:
             break

    case messageWithIndicator
    case messageWithIndicatorAndCancelButton
    case progress
}

public enum ALLVWindowMode {

        case .basic:
            return [.activityIndicator]
        case .message:
            return [.messageTextView]
        case .messageWithIndicator:
            return [.messageTextView, .activityIndicator]
        case .messageWithIndicatorAndCancelButton:
            if self.loadingViewWindowMode == ALLVWindowMode.windowed {
                return [.messageTextView, .activityIndicator, .cancelButton]
            } else {
                return [.messageTextView, .activityIndicator, .cancelButton]
            }
        case .progress:
            return [.messageTextView, .progressBar]
        case .progressWithCancelButton:
            return [.messageTextView, .progressBar, .cancelButton]
        }
    }
    
