forked from CIT/Vmeda.Online
		
	MOBILE-2959 ionic: Add a shade to Android status bar
This commit is contained in:
		
							parent
							
								
									9b4da3e474
								
							
						
					
					
						commit
						d550f1d18d
					
				| @ -14,6 +14,7 @@ | |||||||
| 
 | 
 | ||||||
| import { Injectable } from '@angular/core'; | import { Injectable } from '@angular/core'; | ||||||
| import { Http } from '@angular/http'; | import { Http } from '@angular/http'; | ||||||
|  | import { CoreAppProvider } from '@providers/app'; | ||||||
| import { CoreFileProvider } from '@providers/file'; | import { CoreFileProvider } from '@providers/file'; | ||||||
| import { CoreFilepoolProvider } from '@providers/filepool'; | import { CoreFilepoolProvider } from '@providers/filepool'; | ||||||
| import { CoreLoggerProvider } from '@providers/logger'; | import { CoreLoggerProvider } from '@providers/logger'; | ||||||
| @ -34,7 +35,8 @@ export class AddonRemoteThemesProvider { | |||||||
|     protected stylesEls: {[siteId: string]: {element: HTMLStyleElement, hash: string}} = {}; |     protected stylesEls: {[siteId: string]: {element: HTMLStyleElement, hash: string}} = {}; | ||||||
| 
 | 
 | ||||||
|     constructor(logger: CoreLoggerProvider, private sitesProvider: CoreSitesProvider, private fileProvider: CoreFileProvider, |     constructor(logger: CoreLoggerProvider, private sitesProvider: CoreSitesProvider, private fileProvider: CoreFileProvider, | ||||||
|             private filepoolProvider: CoreFilepoolProvider, private http: Http, private utils: CoreUtilsProvider) { |             private filepoolProvider: CoreFilepoolProvider, private http: Http, private utils: CoreUtilsProvider, | ||||||
|  |             private appProvider: CoreAppProvider) { | ||||||
|         this.logger = logger.getInstance('AddonRemoteThemesProvider'); |         this.logger = logger.getInstance('AddonRemoteThemesProvider'); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -75,6 +77,9 @@ export class AddonRemoteThemesProvider { | |||||||
|         styles.forEach((style) => { |         styles.forEach((style) => { | ||||||
|             this.disableElement(style, true); |             this.disableElement(style, true); | ||||||
|         }); |         }); | ||||||
|  | 
 | ||||||
|  |         // Set StatusBar properties.
 | ||||||
|  |         this.appProvider.setStatusBarColor(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /** |     /** | ||||||
| @ -91,6 +96,10 @@ export class AddonRemoteThemesProvider { | |||||||
|         } else { |         } else { | ||||||
|             element.disabled = false; |             element.disabled = false; | ||||||
|             element.removeAttribute('disabled'); |             element.removeAttribute('disabled'); | ||||||
|  | 
 | ||||||
|  |             if (element.innerHTML != '') { | ||||||
|  |                 this.appProvider.resetStatusBarColor(); | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -14,7 +14,6 @@ | |||||||
| 
 | 
 | ||||||
| import { Component, OnInit, NgZone } from '@angular/core'; | import { Component, OnInit, NgZone } from '@angular/core'; | ||||||
| import { Platform, IonicApp } from 'ionic-angular'; | import { Platform, IonicApp } from 'ionic-angular'; | ||||||
| import { StatusBar } from '@ionic-native/status-bar'; |  | ||||||
| import { CoreAppProvider } from '@providers/app'; | import { CoreAppProvider } from '@providers/app'; | ||||||
| import { CoreEventsProvider } from '@providers/events'; | import { CoreEventsProvider } from '@providers/events'; | ||||||
| import { CoreLangProvider } from '@providers/lang'; | import { CoreLangProvider } from '@providers/lang'; | ||||||
| @ -23,7 +22,6 @@ import { CoreSitesProvider } from '@providers/sites'; | |||||||
| import { CoreLoginHelperProvider } from '@core/login/providers/helper'; | import { CoreLoginHelperProvider } from '@core/login/providers/helper'; | ||||||
| import { Keyboard } from '@ionic-native/keyboard'; | import { Keyboard } from '@ionic-native/keyboard'; | ||||||
| import { ScreenOrientation } from '@ionic-native/screen-orientation'; | import { ScreenOrientation } from '@ionic-native/screen-orientation'; | ||||||
| import { CoreConfigConstants } from '../configconstants'; |  | ||||||
| 
 | 
 | ||||||
| @Component({ | @Component({ | ||||||
|     templateUrl: 'app.html' |     templateUrl: 'app.html' | ||||||
| @ -35,7 +33,7 @@ export class MoodleMobileApp implements OnInit { | |||||||
|     protected logger; |     protected logger; | ||||||
|     protected lastUrls = {}; |     protected lastUrls = {}; | ||||||
| 
 | 
 | ||||||
|     constructor(private platform: Platform, statusBar: StatusBar, logger: CoreLoggerProvider, keyboard: Keyboard, |     constructor(private platform: Platform, logger: CoreLoggerProvider, keyboard: Keyboard, | ||||||
|             private eventsProvider: CoreEventsProvider, private loginHelper: CoreLoginHelperProvider, private zone: NgZone, |             private eventsProvider: CoreEventsProvider, private loginHelper: CoreLoginHelperProvider, private zone: NgZone, | ||||||
|             private appProvider: CoreAppProvider, private langProvider: CoreLangProvider, private sitesProvider: CoreSitesProvider, |             private appProvider: CoreAppProvider, private langProvider: CoreLangProvider, private sitesProvider: CoreSitesProvider, | ||||||
|             private screenOrientation: ScreenOrientation, app: IonicApp) { |             private screenOrientation: ScreenOrientation, app: IonicApp) { | ||||||
| @ -46,24 +44,7 @@ export class MoodleMobileApp implements OnInit { | |||||||
|             // Here you can do any higher level native things you might need.
 |             // Here you can do any higher level native things you might need.
 | ||||||
| 
 | 
 | ||||||
|             // Set StatusBar properties.
 |             // Set StatusBar properties.
 | ||||||
|             if (typeof CoreConfigConstants.statusbarbgios == 'string' && platform.is('ios')) { |             this.appProvider.setStatusBarColor(); | ||||||
|                 // IOS Status bar properties.
 |  | ||||||
|                 statusBar.overlaysWebView(false); |  | ||||||
|                 statusBar.backgroundColorByHexString(CoreConfigConstants.statusbarbgios); |  | ||||||
|                 CoreConfigConstants.statusbarlighttextios ? statusBar.styleLightContent() : statusBar.styleDefault(); |  | ||||||
|             } else if (typeof CoreConfigConstants.statusbarbgandroid == 'string' && platform.is('android')) { |  | ||||||
|                 // Android Status bar properties.
 |  | ||||||
|                 statusBar.backgroundColorByHexString(CoreConfigConstants.statusbarbgandroid); |  | ||||||
|                 CoreConfigConstants.statusbarlighttextandroid ? statusBar.styleLightContent() : statusBar.styleDefault(); |  | ||||||
|             } else if (typeof CoreConfigConstants.statusbarbg == 'string') { |  | ||||||
|                 // Generic Status bar properties.
 |  | ||||||
|                 platform.is('ios') && statusBar.overlaysWebView(false); |  | ||||||
|                 statusBar.backgroundColorByHexString(CoreConfigConstants.statusbarbg); |  | ||||||
|                 CoreConfigConstants.statusbarlighttext ? statusBar.styleLightContent() : statusBar.styleDefault(); |  | ||||||
|             } else { |  | ||||||
|                 // Default Status bar properties.
 |  | ||||||
|                 platform.is('android') ? statusBar.styleLightContent() : statusBar.styleDefault(); |  | ||||||
|             } |  | ||||||
| 
 | 
 | ||||||
|             keyboard.hideFormAccessoryBar(false); |             keyboard.hideFormAccessoryBar(false); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -77,6 +77,8 @@ | |||||||
|     "statusbarlighttext": false, |     "statusbarlighttext": false, | ||||||
|     "statusbarbgios": false, |     "statusbarbgios": false, | ||||||
|     "statusbarlighttextios": false, |     "statusbarlighttextios": false, | ||||||
|     "statusbarbgandroid": false, |     "statusbarbgandroid": "#df7310", | ||||||
|     "statusbarlighttextandroid": false |     "statusbarlighttextandroid": true, | ||||||
|  |     "statusbarbgremotetheme": "#000000", | ||||||
|  |     "statusbarlighttextremotetheme": true | ||||||
| } | } | ||||||
|  | |||||||
| @ -16,11 +16,13 @@ import { Injectable, NgZone } from '@angular/core'; | |||||||
| import { Platform, App, NavController, MenuController } from 'ionic-angular'; | import { Platform, App, NavController, MenuController } from 'ionic-angular'; | ||||||
| import { Keyboard } from '@ionic-native/keyboard'; | import { Keyboard } from '@ionic-native/keyboard'; | ||||||
| import { Network } from '@ionic-native/network'; | import { Network } from '@ionic-native/network'; | ||||||
|  | import { StatusBar } from '@ionic-native/status-bar'; | ||||||
| 
 | 
 | ||||||
| import { CoreDbProvider } from './db'; | import { CoreDbProvider } from './db'; | ||||||
| import { CoreLoggerProvider } from './logger'; | import { CoreLoggerProvider } from './logger'; | ||||||
| import { CoreEventsProvider } from './events'; | import { CoreEventsProvider } from './events'; | ||||||
| import { SQLiteDB } from '@classes/sqlitedb'; | import { SQLiteDB } from '@classes/sqlitedb'; | ||||||
|  | import { CoreConfigConstants } from '../configconstants'; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Data stored for a redirect to another page/site. |  * Data stored for a redirect to another page/site. | ||||||
| @ -72,7 +74,7 @@ export class CoreAppProvider { | |||||||
| 
 | 
 | ||||||
|     constructor(dbProvider: CoreDbProvider, private platform: Platform, private keyboard: Keyboard, private appCtrl: App, |     constructor(dbProvider: CoreDbProvider, private platform: Platform, private keyboard: Keyboard, private appCtrl: App, | ||||||
|             private network: Network, logger: CoreLoggerProvider, events: CoreEventsProvider, zone: NgZone, |             private network: Network, logger: CoreLoggerProvider, events: CoreEventsProvider, zone: NgZone, | ||||||
|             private menuCtrl: MenuController) { |             private menuCtrl: MenuController, private statusBar: StatusBar) { | ||||||
|         this.logger = logger.getInstance('CoreAppProvider'); |         this.logger = logger.getInstance('CoreAppProvider'); | ||||||
|         this.db = dbProvider.getDB(this.DBNAME); |         this.db = dbProvider.getDB(this.DBNAME); | ||||||
| 
 | 
 | ||||||
| @ -490,4 +492,44 @@ export class CoreAppProvider { | |||||||
|             return index >= 0 && !!this.backActions.splice(index, 1); |             return index >= 0 && !!this.backActions.splice(index, 1); | ||||||
|         }; |         }; | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Set StatusBar color depending on platform. | ||||||
|  |      */ | ||||||
|  |     setStatusBarColor(): void { | ||||||
|  |         if (typeof CoreConfigConstants.statusbarbgios == 'string' && this.platform.is('ios')) { | ||||||
|  |             // IOS Status bar properties.
 | ||||||
|  |             this.statusBar.overlaysWebView(false); | ||||||
|  |             this.statusBar.backgroundColorByHexString(CoreConfigConstants.statusbarbgios); | ||||||
|  |             CoreConfigConstants.statusbarlighttextios ? this.statusBar.styleLightContent() : this.statusBar.styleDefault(); | ||||||
|  |         } else if (typeof CoreConfigConstants.statusbarbgandroid == 'string' && this.platform.is('android')) { | ||||||
|  |             // Android Status bar properties.
 | ||||||
|  |             this.statusBar.backgroundColorByHexString(CoreConfigConstants.statusbarbgandroid); | ||||||
|  |             CoreConfigConstants.statusbarlighttextandroid ? this.statusBar.styleLightContent() : this.statusBar.styleDefault(); | ||||||
|  |         } else if (typeof CoreConfigConstants.statusbarbg == 'string') { | ||||||
|  |             // Generic Status bar properties.
 | ||||||
|  |             this.platform.is('ios') && this.statusBar.overlaysWebView(false); | ||||||
|  |             this.statusBar.backgroundColorByHexString(CoreConfigConstants.statusbarbg); | ||||||
|  |             CoreConfigConstants.statusbarlighttext ? this.statusBar.styleLightContent() : this.statusBar.styleDefault(); | ||||||
|  |         } else { | ||||||
|  |             // Default Status bar properties.
 | ||||||
|  |             this.platform.is('android') ? this.statusBar.styleLightContent() : this.statusBar.styleDefault(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Reset StatusBar color if any was set. | ||||||
|  |      */ | ||||||
|  |     resetStatusBarColor(): void { | ||||||
|  |         if (typeof CoreConfigConstants.statusbarbgremotetheme == 'string' && | ||||||
|  |                 ((typeof CoreConfigConstants.statusbarbgios == 'string' && this.platform.is('ios')) || | ||||||
|  |                 (typeof CoreConfigConstants.statusbarbgandroid == 'string' && this.platform.is('android')) || | ||||||
|  |                 typeof CoreConfigConstants.statusbarbg == 'string')) { | ||||||
|  |             // If the status bar has been overriden and there's a fallback color for remote themes, use it now.
 | ||||||
|  |             this.platform.is('ios') && this.statusBar.overlaysWebView(false); | ||||||
|  |             this.statusBar.backgroundColorByHexString(CoreConfigConstants.statusbarbgremotetheme); | ||||||
|  |             CoreConfigConstants.statusbarlighttextremotetheme ? | ||||||
|  |                 this.statusBar.styleLightContent() : this.statusBar.styleDefault(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user