You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by pu...@apache.org on 2014/03/11 23:27:35 UTC

[3/5] git commit: Added Windows Phone support

Added Windows Phone support


Project: http://git-wip-us.apache.org/repos/asf/cordova-plugins/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugins/commit/ee959cb1
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugins/tree/ee959cb1
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugins/diff/ee959cb1

Branch: refs/heads/master
Commit: ee959cb1a69bf58fe06cf08ffd9d6ba2e51940da
Parents: 20c73cf
Author: Jesse MacFadyen <pu...@gmail.com>
Authored: Tue Mar 11 14:25:15 2014 -0700
Committer: Jesse MacFadyen <pu...@gmail.com>
Committed: Tue Mar 11 14:25:15 2014 -0700

----------------------------------------------------------------------
 statusbar/plugin.xml          |  20 ++++++
 statusbar/src/wp/StatusBar.cs | 142 +++++++++++++++++++++++++++++++++++++
 2 files changed, 162 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugins/blob/ee959cb1/statusbar/plugin.xml
----------------------------------------------------------------------
diff --git a/statusbar/plugin.xml b/statusbar/plugin.xml
index ff462fa..6a6c59b 100644
--- a/statusbar/plugin.xml
+++ b/statusbar/plugin.xml
@@ -44,4 +44,24 @@
         
     </platform>
 
+    <!-- wp7 -->
+    <platform name="wp7">
+        <config-file target="config.xml" parent="/*">
+            <feature name="StatusBar">
+                <param name="wp-package" value="StatusBar"/>
+            </feature>
+        </config-file>
+        <source-file src="src/wp/StatusBar.cs" />
+    </platform>
+
+    <!-- wp8 -->
+    <platform name="wp8">
+        <config-file target="config.xml" parent="/*">
+            <feature name="StatusBar">
+                <param name="wp-package" value="StatusBar"/>
+            </feature>
+        </config-file>
+        <source-file src="src/wp/StatusBar.cs" />
+    </platform>
+
 </plugin>

http://git-wip-us.apache.org/repos/asf/cordova-plugins/blob/ee959cb1/statusbar/src/wp/StatusBar.cs
----------------------------------------------------------------------
diff --git a/statusbar/src/wp/StatusBar.cs b/statusbar/src/wp/StatusBar.cs
new file mode 100644
index 0000000..c6e6fe7
--- /dev/null
+++ b/statusbar/src/wp/StatusBar.cs
@@ -0,0 +1,142 @@
+/*  
+	Licensed under the Apache License, Version 2.0 (the "License");
+	you may not use this file except in compliance with the License.
+	You may obtain a copy of the License at
+	
+	http://www.apache.org/licenses/LICENSE-2.0
+	
+	Unless required by applicable law or agreed to in writing, software
+	distributed under the License is distributed on an "AS IS" BASIS,
+	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+	See the License for the specific language governing permissions and
+	limitations under the License.
+*/
+
+
+using Microsoft.Phone.Shell;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Globalization;
+using System.Threading;
+using System.Windows;
+using System.Windows.Media;
+using System.Windows.Threading;
+
+
+/*
+ *   http://www.idev101.com/code/User_Interface/StatusBar.html
+ *   https://developer.apple.com/library/ios/documentation/userexperience/conceptual/transitionguide/Bars.html
+ *   https://developer.apple.com/library/ios/documentation/uikit/reference/UIApplication_Class/Reference/Reference.html#//apple_ref/c/econst/UIStatusBarStyleDefault
+ * */
+
+
+namespace WPCordovaClassLib.Cordova.Commands
+{
+    public class StatusBar : BaseCommand
+    {
+
+        // returns an argb value, if the hex is only rgb, it will be full opacity
+        protected Color ColorFromHex(string hexString)
+        {
+            string cleanHex = hexString.Replace("#", "").Replace("0x", "");
+            // turn #FFF into #FFFFFF
+            if (cleanHex.Length == 3)
+            {
+                cleanHex = "" + cleanHex[0] + cleanHex[0] + cleanHex[1] + cleanHex[1] + cleanHex[2] + cleanHex[2];
+            }
+            // add an alpha 100% if it is missing
+            if (cleanHex.Length == 6)
+            {
+                cleanHex = "FF" + cleanHex;
+            }
+            int argb = Int32.Parse(cleanHex, NumberStyles.HexNumber);
+            Color clr = Color.FromArgb((byte)((argb & 0xff000000) >> 0x18),
+                              (byte)((argb & 0xff0000) >> 0x10),
+                              (byte)((argb & 0xff00) >> 8),
+                              (byte)(argb & 0xff));
+            return clr;
+        }
+
+        public void _ready(string options)
+        {
+            Deployment.Current.Dispatcher.BeginInvoke(() =>
+            {
+                bool isVis = SystemTray.IsVisible;
+                // TODO: pass this to JS
+            });
+        }
+
+        public void overlaysWebView(string options)
+        {    //exec(null, null, "StatusBar", "overlaysWebView", [doOverlay]);
+             // string arg = JSON.JsonHelper.Deserialize<string[]>(options)[0];
+        }
+
+        public void styleDefault(string options)
+        {    //exec(null, null, "StatusBar", "styleDefault", []);
+            Deployment.Current.Dispatcher.BeginInvoke(() =>
+            {
+                SystemTray.Opacity = 1.0d;
+                SystemTray.ForegroundColor = (Color)Application.Current.Resources["PhoneForegroundColor"];
+                SystemTray.BackgroundColor = (Color)Application.Current.Resources["PhoneChromeColor"];
+            });
+        }
+
+        public void styleLightContent(string options)
+        {    //exec(null, null, "StatusBar", "styleLightContent", []);
+            Deployment.Current.Dispatcher.BeginInvoke(() =>
+            {
+                SystemTray.Opacity = 1.0d;
+                SystemTray.ForegroundColor = SystemColors.ControlLightColor;
+                SystemTray.BackgroundColor = SystemColors.ControlDarkColor;
+            });
+        }
+
+        public void styleBlackTranslucent(string options)
+        {    //exec(null, null, "StatusBar", "styleBlackTranslucent", []);
+            styleLightContent(options);
+        }
+
+        public void styleBlackOpaque(string options)
+        {    //exec(null, null, "StatusBar", "styleBlackOpaque", []);
+            styleLightContent(options);
+        }
+
+        public void backgroundColorByName(string options)
+        {    //exec(null, null, "StatusBar", "backgroundColorByName", [colorname]);
+
+        }
+
+        public void backgroundColorByHexString(string options)
+        {    //exec(null, null, "StatusBar", "backgroundColorByHexString", [hexString]);
+            string argb = JSON.JsonHelper.Deserialize<string[]>(options)[0];
+
+            Color clr = ColorFromHex(argb);
+              
+            Deployment.Current.Dispatcher.BeginInvoke(() =>
+            {
+                SystemTray.Opacity = clr.A / 255.0d;
+                SystemTray.BackgroundColor = clr;
+                
+            });
+        }
+
+        public void hide(string options)
+        {    //exec(null, null, "StatusBar", "hide", []);
+            Deployment.Current.Dispatcher.BeginInvoke(() =>
+            {
+                SystemTray.IsVisible = false;
+            });
+
+        }
+
+        public void show(string options)
+        {    //exec(null, null, "StatusBar", "show", []);
+            Deployment.Current.Dispatcher.BeginInvoke(() =>
+            {
+                SystemTray.IsVisible = true;
+            });
+        }
+	}
+}
\ No newline at end of file