From 1d2c0adf177ead221c542d2d6ccbe3ffa3a2cd51 Mon Sep 17 00:00:00 2001 From: purplecabbage Date: Thu, 1 Aug 2013 16:34:03 -0700 Subject: [PATCH] [Windows8][CB-4450] Implemented splash-screen for Windows8 --- plugin.xml | 7 ++ www/windows8/SplashScreenProxy.js | 104 ++++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 www/windows8/SplashScreenProxy.js diff --git a/plugin.xml b/plugin.xml index 6cce13f..315d5b1 100644 --- a/plugin.xml +++ b/plugin.xml @@ -70,4 +70,11 @@ + + + + + + + diff --git a/www/windows8/SplashScreenProxy.js b/www/windows8/SplashScreenProxy.js new file mode 100644 index 0000000..aa592c1 --- /dev/null +++ b/www/windows8/SplashScreenProxy.js @@ -0,0 +1,104 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + * +*/ + +/*global Windows:true */ + + var cordova = require('cordova'), + channel = require('cordova/channel'); + +/* This is the actual implementation part that returns the result on Windows 8 +*/ + + var position = { x: 0, y: 0, width: 0, height: 0 }; // defined by evt.detail.splashScreen.imageLocation + var splash = null; // + var localSplash; // the image to display + var localSplashImage; + var bgColor = "#464646"; + + function onResize(evt) { + if (splash) { + position = splash.imageLocation; + updateImageLocation(); + } + } + + function updateImageLocation() { + localSplash.style.width = window.innerWidth + "px"; + localSplash.style.height = window.innerHeight + "px"; + localSplash.style.top = "0px"; + localSplash.style.left = "0px"; + + localSplashImage.style.top = position.y + "px"; + localSplashImage.style.left = position.x + "px"; + localSplashImage.style.height = position.height + "px"; + localSplashImage.style.width = position.width + "px"; + } + + var SplashScreen = { + setBGColor:function(cssBGColor) { + bgColor = cssBGColor; + if (localSplash) { + localSplash.style.backgroundColor = bgColor; + } + }, + show:function(){ + window.addEventListener("resize", onResize, false); + localSplash = document.createElement("div"); + localSplash.style.backgroundColor = bgColor;; + localSplash.style.position = "absolute"; + + var img = localSplashImage = document.createElement("img"); + img.src = "img/splashscreen.png"; + img.style.position = "absolute"; + + updateImageLocation(); + + localSplash.appendChild(localSplashImage); + document.body.appendChild(localSplash); + }, + hide:function(){ + window.removeEventListener("resize", onResize, false); + document.body.removeChild(localSplash); + localSplash = null; + } + } + + module.exports = SplashScreen; + +function activated(evt) { + if (evt.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.launch) { + splash = evt.detail.splashScreen; + position = evt.detail.splashScreen.imageLocation; + SplashScreen.show(); + } +} + + + + +channel.onCordovaReady.subscribe(function (evt) { + document.addEventListener("DOMContentLoaded", function (evt) { + WinJS.Application.addEventListener("activated", activated, false); + }, false); +}); + +require("cordova/commandProxy").add("SplashScreen",SplashScreen); +