summaryrefslogtreecommitdiff
path: root/plugins/cordova-plugin-splashscreen/src
diff options
context:
space:
mode:
authorArjun Roychowdhury <pliablepixels@gmail.com>2015-10-31 08:21:38 -0400
committerArjun Roychowdhury <pliablepixels@gmail.com>2015-10-31 08:21:38 -0400
commit02811010cf62f1b21a06780d1e470d04bb24c50f (patch)
tree0d933789068aac11c810ed4bb169d14ab16c43c6 /plugins/cordova-plugin-splashscreen/src
parentbca561c1b3989d62a1fba829e0380c6fbf36caf5 (diff)
removed unecessary files from git
Diffstat (limited to 'plugins/cordova-plugin-splashscreen/src')
-rw-r--r--plugins/cordova-plugin-splashscreen/src/android/SplashScreen.java328
-rw-r--r--plugins/cordova-plugin-splashscreen/src/blackberry10/index.js28
-rw-r--r--plugins/cordova-plugin-splashscreen/src/browser/SplashScreenProxy.js138
-rw-r--r--plugins/cordova-plugin-splashscreen/src/ios/CDVSplashScreen.h43
-rw-r--r--plugins/cordova-plugin-splashscreen/src/ios/CDVSplashScreen.m330
-rw-r--r--plugins/cordova-plugin-splashscreen/src/ios/CDVViewController+SplashScreen.h28
-rw-r--r--plugins/cordova-plugin-splashscreen/src/ios/CDVViewController+SplashScreen.m82
-rw-r--r--plugins/cordova-plugin-splashscreen/src/tizen/SplashScreenProxy.js43
-rw-r--r--plugins/cordova-plugin-splashscreen/src/ubuntu/splashscreen.cpp42
-rw-r--r--plugins/cordova-plugin-splashscreen/src/ubuntu/splashscreen.h52
-rw-r--r--plugins/cordova-plugin-splashscreen/src/wp/ResolutionHelper.cs39
-rw-r--r--plugins/cordova-plugin-splashscreen/src/wp/SplashScreen.cs252
12 files changed, 0 insertions, 1405 deletions
diff --git a/plugins/cordova-plugin-splashscreen/src/android/SplashScreen.java b/plugins/cordova-plugin-splashscreen/src/android/SplashScreen.java
deleted file mode 100644
index 75ad724c..00000000
--- a/plugins/cordova-plugin-splashscreen/src/android/SplashScreen.java
+++ /dev/null
@@ -1,328 +0,0 @@
-/*
- 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.
-*/
-
-package org.apache.cordova.splashscreen;
-
-import android.app.Dialog;
-import android.app.ProgressDialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.res.Configuration;
-import android.graphics.Color;
-import android.os.Handler;
-import android.view.Display;
-import android.view.View;
-import android.view.ViewGroup.LayoutParams;
-import android.view.WindowManager;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-
-import org.apache.cordova.CallbackContext;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.CordovaWebView;
-import org.json.JSONArray;
-import org.json.JSONException;
-
-public class SplashScreen extends CordovaPlugin {
- private static final String LOG_TAG = "SplashScreen";
- // Cordova 3.x.x has a copy of this plugin bundled with it (SplashScreenInternal.java).
- // Enable functionality only if running on 4.x.x.
- private static final boolean HAS_BUILT_IN_SPLASH_SCREEN = Integer.valueOf(CordovaWebView.CORDOVA_VERSION.split("\\.")[0]) < 4;
- private static Dialog splashDialog;
- private static ProgressDialog spinnerDialog;
- private static boolean firstShow = true;
-
- /**
- * Displays the splash drawable.
- */
- private ImageView splashImageView;
-
- /**
- * Remember last device orientation to detect orientation changes.
- */
- private int orientation;
-
- // Helper to be compile-time compatible with both Cordova 3.x and 4.x.
- private View getView() {
- try {
- return (View)webView.getClass().getMethod("getView").invoke(webView);
- } catch (Exception e) {
- return (View)webView;
- }
- }
-
- @Override
- protected void pluginInitialize() {
- if (HAS_BUILT_IN_SPLASH_SCREEN || !firstShow) {
- return;
- }
- // Make WebView invisible while loading URL
- getView().setVisibility(View.INVISIBLE);
- int drawableId = preferences.getInteger("SplashDrawableId", 0);
- if (drawableId == 0) {
- String splashResource = preferences.getString("SplashScreen", "screen");
- if (splashResource != null) {
- drawableId = cordova.getActivity().getResources().getIdentifier(splashResource, "drawable", cordova.getActivity().getClass().getPackage().getName());
- if (drawableId == 0) {
- drawableId = cordova.getActivity().getResources().getIdentifier(splashResource, "drawable", cordova.getActivity().getPackageName());
- }
- preferences.set("SplashDrawableId", drawableId);
- }
- }
-
- // Save initial orientation.
- orientation = cordova.getActivity().getResources().getConfiguration().orientation;
-
- firstShow = false;
- loadSpinner();
- showSplashScreen(true);
- }
-
- /**
- * Shorter way to check value of "SplashMaintainAspectRatio" preference.
- */
- private boolean isMaintainAspectRatio () {
- return preferences.getBoolean("SplashMaintainAspectRatio", false);
- }
-
- @Override
- public void onPause(boolean multitasking) {
- if (HAS_BUILT_IN_SPLASH_SCREEN) {
- return;
- }
- // hide the splash screen to avoid leaking a window
- this.removeSplashScreen();
- }
-
- @Override
- public void onDestroy() {
- if (HAS_BUILT_IN_SPLASH_SCREEN) {
- return;
- }
- // hide the splash screen to avoid leaking a window
- this.removeSplashScreen();
- // If we set this to true onDestroy, we lose track when we go from page to page!
- //firstShow = true;
- }
-
- @Override
- public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
- if (action.equals("hide")) {
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- webView.postMessage("splashscreen", "hide");
- }
- });
- } else if (action.equals("show")) {
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- webView.postMessage("splashscreen", "show");
- }
- });
- } else if (action.equals("spinnerStart")) {
- if (!HAS_BUILT_IN_SPLASH_SCREEN) {
- final String title = args.getString(0);
- final String message = args.getString(1);
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- spinnerStart(title, message);
- }
- });
- }
- } else {
- return false;
- }
-
- callbackContext.success();
- return true;
- }
-
- @Override
- public Object onMessage(String id, Object data) {
- if (HAS_BUILT_IN_SPLASH_SCREEN) {
- return null;
- }
- if ("splashscreen".equals(id)) {
- if ("hide".equals(data.toString())) {
- this.removeSplashScreen();
- } else {
- this.showSplashScreen(false);
- }
- } else if ("spinner".equals(id)) {
- if ("stop".equals(data.toString())) {
- this.spinnerStop();
- getView().setVisibility(View.VISIBLE);
- }
- } else if ("onReceivedError".equals(id)) {
- spinnerStop();
- }
- return null;
- }
-
- // Don't add @Override so that plugin still compiles on 3.x.x for a while
- public void onConfigurationChanged(Configuration newConfig) {
- if (newConfig.orientation != orientation) {
- orientation = newConfig.orientation;
-
- // Splash drawable may change with orientation, so reload it.
- if (splashImageView != null) {
- int drawableId = preferences.getInteger("SplashDrawableId", 0);
- if (drawableId != 0) {
- splashImageView.setImageDrawable(cordova.getActivity().getResources().getDrawable(drawableId));
- }
- }
- }
- }
-
- private void removeSplashScreen() {
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- if (splashDialog != null && splashDialog.isShowing()) {
- splashDialog.dismiss();
- splashDialog = null;
- splashImageView = null;
- }
- }
- });
- }
-
- /**
- * Shows the splash screen over the full Activity
- */
- @SuppressWarnings("deprecation")
- private void showSplashScreen(final boolean hideAfterDelay) {
- final int splashscreenTime = preferences.getInteger("SplashScreenDelay", 3000);
- final int drawableId = preferences.getInteger("SplashDrawableId", 0);
-
- // If the splash dialog is showing don't try to show it again
- if (splashDialog != null && splashDialog.isShowing()) {
- return;
- }
- if (drawableId == 0 || (splashscreenTime <= 0 && hideAfterDelay)) {
- return;
- }
-
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- // Get reference to display
- Display display = cordova.getActivity().getWindowManager().getDefaultDisplay();
- Context context = webView.getContext();
-
- // Use an ImageView to render the image because of its flexible scaling options.
- splashImageView = new ImageView(context);
- splashImageView.setImageResource(drawableId);
- LayoutParams layoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
- splashImageView.setLayoutParams(layoutParams);
-
- splashImageView.setMinimumHeight(display.getHeight());
- splashImageView.setMinimumWidth(display.getWidth());
-
- // TODO: Use the background color of the webView's parent instead of using the preference.
- splashImageView.setBackgroundColor(preferences.getInteger("backgroundColor", Color.BLACK));
-
- if (isMaintainAspectRatio()) {
- // CENTER_CROP scale mode is equivalent to CSS "background-size:cover"
- splashImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
- }
- else {
- // FIT_XY scales image non-uniformly to fit into image view.
- splashImageView.setScaleType(ImageView.ScaleType.FIT_XY);
- }
-
- // Create and show the dialog
- splashDialog = new Dialog(context, android.R.style.Theme_Translucent_NoTitleBar);
- // check to see if the splash screen should be full screen
- if ((cordova.getActivity().getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN)
- == WindowManager.LayoutParams.FLAG_FULLSCREEN) {
- splashDialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FULLSCREEN);
- }
- splashDialog.setContentView(splashImageView);
- splashDialog.setCancelable(false);
- splashDialog.show();
-
- // Set Runnable to remove splash screen just in case
- if (hideAfterDelay) {
- final Handler handler = new Handler();
- handler.postDelayed(new Runnable() {
- public void run() {
- removeSplashScreen();
- }
- }, splashscreenTime);
- }
- }
- });
- }
-
- /*
- * Load the spinner
- */
- private void loadSpinner() {
- // If loadingDialog property, then show the App loading dialog for first page of app
- String loading = null;
- if (webView.canGoBack()) {
- loading = preferences.getString("LoadingDialog", null);
- }
- else {
- loading = preferences.getString("LoadingPageDialog", null);
- }
- if (loading != null) {
- String title = "";
- String message = "Loading Application...";
-
- if (loading.length() > 0) {
- int comma = loading.indexOf(',');
- if (comma > 0) {
- title = loading.substring(0, comma);
- message = loading.substring(comma + 1);
- }
- else {
- title = "";
- message = loading;
- }
- }
- spinnerStart(title, message);
- }
- }
-
- private void spinnerStart(final String title, final String message) {
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- spinnerStop();
- spinnerDialog = ProgressDialog.show(webView.getContext(), title, message, true, true,
- new DialogInterface.OnCancelListener() {
- public void onCancel(DialogInterface dialog) {
- spinnerDialog = null;
- }
- });
- }
- });
- }
-
- private void spinnerStop() {
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- if (spinnerDialog != null && spinnerDialog.isShowing()) {
- spinnerDialog.dismiss();
- spinnerDialog = null;
- }
- }
- });
- }
-}
diff --git a/plugins/cordova-plugin-splashscreen/src/blackberry10/index.js b/plugins/cordova-plugin-splashscreen/src/blackberry10/index.js
deleted file mode 100644
index bd7e48c8..00000000
--- a/plugins/cordova-plugin-splashscreen/src/blackberry10/index.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright 2013 Research In Motion Limited.
- *
- * 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.
- */
-
-module.exports = {
- show: function (success, fail, args, env) {
- var result = new PluginResult(args, env);
- result.error("Not supported on platform", false);
- },
-
- hide: function (success, fail, args, env) {
- var result = new PluginResult(args, env);
- window.qnx.webplatform.getApplication().windowVisible = true;
- result.ok(undefined, false);
- }
-};
diff --git a/plugins/cordova-plugin-splashscreen/src/browser/SplashScreenProxy.js b/plugins/cordova-plugin-splashscreen/src/browser/SplashScreenProxy.js
deleted file mode 100644
index d19f8c87..00000000
--- a/plugins/cordova-plugin-splashscreen/src/browser/SplashScreenProxy.js
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- *
- * 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.
- *
-*/
-// Default parameter values including image size can be changed in `config.xml`
-var splashImageWidth = 170;
-var splashImageHeight = 200;
-var position = { x: 0, y: 0, width: splashImageWidth, height: splashImageHeight };
-var splash = null; //
-var localSplash; // the image to display
-var localSplashImage;
-var bgColor = "#464646";
-var imageSrc = 'img/logo.png';
-var splashScreenDelay = 3000; // in milliseconds
-var showSplashScreen = true; // show splashcreen by default
-var configHelper = cordova.require('cordova/confighelper');
-
-function updateImageLocation() {
- position.width = Math.min(splashImageWidth, window.innerWidth);
- position.height = position.width * (splashImageHeight / splashImageWidth);
-
- localSplash.style.width = window.innerWidth + "px";
- localSplash.style.height = window.innerHeight + "px";
- localSplash.style.top = "0px";
- localSplash.style.left = "0px";
-
- localSplashImage.style.top = "50%";
- localSplashImage.style.left = "50%";
- localSplashImage.style.height = position.height + "px";
- localSplashImage.style.width = position.width + "px";
- localSplashImage.style.marginTop = (-position.height / 2) + "px";
- localSplashImage.style.marginLeft = (-position.width / 2) + "px";
-}
-
-function onResize() {
- updateImageLocation();
-}
-
-var SplashScreen = {
- setBGColor: function (cssBGColor) {
- bgColor = cssBGColor;
- if (localSplash) {
- localSplash.style.backgroundColor = bgColor;
- }
- },
- show: function () {
- if(!localSplash) {
- window.addEventListener("resize", onResize, false);
- localSplash = document.createElement("div");
- localSplash.style.backgroundColor = bgColor;
- localSplash.style.position = "absolute";
-
- localSplashImage = document.createElement("img");
- localSplashImage.src = imageSrc;
- localSplashImage.style.position = "absolute";
-
- updateImageLocation();
-
- localSplash.appendChild(localSplashImage);
- document.body.appendChild(localSplash);
- }
- },
- hide: function () {
- if(localSplash) {
- window.removeEventListener("resize", onResize, false);
- document.body.removeChild(localSplash);
- localSplash = null;
- }
- }
-};
-
-/**
- * Reads preferences via ConfigHelper and substitutes default parameters.
- */
-function readPreferencesFromCfg(cfg) {
- try {
- var value = cfg.getPreferenceValue('ShowSplashScreen');
- if(typeof value != 'undefined') {
- showSplashScreen = value === 'true';
- }
-
- splashScreenDelay = cfg.getPreferenceValue('SplashScreenDelay') || splashScreenDelay;
- imageSrc = cfg.getPreferenceValue('SplashScreen') || imageSrc;
- bgColor = cfg.getPreferenceValue('SplashScreenBackgroundColor') || bgColor;
- splashImageWidth = cfg.getPreferenceValue('SplashScreenWidth') || splashImageWidth;
- splashImageHeight = cfg.getPreferenceValue('SplashScreenHeight') || splashImageHeight;
- } catch(e) {
- var msg = '[Browser][SplashScreen] Error occured on loading preferences from config.xml: ' + JSON.stringify(e);
- console.error(msg);
- error(msg);
- }
-}
-
-/**
- * Shows and hides splashscreen if it is enabled, with a delay according the current preferences.
- */
-function showAndHide() {
- if(showSplashScreen) {
- SplashScreen.show();
-
- window.setTimeout(function() {
- SplashScreen.hide();
- }, splashScreenDelay);
- }
-}
-
-/**
- * Tries to read config.xml and override default properties and then shows and hides splashcreen if it is enabled.
- */
-(function initAndShow() {
- configHelper.readConfig(function(config) {
- readPreferencesFromCfg(config);
- showAndHide();
- }, function(err) {
- console.error(err);
- });
-})();
-
-module.exports = SplashScreen;
-
-require("cordova/exec/proxy").add("SplashScreen", SplashScreen);
-
diff --git a/plugins/cordova-plugin-splashscreen/src/ios/CDVSplashScreen.h b/plugins/cordova-plugin-splashscreen/src/ios/CDVSplashScreen.h
deleted file mode 100644
index 0d6ae397..00000000
--- a/plugins/cordova-plugin-splashscreen/src/ios/CDVSplashScreen.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- 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.
- */
-
-#import <Foundation/Foundation.h>
-#import <Cordova/CDVPlugin.h>
-
-typedef struct {
- BOOL iPhone;
- BOOL iPad;
- BOOL iPhone5;
- BOOL iPhone6;
- BOOL iPhone6Plus;
- BOOL retina;
-
-} CDV_iOSDevice;
-
-@interface CDVSplashScreen : CDVPlugin {
- UIActivityIndicatorView* _activityView;
- UIImageView* _imageView;
- NSString* _curImageName;
- BOOL _visible;
-}
-
-- (void)show:(CDVInvokedUrlCommand*)command;
-- (void)hide:(CDVInvokedUrlCommand*)command;
-
-@end
diff --git a/plugins/cordova-plugin-splashscreen/src/ios/CDVSplashScreen.m b/plugins/cordova-plugin-splashscreen/src/ios/CDVSplashScreen.m
deleted file mode 100644
index 43b356ad..00000000
--- a/plugins/cordova-plugin-splashscreen/src/ios/CDVSplashScreen.m
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- 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.
- */
-
-#import "CDVSplashScreen.h"
-#import <Cordova/CDVViewController.h>
-#import <Cordova/CDVScreenOrientationDelegate.h>
-#import "CDVViewController+SplashScreen.h"
-
-#define kSplashScreenDurationDefault 0.25f
-
-
-@implementation CDVSplashScreen
-
-- (void)pluginInitialize
-{
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pageDidLoad) name:CDVPageDidLoadNotification object:self.webView];
-
- [self setVisible:YES];
-}
-
-- (void)show:(CDVInvokedUrlCommand*)command
-{
- [self setVisible:YES];
-}
-
-- (void)hide:(CDVInvokedUrlCommand*)command
-{
- [self setVisible:NO];
-}
-
-- (void)pageDidLoad
-{
- id autoHideSplashScreenValue = [self.commandDelegate.settings objectForKey:[@"AutoHideSplashScreen" lowercaseString]];
-
- // if value is missing, default to yes
- if ((autoHideSplashScreenValue == nil) || [autoHideSplashScreenValue boolValue]) {
- [self setVisible:NO];
- }
-}
-
-- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context
-{
- [self updateImage];
-}
-
-- (void)createViews
-{
- /*
- * The Activity View is the top spinning throbber in the status/battery bar. We init it with the default Grey Style.
- *
- * whiteLarge = UIActivityIndicatorViewStyleWhiteLarge
- * white = UIActivityIndicatorViewStyleWhite
- * gray = UIActivityIndicatorViewStyleGray
- *
- */
-
- // Determine whether rotation should be enabled for this device
- // Per iOS HIG, landscape is only supported on iPad and iPhone 6+
- CDV_iOSDevice device = [self getCurrentDevice];
- BOOL autorotateValue = (device.iPad || device.iPhone6Plus) ?
- [(CDVViewController *)self.viewController shouldAutorotateDefaultValue] :
- NO;
-
- [(CDVViewController *)self.viewController setEnabledAutorotation:autorotateValue];
-
- NSString* topActivityIndicator = [self.commandDelegate.settings objectForKey:[@"TopActivityIndicator" lowercaseString]];
- UIActivityIndicatorViewStyle topActivityIndicatorStyle = UIActivityIndicatorViewStyleGray;
-
- if ([topActivityIndicator isEqualToString:@"whiteLarge"]) {
- topActivityIndicatorStyle = UIActivityIndicatorViewStyleWhiteLarge;
- } else if ([topActivityIndicator isEqualToString:@"white"]) {
- topActivityIndicatorStyle = UIActivityIndicatorViewStyleWhite;
- } else if ([topActivityIndicator isEqualToString:@"gray"]) {
- topActivityIndicatorStyle = UIActivityIndicatorViewStyleGray;
- }
-
- UIView* parentView = self.viewController.view;
- parentView.userInteractionEnabled = NO; // disable user interaction while splashscreen is shown
- _activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:topActivityIndicatorStyle];
- _activityView.center = CGPointMake(parentView.bounds.size.width / 2, parentView.bounds.size.height / 2);
- _activityView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin
- | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleRightMargin;
- [_activityView startAnimating];
-
- // Set the frame & image later.
- _imageView = [[UIImageView alloc] init];
- [parentView addSubview:_imageView];
-
- id showSplashScreenSpinnerValue = [self.commandDelegate.settings objectForKey:[@"ShowSplashScreenSpinner" lowercaseString]];
- // backwards compatibility - if key is missing, default to true
- if ((showSplashScreenSpinnerValue == nil) || [showSplashScreenSpinnerValue boolValue]) {
- [parentView addSubview:_activityView];
- }
-
- // Frame is required when launching in portrait mode.
- // Bounds for landscape since it captures the rotation.
- [parentView addObserver:self forKeyPath:@"frame" options:0 context:nil];
- [parentView addObserver:self forKeyPath:@"bounds" options:0 context:nil];
-
- [self updateImage];
-}
-
-- (void)destroyViews
-{
- [(CDVViewController *)self.viewController setEnabledAutorotation:[(CDVViewController *)self.viewController shouldAutorotateDefaultValue]];
-
- [_imageView removeFromSuperview];
- [_activityView removeFromSuperview];
- _imageView = nil;
- _activityView = nil;
- _curImageName = nil;
-
- self.viewController.view.userInteractionEnabled = YES; // re-enable user interaction upon completion
- [self.viewController.view removeObserver:self forKeyPath:@"frame"];
- [self.viewController.view removeObserver:self forKeyPath:@"bounds"];
-}
-
-- (CDV_iOSDevice) getCurrentDevice
-{
- CDV_iOSDevice device;
-
- UIScreen* mainScreen = [UIScreen mainScreen];
- CGFloat mainScreenHeight = mainScreen.bounds.size.height;
- CGFloat mainScreenWidth = mainScreen.bounds.size.width;
-
- int limit = MAX(mainScreenHeight,mainScreenWidth);
-
- device.iPad = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad);
- device.iPhone = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone);
- device.retina = ([mainScreen scale] == 2.0);
- device.iPhone5 = (device.iPhone && limit == 568.0);
- // note these below is not a true device detect, for example if you are on an
- // iPhone 6/6+ but the app is scaled it will prob set iPhone5 as true, but
- // this is appropriate for detecting the runtime screen environment
- device.iPhone6 = (device.iPhone && limit == 667.0);
- device.iPhone6Plus = (device.iPhone && limit == 736.0);
-
- return device;
-}
-
-- (NSString*)getImageName:(UIInterfaceOrientation)currentOrientation delegate:(id<CDVScreenOrientationDelegate>)orientationDelegate device:(CDV_iOSDevice)device
-{
- // Use UILaunchImageFile if specified in plist. Otherwise, use Default.
- NSString* imageName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UILaunchImageFile"];
-
- NSUInteger supportedOrientations = [orientationDelegate supportedInterfaceOrientations];
-
- // Checks to see if the developer has locked the orientation to use only one of Portrait or Landscape
- BOOL supportsLandscape = (supportedOrientations & UIInterfaceOrientationMaskLandscape);
- BOOL supportsPortrait = (supportedOrientations & UIInterfaceOrientationMaskPortrait || supportedOrientations & UIInterfaceOrientationMaskPortraitUpsideDown);
- // this means there are no mixed orientations in there
- BOOL isOrientationLocked = !(supportsPortrait && supportsLandscape);
-
- if (imageName) {
- imageName = [imageName stringByDeletingPathExtension];
- } else {
- imageName = @"Default";
- }
-
- if (device.iPhone5) { // does not support landscape
- imageName = [imageName stringByAppendingString:@"-568h"];
- } else if (device.iPhone6) { // does not support landscape
- imageName = [imageName stringByAppendingString:@"-667h"];
- } else if (device.iPhone6Plus) { // supports landscape
- if (isOrientationLocked) {
- imageName = [imageName stringByAppendingString:(supportsLandscape ? @"-Landscape" : @"")];
- } else {
- switch (currentOrientation) {
- case UIInterfaceOrientationLandscapeLeft:
- case UIInterfaceOrientationLandscapeRight:
- imageName = [imageName stringByAppendingString:@"-Landscape"];
- break;
- default:
- break;
- }
- }
- imageName = [imageName stringByAppendingString:@"-736h"];
-
- } else if (device.iPad) { // supports landscape
- if (isOrientationLocked) {
- imageName = [imageName stringByAppendingString:(supportsLandscape ? @"-Landscape" : @"-Portrait")];
- } else {
- switch (currentOrientation) {
- case UIInterfaceOrientationLandscapeLeft:
- case UIInterfaceOrientationLandscapeRight:
- imageName = [imageName stringByAppendingString:@"-Landscape"];
- break;
-
- case UIInterfaceOrientationPortrait:
- case UIInterfaceOrientationPortraitUpsideDown:
- default:
- imageName = [imageName stringByAppendingString:@"-Portrait"];
- break;
- }
- }
- }
-
- return imageName;
-}
-
-// Sets the view's frame and image.
-- (void)updateImage
-{
- NSString* imageName = [self getImageName:[[UIApplication sharedApplication] statusBarOrientation] delegate:(id<CDVScreenOrientationDelegate>)self.viewController device:[self getCurrentDevice]];
-
- if (![imageName isEqualToString:_curImageName]) {
- UIImage* img = [UIImage imageNamed:imageName];
- _imageView.image = img;
- _curImageName = imageName;
- }
-
- // Check that splash screen's image exists before updating bounds
- if (_imageView.image) {
- [self updateBounds];
- } else {
- NSLog(@"WARNING: The splashscreen image named %@ was not found", imageName);
- }
-}
-
-- (void)updateBounds
-{
- UIImage* img = _imageView.image;
- CGRect imgBounds = (img) ? CGRectMake(0, 0, img.size.width, img.size.height) : CGRectZero;
-
- CGSize screenSize = [self.viewController.view convertRect:[UIScreen mainScreen].bounds fromView:nil].size;
- UIInterfaceOrientation orientation = self.viewController.interfaceOrientation;
- CGAffineTransform imgTransform = CGAffineTransformIdentity;
-
- /* If and only if an iPhone application is landscape-only as per
- * UISupportedInterfaceOrientations, the view controller's orientation is
- * landscape. In this case the image must be rotated in order to appear
- * correctly.
- */
- BOOL isIPad = [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad;
- if (UIInterfaceOrientationIsLandscape(orientation) && !isIPad) {
- imgTransform = CGAffineTransformMakeRotation(M_PI / 2);
- imgBounds.size = CGSizeMake(imgBounds.size.height, imgBounds.size.width);
- }
-
- // There's a special case when the image is the size of the screen.
- if (CGSizeEqualToSize(screenSize, imgBounds.size)) {
- CGRect statusFrame = [self.viewController.view convertRect:[UIApplication sharedApplication].statusBarFrame fromView:nil];
- if (!(IsAtLeastiOSVersion(@"7.0"))) {
- imgBounds.origin.y -= statusFrame.size.height;
- }
- } else if (imgBounds.size.width > 0) {
- CGRect viewBounds = self.viewController.view.bounds;
- CGFloat imgAspect = imgBounds.size.width / imgBounds.size.height;
- CGFloat viewAspect = viewBounds.size.width / viewBounds.size.height;
- // This matches the behaviour of the native splash screen.
- CGFloat ratio;
- if (viewAspect > imgAspect) {
- ratio = viewBounds.size.width / imgBounds.size.width;
- } else {
- ratio = viewBounds.size.height / imgBounds.size.height;
- }
- imgBounds.size.height *= ratio;
- imgBounds.size.width *= ratio;
- }
-
- _imageView.transform = imgTransform;
- _imageView.frame = imgBounds;
-}
-
-- (void)setVisible:(BOOL)visible
-{
- if (visible == _visible) {
- return;
- }
- _visible = visible;
-
- id fadeSplashScreenValue = [self.commandDelegate.settings objectForKey:[@"FadeSplashScreen" lowercaseString]];
- id fadeSplashScreenDuration = [self.commandDelegate.settings objectForKey:[@"FadeSplashScreenDuration" lowercaseString]];
-
- float fadeDuration = fadeSplashScreenDuration == nil ? kSplashScreenDurationDefault : [fadeSplashScreenDuration floatValue];
-
- if ((fadeSplashScreenValue == nil) || ![fadeSplashScreenValue boolValue]) {
- fadeDuration = 0;
- }
-
- // Never animate the showing of the splash screen.
- if (visible) {
- if (_imageView == nil) {
- [self createViews];
- }
- } else if (fadeDuration == 0) {
- [self destroyViews];
- } else {
- __weak __typeof(self) weakSelf = self;
-
- [UIView transitionWithView:self.viewController.view
- duration:fadeDuration
- options:UIViewAnimationOptionTransitionNone
- animations:^(void) {
- __typeof(self) strongSelf = weakSelf;
- if (strongSelf != nil) {
- dispatch_async(dispatch_get_main_queue(), ^{
- [strongSelf->_activityView setAlpha:0];
- [strongSelf->_imageView setAlpha:0];
- });
- }
- }
- completion:^(BOOL finished) {
- if (finished) {
- dispatch_async(dispatch_get_main_queue(), ^{
- [weakSelf destroyViews];
- });
- }
- }
- ];
- }
-}
-
-@end
diff --git a/plugins/cordova-plugin-splashscreen/src/ios/CDVViewController+SplashScreen.h b/plugins/cordova-plugin-splashscreen/src/ios/CDVViewController+SplashScreen.h
deleted file mode 100644
index a948ea31..00000000
--- a/plugins/cordova-plugin-splashscreen/src/ios/CDVViewController+SplashScreen.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- 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.
- */
-
-#import <Cordova/CDVViewController.h>
-
-@interface CDVViewController (SplashScreen)
-
-@property (nonatomic, assign) BOOL enabledAutorotation;
-@property (nonatomic, readonly) BOOL shouldAutorotateDefaultValue;
-
-
-@end
diff --git a/plugins/cordova-plugin-splashscreen/src/ios/CDVViewController+SplashScreen.m b/plugins/cordova-plugin-splashscreen/src/ios/CDVViewController+SplashScreen.m
deleted file mode 100644
index 5736b6f2..00000000
--- a/plugins/cordova-plugin-splashscreen/src/ios/CDVViewController+SplashScreen.m
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- 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.
- */
-
-#import "CDVViewController+SplashScreen.h"
-#import <objc/runtime.h>
-
-@implementation CDVViewController (SplashScreen)
-
-@dynamic enabledAutorotation;
-
-- (void)setEnabledAutorotation:(BOOL)value
-{
- objc_setAssociatedObject(self,
- @selector(enabledAutorotation),
- [NSNumber numberWithBool:value],
- OBJC_ASSOCIATION_RETAIN_NONATOMIC);
-}
-
-- (BOOL)enabledAutorotation
-{
- NSNumber *number = (NSNumber *)objc_getAssociatedObject(self, @selector(enabledAutorotation));
- return [number boolValue];
-}
-
-+ (void)load
-{
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- Class class = [self class];
-
- SEL originalSelector = @selector(shouldAutorotate);
- SEL swizzledSelector = @selector(splash_shouldAutorotate);
-
- Method originalMethod = class_getInstanceMethod(class, originalSelector);
- Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector);
-
- BOOL didAddMethod = class_addMethod(class,
- originalSelector,
- method_getImplementation(swizzledMethod),
- method_getTypeEncoding(swizzledMethod));
-
- if (didAddMethod) {
- class_replaceMethod(class,
- swizzledSelector,
- method_getImplementation(originalMethod),
- method_getTypeEncoding(originalMethod));
- } else {
- method_exchangeImplementations(originalMethod, swizzledMethod);
- }
- });
-}
-
-#pragma mark - Method Swizzling
-
-- (BOOL)splash_shouldAutorotate
-{
- return self.enabledAutorotation;
-}
-
-
-- (BOOL)shouldAutorotateDefaultValue
-{
- return [self splash_shouldAutorotate];
-}
-
-@end
diff --git a/plugins/cordova-plugin-splashscreen/src/tizen/SplashScreenProxy.js b/plugins/cordova-plugin-splashscreen/src/tizen/SplashScreenProxy.js
deleted file mode 100644
index fbd9f35f..00000000
--- a/plugins/cordova-plugin-splashscreen/src/tizen/SplashScreenProxy.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- *
- * 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.
- *
-*/
-
-( function() {
-
-win = null;
-
-module.exports = {
- show: function() {
- if ( win === null ) {
- win = window.open('splashscreen.html');
- }
- },
-
- hide: function() {
- if ( win !== null ) {
- win.close();
- win = null;
- }
- }
-};
-
-require("cordova/tizen/commandProxy").add("SplashScreen", module.exports);
-
-})();
diff --git a/plugins/cordova-plugin-splashscreen/src/ubuntu/splashscreen.cpp b/plugins/cordova-plugin-splashscreen/src/ubuntu/splashscreen.cpp
deleted file mode 100644
index 1c9ecac8..00000000
--- a/plugins/cordova-plugin-splashscreen/src/ubuntu/splashscreen.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- *
- * Copyright 2013 Canonical Ltd.
- *
- * 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.
- *
-*/
-
-#include <QQuickItem>
-
-#include "splashscreen.h"
-#include <cordova.h>
-
-#define SPLASHSCREEN_STATE_NAME "splashscreen"
-
-Splashscreen::Splashscreen(Cordova *cordova): CPlugin(cordova) {
-}
-
-void Splashscreen::show(int, int) {
- m_cordova->rootObject()->setProperty("splashscreenPath", m_cordova->getSplashscreenPath());
-
- m_cordova->pushViewState(SPLASHSCREEN_STATE_NAME);
-}
-
-void Splashscreen::hide(int, int) {
- m_cordova->popViewState(SPLASHSCREEN_STATE_NAME);
-}
diff --git a/plugins/cordova-plugin-splashscreen/src/ubuntu/splashscreen.h b/plugins/cordova-plugin-splashscreen/src/ubuntu/splashscreen.h
deleted file mode 100644
index 1d437f84..00000000
--- a/plugins/cordova-plugin-splashscreen/src/ubuntu/splashscreen.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- *
- * Copyright 2013 Canonical Ltd.
- *
- * 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.
- *
-*/
-
-#ifndef SPLASHSCREEN_H
-#define SPLASHSCREEN_H
-
-#include <QtCore>
-#include <cplugin.h>
-
-class Splashscreen: public CPlugin {
- Q_OBJECT
-public:
- explicit Splashscreen(Cordova *cordova);
-
- virtual const QString fullName() override {
- return Splashscreen::fullID();
- }
-
- virtual const QString shortName() override {
- return "SplashScreen";
- }
-
- static const QString fullID() {
- return "SplashScreen";
- }
-
-public slots:
- void show(int, int);
- void hide(int, int);
-};
-
-#endif // SPLASHSCREEN_H
diff --git a/plugins/cordova-plugin-splashscreen/src/wp/ResolutionHelper.cs b/plugins/cordova-plugin-splashscreen/src/wp/ResolutionHelper.cs
deleted file mode 100644
index 050c3927..00000000
--- a/plugins/cordova-plugin-splashscreen/src/wp/ResolutionHelper.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- 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.Info;
-using System;
-using System.Windows;
-
-namespace WPCordovaClassLib.Cordova.Commands
-{
- public enum Resolutions { WVGA, WXGA, HD };
-
- public static class ResolutionHelper
- {
- public static Resolutions CurrentResolution
- {
- get
- {
- switch (Application.Current.Host.Content.ScaleFactor)
- {
- case 100: return Resolutions.WVGA;
- case 160: return Resolutions.WXGA;
- case 150: return Resolutions.HD;
- }
- throw new InvalidOperationException("Unknown resolution");
- }
- }
- }
-} \ No newline at end of file
diff --git a/plugins/cordova-plugin-splashscreen/src/wp/SplashScreen.cs b/plugins/cordova-plugin-splashscreen/src/wp/SplashScreen.cs
deleted file mode 100644
index 680a8058..00000000
--- a/plugins/cordova-plugin-splashscreen/src/wp/SplashScreen.cs
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- 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 System;
-using System.Net;
-using System.Windows;
-using System.Windows.Controls;
-using System.Windows.Documents;
-using System.Windows.Ink;
-using System.Windows.Input;
-using System.Windows.Media;
-using System.Windows.Media.Animation;
-using System.Windows.Shapes;
-using Microsoft.Phone.Info;
-using System.Windows.Controls.Primitives;
-using System.Diagnostics;
-using System.Windows.Media.Imaging;
-using System.Windows.Resources;
-using System.IO;
-using System.Xml.Linq;
-using System.Linq;
-using System.Windows.Threading;
-
-namespace WPCordovaClassLib.Cordova.Commands
-{
- /// <summary>
- /// Listens for changes to the state of the battery on the device.
- /// Currently only the "isPlugged" parameter available via native APIs.
- /// </summary>
- public class SplashScreen : BaseCommand
- {
- private Popup popup;
-
- // Time until we dismiss the splashscreen
- private int prefDelay = 3000;
-
- // Whether we hide it by default
- private bool prefAutoHide = true;
-
- // Path to image to use
- private string prefImagePath = "SplashScreenImage.jpg";
-
- // static because autodismiss is only ever applied once, at app launch
- // subsequent page loads should not cause the SplashScreen to be shown.
- private static bool WasShown = false;
-
- public SplashScreen()
- {
- LoadConfigPrefs();
-
- Image SplashScreen = new Image()
- {
- Height = Application.Current.Host.Content.ActualHeight,
- Width = Application.Current.Host.Content.ActualWidth,
- Stretch = Stretch.Fill
- };
-
- var imageResource = GetSplashScreenImageResource();
- if (imageResource != null)
- {
- BitmapImage splash_image = new BitmapImage();
- splash_image.SetSource(imageResource.Stream);
- SplashScreen.Source = splash_image;
- }
-
- // Instansiate the popup and set the Child property of Popup to SplashScreen
- popup = new Popup() { IsOpen = false,
- Child = SplashScreen,
- HorizontalAlignment = HorizontalAlignment.Stretch,
- VerticalAlignment = VerticalAlignment.Center
-
- };
- }
-
- public override void OnInit()
- {
- // we only want to autoload on the first page load.
- // but OnInit is called for every page load.
- if (!SplashScreen.WasShown)
- {
- SplashScreen.WasShown = true;
- show();
- }
- }
-
- private void LoadConfigPrefs()
- {
- StreamResourceInfo streamInfo = Application.GetResourceStream(new Uri("config.xml", UriKind.Relative));
- if (streamInfo != null)
- {
- using (StreamReader sr = new StreamReader(streamInfo.Stream))
- {
- //This will Read Keys Collection for the xml file
- XDocument configFile = XDocument.Parse(sr.ReadToEnd());
-
- string configAutoHide = configFile.Descendants()
- .Where(x => (string)x.Attribute("name") == "AutoHideSplashScreen")
- .Select(x => (string)x.Attribute("value"))
- .FirstOrDefault();
-
- bool bVal;
- prefAutoHide = bool.TryParse(configAutoHide, out bVal) ? bVal : prefAutoHide;
-
- string configDelay = configFile.Descendants()
- .Where(x => (string)x.Attribute("name") == "SplashScreenDelay")
- .Select(x => (string)x.Attribute("value"))
- .FirstOrDefault();
- int nVal;
- prefDelay = int.TryParse(configDelay, out nVal) ? nVal : prefDelay;
-
- string configImage = configFile.Descendants()
- .Where(x => (string)x.Attribute("name") == "SplashScreen")
- .Select(x => (string)x.Attribute("value"))
- .FirstOrDefault();
-
- if (!String.IsNullOrEmpty(configImage))
- {
- prefImagePath = configImage;
- }
- }
- }
- }
-
- private StreamResourceInfo GetSplashScreenImageResource()
- {
- // Get the base filename for the splash screen images
- string imageName = System.IO.Path.GetFileNameWithoutExtension(prefImagePath);
- Uri imageUri = null;
- StreamResourceInfo imageResource = null;
-
- // First, try to get a resolution-specific splashscreen
- try
- {
- // Determine the device's resolution
- switch (ResolutionHelper.CurrentResolution)
- {
- case Resolutions.HD:
- imageUri = new Uri(imageName + ".screen-720p.jpg", UriKind.Relative);
- break;
-
- case Resolutions.WVGA:
- imageUri = new Uri(imageName + ".screen-WVGA.jpg", UriKind.Relative);
- break;
-
- case Resolutions.WXGA:
- default:
- imageUri = new Uri(imageName + ".screen-WXGA.jpg", UriKind.Relative);
- break;
- }
-
- imageResource = Application.GetResourceStream(imageUri);
- }
- catch (Exception)
- {
- // It's OK if we didn't get a resolution-specific image
- }
-
- // Fallback to the default image name without decoration
- if (imageResource == null)
- {
- imageUri = new Uri(prefImagePath, UriKind.Relative);
- imageResource = Application.GetResourceStream(imageUri);
- }
-
- if (imageUri != null) Debug.WriteLine("INFO :: SplashScreen: using image {0}", imageUri.OriginalString);
-
- return imageResource;
- }
-
- public void show(string options = null)
- {
- Deployment.Current.Dispatcher.BeginInvoke(() =>
- {
- if (!popup.IsOpen)
- {
- popup.Child.Opacity = 0;
-
- Storyboard story = new Storyboard();
- DoubleAnimation animation = new DoubleAnimation()
- {
- From = 0.0,
- To = 1.0,
- Duration = new Duration(TimeSpan.FromSeconds(0.2))
- };
-
- Storyboard.SetTarget(animation, popup.Child);
- Storyboard.SetTargetProperty(animation, new PropertyPath("Opacity"));
- story.Children.Add(animation);
-
- story.Begin();
-
- popup.IsOpen = true;
-
- if (prefAutoHide)
- {
- StartAutoHideTimer();
- }
- }
- });
- }
-
- public void hide(string options = null)
- {
- Deployment.Current.Dispatcher.BeginInvoke(() =>
- {
- if (popup.IsOpen)
- {
- popup.Child.Opacity = 1.0;
-
- Storyboard story = new Storyboard();
- DoubleAnimation animation = new DoubleAnimation()
- {
- From = 1.0,
- To = 0.0,
- Duration = new Duration(TimeSpan.FromSeconds(0.4))
- };
-
- Storyboard.SetTarget(animation, popup.Child);
- Storyboard.SetTargetProperty(animation, new PropertyPath("Opacity"));
- story.Children.Add(animation);
- story.Completed += (object sender, EventArgs e) =>
- {
- popup.IsOpen = false;
- };
- story.Begin();
- }
- });
- }
-
- private void StartAutoHideTimer()
- {
- var timer = new DispatcherTimer() { Interval = TimeSpan.FromMilliseconds(prefDelay) };
- timer.Tick += (object sender, EventArgs e) =>
- {
- hide();
- timer.Stop();
- };
- timer.Start();
- }
- }
-}