From 5f4a0f5636a007d422381587a0a0d0e6463b8016 Mon Sep 17 00:00:00 2001
From: EddyVerbruggen <eddyverbruggen@gmail.com>
Date: Wed, 27 Jan 2016 20:49:03 +0100
Subject: [PATCH] #4 styling

---
 README.md                                   |  48 +++++++++++---
 package.json                                |   2 +-
 plugin.xml                                  |   2 +-
 screenshots/styling-green.png               | Bin 0 -> 16857 bytes
 screenshots/styling-red.png                 | Bin 0 -> 22311 bytes
 src/android/nl/xservices/plugins/Toast.java |  38 ++++++++---
 src/ios/Toast+UIView.h                      |   2 +-
 src/ios/Toast+UIView.m                      |  66 +++++++++++++++-----
 src/ios/Toast.m                             |  14 +++--
 9 files changed, 128 insertions(+), 44 deletions(-)
 create mode 100644 screenshots/styling-green.png
 create mode 100644 screenshots/styling-red.png

diff --git a/README.md b/README.md
index b28d3ef..12ece21 100644
--- a/README.md
+++ b/README.md
@@ -19,6 +19,7 @@ for Android, iOS and WP8, by [Eddy Verbruggen](http://www.x-services.nl/phonegap
 	3. [Manually](#manually)
 	3. [PhoneGap Build](#phonegap-build)
 4. [Usage](#4-usage)
+  4. [Styling](#styling)
 5. [Credits](#5-credits)
 6. [Changelog](#6-changelog)
 7. [License](#7-license)
@@ -48,10 +49,18 @@ iOS
 
 ![ScreenShot](screenshots/screenshot-ios-toast.png)
 
+A few styling options
+
+![ScreenShot](screenshots/styling-green.png)
+
+![ScreenShot](screenshots/styling-red.png)
+
+
 Android
 
 ![ScreenShot](screenshots/screenshot-android-toast.png)
 
+
 Windows Phone 8
 
 ![ScreenShot](screenshots/screenshot-wp8.jpg)
@@ -203,6 +212,30 @@ called again. You can distinguish between those events of course:
   );
 ```
 
+### Styling
+Since version 2.4.0 you can pass an optional `styling` object to the plugin.
+The defaults make sure the Toast looks the same as when you would not pass in the `styling` object at all.
+
+Note that on WP this object is currently ignored.
+
+```js
+  window.plugins.toast.showWithOptions({
+    message: "hey there",
+    duration: "short",
+    position: "bottom",
+    styling: {
+      opacity: 0.75, // 0.0 (transparent) to 1.0 (opaque). Default 0.8
+      backgroundColor: '#FF0000', // make sure you use #RRGGBB. Default #333333
+      cornerRadius: 16, // minimum is 0 (square). iOS default 20, Android default 100
+      horizontalPadding: 20, // iOS default 16, Android default 50
+      verticalPadding: 16 // iOS default 12, Android default 30
+    }
+  });
+```
+
+Tip: if you need to pass different values for iOS and Android you can use fi. the device plugin
+to determine the platform and pass `opacity: isAndroid() ? 0.7 : 0.9`.
+
 ### WP8 quirks
 The WP8 implementation needs a little more work, but it's perfectly useable when you keep this in mind:
 * You can't show two Toasts simultaneously.
@@ -217,15 +250,12 @@ The Android code was entirely created by me.
 For iOS most credits go to this excellent [Toast for iOS project by Charles Scalesse] (https://github.com/scalessec/Toast).
 
 ## 6. CHANGELOG
-2.3.2: The click event introduced with 2.3.0 did not work with Android 5+.
-
-2.3.0: The plugin will now report back to JS if Toasts were tapped by the user.
-
-2.0.1: iOS messages are hidden when another one is shown. [Thanks Richie Min!](https://github.com/EddyVerbruggen/Toast-PhoneGap-Plugin/pull/13)
-
-2.0: WP8 support
-
-1.0: initial version supporting Android and iOS
+- 2.4.0: You can now style the Toast with a number of properties. See
+- 2.3.2: The click event introduced with 2.3.0 did not work with Android 5+.
+- 2.3.0: The plugin will now report back to JS if Toasts were tapped by the user.
+- 2.0.1: iOS messages are hidden when another one is shown. [Thanks Richie Min!](https://github.com/EddyVerbruggen/Toast-PhoneGap-Plugin/pull/13)
+- 2.0: WP8 support
+- 1.0: initial version supporting Android and iOS
 
 ## 7. License
 
diff --git a/package.json b/package.json
index 8e6cae3..3571666 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "cordova-plugin-x-toast",
-  "version": "2.3.2",
+  "version": "2.4.0",
   "description": "This plugin allows you to show a Toast. A Toast is a little non intrusive buttonless popup which automatically disappears.",
   "cordova": {
     "id": "cordova-plugin-x-toast",
diff --git a/plugin.xml b/plugin.xml
index 4ea80a7..8028b8e 100755
--- a/plugin.xml
+++ b/plugin.xml
@@ -2,7 +2,7 @@
 <plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
         xmlns:android="http://schemas.android.com/apk/res/android"
         id="cordova-plugin-x-toast"
-        version="2.3.2">
+        version="2.4.0">
 
   <name>Toast</name>
 
diff --git a/screenshots/styling-green.png b/screenshots/styling-green.png
new file mode 100644
index 0000000000000000000000000000000000000000..f325fe0a734e1a78a979192f1ef54f13676d54e0
GIT binary patch
literal 16857
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
VohyUd>wn#O{X+G5@iXI({||=eac%$r

literal 0
HcmV?d00001

diff --git a/screenshots/styling-red.png b/screenshots/styling-red.png
new file mode 100644
index 0000000000000000000000000000000000000000..aac1432111196a173cf2286de91c14778e93964d
GIT binary patch
literal 22311
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
A;{X5v

literal 0
HcmV?d00001

diff --git a/src/android/nl/xservices/plugins/Toast.java b/src/android/nl/xservices/plugins/Toast.java
index dc58576..580daac 100644
--- a/src/android/nl/xservices/plugins/Toast.java
+++ b/src/android/nl/xservices/plugins/Toast.java
@@ -1,5 +1,7 @@
 package nl.xservices.plugins;
 
+import android.graphics.Color;
+import android.graphics.drawable.GradientDrawable;
 import android.os.Build;
 import android.view.Gravity;
 import android.view.MotionEvent;
@@ -37,7 +39,7 @@ public class Toast extends CordovaPlugin {
   private android.widget.Toast mostRecentToast;
   private ViewGroup viewGroup;
 
-  private static final boolean IS_AT_LEAST_ANDROID5 = Build.VERSION.SDK_INT >= 21;
+  private static final boolean IS_AT_LEAST_LOLLIPOP = Build.VERSION.SDK_INT >= 21;
 
   // note that webView.isPaused() is not Xwalk compatible, so tracking it poor-man style
   private boolean isPaused;
@@ -65,20 +67,15 @@ public class Toast extends CordovaPlugin {
       final String position = options.getString("position");
       final int addPixelsY = options.has("addPixelsY") ? options.getInt("addPixelsY") : 0;
       final JSONObject data = options.has("data") ? options.getJSONObject("data") : null;
+      final JSONObject styling = options.optJSONObject("styling");
 
       cordova.getActivity().runOnUiThread(new Runnable() {
         public void run() {
           final android.widget.Toast toast = android.widget.Toast.makeText(
-              IS_AT_LEAST_ANDROID5 ? cordova.getActivity().getWindow().getContext() : cordova.getActivity().getApplicationContext(),
+              IS_AT_LEAST_LOLLIPOP ? cordova.getActivity().getWindow().getContext() : cordova.getActivity().getApplicationContext(),
               message,
               "short".equals(duration) ? android.widget.Toast.LENGTH_SHORT : android.widget.Toast.LENGTH_LONG);
 
-          // if we want to change the background color some day, we can use this
-//          try {
-//            final Method setTintMethod = Drawable.class.getMethod("setTint", int.class);
-//            setTintMethod.invoke(toast.getView().getBackground(), Color.RED); // default is Color.DKGRAY
-//          } catch (Exception ignore) {
-//          }
           if ("top".equals(position)) {
             toast.setGravity(GRAVITY_TOP, 0, BASE_TOP_BOTTOM_OFFSET + addPixelsY);
           } else  if ("bottom".equals(position)) {
@@ -90,9 +87,32 @@ public class Toast extends CordovaPlugin {
             return;
           }
 
+          // if one of the custom layout options have been passed in, draw our own shape
+          if (styling != null && Build.VERSION.SDK_INT >= 16) {
+
+            // the defaults mimic the default toast as close as possible
+            final String backgroundColor = styling.optString("backgroundColor", "#333333");
+            final double opacity = styling.optDouble("opacity", 0.8);
+            final int cornerRadius = styling.optInt("cornerRadius", 100);
+            final int horizontalPadding = styling.optInt("horizontalPadding", 50);
+            final int verticalPadding = styling.optInt("verticalPadding", 30);
+
+            GradientDrawable shape = new GradientDrawable();
+            shape.setCornerRadius(cornerRadius);
+            shape.setAlpha((int)(opacity * 255)); // 0-255, where 0 is an invisible background
+            shape.setColor(Color.parseColor(backgroundColor));
+            toast.getView().setBackground(shape);
+            toast.getView().setPadding(horizontalPadding, verticalPadding, horizontalPadding, verticalPadding);
+
+            // this gives the toast a very subtle shadow on newer devices
+            if (Build.VERSION.SDK_INT >= 21) {
+              toast.getView().setElevation(6);
+            }
+          }
+
           // On Android >= 5 you can no longer rely on the 'toast.getView().setOnTouchListener',
           // so created something funky that compares the Toast position to the tap coordinates.
-          if (IS_AT_LEAST_ANDROID5) {
+          if (IS_AT_LEAST_LOLLIPOP) {
             getViewGroup().setOnTouchListener(new View.OnTouchListener() {
               @Override
               public boolean onTouch(View view, MotionEvent motionEvent) {
diff --git a/src/ios/Toast+UIView.h b/src/ios/Toast+UIView.h
index 346f853..b2b1e7f 100644
--- a/src/ios/Toast+UIView.h
+++ b/src/ios/Toast+UIView.h
@@ -6,7 +6,7 @@
 // each makeToast method creates a view and displays it as toast
 - (void)makeToast:(NSString *)message;
 - (void)makeToast:(NSString *)message duration:(NSTimeInterval)interval position:(id)position;
-- (void)makeToast:(NSString *)message duration:(NSTimeInterval)duration position:(id)position addPixelsY:(int)addPixelsY data:(NSDictionary*)data commandDelegate:(id <CDVCommandDelegate>)commandDelegate callbackId:(NSString *)callbackId;
+- (void)makeToast:(NSString *)message duration:(NSTimeInterval)duration position:(id)position addPixelsY:(int)addPixelsY data:(NSDictionary*)data           styling:(NSDictionary*)styling commandDelegate:(id <CDVCommandDelegate>)commandDelegate callbackId:(NSString *)callbackId;
 - (void)makeToast:(NSString *)message duration:(NSTimeInterval)interval position:(id)position image:(UIImage *)image;
 - (void)makeToast:(NSString *)message duration:(NSTimeInterval)interval position:(id)position title:(NSString *)title;
 - (void)makeToast:(NSString *)message duration:(NSTimeInterval)interval position:(id)position title:(NSString *)title image:(UIImage *)image;
diff --git a/src/ios/Toast+UIView.m b/src/ios/Toast+UIView.m
index 83b32d6..4d4cf1b 100644
--- a/src/ios/Toast+UIView.m
+++ b/src/ios/Toast+UIView.m
@@ -53,6 +53,7 @@ static id commandDelegate;
 static id callbackId;
 static id msg;
 static id data;
+static id styling;
 
 @interface UIView (ToastPrivate)
 
@@ -79,13 +80,22 @@ static id data;
     [self showToast:toast duration:duration position:position];
 }
 
-- (void)makeToast:(NSString *)message duration:(NSTimeInterval)duration position:(id)position addPixelsY:(int)addPixelsY data:(NSDictionary*)_data commandDelegate:(id <CDVCommandDelegate>)_commandDelegate callbackId:(NSString *)_callbackId {
-  commandDelegate = _commandDelegate;
-  callbackId = _callbackId;
-  msg = message;
-  data = _data;
-  UIView *toast = [self viewForMessage:message title:nil image:nil];
-  [self showToast:toast duration:duration position:position addedPixelsY:addPixelsY];
+- (void)makeToast:(NSString *)message
+         duration:(NSTimeInterval)duration
+         position:(id)position addPixelsY:(int)addPixelsY
+             data:(NSDictionary*)_data
+          styling:(NSDictionary*)_styling
+  commandDelegate:(id <CDVCommandDelegate>)_commandDelegate
+       callbackId:(NSString *)_callbackId {
+
+    commandDelegate = _commandDelegate;
+    callbackId = _callbackId;
+    msg = message;
+    data = _data;
+    styling = _styling;
+
+    UIView *toast = [self viewForMessage:message title:nil image:nil];
+    [self showToast:toast duration:duration position:position addedPixelsY:addPixelsY];
 }
 
 - (void)makeToast:(NSString *)message duration:(NSTimeInterval)duration position:(id)position title:(NSString *)title {
@@ -295,7 +305,9 @@ static id data;
     // create the parent view
     UIView *wrapperView = [[UIView alloc] init];
     wrapperView.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin);
-    wrapperView.layer.cornerRadius = CSToastCornerRadius;
+
+    NSNumber * cornerRadius = styling[@"cornerRadius"];
+    wrapperView.layer.cornerRadius = cornerRadius == nil ? CSToastCornerRadius : [cornerRadius floatValue];
     
     if (CSToastDisplayShadow) {
         wrapperView.layer.shadowColor = [UIColor blackColor].CGColor;
@@ -304,12 +316,23 @@ static id data;
         wrapperView.layer.shadowOffset = CSToastShadowOffset;
     }
 
-    wrapperView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:CSToastOpacity];
+    NSString * backgroundColor = styling[@"backgroundColor"];
+    UIColor *theColor = backgroundColor == nil ? [UIColor blackColor] : [self colorFromHexString:backgroundColor];
+
+    NSNumber * opacity = styling[@"opacity"];
+    CGFloat theOpacity = opacity == nil ? CSToastOpacity : [opacity floatValue];
+
+    NSNumber * horizontalPadding = styling[@"horizontalPadding"];
+    NSNumber * verticalPadding = styling[@"verticalPadding"];
+    CGFloat theHorizontalPadding = horizontalPadding == nil ? CSToastHorizontalPadding : [horizontalPadding floatValue];
+    CGFloat theVerticalPadding = verticalPadding == nil ? CSToastVerticalPadding : [verticalPadding floatValue];
+    
+    wrapperView.backgroundColor = [theColor colorWithAlphaComponent:theOpacity];
     
     if(image != nil) {
         imageView = [[UIImageView alloc] initWithImage:image];
         imageView.contentMode = UIViewContentModeScaleAspectFit;
-        imageView.frame = CGRectMake(CSToastHorizontalPadding, CSToastVerticalPadding, CSToastImageViewWidth, CSToastImageViewHeight);
+        imageView.frame = CGRectMake(theHorizontalPadding, theVerticalPadding, CSToastImageViewWidth, CSToastImageViewHeight);
     }
     
     CGFloat imageWidth, imageHeight, imageLeft;
@@ -318,7 +341,7 @@ static id data;
     if(imageView != nil) {
         imageWidth = imageView.bounds.size.width;
         imageHeight = imageView.bounds.size.height;
-        imageLeft = CSToastHorizontalPadding;
+        imageLeft = theHorizontalPadding;
     } else {
         imageWidth = imageHeight = imageLeft = 0.0;
     }
@@ -362,8 +385,8 @@ static id data;
     if(titleLabel != nil) {
         titleWidth = titleLabel.bounds.size.width;
         titleHeight = titleLabel.bounds.size.height;
-        titleTop = CSToastVerticalPadding;
-        titleLeft = imageLeft + imageWidth + CSToastHorizontalPadding;
+        titleTop = theVerticalPadding;
+        titleLeft = imageLeft + imageWidth + theHorizontalPadding;
     } else {
         titleWidth = titleHeight = titleTop = titleLeft = 0.0;
     }
@@ -374,8 +397,8 @@ static id data;
     if(messageLabel != nil) {
         messageWidth = messageLabel.bounds.size.width;
         messageHeight = messageLabel.bounds.size.height;
-        messageLeft = imageLeft + imageWidth + CSToastHorizontalPadding;
-        messageTop = titleTop + titleHeight + CSToastVerticalPadding;
+        messageLeft = imageLeft + imageWidth + theHorizontalPadding;
+        messageTop = titleTop + titleHeight + theVerticalPadding;
     } else {
         messageWidth = messageHeight = messageLeft = messageTop = 0.0;
     }
@@ -384,8 +407,8 @@ static id data;
     CGFloat longerLeft = MAX(titleLeft, messageLeft);
     
     // wrapper width uses the longerWidth or the image width, whatever is larger. same logic applies to the wrapper height
-    CGFloat wrapperWidth = MAX((imageWidth + (CSToastHorizontalPadding * 2)), (longerLeft + longerWidth + CSToastHorizontalPadding));    
-    CGFloat wrapperHeight = MAX((messageTop + messageHeight + CSToastVerticalPadding), (imageHeight + (CSToastVerticalPadding * 2)));
+    CGFloat wrapperWidth = MAX((imageWidth + (theHorizontalPadding * 2)), (longerLeft + longerWidth + theHorizontalPadding));
+    CGFloat wrapperHeight = MAX((messageTop + messageHeight + theVerticalPadding), (imageHeight + (theVerticalPadding * 2)));
                          
     wrapperView.frame = CGRectMake(0.0, 0.0, wrapperWidth, wrapperHeight);
     
@@ -406,4 +429,13 @@ static id data;
     return wrapperView;
 }
 
+// Assumes input like "#00FF00" (#RRGGBB)
+- (UIColor*) colorFromHexString:(NSString*) hexString {
+    unsigned rgbValue = 0;
+    NSScanner *scanner = [NSScanner scannerWithString:hexString];
+    [scanner setScanLocation:1]; // bypass '#' character
+    [scanner scanHexInt:&rgbValue];
+    return [UIColor colorWithRed:((rgbValue & 0xFF0000) >> 16) / 255.0 green:((rgbValue & 0xFF00) >> 8) / 255.0 blue:(rgbValue & 0xFF) / 255.0 alpha:1.0];
+}
+
 @end
diff --git a/src/ios/Toast.m b/src/ios/Toast.m
index 54e59b4..bd8e4e9 100644
--- a/src/ios/Toast.m
+++ b/src/ios/Toast.m
@@ -6,13 +6,14 @@
 
 - (void)show:(CDVInvokedUrlCommand*)command {
 
-  NSDictionary* options = [command.arguments objectAtIndex:0];
+  NSDictionary* options = [command argumentAtIndex:0];
 
-  NSString *message  = [options objectForKey:@"message"];
-  NSString *duration = [options objectForKey:@"duration"];
-  NSString *position = [options objectForKey:@"position"];
-  NSDictionary *data = [options objectForKey:@"data"];
-  NSNumber *addPixelsY = [options objectForKey:@"addPixelsY"];
+  NSString *message  = options[@"message"];
+  NSString *duration = options[@"duration"];
+  NSString *position = options[@"position"];
+  NSDictionary *data = options[@"data"];
+  NSNumber *addPixelsY = options[@"addPixelsY"];
+  NSDictionary *styling = options[@"styling"];
 
   if (![position isEqual: @"top"] && ![position isEqual: @"center"] && ![position isEqual: @"bottom"]) {
     CDVPluginResult * pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"invalid position. valid options are 'top', 'center' and 'bottom'"];
@@ -36,6 +37,7 @@
                  position:position
                addPixelsY:addPixelsY == nil ? 0 : [addPixelsY intValue]
                      data:data
+                  styling:styling
           commandDelegate:self.commandDelegate
                callbackId:command.callbackId];