Esempio n. 1
0
 public ViewModelBase(INavigationService navigationService, IEventAggregator eventAggregator, IStoreManager storeManager, IToast toast, IFavoriteService favoriteService, ILoggerFacade logger, ILaunchTwitter twitter, ISSOClient ssoClient, IPushNotifications pushNotifications, IReminderService reminderService, IPageDialogService pageDialogService)
 {
     Navigation        = navigationService;
     EventAggregator   = eventAggregator;
     StoreManager      = storeManager;
     Toast             = toast;
     FavoriteService   = favoriteService;
     Logger            = logger;
     SSOClient         = ssoClient;
     PushNotifications = pushNotifications;
     ReminderService   = reminderService;
     PageDialogService = pageDialogService;
     LaunchTwitter     = twitter;
 }
 public WorkshopDetailsViewModel(INavigationService navigationService, IEventAggregator eventAggregator, IStoreManager storeManager, IToast toast, IFavoriteService favoriteService, ILoggerFacade logger, ILaunchTwitter twitter, ISSOClient ssoClient, IPushNotifications pushNotifications, IReminderService reminderService, IPageDialogService pageDialogService)
     : base(navigationService, eventAggregator, storeManager, toast, favoriteService, logger, twitter, ssoClient, pushNotifications, reminderService, pageDialogService)
 {
     EventAggregator.GetEvent <WorkshopSelectedEvent>().Subscribe(WorkshopSelected);
 }
        public FilterSessionsViewModel(INavigationService navigationService, IEventAggregator eventAggregator, IStoreManager storeManager, IToast toast, IFavoriteService favoriteService, ILoggerFacade logger, ILaunchTwitter twitter, ISSOClient ssoClient, IPushNotifications pushNotifications, IReminderService reminderService, IPageDialogService pageDialogService, IUnityContainer container)
            : base(navigationService, eventAggregator, storeManager, toast, favoriteService, logger, twitter, ssoClient, pushNotifications, reminderService, pageDialogService)
        {
            _container   = container;
            _allCategory = new open.conference.app.DataStore.Abstractions.DataObjects.Category
            {
                Name       = "All",
                IsEnabled  = true,
                IsFiltered = Settings.ShowAllCategories
            };

            _allCategory.PropertyChanged += (sender, e) =>
            {
                if (e.PropertyName == "IsFiltered")
                {
                    SetShowAllCategories(_allCategory.IsFiltered);
                }
            };

            ToolBarItems.Add(new ToolbarItem
            {
                Text    = "Done",
                Command = DoneCommand,
                Icon    = Device.OS != TargetPlatform.iOS ? "toolbar_close.png" : null
            });
        }
Esempio n. 4
0
 public ConferenceInfoViewModel(INavigationService navigationService, IEventAggregator eventAggregator, IStoreManager storeManager, IToast toast, IFavoriteService favoriteService, ILoggerFacade logger, ILaunchTwitter twitter, ISSOClient ssoClient, IPushNotifications pushNotifications, IReminderService reminderService, IPageDialogService pageDialogService, IWiFiConfig wifiConfig)
     : base(navigationService, eventAggregator, storeManager, toast, favoriteService, logger, twitter, ssoClient, pushNotifications, reminderService, pageDialogService)
 {
     _wifiConfig = wifiConfig;
 }
Esempio n. 5
0
        public AboutViewModel(INavigationService navigationService, IEventAggregator eventAggregator, IStoreManager storeManager, IToast toast, IFavoriteService favoriteService, ILoggerFacade logger, ILaunchTwitter twitter, ISSOClient ssoClient, IPushNotifications pushNotifications, IReminderService reminderService, IPageDialogService pageDialogService)
            : base(navigationService, eventAggregator, storeManager, toast, favoriteService, logger, twitter, ssoClient, pushNotifications, reminderService, pageDialogService)
        {
            ToolBarItems.Add(new ToolbarItem
            {
                Text = LoginText,
                Command = LoginCommand
            });
            AboutItems.Clear();
            AboutItems.Add(new Models.MenuItem { Name = "About this app", Icon = "icon_venue.png" });

            InfoItems.AddRange(new[] 
            {
                new Models.MenuItem { Name = "Conference Feed", Icon = "menu_feed.png", Pagename = nameof(FeedPage) },
                new Models.MenuItem { Name = "Sponsors", Icon = "menu_sponsors.png", Pagename = nameof(SponsorsPage) },
                new Models.MenuItem { Name = "Venue", Icon = "menu_venue.png", Pagename = nameof(VenuePage) },
                new Models.MenuItem { Name = "Floor Maps", Icon = "menu_plan.png", Pagename = nameof(FloorMapsPage) },
                new Models.MenuItem { Name = "Conference Info", Icon = "menu_info.png", Pagename = nameof(ConferenceInformationPage) },
                new Models.MenuItem { Name = "Settings", Icon = "menu_settings.png", Pagename = nameof(SettingsPage) }
            });

            accountItem = new Models.MenuItem
            {
                Name = "Logged in as:"
            };

            syncItem = new Models.MenuItem
            {
                Name = "Last Sync:"
            };

            pushItem = new Models.MenuItem
            {
                Name = "Enable push notifications"
            };

            pushItem.Command = DelegateCommand.FromAsyncHandler(async () =>
            {
                if (PushNotifications.IsRegistered)
                {
                    UpdateItems();
                    return;
                }

                if (Settings.AttemptedPush)
                {
                    var response = await PageDialogService.DisplayAlertAsync("Push Notification",
                        "To enable push notifications, please go into Settings, Tap Notifications, and set Allow Notifications to on.",
                        "Settings",
                        "Maybe Later");

                    if (response)
                    {
                        PushNotifications.OpenSettings();
                    }
                }

                await PushNotifications.RegisterForNotifications();
            });

            UpdateItems();

            AccountItems.Add(accountItem);
            AccountItems.Add(syncItem);
            AccountItems.Add(pushItem);

            //This will be triggered wen 
            Settings.PropertyChanged += (sender, e) =>
            {
                if (e.PropertyName == "Email" || e.PropertyName == "LastSync" || e.PropertyName == "PushNotificationsEnabled")
                {
                    UpdateItems();
                    OnPropertyChanged("AccountItems");
                }
            };

            AccountItems.CollectionChanged += (sender, e) =>
            {
                AccountListHeightAdjustment = AccountItems.Count;
            };
            AccountListHeightAdjustment = AccountItems.Count;

            _isRegistered = PushNotifications.IsRegistered;
        }
        public SettingsViewModel(INavigationService navigationService, IEventAggregator eventAggregator, IStoreManager storeManager, IToast toast, IFavoriteService favoriteService, ILoggerFacade logger, ILaunchTwitter twitter, ISSOClient ssoClient, IPushNotifications pushNotifications, IReminderService reminderService, IPageDialogService pageDialogService)
            : base(navigationService, eventAggregator, storeManager, toast, favoriteService, logger, twitter, ssoClient, pushNotifications, reminderService, pageDialogService)
        {
            //This will be triggered wen
            Settings.PropertyChanged += async(sender, e) =>
            {
                if (e.PropertyName == "Email")
                {
                    Settings.NeedsSync = true;
                    OnPropertyChanged("LoginText");
                    OnPropertyChanged("AccountItems");
                    //if logged in you should go ahead and sync data.
                    if (Settings.IsLoggedIn)
                    {
                        await ExecuteSyncCommandAsync();
                    }
                }
            };

            AboutItems.AddRange(new[]
            {
                new Models.MenuItem {
                    Name = "Created by MyMie with love for Dev Open Space Leipzig", Command = LaunchBrowserCommand, Parameter = "https://www.mymieapp.com"
                },
                new Models.MenuItem {
                    Name = "Open source on GitHub!", Command = LaunchBrowserCommand, Parameter = "https://github.com/dersia/devopenspaceapp"
                },
                //new Models.MenuItem { Name = "Open Source Notice", Command=LaunchBrowserCommand, Parameter="http://tiny.cc/app-evolve-osn"}
            });

            TechnologyItems.AddRange(new[]
            {
                new Models.MenuItem {
                    Name = "Azure Mobile Apps", Command = LaunchBrowserCommand, Parameter = "https://github.com/Azure/azure-mobile-apps-net-client/"
                },
                new Models.MenuItem {
                    Name = "Censored", Command = LaunchBrowserCommand, Parameter = "https://github.com/jamesmontemagno/Censored"
                },
                new Models.MenuItem {
                    Name = "Calendar Plugin", Command = LaunchBrowserCommand, Parameter = "https://github.com/TheAlmightyBob/Calendars"
                },
                new Models.MenuItem {
                    Name = "Connectivity Plugin", Command = LaunchBrowserCommand, Parameter = "https://github.com/jamesmontemagno/Xamarin.Plugins/tree/master/Connectivity"
                },
                new Models.MenuItem {
                    Name = "Embedded Resource Plugin", Command = LaunchBrowserCommand, Parameter = "https://github.com/JosephHill/EmbeddedResourcePlugin"
                },
                new Models.MenuItem {
                    Name = "External Maps Plugin", Command = LaunchBrowserCommand, Parameter = "https://github.com/jamesmontemagno/Xamarin.Plugins/tree/master/ExternalMaps"
                },
                new Models.MenuItem {
                    Name = "Image Circles", Command = LaunchBrowserCommand, Parameter = "https://github.com/jamesmontemagno/Xamarin.Plugins/tree/master/ImageCircle"
                },
                new Models.MenuItem {
                    Name = "Json.NET", Command = LaunchBrowserCommand, Parameter = "https://github.com/JamesNK/Newtonsoft.Json"
                },
                new Models.MenuItem {
                    Name = "LinqToTwitter", Command = LaunchBrowserCommand, Parameter = "https://github.com/JoeMayo/LinqToTwitter"
                },
                new Models.MenuItem {
                    Name = "Messaging Plugin", Command = LaunchBrowserCommand, Parameter = "https://github.com/cjlotz/Xamarin.Plugins"
                },
                new Models.MenuItem {
                    Name = "Permissions Plugin", Command = LaunchBrowserCommand, Parameter = "https://github.com/jamesmontemagno/Xamarin.Plugins/tree/master/Permissions"
                },
                new Models.MenuItem {
                    Name = "Xamarin Evolve App", Command = LaunchBrowserCommand, Parameter = "https://github.com/xamarinhq/app-evolve"
                },
                new Models.MenuItem {
                    Name = "PCL Storage", Command = LaunchBrowserCommand, Parameter = "https://github.com/dsplaisted/PCLStorage"
                },
                new Models.MenuItem {
                    Name = "Pull to Refresh Layout", Command = LaunchBrowserCommand, Parameter = "https://github.com/jamesmontemagno/Xamarin.Forms-PullToRefreshLayout"
                },
                new Models.MenuItem {
                    Name = "Settings Plugin", Command = LaunchBrowserCommand, Parameter = "https://github.com/jamesmontemagno/Xamarin.Plugins/tree/master/Settings"
                },
                new Models.MenuItem {
                    Name = "Toolkit for Xamarin.Forms", Command = LaunchBrowserCommand, Parameter = "https://github.com/jamesmontemagno/xamarin.forms-toolkit"
                },
                new Models.MenuItem {
                    Name = "Xamarin.Forms", Command = LaunchBrowserCommand, Parameter = "http://xamarin.com/forms"
                },
                new Models.MenuItem {
                    Name = "Prism.Forms", Command = LaunchBrowserCommand, Parameter = "https://github.com/PrismLibrary/Prism"
                },
            });

            AboutItems.CollectionChanged += (sender, e) =>
            {
                AboutListHeightAdjustment = AboutItems.Count;
            };
            AboutListHeightAdjustment = AboutItems.Count;
        }
Esempio n. 7
0
        public FeedViewModel(INavigationService navigationService, IEventAggregator eventAggregator, IStoreManager storeManager, IToast toast, IFavoriteService favoriteService, ILoggerFacade logger, ILaunchTwitter twitter, ISSOClient ssoClient, IPushNotifications pushNotifications, IReminderService reminderService, IPageDialogService pageDialogService)
            : base(navigationService, eventAggregator, storeManager, toast, favoriteService, logger, twitter, ssoClient, pushNotifications, reminderService, pageDialogService)
        {
            NextForceRefresh = DateTime.UtcNow.AddMinutes(45);
            if (Device.OS == TargetPlatform.Windows || Device.OS == TargetPlatform.WinPhone)
            {
                ToolBarItems.Add(new ToolbarItem
                {
                    Text    = "Refresh",
                    Icon    = "toolbar_refresh.png",
                    Command = RefreshCommand
                });
            }
            LoggedIn = Settings.Email;

            Tweets.CollectionChanged += (sender, e) =>
            {
                TweetListHeightAdjustment = Tweets.Count;
            };

            Sessions.CollectionChanged += (sender, e) =>
            {
                SessionListHeightAdjustment = Sessions.Count;
            };
            Workshops.CollectionChanged += (sender, e) =>
            {
                WorkshopListHeightAdjustment = Workshops.Count;
            };
        }
Esempio n. 8
0
        public TweetImageViewModel(INavigationService navigationService, IEventAggregator eventAggregator, IStoreManager storeManager, IToast toast, IFavoriteService favoriteService, ILoggerFacade logger, ILaunchTwitter twitter, ISSOClient ssoClient, IPushNotifications pushNotifications, IReminderService reminderService, IPageDialogService pageDialogService)
            : base(navigationService, eventAggregator, storeManager, toast, favoriteService, logger, twitter, ssoClient, pushNotifications, reminderService, pageDialogService)
        {
            EventAggregator.GetEvent <TweetImageChangedEvent>().Subscribe(ImageChanged);
            var item = new ToolbarItem
            {
                Text    = "Done",
                Command = DelegateCommand.FromAsyncHandler(async() => await Navigation.GoBackAsync())
            };

            if (Device.OS == TargetPlatform.Android)
            {
                item.Icon = "toolbar_close.png";
            }
            ToolBarItems.Add(item);
        }
Esempio n. 9
0
 public EventDetailsViewModel(INavigationService navigationService, IEventAggregator eventAggregator, IStoreManager storeManager, IToast toast, IFavoriteService favoriteService, ILoggerFacade logger, ILaunchTwitter twitter, ISSOClient ssoClient, IPushNotifications pushNotifications, IReminderService reminderService, IPageDialogService pageDialogService)
     : base(navigationService, eventAggregator, storeManager, toast, favoriteService, logger, twitter, ssoClient, pushNotifications, reminderService, pageDialogService)
 {
     Sponsors = new ObservableRangeCollection <Sponsor>();
     EventAggregator.GetEvent <EventSelectedEvent>().Subscribe(EventSelected);
 }
 public UWPRootViewModel(INavigationService navigationService, IEventAggregator eventAggregator, IStoreManager storeManager, IToast toast, IFavoriteService favoriteService, ILoggerFacade logger, ILaunchTwitter twitter, ISSOClient ssoClient, IPushNotifications pushNotifications, IReminderService reminderService, IPageDialogService pageDialogService)
     : base(navigationService, eventAggregator, storeManager, toast, favoriteService, logger, twitter, ssoClient, pushNotifications, reminderService, pageDialogService)
 {
     SetupPages();
     _selectedMenuItem = Pages[0];
 }
 public SponsorsViewModel(INavigationService navigationService, IEventAggregator eventAggregator, IStoreManager storeManager, IToast toast, IFavoriteService favoriteService, ILoggerFacade logger, ILaunchTwitter twitter, ISSOClient ssoClient, IPushNotifications pushNotifications, IReminderService reminderService, IPageDialogService pageDialogService)
     : base(navigationService, eventAggregator, storeManager, toast, favoriteService, logger, twitter, ssoClient, pushNotifications, reminderService, pageDialogService)
 {
     if (Device.OS == TargetPlatform.Windows || Device.OS == TargetPlatform.WinPhone)
     {
         ToolBarItems.Add(new ToolbarItem
         {
             Text    = "Refresh",
             Icon    = "toolbar_refresh.png",
             Command = ForceRefreshCommand
         });
     }
     if (Device.OS == TargetPlatform.Android)
     {
         Effects.Add("open.conference.app.ListViewSelectionOnTopEffect");
     }
 }
Esempio n. 12
0
        public WorkshopsViewModel(INavigationService navigationService, IEventAggregator eventAggregator, IStoreManager storeManager, IToast toast, IFavoriteService favoriteService, ILoggerFacade logger, ILaunchTwitter twitter, ISSOClient ssoClient, IPushNotifications pushNotifications, IReminderService reminderService, IPageDialogService pageDialogService, IUnityContainer container)
            : base(navigationService, eventAggregator, storeManager, toast, favoriteService, logger, twitter, ssoClient, pushNotifications, reminderService, pageDialogService)
        {
            _container            = container;
            NextForceRefresh      = DateTime.UtcNow.AddMinutes(45);
            ShowFavoritesCategory = Settings.FavoritesOnly;
            ShowPastCategory      = Settings.ShowPastWorkshops;
            ShowAllCategory       = Settings.ShowAllCategories;
            LoggedIn           = Settings.Email;
            FilteredCategories = Settings.FilteredCategories;

            Setup();
            Workshops.CollectionChanged += (sender, args) => { OnPropertyChanged("Workshops"); };
        }
Esempio n. 13
0
 public LoginViewModel(INavigationService navigationService, IEventAggregator eventAggregator, IStoreManager storeManager, IToast toast, IFavoriteService favoriteService, ILoggerFacade logger, ILaunchTwitter twitter, ISSOClient ssoClient, IPushNotifications pushNotifications, IReminderService reminderService, IPageDialogService pageDialogService)
     : base(navigationService, eventAggregator, storeManager, toast, favoriteService, logger, twitter, ssoClient, pushNotifications, reminderService, pageDialogService)
 {
     if (!Settings.FirstRun)
     {
         Title = "My Account";
         var cancel = new ToolbarItem
         {
             Text    = "Cancel",
             Command = DelegateCommand.FromAsyncHandler(async() =>
             {
                 if (IsBusy)
                 {
                     return;
                 }
                 await Finish();
                 Settings.FirstRun = false;
             }).ObservesCanExecute((arg) => IsBusy)
         };
         if (Device.OS != TargetPlatform.iOS)
         {
             cancel.Icon = "toolbar_close.png";
         }
         ToolBarItems.Add(cancel);
     }
 }
Esempio n. 14
0
 public ParallaxScrollViewModel(INavigationService navigationService, IEventAggregator eventAggregator, IStoreManager storeManager, IToast toast, IFavoriteService favoriteService, ILoggerFacade logger, ILaunchTwitter twitter, ISSOClient ssoClient, IPushNotifications pushNotifications, IReminderService reminderService, IPageDialogService pageDialogService)
     : base(navigationService, eventAggregator, storeManager, toast, favoriteService, logger, twitter, ssoClient, pushNotifications, reminderService, pageDialogService)
 {
 }
Esempio n. 15
0
 public iOSRootViewModel(INavigationService navigationService, IEventAggregator eventAggregator, IStoreManager storeManager, IToast toast, IFavoriteService favoriteService, ILoggerFacade logger, ILaunchTwitter twitter, ISSOClient ssoClient, IPushNotifications pushNotifications, IReminderService reminderService, IPageDialogService pageDialogService, Microsoft.Practices.Unity.IUnityContainer container)
     : base(navigationService, eventAggregator, storeManager, toast, favoriteService, logger, twitter, ssoClient, pushNotifications, reminderService, pageDialogService)
 {
     _container = container;
 }
Esempio n. 16
0
 public EventsViewModel(INavigationService navigationService, IEventAggregator eventAggregator, IStoreManager storeManager, IToast toast, IFavoriteService favoriteService, ILoggerFacade logger, ILaunchTwitter twitter, ISSOClient ssoClient, IPushNotifications pushNotifications, IReminderService reminderService, IPageDialogService pageDialogService)
     : base(navigationService, eventAggregator, storeManager, toast, favoriteService, logger, twitter, ssoClient, pushNotifications, reminderService, pageDialogService)
 {
     Title = "Events";
     if (Device.OS == TargetPlatform.Windows || Device.OS == TargetPlatform.WinPhone)
     {
         ToolBarItems.Add(new ToolbarItem
         {
             Text    = "Refresh",
             Icon    = "toolbar_refresh.png",
             Command = ForceRefreshCommand
         });
     }
 }
Esempio n. 17
0
        public VenueViewModel(INavigationService navigationService, IEventAggregator eventAggregator, IStoreManager storeManager, IToast toast, IFavoriteService favoriteService, ILoggerFacade logger, ILaunchTwitter twitter, ISSOClient ssoClient, IPushNotifications pushNotifications, IReminderService reminderService, IPageDialogService pageDialogService)
            : base(navigationService, eventAggregator, storeManager, toast, favoriteService, logger, twitter, ssoClient, pushNotifications, reminderService, pageDialogService)
        {
            if (Device.OS == TargetPlatform.Android)
            {
                ToolBarItems.Add(new ToolbarItem
                {
                    Order   = ToolbarItemOrder.Secondary,
                    Text    = "Get Directions",
                    Command = NavigateCommand
                });

                if (CanMakePhoneCall)
                {
                    ToolBarItems.Add(new ToolbarItem
                    {
                        Order   = ToolbarItemOrder.Secondary,
                        Text    = "Call Hotel",
                        Command = CallCommand
                    });
                }
            }
            else if (Device.OS == TargetPlatform.iOS)
            {
                ToolBarItems.Add(new ToolbarItem
                {
                    Text    = "More",
                    Icon    = "toolbar_overflow.png",
                    Command = DelegateCommand <object> .FromAsyncHandler(async(o) =>
                    {
                        string[] items = null;
                        if (!CanMakePhoneCall)
                        {
                            items = new[] { "Get Directions" };
                        }
                        else
                        {
                            items = new[] { "Get Directions", "Call +49 (341) 4859270" };
                        }
                        var action = await PageDialogService.DisplayActionSheetAsync("Commundo Tagungshotel", "Cancel", null, items);
                        if (action == items[0])
                        {
                            NavigateCommand.Execute(null);
                        }
                        else if (items.Length > 1 && action == items[1] && CanMakePhoneCall)
                        {
                            CallCommand.Execute(null);
                        }
                    })
                });
            }
            else
            {
                ToolBarItems.Add(new ToolbarItem
                {
                    Text    = "Directions",
                    Command = NavigateCommand,
                    Icon    = "toolbar_navigate.png"
                });

                if (CanMakePhoneCall)
                {
                    ToolBarItems.Add(new ToolbarItem
                    {
                        Text    = "Call",
                        Command = CallCommand,
                        Icon    = "toolbar_call.png"
                    });
                }
            }
            var position = new Position(Latitude, Longitude);

            MapSpan = new MapSpan(position, 0.02, 0.02);
            Pins.Add(new Pin
            {
                Type     = PinType.Place,
                Address  = LocationTitle,
                Label    = EventTitle,
                Position = position
            });
        }