├── .gitignore ├── CSS ├── font-awesome.min.css ├── fontawesome-webfont.woff2 └── main.css ├── Javascripts ├── interactions.js ├── jquery-2.1.4.min.js ├── main.js ├── materialize.min.js ├── packery.pkgd.min.js └── search.js ├── MVP ├── .editorconfig ├── .gitattributes ├── .gitignore ├── Add java options.reg ├── Getting Started with MVP Site API.docx ├── MVP.VS2017.sln ├── MVP │ ├── MVP.Droid │ │ ├── Assets │ │ │ └── AboutAssets.txt │ │ ├── CookieHelper.cs │ │ ├── Helpers │ │ │ ├── Localize.cs │ │ │ └── Settings.cs │ │ ├── MVP.Droid.csproj │ │ ├── MVP.Droid.csproj.bak │ │ ├── MainActivity.cs │ │ ├── MainApplication.cs │ │ ├── Properties │ │ │ ├── AndroidManifest.xml │ │ │ └── AssemblyInfo.cs │ │ ├── Resources │ │ │ ├── Resource.Designer.cs │ │ │ ├── drawable-hdpi │ │ │ │ ├── BellNew.svg │ │ │ │ ├── Blog.svg │ │ │ │ ├── Book02.svg │ │ │ │ ├── Cancel.svg │ │ │ │ ├── ConferenceSpeaker.svg │ │ │ │ ├── Free.svg │ │ │ │ ├── HeadphoneMike.svg │ │ │ │ ├── Media.svg │ │ │ │ ├── People.svg │ │ │ │ ├── SettingWF.svg │ │ │ │ ├── SettingsWF.svg │ │ │ │ ├── Support.svg │ │ │ │ ├── UserLogin.svg │ │ │ │ ├── fab_add.png │ │ │ │ ├── icon.png │ │ │ │ ├── image_blog.png │ │ │ │ ├── image_book.png │ │ │ │ ├── image_cancel.png │ │ │ │ ├── image_code.png │ │ │ │ ├── image_defaultactivity.png │ │ │ │ ├── image_discussion.png │ │ │ │ ├── image_feedback.png │ │ │ │ ├── image_mvplogo.png │ │ │ │ ├── image_notifications.png │ │ │ │ ├── image_speaker.png │ │ │ │ ├── image_splash_logo.png │ │ │ │ ├── image_video.png │ │ │ │ ├── toolbar_add.png │ │ │ │ ├── toolbar_close.png │ │ │ │ └── toolbar_settings.png │ │ │ ├── drawable-mdpi │ │ │ │ ├── fab_add.png │ │ │ │ ├── icon.png │ │ │ │ ├── image_blog.png │ │ │ │ ├── image_book.png │ │ │ │ ├── image_cancel.png │ │ │ │ ├── image_code.png │ │ │ │ ├── image_defaultactivity.png │ │ │ │ ├── image_discussion.png │ │ │ │ ├── image_feedback.png │ │ │ │ ├── image_mvplogo.png │ │ │ │ ├── image_notifications.png │ │ │ │ ├── image_speaker.png │ │ │ │ ├── image_splash_logo.png │ │ │ │ ├── image_video.png │ │ │ │ ├── toolbar_add.png │ │ │ │ ├── toolbar_close.png │ │ │ │ └── toolbar_settings.png │ │ │ ├── drawable-xhdpi │ │ │ │ ├── BellNew.svg │ │ │ │ ├── Blog.svg │ │ │ │ ├── Book02.svg │ │ │ │ ├── Cancel.svg │ │ │ │ ├── ConferenceSpeaker.svg │ │ │ │ ├── Free.svg │ │ │ │ ├── HeadphoneMike.svg │ │ │ │ ├── Media.svg │ │ │ │ ├── People.svg │ │ │ │ ├── SettingWF.svg │ │ │ │ ├── SettingsWF.svg │ │ │ │ ├── Support.svg │ │ │ │ ├── UserLogin.svg │ │ │ │ ├── fab_add.png │ │ │ │ ├── icon.png │ │ │ │ ├── image_blog.png │ │ │ │ ├── image_book.png │ │ │ │ ├── image_cancel.png │ │ │ │ ├── image_code.png │ │ │ │ ├── image_defaultactivity.png │ │ │ │ ├── image_discussion.png │ │ │ │ ├── image_feedback.png │ │ │ │ ├── image_mvplogo.png │ │ │ │ ├── image_notifications.png │ │ │ │ ├── image_speaker.png │ │ │ │ ├── image_splash_logo.png │ │ │ │ ├── image_video.png │ │ │ │ ├── toolbar_add.png │ │ │ │ ├── toolbar_close.png │ │ │ │ └── toolbar_settings.png │ │ │ ├── drawable-xxhdpi │ │ │ │ ├── BellNew.svg │ │ │ │ ├── Blog.svg │ │ │ │ ├── Book02.svg │ │ │ │ ├── Cancel.svg │ │ │ │ ├── ConferenceSpeaker.svg │ │ │ │ ├── Free.svg │ │ │ │ ├── HeadphoneMike.svg │ │ │ │ ├── Media.svg │ │ │ │ ├── People.svg │ │ │ │ ├── SettingWF.svg │ │ │ │ ├── SettingsWF.svg │ │ │ │ ├── Support.svg │ │ │ │ ├── UserLogin.svg │ │ │ │ ├── fab_add.png │ │ │ │ ├── icon.png │ │ │ │ ├── image_blog.png │ │ │ │ ├── image_book.png │ │ │ │ ├── image_cancel.png │ │ │ │ ├── image_code.png │ │ │ │ ├── image_defaultactivity.png │ │ │ │ ├── image_discussion.png │ │ │ │ ├── image_feedback.png │ │ │ │ ├── image_mvplogo.png │ │ │ │ ├── image_notifications.png │ │ │ │ ├── image_speaker.png │ │ │ │ ├── image_splash_logo.png │ │ │ │ ├── image_video.png │ │ │ │ ├── mvplogoplus.svg │ │ │ │ ├── toolbar_add.png │ │ │ │ ├── toolbar_close.png │ │ │ │ └── toolbar_settings.png │ │ │ ├── drawable-xxxhdpi │ │ │ │ ├── fab_add.png │ │ │ │ ├── image_splash_logo.png │ │ │ │ ├── toolbar_add.png │ │ │ │ ├── toolbar_close.png │ │ │ │ └── toolbar_settings.png │ │ │ ├── drawable │ │ │ │ ├── icon.png │ │ │ │ ├── image_benefits.png │ │ │ │ ├── image_mvplogo.png │ │ │ │ └── splash_screen.xml │ │ │ ├── layout │ │ │ │ ├── Tabbar.axml │ │ │ │ ├── Toolbar.axml │ │ │ │ ├── simple_spinner_dropdown_item.xml │ │ │ │ └── simple_spinner_item.xml │ │ │ ├── mipmap-hdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── values-v19 │ │ │ │ └── styles.xml │ │ │ ├── values-v21 │ │ │ │ └── styles.xml │ │ │ └── values │ │ │ │ ├── colors.xml │ │ │ │ ├── strings.xml │ │ │ │ └── styles.xml │ │ ├── SignoutHelper.cs │ │ ├── SplashActivity.cs │ │ ├── app.config │ │ ├── mobile-center-post-clone.sh │ │ ├── packages.config │ │ └── proguard.cfg │ ├── MVP.UWP │ │ ├── App.xaml │ │ ├── App.xaml.cs │ │ ├── Assets │ │ │ ├── BadgeLogo.scale-100.png │ │ │ ├── BadgeLogo.scale-125.png │ │ │ ├── BadgeLogo.scale-150.png │ │ │ ├── BadgeLogo.scale-200.png │ │ │ ├── BadgeLogo.scale-400.png │ │ │ ├── LargeTile.scale-100.png │ │ │ ├── LargeTile.scale-125.png │ │ │ ├── LargeTile.scale-150.png │ │ │ ├── LargeTile.scale-200.png │ │ │ ├── LargeTile.scale-400.png │ │ │ ├── LockScreenLogo.scale-200.png │ │ │ ├── SmallTile.scale-100.png │ │ │ ├── SmallTile.scale-125.png │ │ │ ├── SmallTile.scale-150.png │ │ │ ├── SmallTile.scale-200.png │ │ │ ├── SmallTile.scale-400.png │ │ │ ├── SplashScreen.scale-100.png │ │ │ ├── SplashScreen.scale-125.png │ │ │ ├── SplashScreen.scale-150.png │ │ │ ├── SplashScreen.scale-200.png │ │ │ ├── SplashScreen.scale-400.png │ │ │ ├── Square150x150Logo.scale-100.png │ │ │ ├── Square150x150Logo.scale-125.png │ │ │ ├── Square150x150Logo.scale-150.png │ │ │ ├── Square150x150Logo.scale-200.png │ │ │ ├── Square150x150Logo.scale-400.png │ │ │ ├── Square44x44Logo.altform-unplated_targetsize-16.png │ │ │ ├── Square44x44Logo.altform-unplated_targetsize-256.png │ │ │ ├── Square44x44Logo.altform-unplated_targetsize-32.png │ │ │ ├── Square44x44Logo.altform-unplated_targetsize-48.png │ │ │ ├── Square44x44Logo.scale-100.png │ │ │ ├── Square44x44Logo.scale-125.png │ │ │ ├── Square44x44Logo.scale-150.png │ │ │ ├── Square44x44Logo.scale-200.png │ │ │ ├── Square44x44Logo.scale-400.png │ │ │ ├── Square44x44Logo.targetsize-16.png │ │ │ ├── Square44x44Logo.targetsize-24.png │ │ │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ │ │ ├── Square44x44Logo.targetsize-256.png │ │ │ ├── Square44x44Logo.targetsize-32.png │ │ │ ├── Square44x44Logo.targetsize-48.png │ │ │ ├── StoreLogo.png │ │ │ ├── StoreLogo.scale-100.png │ │ │ ├── StoreLogo.scale-125.png │ │ │ ├── StoreLogo.scale-150.png │ │ │ ├── StoreLogo.scale-200.png │ │ │ ├── StoreLogo.scale-400.png │ │ │ ├── Wide310x150Logo.scale-100.png │ │ │ ├── Wide310x150Logo.scale-125.png │ │ │ ├── Wide310x150Logo.scale-150.png │ │ │ ├── Wide310x150Logo.scale-200.png │ │ │ ├── Wide310x150Logo.scale-400.png │ │ │ ├── icon.png │ │ │ ├── image_benefits.png │ │ │ ├── image_blog.png │ │ │ ├── image_book.png │ │ │ ├── image_cancel.png │ │ │ ├── image_code.png │ │ │ ├── image_defaultactivity.png │ │ │ ├── image_discussion.png │ │ │ ├── image_feedback.png │ │ │ ├── image_mvplogo.png │ │ │ ├── image_notifications.png │ │ │ ├── image_speaker.png │ │ │ ├── image_video.png │ │ │ ├── toolbar_add.png │ │ │ ├── toolbar_close.png │ │ │ ├── toolbar_refresh.png │ │ │ └── toolbar_settings.png │ │ ├── Localize.cs │ │ ├── MVP.UWP.csproj │ │ ├── MainPage.xaml │ │ ├── MainPage.xaml.cs │ │ ├── Package.appxmanifest │ │ ├── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ └── Default.rd.xml │ │ ├── Renders │ │ │ └── CookieHelper.cs │ │ └── project.json │ ├── MVP.iOS │ │ ├── AppDelegate.cs │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── Contents.json │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ │ └── iTunesArtwork@2x.png │ │ │ └── Contents.json │ │ ├── CustomControls │ │ │ ├── CookieHelper.cs │ │ │ └── SignOutHelper.cs │ │ ├── Entitlements.plist │ │ ├── Helpers │ │ │ ├── Extensions.cs │ │ │ ├── Localize.cs │ │ │ └── Settings.cs │ │ ├── Info.plist │ │ ├── MVP.iOS.csproj │ │ ├── Main.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ ├── Renderers │ │ │ ├── CustomEntryRenderer.cs │ │ │ └── TabsRenderer.cs │ │ ├── Resources │ │ │ ├── LaunchScreen.storyboard │ │ │ ├── image_blog.png │ │ │ ├── image_book.png │ │ │ ├── image_cancel.png │ │ │ ├── image_code.png │ │ │ ├── image_defaultactivity.png │ │ │ ├── image_discussion.png │ │ │ ├── image_feedback.png │ │ │ ├── image_mvplaunch.png │ │ │ ├── image_mvplogo.png │ │ │ ├── image_speaker.png │ │ │ ├── image_video.png │ │ │ ├── tab_contribution@2x.png │ │ │ ├── tab_contribution@3x.png │ │ │ ├── tab_contribution_selected@2x.png │ │ │ ├── tab_contribution_selected@3x.png │ │ │ ├── tab_profile@2x.png │ │ │ ├── tab_profile@3x.png │ │ │ ├── tab_profile_selected@2x.png │ │ │ ├── tab_profile_selected@3x.png │ │ │ ├── toolbar_add@2x.png │ │ │ ├── toolbar_add@3x.png │ │ │ ├── toolbar_close@2x.png │ │ │ ├── toolbar_close@3x.png │ │ │ ├── toolbar_settings@2x.png │ │ │ └── toolbar_settings@3x.png │ │ ├── iTunesArtwork │ │ ├── iTunesArtwork@2x │ │ ├── mobile-center-post-clone.sh │ │ └── packages.config │ └── MVP │ │ ├── Helpers │ │ ├── CommonConstants.cs │ │ ├── DesignMvpService.cs │ │ ├── IMVPService.cs │ │ ├── LiveMvpService.cs │ │ ├── Logger.cs │ │ ├── MvpHelper.cs │ │ ├── Settings.cs │ │ ├── TranslateExtension.cs │ │ ├── TranslateExtensionConverter.cs │ │ └── TranslateServices.cs │ │ ├── Interfaces │ │ ├── ILocalize.cs │ │ ├── ISignOutHelper.cs │ │ └── PlatformCulture.cs │ │ ├── MVP.csproj │ │ ├── Models │ │ ├── ContributionModel.cs │ │ ├── ContributionTechnologyModel.cs │ │ ├── ContributionTypeModel.cs │ │ ├── ProfileModel.cs │ │ └── VisibilityModel.cs │ │ ├── Properties │ │ └── AssemblyInfo.cs │ │ ├── Resources │ │ ├── AppResources.Designer.cs │ │ ├── AppResources.resx │ │ ├── AppResources.zh-Hans.Designer.cs │ │ └── AppResources.zh-Hans.resx │ │ ├── ViewModels │ │ ├── ContributionViewModel.cs │ │ ├── LiveIdLogOnViewModel.cs │ │ ├── LogOnViewModel.cs │ │ ├── MyProfileViewModel.cs │ │ ├── SettingsViewModel.cs │ │ └── ViewModelBase.cs │ │ └── packages.config ├── MVPUI │ ├── App.xaml │ ├── App.xaml.cs │ ├── ContributionDetail.xaml │ ├── ContributionDetail.xaml.cs │ ├── ContributionsPage.xaml │ ├── ContributionsPage.xaml.cs │ ├── Converters │ │ └── ContributionToIconConverter.cs │ ├── CustomControls │ │ ├── ICookieHelper.cs │ │ ├── ILocationHelper.cs │ │ └── MVPNavigationPage.cs │ ├── Extensions │ │ └── ResourceDictionaryExtensions.cs │ ├── LiveIdLogOn.xaml │ ├── LiveIdLogOn.xaml.cs │ ├── LogOn.xaml │ ├── LogOn.xaml.cs │ ├── MVPUI.csproj │ ├── MainTabPage.xaml │ ├── MainTabPage.xaml.cs │ ├── MainTabPageiOS.xaml │ ├── MainTabPageiOS.xaml.cs │ ├── MyProfile.xaml │ ├── MyProfile.xaml.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── SettingsPage.xaml │ ├── SettingsPage.xaml.cs │ ├── XamlResources │ │ ├── DataTemplates.xaml │ │ ├── DataTemplates.xaml.cs │ │ ├── Styles.xaml │ │ └── Styles.xaml.cs │ └── packages.config └── mobile-center-post-clone.ps1 ├── MobileAppGuidelines.md ├── README.md ├── images ├── find1.jpg ├── platform.png └── platform_sprite.png └── index.html /.gitignore: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # This .gitignore file was automatically created by Microsoft(R) Visual Studio. 3 | ################################################################################ 4 | 5 | /Back.png 6 | MVP/.droidres/.mvp.vs2017.droidres.db 7 | /.vs 8 | -------------------------------------------------------------------------------- /CSS/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/CSS/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /Javascripts/interactions.js: -------------------------------------------------------------------------------- 1 | var interactions = (function () { 2 | var hitBottom = false, 3 | hasScrolled = false, 4 | hasTrackedScroll = false, 5 | interval, mod = {}; 6 | 7 | function scrollListener() { 8 | hasScrolled = true; 9 | } 10 | 11 | function scrollInterval() { 12 | // Fixed error when appInsights is not defined 13 | if (typeof appInsights === 'undefined' || !appInsights || !hasScrolled) { 14 | return; 15 | } 16 | 17 | if (!hasTrackedScroll) { 18 | hasTrackedScroll = true; 19 | appInsights.trackEvent('Page:Scrolled'); 20 | } 21 | 22 | if (!hitBottom && ((window.innerHeight + window.scrollY) >= document.body.scrollHeight)) { 23 | hitBottom = true; 24 | appInsights.trackEvent('Page:End'); 25 | 26 | if (interval) { 27 | window.clearInterval(interval); 28 | } 29 | window.removeEventListener('scroll', scrollListener); 30 | 31 | } 32 | 33 | hasScrolled = false; 34 | } 35 | 36 | mod.setup = function () { 37 | window.addEventListener('scroll', scrollListener); 38 | interval = window.setInterval(scrollInterval, 100); 39 | 40 | document.body.addEventListener('copy', function (e) { 41 | appInsights.trackEvent('Clipboard:Copy'); 42 | }); 43 | document.body.addEventListener('cut', function (e) { 44 | appInsights.trackEvent('Clipboard:Cut'); 45 | }); 46 | } 47 | 48 | return mod; 49 | }()); 50 | -------------------------------------------------------------------------------- /Javascripts/main.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | $(document).ready(function() { 3 | $('#container').packery(); 4 | 5 | if (window.interactions) { 6 | window.interactions.setup(); 7 | } 8 | var pickOne = Math.floor(Math.random() * 3 + 1); 9 | $('.wrap').addClass('pick-' + pickOne); 10 | }); 11 | }(jQuery)); -------------------------------------------------------------------------------- /MVP/.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /MVP/Add java options.reg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/Add java options.reg -------------------------------------------------------------------------------- /MVP/Getting Started with MVP Site API.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/Getting Started with MVP Site API.docx -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Assets/AboutAssets.txt: -------------------------------------------------------------------------------- 1 | Any raw assets you want to be deployed with your application can be placed in 2 | this directory (and child directories) and given a Build Action of "AndroidAsset". 3 | 4 | These files will be deployed with you package and will be accessible using Android's 5 | AssetManager, like this: 6 | 7 | public class ReadAsset : Contribution 8 | { 9 | protected override void OnCreate (Bundle bundle) 10 | { 11 | base.OnCreate (bundle); 12 | 13 | InputStream input = Assets.Open ("my_asset.txt"); 14 | } 15 | } 16 | 17 | Additionally, some Android functions will automatically load asset files: 18 | 19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); 20 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/CookieHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.Mvpui; 3 | using Xamarin.Forms; 4 | using Microsoft.Mvp.Droid; 5 | using Android.Webkit; 6 | 7 | [assembly: Dependency(typeof(CookieHelper))] 8 | namespace Microsoft.Mvp.Droid 9 | { 10 | public class CookieHelper : ICookieHelper 11 | { 12 | public string GetCookie(string url) 13 | { 14 | CookieManager cookManager = CookieManager.Instance; 15 | string cookie = cookManager.GetCookie(url); 16 | if (cookie != null) 17 | { 18 | String[] temps = cookie.Split(';'); 19 | foreach (var temp in temps) 20 | { 21 | if (temp.Contains("WLSSC")) 22 | { 23 | return temp.Substring(temp.IndexOf("=")+1); 24 | } 25 | } 26 | 27 | } 28 | 29 | return ""; 30 | } 31 | 32 | public void ClearCookie() 33 | { 34 | CookieManager cookManager = CookieManager.Instance; 35 | cookManager.SetCookie("https://mvpstaging.com/Account/SignIn", ""); 36 | cookManager.RemoveAllCookie(); 37 | } 38 | 39 | public string GetCookie(Uri uri) 40 | { 41 | throw new NotImplementedException(); 42 | } 43 | } 44 | } -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Helpers/Localize.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Mvp.Interfaces; 2 | using System.Globalization; 3 | using System.Threading; 4 | using Microsoft.Mvp.Droid.Helpers; 5 | 6 | [assembly: Xamarin.Forms.Dependency(typeof(Localize))] 7 | 8 | namespace Microsoft.Mvp.Droid.Helpers 9 | { 10 | public class Localize : ILocalize 11 | { 12 | public void SetLocale(CultureInfo ci) 13 | { 14 | Thread.CurrentThread.CurrentCulture = ci; 15 | Thread.CurrentThread.CurrentUICulture = ci; 16 | } 17 | public CultureInfo GetCurrentCultureInfo() 18 | { 19 | var netLanguage = "en"; 20 | var androidLocale = Java.Util.Locale.Default; 21 | netLanguage = AndroidToDotnetLanguage(androidLocale.ToString().Replace("_", "-")); 22 | // this gets called a lot - try/catch can be expensive so consider caching or something 23 | System.Globalization.CultureInfo ci = null; 24 | try 25 | { 26 | ci = new System.Globalization.CultureInfo(netLanguage); 27 | } 28 | catch (CultureNotFoundException e1) 29 | { 30 | // iOS locale not valid .NET culture (eg. "en-ES" : English in Spain) 31 | // fallback to first characters, in this case "en" 32 | try 33 | { 34 | var fallback = ToDotnetFallbackLanguage(new PlatformCulture(netLanguage)); 35 | ci = new System.Globalization.CultureInfo(fallback); 36 | } 37 | catch (CultureNotFoundException e2) 38 | { 39 | // iOS language not valid .NET culture, falling back to English 40 | ci = new System.Globalization.CultureInfo("en"); 41 | } 42 | } 43 | return ci; //new CultureInfo("zh-Hans");// 44 | } 45 | string AndroidToDotnetLanguage(string androidLanguage) 46 | { 47 | var netLanguage = androidLanguage; 48 | //certain languages need to be converted to CultureInfo equivalent 49 | switch (androidLanguage) 50 | { 51 | case "ms-BN": // "Malaysian (Brunei)" not supported .NET culture 52 | case "ms-MY": // "Malaysian (Malaysia)" not supported .NET culture 53 | case "ms-SG": // "Malaysian (Singapore)" not supported .NET culture 54 | netLanguage = "ms"; // closest supported 55 | break; 56 | case "in-ID": // "Indonesian (Indonesia)" has different code in .NET 57 | netLanguage = "id-ID"; // correct code for .NET 58 | break; 59 | case "gsw-CH": // "Schwiizertüütsch (Swiss German)" not supported .NET culture 60 | netLanguage = "de-CH"; // closest supported 61 | break; 62 | // add more application-specific cases here (if required) 63 | // ONLY use cultures that have been tested and known to work 64 | } 65 | return netLanguage; 66 | } 67 | string ToDotnetFallbackLanguage(PlatformCulture platCulture) 68 | { 69 | var netLanguage = platCulture.LanguageCode; // use the first part of the identifier (two chars, usually); 70 | switch (platCulture.LanguageCode) 71 | { 72 | case "gsw": 73 | netLanguage = "de-CH"; // equivalent to German (Switzerland) for this app 74 | break; 75 | // add more application-specific cases here (if required) 76 | // ONLY use cultures that have been tested and known to work 77 | } 78 | return netLanguage; 79 | } 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Helpers/Settings.cs: -------------------------------------------------------------------------------- 1 | /* 2 | // Helpers/Settings.cs This file was automatically added when you installed the Settings Plugin. If you are not using a PCL then comment this file back in to use it. 3 | using Plugin.Settings; 4 | using Plugin.Settings.Abstractions; 5 | 6 | namespace Microsoft.Mvp.Droid.Helpers 7 | { 8 | /// 9 | /// This is the Settings static class that can be used in your Core solution or in any 10 | /// of your client applications. All settings are laid out the same exact way with getters 11 | /// and setters. 12 | /// 13 | public static class Settings 14 | { 15 | private static ISettings AppSettings 16 | { 17 | get 18 | { 19 | return CrossSettings.Current; 20 | } 21 | } 22 | 23 | #region Setting Constants 24 | 25 | private const string SettingsKey = "settings_key"; 26 | private static readonly string SettingsDefault = string.Empty; 27 | 28 | #endregion 29 | 30 | 31 | public static string GeneralSettings 32 | { 33 | get 34 | { 35 | return AppSettings.GetValueOrDefault(SettingsKey, SettingsDefault); 36 | } 37 | set 38 | { 39 | AppSettings.AddOrUpdateValue(SettingsKey, value); 40 | } 41 | } 42 | 43 | } 44 | }*/ -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/MainActivity.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | using Android.App; 4 | using Android.Content.PM; 5 | using Android.Runtime; 6 | using Android.Views; 7 | using Android.Widget; 8 | using Android.OS; 9 | using Microsoft.Mvpui; 10 | using Plugin.Permissions; 11 | 12 | namespace Microsoft.Mvp.Droid 13 | { 14 | [Activity(Label = "MVP", Icon = "@mipmap/ic_launcher", ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] 15 | public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity 16 | { 17 | protected override void OnCreate(Bundle bundle) 18 | { 19 | TabLayoutResource = Resource.Layout.Tabbar; 20 | ToolbarResource = Resource.Layout.Toolbar; 21 | 22 | base.OnCreate(bundle); 23 | 24 | global::Xamarin.Forms.Forms.Init(this, bundle); 25 | 26 | ImageCircle.Forms.Plugin.Droid.ImageCircleRenderer.Init(); 27 | //Xamarin.FormsMaps.Init(this,bundle); 28 | LoadApplication(new App()); 29 | 30 | } 31 | 32 | public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults) 33 | { 34 | PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults); 35 | } 36 | } 37 | } 38 | 39 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/MainApplication.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | using Android.App; 4 | using Android.OS; 5 | using Android.Runtime; 6 | using Plugin.CurrentActivity; 7 | 8 | namespace Microsoft.Mvp.Droid 9 | { 10 | //You can specify additional application information in this attribute 11 | [Application] 12 | public class MainApplication : Application, Application.IActivityLifecycleCallbacks 13 | { 14 | public MainApplication(IntPtr handle, JniHandleOwnership transer) 15 | :base(handle, transer) 16 | { 17 | } 18 | 19 | public override void OnCreate() 20 | { 21 | base.OnCreate(); 22 | RegisterActivityLifecycleCallbacks(this); 23 | Acr.UserDialogs.UserDialogs.Init(() => CrossCurrentActivity.Current.Activity); 24 | 25 | //A great place to initialize Xamarin.Insights and Dependency Services! 26 | } 27 | 28 | public override void OnTerminate() 29 | { 30 | base.OnTerminate(); 31 | UnregisterActivityLifecycleCallbacks(this); 32 | } 33 | 34 | public void OnActivityCreated(Activity contribution, Bundle savedInstanceState) 35 | { 36 | CrossCurrentActivity.Current.Activity = contribution; 37 | } 38 | 39 | public void OnActivityDestroyed(Activity contribution) 40 | { 41 | } 42 | 43 | public void OnActivityPaused(Activity contribution) 44 | { 45 | } 46 | 47 | public void OnActivityResumed(Activity contribution) 48 | { 49 | CrossCurrentActivity.Current.Activity = contribution; 50 | } 51 | 52 | public void OnActivitySaveInstanceState(Activity contribution, Bundle outState) 53 | { 54 | } 55 | 56 | public void OnActivityStarted(Activity contribution) 57 | { 58 | CrossCurrentActivity.Current.Activity = contribution; 59 | } 60 | 61 | public void OnActivityStopped(Activity contribution) 62 | { 63 | } 64 | } 65 | } -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Properties/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | using Android.App; 5 | 6 | // General Information about an assembly is controlled through the following 7 | // set of attributes. Change these attribute values to modify the information 8 | // associated with an assembly. 9 | [assembly: AssemblyTitle("MVP.Droid")] 10 | [assembly: AssemblyDescription("")] 11 | [assembly: AssemblyConfiguration("")] 12 | [assembly: AssemblyCompany("Microsoft")] 13 | [assembly: AssemblyProduct("MVP.Droid")] 14 | [assembly: AssemblyCopyright("Copyright © Microsoft 2017")] 15 | [assembly: AssemblyTrademark("")] 16 | [assembly: AssemblyCulture("")] 17 | [assembly: ComVisible(false)] 18 | 19 | // Version information for an assembly consists of the following four values: 20 | // 21 | // Major Version 22 | // Minor Version 23 | // Build Number 24 | // Revision 25 | // 26 | // You can specify all the values or you can default the Build and Revision Numbers 27 | // by using the '*' as shown below: 28 | // [assembly: AssemblyVersion("1.0.*")] 29 | [assembly: AssemblyVersion("1.0.0.0")] 30 | [assembly: AssemblyFileVersion("1.0.0.0")] 31 | 32 | // Add some common permissions, these can be removed if not needed 33 | [assembly: UsesPermission(Android.Manifest.Permission.Internet)] 34 | [assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)] 35 | [assembly: UsesFeature("android.hardware.location", Required = false)] 36 | [assembly: UsesFeature("android.hardware.location.gps", Required = false)] 37 | [assembly: UsesFeature("android.hardware.location.network", Required = false)] 38 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/BellNew.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/Blog.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/Book02.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/Cancel.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/ConferenceSpeaker.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/HeadphoneMike.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/Media.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/People.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/SettingWF.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/Support.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/UserLogin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/fab_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-hdpi/fab_add.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-hdpi/icon.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_blog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_blog.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_book.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_cancel.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_code.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_defaultactivity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_defaultactivity.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_discussion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_discussion.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_feedback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_feedback.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_mvplogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_mvplogo.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_notifications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_notifications.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_speaker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_speaker.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_splash_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_splash_logo.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-hdpi/image_video.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/toolbar_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-hdpi/toolbar_add.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/toolbar_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-hdpi/toolbar_close.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-hdpi/toolbar_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-hdpi/toolbar_settings.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-mdpi/fab_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-mdpi/fab_add.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-mdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-mdpi/icon.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_blog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_blog.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_book.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_cancel.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_code.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_defaultactivity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_defaultactivity.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_discussion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_discussion.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_feedback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_feedback.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_mvplogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_mvplogo.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_notifications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_notifications.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_speaker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_speaker.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_splash_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_splash_logo.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-mdpi/image_video.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-mdpi/toolbar_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-mdpi/toolbar_add.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-mdpi/toolbar_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-mdpi/toolbar_close.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-mdpi/toolbar_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-mdpi/toolbar_settings.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/BellNew.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/Blog.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/Book02.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/Cancel.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/ConferenceSpeaker.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/HeadphoneMike.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/Media.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/People.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/SettingWF.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/Support.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/UserLogin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/fab_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/fab_add.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/icon.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_blog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_blog.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_book.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_cancel.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_code.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_defaultactivity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_defaultactivity.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_discussion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_discussion.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_feedback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_feedback.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_mvplogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_mvplogo.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_notifications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_notifications.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_speaker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_speaker.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_splash_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_splash_logo.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/image_video.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/toolbar_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/toolbar_add.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/toolbar_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/toolbar_close.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/toolbar_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xhdpi/toolbar_settings.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/BellNew.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/Blog.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/Book02.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/Cancel.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/ConferenceSpeaker.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/HeadphoneMike.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/Media.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/People.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/SettingWF.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/Support.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/UserLogin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/fab_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/fab_add.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/icon.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_blog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_blog.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_book.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_cancel.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_code.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_defaultactivity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_defaultactivity.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_discussion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_discussion.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_feedback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_feedback.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_mvplogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_mvplogo.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_notifications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_notifications.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_speaker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_speaker.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_splash_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_splash_logo.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/image_video.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/toolbar_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/toolbar_add.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/toolbar_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/toolbar_close.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/toolbar_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxhdpi/toolbar_settings.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxxhdpi/fab_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxxhdpi/fab_add.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxxhdpi/image_splash_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxxhdpi/image_splash_logo.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxxhdpi/toolbar_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxxhdpi/toolbar_add.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxxhdpi/toolbar_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxxhdpi/toolbar_close.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable-xxxhdpi/toolbar_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable-xxxhdpi/toolbar_settings.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable/icon.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable/image_benefits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable/image_benefits.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable/image_mvplogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/drawable/image_mvplogo.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/drawable/splash_screen.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/layout/Tabbar.axml: -------------------------------------------------------------------------------- 1 |  2 | 3 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/layout/Toolbar.axml: -------------------------------------------------------------------------------- 1 |  2 | 3 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/layout/simple_spinner_dropdown_item.xml: -------------------------------------------------------------------------------- 1 |  2 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/layout/simple_spinner_item.xml: -------------------------------------------------------------------------------- 1 |  2 | 9 | 10 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.Droid/Resources/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/values-v19/styles.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 8 | 9 | 14 | 15 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/values/colors.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | #0072C6 5 | #004f8a 6 | #FFC107 7 | #F5F5F5 8 | #0078D7 9 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/Resources/values/styles.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 5 | 13 | 16 | 17 | 27 | 30 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/SignoutHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Microsoft.Mvpui; 3 | using Xamarin.Forms; 4 | using Microsoft.Mvp.Droid; 5 | using Android.Webkit; 6 | using Microsoft.Mvp.Interfaces; 7 | 8 | [assembly: Dependency(typeof(SignOutHelper))] 9 | namespace Microsoft.Mvp.Droid 10 | { 11 | public class SignOutHelper : ISignOutHelper 12 | { 13 | public void CloseApp() 14 | { 15 | Android.OS.Process.KillProcess(Android.OS.Process.MyPid()); 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/SplashActivity.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | using Android.App; 3 | using Android.Content; 4 | using Android.OS; 5 | using Android.Support.V7.App; 6 | using Android.Util; 7 | using Android.Content.PM; 8 | 9 | namespace Microsoft.Mvp.Droid 10 | { 11 | 12 | [Activity(Label = "MVP", 13 | Icon = "@mipmap/ic_launcher", 14 | Theme = "@style/SplashTheme", 15 | MainLauncher = true)] 16 | public class SplashActivity : AppCompatActivity 17 | { 18 | protected override void OnCreate(Bundle savedInstanceState) 19 | { 20 | base.OnCreate(savedInstanceState); 21 | var intent = new Intent(this, typeof(MainActivity)); 22 | StartActivity(intent); 23 | Finish(); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.Droid/mobile-center-post-clone.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Variables:" 4 | printenv 5 | 6 | echo "Arguments for updating:" 7 | echo " - MCID: $MC_ANDROID" 8 | echo " - Live ID: $LIVE_ID" 9 | echo " - Live Secret: $LIVE_SECRET" 10 | 11 | # Updating manifest 12 | sed -i '' "s/MC_ANDROID/$MC_ANDROID/g" $BUILD_REPOSITORY_LOCALPATH/MVP/MVP/MVP/Helpers/CommonConstants.cs 13 | sed -i '' "s/LIVE_ID/$LIVE_ID/g" $BUILD_REPOSITORY_LOCALPATH/MVP/MVP/MVP/Helpers/CommonConstants.cs 14 | sed -i '' "s/LIVE_SECRET/$LIVE_SECRET/g" $BUILD_REPOSITORY_LOCALPATH/MVP/MVP/MVP/Helpers/CommonConstants.cs 15 | 16 | cat $BUILD_REPOSITORY_LOCALPATH/MVP/MVP/MVP/Helpers/CommonConstants.cs 17 | 18 | echo "Manifest updated!" 19 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/App.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/BadgeLogo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/BadgeLogo.scale-100.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/BadgeLogo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/BadgeLogo.scale-125.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/BadgeLogo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/BadgeLogo.scale-150.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/BadgeLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/BadgeLogo.scale-200.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/BadgeLogo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/BadgeLogo.scale-400.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/LargeTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/LargeTile.scale-100.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/LargeTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/LargeTile.scale-125.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/LargeTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/LargeTile.scale-150.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/LargeTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/LargeTile.scale-200.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/LargeTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/LargeTile.scale-400.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/SmallTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/SmallTile.scale-100.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/SmallTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/SmallTile.scale-125.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/SmallTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/SmallTile.scale-150.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/SmallTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/SmallTile.scale-200.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/SmallTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/SmallTile.scale-400.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/SplashScreen.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/SplashScreen.scale-100.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/SplashScreen.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/SplashScreen.scale-125.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/SplashScreen.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/SplashScreen.scale-150.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/SplashScreen.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/SplashScreen.scale-400.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Square150x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Square150x150Logo.scale-100.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Square150x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Square150x150Logo.scale-125.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Square150x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Square150x150Logo.scale-150.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Square150x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Square150x150Logo.scale-400.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-16.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-256.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-32.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-48.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Square44x44Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Square44x44Logo.scale-100.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Square44x44Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Square44x44Logo.scale-125.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Square44x44Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Square44x44Logo.scale-150.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Square44x44Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Square44x44Logo.scale-400.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Square44x44Logo.targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Square44x44Logo.targetsize-16.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Square44x44Logo.targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Square44x44Logo.targetsize-24.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Square44x44Logo.targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Square44x44Logo.targetsize-256.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Square44x44Logo.targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Square44x44Logo.targetsize-32.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Square44x44Logo.targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Square44x44Logo.targetsize-48.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/StoreLogo.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/StoreLogo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/StoreLogo.scale-100.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/StoreLogo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/StoreLogo.scale-125.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/StoreLogo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/StoreLogo.scale-150.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/StoreLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/StoreLogo.scale-200.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/StoreLogo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/StoreLogo.scale-400.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Wide310x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Wide310x150Logo.scale-100.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Wide310x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Wide310x150Logo.scale-125.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Wide310x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Wide310x150Logo.scale-150.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/Wide310x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/Wide310x150Logo.scale-400.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/icon.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/image_benefits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/image_benefits.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/image_blog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/image_blog.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/image_book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/image_book.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/image_cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/image_cancel.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/image_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/image_code.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/image_defaultactivity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/image_defaultactivity.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/image_discussion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/image_discussion.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/image_feedback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/image_feedback.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/image_mvplogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/image_mvplogo.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/image_notifications.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/image_notifications.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/image_speaker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/image_speaker.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/image_video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/image_video.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/toolbar_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/toolbar_add.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/toolbar_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/toolbar_close.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/toolbar_refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/toolbar_refresh.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Assets/toolbar_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.UWP/Assets/toolbar_settings.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Localize.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Runtime.CompilerServices; 6 | using Microsoft.Mvp.Interfaces; 7 | using System.Globalization; 8 | using System.Threading; 9 | using Windows.Globalization.DateTimeFormatting; 10 | 11 | [assembly: Xamarin.Forms.Dependency(typeof(Microsoft.Mvp.UWP.Helpers.Localize))] 12 | 13 | namespace Microsoft.Mvp.UWP.Helpers 14 | { 15 | public class Localize : ILocalize 16 | { 17 | public void SetLocale(CultureInfo ci) 18 | { 19 | //System.Threading.Thread.CurrentThread.CurrentCulture = ci; 20 | //System.Threading.Thread.CurrentThread.CurrentUICulture = ci; 21 | } 22 | public CultureInfo GetCurrentCultureInfo() 23 | { 24 | System.Globalization.CultureInfo ci = null; 25 | 26 | try 27 | { 28 | //ci = CultureInfo.DefaultThreadCurrentUICulture; 29 | var cultureName = new DateTimeFormatter("longdate", new[] { "US" }).ResolvedLanguage; 30 | 31 | return new CultureInfo(cultureName); 32 | } 33 | catch (CultureNotFoundException e1) 34 | { 35 | ci = new System.Globalization.CultureInfo("en"); 36 | } 37 | return ci; 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/MainPage.xaml: -------------------------------------------------------------------------------- 1 |  10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/MainPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Runtime.InteropServices.WindowsRuntime; 6 | using Windows.Foundation; 7 | using Windows.Foundation.Collections; 8 | using Windows.UI.Xaml; 9 | using Windows.UI.Xaml.Controls; 10 | using Windows.UI.Xaml.Controls.Primitives; 11 | using Windows.UI.Xaml.Data; 12 | using Windows.UI.Xaml.Input; 13 | using Windows.UI.Xaml.Media; 14 | using Windows.UI.Xaml.Navigation; 15 | 16 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 17 | 18 | namespace MVP.UWP 19 | { 20 | /// 21 | /// An empty page that can be used on its own or navigated to within a Frame. 22 | /// 23 | public sealed partial class MainPage 24 | { 25 | public MainPage() 26 | { 27 | this.InitializeComponent(); 28 | LoadApplication(new Microsoft.Mvpui.App()); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Package.appxmanifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | MVP.UWP 7 | v-blchen 8 | Assets\StoreLogo.png 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("MVP.UWP")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("MVP.UWP")] 13 | [assembly: AssemblyCopyright("Copyright © 2017")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Version information for an assembly consists of the following four values: 18 | // 19 | // Major Version 20 | // Minor Version 21 | // Build Number 22 | // Revision 23 | // 24 | // You can specify all the values or you can default the Build and Revision Numbers 25 | // by using the '*' as shown below: 26 | // [assembly: AssemblyVersion("1.0.*")] 27 | [assembly: AssemblyVersion("1.0.0.0")] 28 | [assembly: AssemblyFileVersion("1.0.0.0")] 29 | [assembly: ComVisible(false)] -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Properties/Default.rd.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/Renders/CookieHelper.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Mvpui; 2 | using MVP.UWP.Renders; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Net; 7 | using System.Runtime.InteropServices; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using Windows.Web.Http; 11 | using Xamarin.Forms; 12 | 13 | [assembly: Dependency(typeof(CookieHelper))] 14 | namespace MVP.UWP.Renders 15 | { 16 | public class CookieHelper : ICookieHelper 17 | { 18 | public static CookieContainer GetUriCookieContainer(Uri uri) 19 | { 20 | return null; 21 | } 22 | 23 | public string GetCookie(string url) 24 | { 25 | try 26 | { 27 | //var container = GetUriCookieContainer(new Uri(url)); 28 | var cookies = GetBrowserCookie(new Uri(url)); 29 | 30 | var rpsSec = cookies.FirstOrDefault(s => s.Name == "RPSSecAuth"); 31 | if (rpsSec != null) 32 | { 33 | return rpsSec.Value; 34 | } 35 | return ""; 36 | } 37 | catch 38 | { 39 | return ""; 40 | } 41 | 42 | } 43 | 44 | public void ClearCookie() 45 | { 46 | Windows.Web.Http.Filters.HttpBaseProtocolFilter myFilter = new Windows.Web.Http.Filters.HttpBaseProtocolFilter(); 47 | var cookieManager = myFilter.CookieManager; 48 | HttpCookieCollection myCookieJar = cookieManager.GetCookies(new Uri("https://login.live.com")); 49 | 50 | foreach (HttpCookie cookie in myCookieJar) 51 | { 52 | cookieManager.DeleteCookie(cookie); 53 | } 54 | } 55 | 56 | public string GetCookie(Uri uri) 57 | { 58 | return null; 59 | } 60 | 61 | private HttpCookieCollection GetBrowserCookie(Uri targetUri) 62 | { 63 | var httpBaseProtocolFilter = new Windows.Web.Http.Filters.HttpBaseProtocolFilter(); 64 | var cookieManager = httpBaseProtocolFilter.CookieManager; 65 | var cookieCollection = cookieManager.GetCookies(targetUri); 66 | 67 | return cookieCollection; 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.UWP/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "Acr.UserDialogs": "6.5.1", 4 | "Microsoft.Azure.Mobile": "0.17.1", 5 | "Microsoft.Azure.Mobile.Analytics": "0.17.1", 6 | "Microsoft.Azure.Mobile.Crashes": "0.17.1", 7 | "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.3", 8 | "Newtonsoft.Json": "9.0.1", 9 | "Plugin.Share": "7.0.2-beta27", 10 | "Plugin.VersionTracking": "2.1.0", 11 | "Refractored.FloatingActionButtonForms": "2.1.0", 12 | "Refractored.MvvmHelpers": "1.3.0", 13 | "System.Globalization": "4.3.0", 14 | "Xam.Plugin.Connectivity": "4.0.0-beta139", 15 | "Xam.Plugins.Forms.ImageCircle": "1.8.2.19-beta", 16 | "Xam.Plugins.Settings": "3.1.1", 17 | "Xamarin.Forms": "2.4.0.38779" 18 | }, 19 | "frameworks": { 20 | "uap10.0.10586": {} 21 | }, 22 | "runtimes": { 23 | "win10-arm": {}, 24 | "win10-arm-aot": {}, 25 | "win10-x86": {}, 26 | "win10-x86-aot": {}, 27 | "win10-x64": {}, 28 | "win10-x64-aot": {} 29 | } 30 | } -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/AppDelegate.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using Foundation; 5 | using UIKit; 6 | using Microsoft.Mvpui; 7 | using Xamarin.Forms.Platform.iOS; 8 | using Social; 9 | 10 | namespace Microsoft.Mvp.iOS 11 | { 12 | // The UIApplicationDelegate for the application. This class is responsible for launching the 13 | // User Interface of the application, as well as listening (and optionally responding) to 14 | // application events from iOS. 15 | [Register("AppDelegate")] 16 | public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate 17 | { 18 | // 19 | // This method is invoked when the application has loaded and is ready to run. In this 20 | // method you should instantiate the window, load the UI into it and then make the window 21 | // visible. 22 | // 23 | // You have 17 seconds to return from this method, or iOS will terminate your application. 24 | // 25 | public override bool FinishedLaunching(UIApplication app, NSDictionary options) 26 | { 27 | var tint = UIColor.FromRGB(0, 79, 138); 28 | 29 | // Some basic navigationbar styling. 30 | UINavigationBar.Appearance.BarTintColor = UIColor.FromRGB(250, 250, 250); //bar background 31 | UINavigationBar.Appearance.TintColor = tint; //Tint color of button items 32 | 33 | UIBarButtonItem.Appearance.TintColor = tint; //Tint color of button items 34 | 35 | UITabBar.Appearance.TintColor = tint; 36 | 37 | UISwitch.Appearance.OnTintColor = tint; 38 | 39 | UIAlertView.Appearance.TintColor = tint; 40 | 41 | UIView.AppearanceWhenContainedIn(typeof(UIAlertController)).TintColor = tint; 42 | UIView.AppearanceWhenContainedIn(typeof(UIActivityViewController)).TintColor = tint; 43 | UIView.AppearanceWhenContainedIn(typeof(SLComposeViewController)).TintColor = tint; 44 | 45 | global::Xamarin.Forms.Forms.Init(); 46 | 47 | ImageCircle.Forms.Plugin.iOS.ImageCircleRenderer.Init(); 48 | 49 | LoadApplication(new App()); 50 | 51 | return base.FinishedLaunching(app, options); 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Assets.xcassets/AppIcon.appiconset/iTunesArtwork@2x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/CustomControls/CookieHelper.cs: -------------------------------------------------------------------------------- 1 | 2 | using Xamarin.Forms; 3 | using Microsoft.Mvp.iOS.Renders; 4 | using Foundation; 5 | using Microsoft.Mvpui; 6 | using System; 7 | 8 | [assembly: Dependency(typeof(CookieHelper))] 9 | namespace Microsoft.Mvp.iOS.Renders 10 | { 11 | public class CookieHelper: ICookieHelper 12 | { 13 | 14 | public string GetCookie(string url) 15 | { 16 | return ""; 17 | } 18 | public void ClearCookie() 19 | { 20 | NSHttpCookieStorage CookieStorage = NSHttpCookieStorage.SharedStorage; 21 | 22 | foreach (var cookie in CookieStorage.Cookies) 23 | { 24 | CookieStorage.DeleteCookie(cookie); 25 | } 26 | } 27 | 28 | public string GetCookie(Uri uri) 29 | { 30 | throw new NotImplementedException(); 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/CustomControls/SignOutHelper.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Mvp.iOS.Renders; 2 | using Microsoft.Mvpui; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Text; 6 | using Xamarin.Forms; 7 | using Microsoft.Mvp.Interfaces; 8 | 9 | [assembly: Dependency(typeof(SignOutHelper))] 10 | namespace Microsoft.Mvp.iOS.Renders 11 | { 12 | public class SignOutHelper : ISignOutHelper 13 | { 14 | public void CloseApp() 15 | { 16 | //throw new NotImplementedException(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Entitlements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Helpers/Extensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Drawing; 3 | using UIKit; 4 | 5 | namespace Microsoft.Mvp.iOS.Helpers 6 | { 7 | public static class Extensions 8 | { 9 | public static UIImage ToUIImage(this UIColor color, int width, int height) 10 | { 11 | var imageSize = new SizeF(width, height); 12 | var imageSizeRectF = new RectangleF(0, 0, width, height); 13 | UIGraphics.BeginImageContextWithOptions(imageSize, false, 0); 14 | var context = UIGraphics.GetCurrentContext(); 15 | 16 | context.SetFillColor(color.CGColor); 17 | context.FillRect(imageSizeRectF); 18 | var image = UIGraphics.GetImageFromCurrentImageContext(); 19 | UIGraphics.EndImageContext(); 20 | return image; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Helpers/Settings.cs: -------------------------------------------------------------------------------- 1 | /* 2 | // Helpers/Settings.cs This file was automatically added when you installed the Settings Plugin. If you are not using a PCL then comment this file back in to use it. 3 | using Plugin.Settings; 4 | using Plugin.Settings.Abstractions; 5 | 6 | namespace Microsoft.Mvp.iOS.Helpers 7 | { 8 | /// 9 | /// This is the Settings static class that can be used in your Core solution or in any 10 | /// of your client applications. All settings are laid out the same exact way with getters 11 | /// and setters. 12 | /// 13 | public static class Settings 14 | { 15 | private static ISettings AppSettings 16 | { 17 | get 18 | { 19 | return CrossSettings.Current; 20 | } 21 | } 22 | 23 | #region Setting Constants 24 | 25 | private const string SettingsKey = "settings_key"; 26 | private static readonly string SettingsDefault = string.Empty; 27 | 28 | #endregion 29 | 30 | 31 | public static string GeneralSettings 32 | { 33 | get 34 | { 35 | return AppSettings.GetValueOrDefault(SettingsKey, SettingsDefault); 36 | } 37 | set 38 | { 39 | AppSettings.AddOrUpdateValue(SettingsKey, value); 40 | } 41 | } 42 | 43 | } 44 | }*/ -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | UIDeviceFamily 6 | 7 | 1 8 | 2 9 | 10 | UISupportedInterfaceOrientations 11 | 12 | UIInterfaceOrientationPortrait 13 | UIInterfaceOrientationLandscapeLeft 14 | UIInterfaceOrientationLandscapeRight 15 | 16 | UISupportedInterfaceOrientations~ipad 17 | 18 | UIInterfaceOrientationPortrait 19 | UIInterfaceOrientationPortraitUpsideDown 20 | UIInterfaceOrientationLandscapeLeft 21 | UIInterfaceOrientationLandscapeRight 22 | 23 | MinimumOSVersion 24 | 10.2 25 | CFBundleDisplayName 26 | MVP 27 | CFBundleIdentifier 28 | com.microsoft.mvp 29 | CFBundleVersion 30 | 1.1.4 31 | UILaunchStoryboardName 32 | LaunchScreen 33 | CFBundleShortVersionString 34 | 1.1 35 | UIBackgroundModes 36 | 37 | fetch 38 | 39 | ITSAppUsesNonExemptEncryption 40 | 41 | XSLaunchImageAssets 42 | Resources/Media.xcassets/LaunchImages.launchimage 43 | XSAppIconAssets 44 | Assets.xcassets/AppIcon.appiconset 45 | UIStatusBarStyle 46 | UIStatusBarStyleLightContent 47 | UIViewControllerBasedStatusBarAppearance 48 | 49 | CFBundleName 50 | MVP 51 | CFBundleLocalizations 52 | 53 | de 54 | es 55 | fr 56 | ja 57 | pt 58 | 59 | pt-PT 60 | 61 | ru 62 | zh-Hans 63 | zh-Hant 64 | 65 | CFBundleDevelopmentRegion 66 | en 67 | 68 | 69 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Main.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | 5 | using Foundation; 6 | using UIKit; 7 | 8 | namespace Microsoft.Mvp.iOS 9 | { 10 | public class Application 11 | { 12 | // This is the main entry point of the application. 13 | static void Main(string[] args) 14 | { 15 | // if you want to use a different Application Delegate class from "AppDelegate" 16 | // you can specify it here. 17 | UIApplication.Main(args, null, "AppDelegate"); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("MVP.iOS")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Microsoft")] 12 | [assembly: AssemblyProduct("MVP.iOS")] 13 | [assembly: AssemblyCopyright("Copyright © Microsoft 2017")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("72bdc44f-c588-44f3-b6df-9aace7daafdd")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Renderers/CustomEntryRenderer.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Mvp.iOS.Renderers; 2 | using Xamarin.Forms; 3 | using Xamarin.Forms.Platform.iOS; 4 | 5 | [assembly: ExportRenderer(typeof(Entry), typeof(CustomEntryRenderer))] 6 | namespace Microsoft.Mvp.iOS.Renderers 7 | { 8 | public class CustomEntryRenderer : EntryRenderer 9 | { 10 | protected override void OnElementChanged(ElementChangedEventArgs e) 11 | { 12 | base.OnElementChanged(e); 13 | if (e.OldElement != null || Element == null) 14 | return; 15 | 16 | Element.HeightRequest = 30; 17 | } 18 | } 19 | } -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Renderers/TabsRenderer.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Mvp.iOS.Renderers; 2 | using UIKit; 3 | using Xamarin.Forms; 4 | using Xamarin.Forms.Platform.iOS; 5 | 6 | [assembly: ExportRenderer(typeof(TabbedPage), typeof(TabsRenderer))] 7 | namespace Microsoft.Mvp.iOS.Renderers 8 | { 9 | public class TabsRenderer : TabbedRenderer 10 | { 11 | protected override void OnElementChanged(VisualElementChangedEventArgs e) 12 | { 13 | base.OnElementChanged(e); 14 | 15 | UITabBar.Appearance.TintColor = ((Color)Xamarin.Forms.Application.Current.Resources["TabTintColor"]).ToUIColor(); 16 | } 17 | 18 | public override void ViewWillAppear(bool animated) 19 | { 20 | if (TabBar?.Items == null) 21 | return; 22 | 23 | // Go through our elements and change the icons 24 | var tabs = Element as TabbedPage; 25 | if (tabs != null) 26 | { 27 | for (int i = 0; i < TabBar.Items.Length; i++) 28 | UpdateTabBarItem(TabBar.Items[i], tabs.Children[i].Icon); 29 | } 30 | 31 | base.ViewWillAppear(animated); 32 | } 33 | 34 | private void UpdateTabBarItem(UITabBarItem item, string icon) 35 | { 36 | if (item == null || icon == null) 37 | return; 38 | 39 | // Set our different selected icons 40 | icon = icon.Replace(".png", "_selected.png"); 41 | 42 | if (item?.SelectedImage?.AccessibilityIdentifier == icon) 43 | return; 44 | 45 | item.SelectedImage = UIImage.FromBundle(icon).ImageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal); 46 | item.SelectedImage.AccessibilityIdentifier = icon; 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/image_blog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/image_blog.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/image_book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/image_book.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/image_cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/image_cancel.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/image_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/image_code.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/image_defaultactivity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/image_defaultactivity.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/image_discussion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/image_discussion.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/image_feedback.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/image_feedback.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/image_mvplaunch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/image_mvplaunch.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/image_mvplogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/image_mvplogo.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/image_speaker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/image_speaker.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/image_video.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/image_video.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/tab_contribution@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/tab_contribution@2x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/tab_contribution@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/tab_contribution@3x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/tab_contribution_selected@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/tab_contribution_selected@2x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/tab_contribution_selected@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/tab_contribution_selected@3x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/tab_profile@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/tab_profile@2x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/tab_profile@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/tab_profile@3x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/tab_profile_selected@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/tab_profile_selected@2x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/tab_profile_selected@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/tab_profile_selected@3x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/toolbar_add@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/toolbar_add@2x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/toolbar_add@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/toolbar_add@3x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/toolbar_close@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/toolbar_close@2x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/toolbar_close@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/toolbar_close@3x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/toolbar_settings@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/toolbar_settings@2x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/Resources/toolbar_settings@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/Resources/toolbar_settings@3x.png -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/iTunesArtwork: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/iTunesArtwork -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/iTunesArtwork@2x: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP.iOS/iTunesArtwork@2x -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/mobile-center-post-clone.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | echo "Variables:" 4 | printenv 5 | 6 | echo "Arguments for updating:" 7 | echo " - MCID: $MC_IOS" 8 | echo " - Live ID: $LIVE_ID" 9 | echo " - Live Secret: $LIVE_SECRET" 10 | 11 | # Updating manifest 12 | sed -i '' "s/MC_IOS/$MC_IOS/g" $BUILD_REPOSITORY_LOCALPATH/MVP/MVP/MVP/Helpers/CommonConstants.cs 13 | sed -i '' "s/LIVE_ID/$LIVE_ID/g" $BUILD_REPOSITORY_LOCALPATH/MVP/MVP/MVP/Helpers/CommonConstants.cs 14 | sed -i '' "s/LIVE_SECRET/$LIVE_SECRET/g" $BUILD_REPOSITORY_LOCALPATH/MVP/MVP/MVP/Helpers/CommonConstants.cs 15 | 16 | cat $BUILD_REPOSITORY_LOCALPATH/MVP/MVP/MVP/Helpers/CommonConstants.cs 17 | 18 | echo "Manifest updated!" -------------------------------------------------------------------------------- /MVP/MVP/MVP.iOS/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /MVP/MVP/MVP/Helpers/IMVPService.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Mvp.Models; 2 | using System.Threading.Tasks; 3 | 4 | namespace Microsoft.Mvp.Helpers 5 | { 6 | public interface IMvpService 7 | { 8 | Task GetPhoto(string token); 9 | 10 | Task GetProfile(string token); 11 | 12 | 13 | Task GetContributionTypes(string token); 14 | 15 | 16 | Task GetContributionAreas(string token); 17 | 18 | 19 | Task GetContributions(int start, int size, string token); 20 | 21 | 22 | Task GetContributionModel(int privateSiteId, string token); 23 | 24 | 25 | Task AddContributionModel(ContributionModel model, string token); 26 | 27 | Task EditContributionModel(ContributionModel model, string token); 28 | 29 | 30 | Task DeleteContributionModel(int privateSiteId, string token); 31 | 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /MVP/MVP/MVP/Helpers/Logger.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Device = Xamarin.Forms.Device; 7 | using Microsoft.Azure.Mobile.Analytics; 8 | 9 | namespace Microsoft.Mvp.Helpers 10 | { 11 | public static class Logger 12 | { 13 | static bool IsEnabled => ((Device.RuntimePlatform == Device.Android && CommonConstants.MobileCenterAndroid != "MC_ANDROID") || 14 | (Device.RuntimePlatform == Device.iOS && CommonConstants.MobileCenteriOS != "MC_IOS") || 15 | (Device.RuntimePlatform == Device.UWP && CommonConstants.MobileCenterUWP != "MC_UWP")); 16 | 17 | public static void Log(string name, string extra) 18 | { 19 | if (!IsEnabled) 20 | return; 21 | 22 | Analytics.TrackEvent(name, new Dictionary { ["extra"] = extra }); 23 | } 24 | 25 | public static void Log(string name) 26 | { 27 | if (!IsEnabled) 28 | return; 29 | 30 | Analytics.TrackEvent(name); 31 | } 32 | 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /MVP/MVP/MVP/Helpers/Settings.cs: -------------------------------------------------------------------------------- 1 | // Helpers/Settings.cs 2 | using Plugin.Settings; 3 | using Plugin.Settings.Abstractions; 4 | 5 | namespace Microsoft.Mvp.Helpers 6 | { 7 | /// 8 | /// This is the Settings static class that can be used in your Core solution or in any 9 | /// of your client applications. All settings are laid out the same exact way with getters 10 | /// and setters. 11 | /// 12 | public static class Settings 13 | { 14 | private static ISettings AppSettings 15 | { 16 | get 17 | { 18 | return CrossSettings.Current; 19 | } 20 | } 21 | 22 | #region Setting Constants 23 | 24 | private const string SettingsKey = "settings_key"; 25 | private static readonly string SettingsDefault = string.Empty; 26 | 27 | #endregion 28 | 29 | public static string GetSetting(string key) => AppSettings.GetValueOrDefault(key, string.Empty); 30 | public static void SetSetting(string key, string value) => AppSettings.AddOrUpdateValue(key, value); 31 | public static string GeneralSettings 32 | { 33 | get 34 | { 35 | return AppSettings.GetValueOrDefault(SettingsKey, SettingsDefault); 36 | } 37 | set 38 | { 39 | AppSettings.AddOrUpdateValue(SettingsKey, value); 40 | } 41 | } 42 | 43 | } 44 | } -------------------------------------------------------------------------------- /MVP/MVP/MVP/Helpers/TranslateExtension.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Mvp.Interfaces; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Globalization; 5 | using System.Linq; 6 | using System.Resources; 7 | using System.Reflection; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using Xamarin.Forms; 11 | using Xamarin.Forms.Xaml; 12 | 13 | namespace Microsoft.Mvp.Helpers 14 | { 15 | // // You exclude the 'Extension' suffix when using in Xaml markup 16 | // [ContentProperty("Text")] 17 | // public class TranslateExtension : IMarkupExtension 18 | // { 19 | // readonly CultureInfo ci; 20 | // const string ResourceId = "Microsoft.Mvp.Resources.AppResources"; 21 | 22 | // private static readonly Lazy ResMgr = new Lazy(() => new ResourceManager(ResourceId 23 | // , typeof(TranslateExtension).GetTypeInfo().Assembly)); 24 | 25 | // public TranslateExtension() 26 | // { 27 | // if (Device.RuntimePlatform == Device.iOS || Device.RuntimePlatform == Device.Android) 28 | // { 29 | // ci = DependencyService.Get().GetCurrentCultureInfo(); 30 | // } 31 | // } 32 | 33 | // public string Text { get; set; } 34 | 35 | // public string StringFormat { get; set; } 36 | 37 | // public object ProvideValue(IServiceProvider serviceProvider) 38 | // { 39 | // if (Text == null) 40 | // return ""; 41 | 42 | // var translation1 = ResMgr.Value.GetString(Text, ci); 43 | // ResourceManager temp = new ResourceManager(ResourceId, typeof(TranslateExtension).GetTypeInfo().Assembly); 44 | 45 | // var translation = temp.GetString(Text, ci); 46 | 47 | // if (translation == null) 48 | // { 49 | //#if DEBUG 50 | // throw new ArgumentException( 51 | // String.Format("Key '{0}' was not found in resources '{1}' for culture '{2}'.", Text, ResourceId, ci.Name), 52 | // "Text"); 53 | //#else 54 | // translation = Text; // returns the key, which GETS DISPLAYED TO THE USER 55 | //#endif 56 | // } 57 | // else 58 | // { 59 | // if (!string.IsNullOrEmpty(StringFormat)) 60 | // { 61 | // translation = string.Format(StringFormat, translation); 62 | // } 63 | // } 64 | // return translation; 65 | // } 66 | // } 67 | 68 | 69 | 70 | } 71 | 72 | -------------------------------------------------------------------------------- /MVP/MVP/MVP/Helpers/TranslateExtensionConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Globalization; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Reflection; 8 | using Xamarin.Forms; 9 | using Microsoft.Mvp.Interfaces; 10 | 11 | namespace Microsoft.Mvp.Helpers 12 | { 13 | public class TranslateExtensionConverter : IValueConverter 14 | { 15 | 16 | 17 | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 18 | { 19 | string tempText = string.Empty; 20 | if (value is null) 21 | { 22 | return string.Empty; 23 | } 24 | else 25 | { 26 | tempText = value.ToString(); 27 | } 28 | 29 | 30 | if (tempText == null) 31 | return ""; 32 | 33 | 34 | var translation = TranslateServices.GetResourceString(tempText); 35 | 36 | return translation; 37 | } 38 | 39 | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 40 | { 41 | throw new NotImplementedException(); 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /MVP/MVP/MVP/Helpers/TranslateServices.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Globalization; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Reflection; 8 | using System.Resources; 9 | using Microsoft.Mvp.Interfaces; 10 | using Xamarin.Forms; 11 | 12 | namespace Microsoft.Mvp.Helpers 13 | { 14 | public class TranslateServices 15 | { 16 | static CultureInfo ci = new CultureInfo("en"); 17 | const string resourceId = "Microsoft.Mvp.Resources.AppResources"; 18 | 19 | private static readonly Lazy resMgr = new Lazy( 20 | () => new ResourceManager(resourceId, typeof(TranslateServices).GetTypeInfo().Assembly)); 21 | 22 | public static string GetResourceString(string resourceKey) 23 | { 24 | string translation = string.Empty; 25 | if (Device.RuntimePlatform == Device.iOS || Device.RuntimePlatform == Device.Android || Device.RuntimePlatform == Device.UWP) 26 | { 27 | ci = DependencyService.Get().GetCurrentCultureInfo(); 28 | } 29 | 30 | translation = resMgr.Value.GetString(resourceKey, ci); 31 | 32 | if (translation == null) 33 | { 34 | #if DEBUG 35 | throw new ArgumentException( 36 | String.Format("Key '{0}' was not found in resources '{1}' for culture '{2}'.", resourceKey, resourceId, ci.Name), 37 | "Text"); 38 | #else 39 | translation = resourceKey; // returns the key, which GETS DISPLAYED TO THE USER 40 | #endif 41 | } 42 | return translation; 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /MVP/MVP/MVP/Interfaces/ILocalize.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Globalization; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace Microsoft.Mvp.Interfaces 9 | { 10 | public interface ILocalize 11 | { 12 | CultureInfo GetCurrentCultureInfo(); 13 | void SetLocale(CultureInfo ci); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /MVP/MVP/MVP/Interfaces/ISignOutHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Microsoft.Mvp.Interfaces 8 | { 9 | public interface ISignOutHelper 10 | { 11 | void CloseApp(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MVP/MVP/MVP/Interfaces/PlatformCulture.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Microsoft.Mvp.Interfaces 8 | { 9 | public class PlatformCulture 10 | { 11 | public PlatformCulture(string platformCultureString) 12 | { 13 | if (String.IsNullOrEmpty(platformCultureString)) 14 | { 15 | throw new ArgumentException(Helpers.TranslateServices.GetResourceString(Helpers.CommonConstants.ExpectedCultureIdentifier), "platformCultureString"); // in C# 6 use nameof(platformCultureString) 16 | } 17 | PlatformString = platformCultureString.Replace("_", "-"); // .NET expects dash, not underscore 18 | var dashIndex = PlatformString.IndexOf("-", StringComparison.Ordinal); 19 | if (dashIndex > 0) 20 | { 21 | var parts = PlatformString.Split('-'); 22 | LanguageCode = parts[0]; 23 | LocaleCode = parts[1]; 24 | } 25 | else 26 | { 27 | LanguageCode = PlatformString; 28 | LocaleCode = ""; 29 | } 30 | } 31 | public string PlatformString { get; private set; } 32 | public string LanguageCode { get; private set; } 33 | public string LocaleCode { get; private set; } 34 | public override string ToString() 35 | { 36 | return PlatformString; 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /MVP/MVP/MVP/Models/ContributionModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | using System.Runtime.Serialization; 4 | 5 | namespace Microsoft.Mvp.Models 6 | { 7 | public class ContributionModel 8 | { 9 | public string ContributionId { get; set; } 10 | 11 | public ContributionTypeModel ContributionType { get; set; } 12 | 13 | public ContributionTechnologyModel ContributionTechnology { get; set; } 14 | 15 | public DateTime? StartDate { get; set; } 16 | 17 | public string Title { get; set; } 18 | 19 | public bool ContributionEnableEditDelete 20 | { 21 | get 22 | { 23 | if (ContributionType == null) 24 | { 25 | return true; 26 | } 27 | else 28 | { 29 | return ContributionType.Name != "Product Group Interaction (PGI)"; 30 | } 31 | } 32 | } 33 | 34 | public string LabelTextOfContribution { get; set; } 35 | 36 | public string ReferenceUrl { get; set; } 37 | 38 | [DataMember] 39 | public VisibilityModel Visibility { get; set; } 40 | 41 | public int? AnnualQuantity { get; set; } 42 | 43 | public int? SecondAnnualQuantity { get; set; } 44 | 45 | public int? AnnualReach { get; set; } 46 | 47 | public string Description { get; set; } 48 | 49 | public string AllAnswersUrl { get; set; } 50 | 51 | public string AllPostsUrl { get; set; } 52 | 53 | public bool IsSystemCollected { get; set; } 54 | 55 | public bool IsBelongToLatestAwardCycle { get; set; } 56 | 57 | public string DataFormat 58 | { 59 | get 60 | { 61 | if (StartDate != null) 62 | { 63 | return string.Format(System.Globalization.CultureInfo.CurrentCulture, "{0:yyyy/MM/dd}", StartDate.Value); 64 | } 65 | else 66 | { 67 | return ""; 68 | } 69 | 70 | } 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /MVP/MVP/MVP/Models/ContributionTechnologyModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Runtime.Serialization; 3 | using System.Collections.Generic; 4 | 5 | namespace Microsoft.Mvp.Models 6 | { 7 | public class ContributionTechnologyModel 8 | { 9 | public string Id { get; set; } 10 | 11 | public string Name { get; set; } 12 | 13 | public string AwardName { get; set; } 14 | 15 | public string Statuscode { get; set; } 16 | 17 | public string Active { get; set; } 18 | 19 | } 20 | 21 | public class ContributionAreaInfo 22 | { 23 | public string ContentEncoding { get; set; } 24 | public string ContentType { get; set; } 25 | public List Data { get; set; } 26 | 27 | } 28 | 29 | public class ContributionAreaData 30 | { 31 | public string AwardCategory { get; set; } 32 | 33 | public List Contributions { get; set; } 34 | } 35 | 36 | public class ContributionDetail 37 | { 38 | public string AwardName { get; set; } 39 | 40 | public List ContributionArea { get; set; } 41 | } 42 | } -------------------------------------------------------------------------------- /MVP/MVP/MVP/Models/ContributionTypeModel.cs: -------------------------------------------------------------------------------- 1 | using MvvmHelpers; 2 | 3 | namespace Microsoft.Mvp.Models 4 | { 5 | public class ContributionTypeModel 6 | { 7 | public string Id { get; set; } 8 | 9 | public string Name { get; set; } 10 | 11 | public string EnglishName { get; set; } 12 | } 13 | 14 | public class ContributionTypeDetail 15 | { 16 | public ObservableRangeCollection ContributionTypes { get; set; } 17 | } 18 | } -------------------------------------------------------------------------------- /MVP/MVP/MVP/Models/ProfileModel.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Runtime.Serialization; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace Microsoft.Mvp.Models 10 | { 11 | public class ProfileModel 12 | { 13 | [DataMember] 14 | public string DisplayName { get; set; } 15 | 16 | [DataMember] 17 | public string AwardCategoryDisplay { get; set; } 18 | 19 | [DataMember] 20 | public string Biography { get; set; } 21 | 22 | [DataMember] 23 | public long FirstAwardYear { get; set; } 24 | 25 | [DataMember] 26 | public long YearsAsMVP { get; set; } 27 | 28 | [DataMember] 29 | public string Abstract { get; set; } 30 | 31 | [DataMember] 32 | public int ContributionCount { get; set; } 33 | 34 | [DataMember] 35 | public int MvpId { get; set; } 36 | } 37 | 38 | public class ContributionInfo 39 | { 40 | public int TotalContributions { get; set; } 41 | public List Contributions { get; set; } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /MVP/MVP/MVP/Models/VisibilityModel.cs: -------------------------------------------------------------------------------- 1 | namespace Microsoft.Mvp.Models 2 | { 3 | public class VisibilityModel 4 | { 5 | public int Id { get; set; } 6 | 7 | public string Description { get; set; } 8 | 9 | public string LocalizeKey { get; set; } 10 | } 11 | } -------------------------------------------------------------------------------- /MVP/MVP/MVP/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Resources; 2 | using System.Reflection; 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | using System; 6 | 7 | // General Information about an assembly is controlled through the following 8 | // set of attributes. Change these attribute values to modify the information 9 | // associated with an assembly. 10 | [assembly: AssemblyTitle("MVP")] 11 | [assembly: AssemblyDescription("")] 12 | [assembly: AssemblyConfiguration("")] 13 | [assembly: AssemblyCompany("Microsoft")] 14 | [assembly: AssemblyProduct("MVP")] 15 | [assembly: AssemblyCopyright("Copyright © Microsoft 2017")] 16 | [assembly: AssemblyTrademark("")] 17 | [assembly: AssemblyCulture("")] 18 | [assembly: NeutralResourcesLanguage("en")] 19 | 20 | [assembly:ComVisible(false)] 21 | [assembly: CLSCompliant(true)] 22 | 23 | // Version information for an assembly consists of the following four values: 24 | // 25 | // Major Version 26 | // Minor Version 27 | // Build Number 28 | // Revision 29 | // 30 | // You can specify all the values or you can default the Build and Revision Numbers 31 | // by using the '*' as shown below: 32 | // [assembly: AssemblyVersion("1.0.*")] 33 | [assembly: AssemblyVersion("1.0.0.0")] 34 | [assembly: AssemblyFileVersion("1.0.0.0")] 35 | -------------------------------------------------------------------------------- /MVP/MVP/MVP/Resources/AppResources.zh-Hans.Designer.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/mvp/473c69aba1a703b7c1d4b1bbd8d1f556ebb2ec9e/MVP/MVP/MVP/Resources/AppResources.zh-Hans.Designer.cs -------------------------------------------------------------------------------- /MVP/MVP/MVP/ViewModels/LogOnViewModel.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Mvp.Helpers; 2 | using System; 3 | using Xamarin.Forms; 4 | 5 | namespace Microsoft.Mvp.ViewModels 6 | { 7 | public class LogOnViewModel : ViewModelBase 8 | { 9 | 10 | #region Singleton pattern and constructors 11 | 12 | private static LogOnViewModel _instance = null; 13 | private static readonly object _synObject = new object(); 14 | 15 | public static LogOnViewModel Instance 16 | { 17 | get 18 | { 19 | if (null == _instance) 20 | { 21 | lock (_synObject) 22 | { 23 | if (null == _instance) 24 | { 25 | _instance = new LogOnViewModel(); 26 | } 27 | } 28 | } 29 | return _instance; 30 | } 31 | } 32 | 33 | #endregion 34 | 35 | #region Private Members 36 | 37 | private static string _storedToken; 38 | 39 | #endregion 40 | 41 | #region Public Members 42 | 43 | public bool IsLoggedIn 44 | { 45 | get 46 | { 47 | 48 | string tokenAndExpiredTime = null; 49 | if (Settings.GetSetting(CommonConstants.TokenKey) != string.Empty) 50 | { 51 | tokenAndExpiredTime = Settings.GetSetting(CommonConstants.TokenKey); 52 | } 53 | 54 | if (!string.IsNullOrEmpty(tokenAndExpiredTime)) 55 | { 56 | var index = tokenAndExpiredTime.LastIndexOf(",", StringComparison.Ordinal); 57 | 58 | var expiredtime = Convert.ToDateTime(tokenAndExpiredTime.Substring(index + 1), System.Globalization.CultureInfo.InvariantCulture); 59 | var token = tokenAndExpiredTime.Substring(0, index); 60 | if (DateTime.Now.AddHours(-7) < expiredtime) 61 | { 62 | StoredToken = token; 63 | } 64 | else 65 | { 66 | StoredToken = ""; 67 | } 68 | } 69 | 70 | return !string.IsNullOrEmpty(LogOnViewModel.StoredToken); 71 | } 72 | } 73 | 74 | public static string StoredToken 75 | { 76 | get 77 | { 78 | return _storedToken; 79 | } 80 | 81 | set 82 | { 83 | _storedToken = value; 84 | 85 | } 86 | 87 | } 88 | 89 | public string LearnMore 90 | { 91 | get { 92 | return TranslateServices.GetResourceString(CommonConstants.LearnMore); 93 | } 94 | } 95 | 96 | public string SigninTo { 97 | get 98 | { 99 | return TranslateServices.GetResourceString(CommonConstants.SigninTo); 100 | } 101 | } 102 | 103 | public string Welcome 104 | { 105 | get 106 | { 107 | return TranslateServices.GetResourceString(CommonConstants.Welcome); 108 | } 109 | } 110 | 111 | public string PageTitleForLogOn 112 | { 113 | get 114 | { 115 | return TranslateServices.GetResourceString(CommonConstants.PageTitleForLogOn); 116 | } 117 | } 118 | 119 | public string CancelButton { get; } = TranslateServices.GetResourceString(CommonConstants.CancelButton); 120 | 121 | 122 | 123 | 124 | #endregion 125 | 126 | } 127 | } 128 | -------------------------------------------------------------------------------- /MVP/MVP/MVP/ViewModels/SettingsViewModel.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.Mvp.Helpers; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace Microsoft.Mvp.ViewModels 9 | { 10 | public class SettingsViewModel : ViewModelBase 11 | { 12 | //public string About { get; } = "This is the official Microsoft Most Valuable Professional (MVP) Award program app.\n\n" + 13 | // "Microsoft MVP award is given to exceptional, independent community leaders who share their passion, technical " + 14 | // "expertise, and real-world knowledge of Microsoft products with others.Microsoft MVPs can use this app to access " + 15 | // "their profile, contribution data, as well as automating several different tasks creating efficiency in daily tasks."; 16 | //public string Version { get; } = $"Version: {Plugin.VersionTracking.CrossVersionTracking.Current.CurrentVersion}"; 17 | 18 | //public string Copyright { get; } = $"Copyright {DateTime.Now.Year} Microsoft"; 19 | public string PageTitleForSetting { get; } = TranslateServices.GetResourceString(CommonConstants.PageTitleForSetting); 20 | public string Signout { get; } = TranslateServices.GetResourceString(CommonConstants.SignoutButton); 21 | public string DevToolsInfo { get; } = TranslateServices.GetResourceString(CommonConstants.DevToolsInfo); 22 | 23 | public string CloseButton { get; } = TranslateServices.GetResourceString(CommonConstants.CloseButton); 24 | 25 | public string About { get; } = TranslateServices.GetResourceString(CommonConstants.About); 26 | public string Version { get; } =string.Format(TranslateServices.GetResourceString(CommonConstants.VersionFormat), Plugin.VersionTracking.CrossVersionTracking.Current.CurrentVersion); 27 | 28 | public string Copyright { get; } = string.Format(TranslateServices.GetResourceString(CommonConstants.CopyrightFormat), DateTime.Now.Year); 29 | 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /MVP/MVP/MVP/ViewModels/ViewModelBase.cs: -------------------------------------------------------------------------------- 1 | using MvvmHelpers; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.ComponentModel; 5 | using System.Linq; 6 | using System.Text; 7 | 8 | namespace Microsoft.Mvp.ViewModels 9 | { 10 | /// 11 | /// 12 | /// 13 | public class ViewModelBase : BaseViewModel 14 | { 15 | /// 16 | /// Event for when IsValid changes 17 | /// 18 | public event EventHandler IsValidChanged; 19 | 20 | readonly List errors = new List(); 21 | 22 | /// 23 | /// Default constructor 24 | /// 25 | public ViewModelBase() 26 | { 27 | //Make sure validation is performed on startup 28 | Validate(); 29 | } 30 | 31 | /// 32 | /// Returns true if the current state of the ViewModel is valid 33 | /// 34 | public bool IsValid => errors.Count == 0; 35 | 36 | /// 37 | /// A list of errors if IsValid is false 38 | /// 39 | protected List Errors => errors; 40 | 41 | /// 42 | /// Protected method for validating the ViewModel 43 | /// - Fires PropertyChanged for IsValid and Errors 44 | /// 45 | protected virtual void Validate() 46 | { 47 | OnPropertyChanged("IsValid"); 48 | IsValidChanged?.Invoke(this, EventArgs.Empty); 49 | } 50 | 51 | /// 52 | /// Other viewmodels should call this when overriding Validate, to validate each property 53 | /// 54 | /// Func to determine if a value is valid 55 | /// The error message to use if not valid 56 | protected virtual void ValidateProperty(Func validate, string myError) 57 | { 58 | if (validate()) 59 | { 60 | if (!Errors.Contains(myError)) 61 | Errors.Add(myError); 62 | } 63 | else 64 | { 65 | Errors.Remove(myError); 66 | } 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /MVP/MVP/MVP/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /MVP/MVPUI/App.xaml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /MVP/MVPUI/CustomControls/ICookieHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Microsoft.Mvpui 8 | { 9 | public interface ICookieHelper 10 | { 11 | string GetCookie(string url); 12 | string GetCookie(Uri uri); 13 | void ClearCookie(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /MVP/MVPUI/CustomControls/ILocationHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace Microsoft.Mvpui 8 | { 9 | public interface ILocationHelper 10 | { 11 | bool IsGooglePlayServicesIsInstalled(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /MVP/MVPUI/CustomControls/MVPNavigationPage.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using Xamarin.Forms; 7 | 8 | namespace Microsoft.Mvpui 9 | { 10 | class MVPNavigationPage : NavigationPage 11 | { 12 | public MVPNavigationPage(Page root) : base(root) 13 | { 14 | if (Device.RuntimePlatform == Device.iOS) 15 | { 16 | 17 | BarTextColor = (Color)Application.Current.Resources["PrimaryDark"]; ; 18 | BarBackgroundColor = (Color)Application.Current.Resources["BackgroundColoriOS"]; 19 | } 20 | else 21 | { 22 | BarTextColor = Color.White; 23 | BarBackgroundColor = (Color)Application.Current.Resources["Primary"]; 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /MVP/MVPUI/Extensions/ResourceDictionaryExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Collections.ObjectModel; 4 | using System.Linq; 5 | 6 | namespace Microsoft.Mvpui 7 | { 8 | internal static class MergeExtensions 9 | { 10 | internal static void ForEach(this IEnumerable items, Action action) 11 | { 12 | foreach (var item in items) action(item); 13 | } 14 | 15 | internal static void Merge(this IDictionary targetDictionary, 16 | IEnumerable> sourceItems) 17 | { 18 | var targetItems = targetDictionary.ToArray(); 19 | sourceItems.ForEach(i => targetDictionary[i.Key] = i.Value); 20 | targetItems.ForEach(i => targetDictionary[i.Key] = i.Value); // override merged by local values 21 | } 22 | } 23 | 24 | public class ResourceDictionary : Xamarin.Forms.ResourceDictionary 25 | { 26 | public ResourceDictionary() 27 | { 28 | MergedDictionaries = new ObservableCollection(); 29 | MergedDictionaries.CollectionChanged += (sender, args) => 30 | (args.NewItems ?? new List()).OfType() 31 | .ForEach(this.Merge); 32 | } 33 | 34 | public ObservableCollection MergedDictionaries { get; } 35 | } 36 | } -------------------------------------------------------------------------------- /MVP/MVPUI/LiveIdLogOn.xaml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /MVP/MVPUI/MainTabPage.xaml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /MVP/MVPUI/MainTabPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using Xamarin.Forms; 8 | using Xamarin.Forms.Xaml; 9 | 10 | namespace Microsoft.Mvpui 11 | { 12 | [XamlCompilation(XamlCompilationOptions.Compile)] 13 | public partial class MainTabPage : TabbedPage 14 | { 15 | public MainTabPage () 16 | { 17 | InitializeComponent(); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /MVP/MVPUI/MainTabPageiOS.xaml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /MVP/MVPUI/MainTabPageiOS.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | using Xamarin.Forms; 8 | using Xamarin.Forms.Xaml; 9 | 10 | namespace Microsoft.Mvpui 11 | { 12 | [XamlCompilation(XamlCompilationOptions.Compile)] 13 | public partial class MainTabPageiOS : TabbedPage 14 | { 15 | public MainTabPageiOS () 16 | { 17 | InitializeComponent(); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /MVP/MVPUI/MyProfile.xaml.cs: -------------------------------------------------------------------------------- 1 | using Acr.UserDialogs; 2 | using Microsoft.Mvp.Helpers; 3 | using Microsoft.Mvp.Models; 4 | using Microsoft.Mvp.ViewModels; 5 | using System; 6 | using System.Collections.Generic; 7 | using System.Linq; 8 | using System.Threading.Tasks; 9 | using Xamarin.Forms; 10 | 11 | namespace Microsoft.Mvpui 12 | { 13 | public partial class MyProfile : ContentPage 14 | { 15 | 16 | #region Constructor 17 | 18 | public MyProfile() 19 | { 20 | Logger.Log("Page-Profile"); 21 | InitializeComponent(); 22 | this.BindingContext = MyProfileViewModel.Instance; 23 | 24 | if (Device.RuntimePlatform == Device.UWP || Device.RuntimePlatform == Device.WinPhone) 25 | ToolBarSettings.Icon = "Assets\\toolbar_settings.png"; 26 | 27 | ToolBarSettings.Command = new Command(async () => 28 | { 29 | if (Device.RuntimePlatform == Device.iOS) 30 | await Navigation.PushModalAsync(new MVPNavigationPage(new SettingsPage())); 31 | else 32 | await Navigation.PushAsync(new SettingsPage()); 33 | }); 34 | } 35 | 36 | #endregion 37 | 38 | #region Private and Protected Methods 39 | 40 | 41 | protected async override void OnAppearing() 42 | { 43 | base.OnAppearing(); 44 | 45 | MyProfileViewModel.Instance.LoadProfileCommand.Execute(null); 46 | } 47 | 48 | #endregion 49 | 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /MVP/MVPUI/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Resources; 2 | using System.Reflection; 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | using System; 6 | 7 | // General Information about an assembly is controlled through the following 8 | // set of attributes. Change these attribute values to modify the information 9 | // associated with an assembly. 10 | [assembly: AssemblyTitle("Mvpui")] 11 | [assembly: AssemblyDescription("")] 12 | [assembly: AssemblyConfiguration("")] 13 | [assembly: AssemblyCompany("Microsoft")] 14 | [assembly: AssemblyProduct("Mvpui")] 15 | [assembly: AssemblyCopyright("Copyright © Microsoft 2017")] 16 | [assembly: AssemblyTrademark("")] 17 | [assembly: AssemblyCulture("")] 18 | [assembly: NeutralResourcesLanguage("en")] 19 | 20 | [assembly: ComVisible(false)] 21 | [assembly: CLSCompliant(true)] 22 | 23 | // Version information for an assembly consists of the following four values: 24 | // 25 | // Major Version 26 | // Minor Version 27 | // Build Number 28 | // Revision 29 | // 30 | // You can specify all the values or you can default the Build and Revision Numbers 31 | // by using the '*' as shown below: 32 | // [assembly: AssemblyVersion("1.0.*")] 33 | [assembly: AssemblyVersion("1.0.0.0")] 34 | [assembly: AssemblyFileVersion("1.0.0.0")] 35 | -------------------------------------------------------------------------------- /MVP/MVPUI/SettingsPage.xaml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 29 | 45 | 46 | 55 | 56 | 57 | 58 | 59 |