public FavoritesViewModel(IPresentationManager presentation, IImageManager imageManager, IApiClient apiClient, ISessionManager session, INavigationService nav, IPlaybackManager playback, ILogger logger, double tileWidth, double tileHeight, IServerEvents serverEvents)
            : base(presentation, apiClient)
        {
            _sessionManager = session;
            _playbackManager = playback;
            _imageManager = imageManager;
            _navService = nav;
            _logger = logger;
            _serverEvents = serverEvents;

            TileWidth = tileWidth;
            TileHeight = tileHeight;

            var spotlightTileWidth = TileWidth * 2 + TilePadding;
            var spotlightTileHeight = spotlightTileWidth * 9 / 16;

            SpotlightViewModel = new ImageViewerViewModel(_imageManager, new List<ImageViewerImage>())
            {
                Height = spotlightTileHeight,
                Width = spotlightTileWidth,
                CustomCommandAction = i => _navService.NavigateToItem(i.Item, ViewType.Tv)
            };

            LoadViewModels();

            NavigateToFavoriteMoviesCommand = new RelayCommand(o => NavigateToFavorites("Movie"));
        }
        public PageContentViewModel(INavigationService navigationService, ISessionManager sessionManager, IPlaybackManager playbackManager, ILogger logger, ITheaterApplicationHost appHost, IApiClient apiClient, IPresentationManager presentationManager, IServerEvents serverEvents)
        {
            NavigationService = navigationService;
            SessionManager = sessionManager;
            PlaybackManager = playbackManager;
            Logger = logger;
            AppHost = appHost;
            ApiClient = apiClient;
            PresentationManager = presentationManager;
            ServerEvents = serverEvents;

            MasterCommands = new MasterCommandsViewModel(navigationService, sessionManager, presentationManager, apiClient, logger, appHost, serverEvents);

            NavigationService.Navigated += NavigationServiceNavigated;
            SessionManager.UserLoggedIn += SessionManagerUserLoggedIn;
            SessionManager.UserLoggedOut += SessionManagerUserLoggedOut;
            PlaybackManager.PlaybackStarted += PlaybackManager_PlaybackStarted;
            PlaybackManager.PlaybackCompleted += PlaybackManager_PlaybackCompleted;            

            _dispatcher = Dispatcher.CurrentDispatcher;

            _clockTimer = new Timer(ClockTimerCallback, null, 0, 10000);

            IsLoggedIn = SessionManager.CurrentUser != null;
            var page = NavigationService.CurrentPage;
            IsOnHomePage = page is IHomePage;
            IsOnFullscreenVideo = page is IFullscreenVideoPage;
        }
예제 #3
0
        public PageContentViewModel(INavigationService navigationService, ISessionManager sessionManager, IPlaybackManager playbackManager, ILogger logger, ITheaterApplicationHost appHost, IApiClient apiClient, IPresentationManager presentationManager, IServerEvents serverEvents)
        {
            NavigationService   = navigationService;
            SessionManager      = sessionManager;
            PlaybackManager     = playbackManager;
            Logger              = logger;
            AppHost             = appHost;
            ApiClient           = apiClient;
            PresentationManager = presentationManager;
            ServerEvents        = serverEvents;

            MasterCommands = new MasterCommandsViewModel(navigationService, sessionManager, presentationManager, apiClient, logger, appHost, serverEvents);

            NavigationService.Navigated       += NavigationServiceNavigated;
            SessionManager.UserLoggedIn       += SessionManagerUserLoggedIn;
            SessionManager.UserLoggedOut      += SessionManagerUserLoggedOut;
            PlaybackManager.PlaybackStarted   += PlaybackManager_PlaybackStarted;
            PlaybackManager.PlaybackCompleted += PlaybackManager_PlaybackCompleted;

            _dispatcher = Dispatcher.CurrentDispatcher;

            _clockTimer = new Timer(ClockTimerCallback, null, 0, 10000);

            IsLoggedIn = SessionManager.CurrentUser != null;
            var page = NavigationService.CurrentPage;

            IsOnHomePage        = page is IHomePage;
            IsOnFullscreenVideo = page is IFullscreenVideoPage;
        }
예제 #4
0
 public ServerListenerEvents(TServer server, ManualLogSource log, IServerEvents <TServer> events, Version version)
 {
     _server  = server;
     _log     = log;
     _events  = events;
     _version = version;
 }
        public FavoritesViewModel(IPresentationManager presentation, IImageManager imageManager, IApiClient apiClient, ISessionManager session, INavigationService nav, IPlaybackManager playback, ILogger logger, double tileWidth, double tileHeight, IServerEvents serverEvents)
            : base(presentation, apiClient)
        {
            _sessionManager  = session;
            _playbackManager = playback;
            _imageManager    = imageManager;
            _navService      = nav;
            _logger          = logger;
            _serverEvents    = serverEvents;

            TileWidth  = tileWidth;
            TileHeight = tileHeight;

            var spotlightTileWidth  = TileWidth * 2 + TilePadding;
            var spotlightTileHeight = spotlightTileWidth * 9 / 16;

            SpotlightViewModel = new ImageViewerViewModel(_imageManager, new List <ImageViewerImage>())
            {
                Height = spotlightTileHeight,
                Width  = spotlightTileWidth,
                CustomCommandAction = i => _navService.NavigateToItem(i.Item, ViewType.Tv)
            };

            LoadViewModels();

            NavigateToFavoriteMoviesCommand = new RelayCommand(o => NavigateToFavorites("Movie"));
        }
예제 #6
0
        public ScreensaverManager(IUserInputManager userInput, IPresentationManager presentationManager, IPlaybackManager playback, ISessionManager session, IApiClient apiClient, ITheaterConfigurationManager theaterConfigurationManager, ILogManager logManager, IServerEvents serverEvents)
        {
            _userInput                   = userInput;
            _presentationManager         = presentationManager;
            _playback                    = playback;
            _session                     = session;
            _apiClient                   = apiClient;
            _theaterConfigurationManager = theaterConfigurationManager;
            _logger       = logManager.GetLogger(GetType().Name);
            _serverEvents = serverEvents;

            _session.UserLoggedIn  += session_UserChanged;
            _session.UserLoggedOut += session_UserChanged;

            _playback.PlaybackCompleted += _playback_PlaybackCompleted;
            _playback.PlaybackStarted   += _playback_PlaybackStarted;

            _serverEvents.BrowseCommand    += _serverEvents_BrowseCommand;
            _serverEvents.MessageCommand   += _serverEvents_MessageCommand;
            _serverEvents.PlayCommand      += _serverEvents_PlayCommand;
            _serverEvents.PlaystateCommand += _serverEvents_PlaystateCommand;
            _serverEvents.GeneralCommand   += _serverEvents_GeneralCommand;

            SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;

            StartTimer();
        }
예제 #7
0
파일: Global.asax.cs 프로젝트: CobyC/JaRS
        protected void Application_Start(object sender, EventArgs e)
        {
            JarsCore.Container = MEFBusinessLoader.Init();

            //add license
            string licPath = "~/ServiceStackLicense.txt".MapHostAbsolutePath();

            Logger.Info($"Register ServiceStack license if available.");
            Licensing.RegisterLicense("7387-e1JlZjo3Mzg3LE5hbWU6Q2Fwcmljb3JuIENvZGluZyBMdGQsVHlwZTpJbmRpZSxNZXRhOjAsSGFzaDpUYk9zUnp0SlR3dUVkdEdDWVl6M2thVUVQQ3IrSFpQQWlUUVBESHdRNnVXLzZwNUtzMUxjYjRBVmpuTTJYalZqRTEwWU9FOXVNWDM2bHh6NWVyOFlVNlovSUUwa1Q0bWpxMDQ4V0lzajN6cCtRVGcwZTVwa1ZFL3Q0NjcyWmFSak56ZXo3QnZqbTU3Zmt4LzhLTDdoV0VCNmtNR0UvdXA2bUJob1Z6YWxYdVk9LEV4cGlyeToyMDIwLTA3LTA2fQ==");//.RegisterLicenseFromFileIfExists(licPath);

            AppHost appHost = new AppHost();

            //appHost.OnConnect = (evtSub, dictVal) => { Console.WriteLine($"OnConnect - Connection UserId:{evtSub.UserId} UserName: {evtSub.UserName} dictVals:{dictVal.Values}"); };
            //appHost.OnSubscribe = (evtSub) => { Console.WriteLine($"OnSubscribe - sub:{evtSub.UserId}"); };
            //appHost.OnPublish = (sub, res, msg) => { if (!msg.Contains("cmd.onHeartbeat")) Console.WriteLine($"Publish - DisplayName:{sub.DisplayName} Res.Status:{res.StatusCode} MsgLen:{msg}"); };
            //appHost.OnUnsubscribe = (evtSub) => { Console.WriteLine($"OnUnsubscribe - sub:{evtSub.UserId}"); };
            appHost.LimitToAuthenticatedUser = true;
            //start the service
            appHost.Init();

            //resolve the events plugin loaded in the configuration.
            IServerEvents se = appHost.TryResolve <IServerEvents>();

            Logger.Info("Jars IIS App Started");
        }
예제 #8
0
        public MasterCommandsViewModel(INavigationService navigationService, ISessionManager sessionManager, IPresentationManager presentationManager, IApiClient apiClient, ILogger logger, ITheaterApplicationHost appHost, IServerEvents serverEvents)
        {
            Dispatcher = Dispatcher.CurrentDispatcher;

            NavigationService   = navigationService;
            SessionManager      = sessionManager;
            PresentationManager = presentationManager;
            ApiClient           = apiClient;
            Logger       = logger;
            AppHost      = appHost;
            ServerEvents = serverEvents;

            ServerEvents.RestartRequired     += ServerEvents_RestartRequired;
            ServerEvents.ServerRestarting    += ServerEvents_ServerRestarting;
            ServerEvents.ServerShuttingDown  += ServerEvents_ServerShuttingDown;
            ServerEvents.Connected           += ServerEvents_Connected;
            AppHost.HasPendingRestartChanged += AppHostHasPendingRestartChanged;
            SessionManager.UserLoggedIn      += SessionManager_UserLoggedIn;
            SessionManager.UserLoggedOut     += SessionManager_UserLoggedOut;
            NavigationService.Navigated      += NavigationService_Navigated;

            HomeCommand                = new RelayCommand(i => GoHome());
            SearchCommand              = new RelayCommand(i => GoSearch());
            FullscreenVideoCommand     = new RelayCommand(i => NavigationService.NavigateToInternalPlayerPage());
            SettingsCommand            = new RelayCommand(i => GoSettings());
            GoBackCommand              = new RelayCommand(i => GoBack());
            RestartServerCommand       = new RelayCommand(i => RestartServer());
            RestartApplicationCommand  = new RelayCommand(i => RestartApplication());
            ShutdownApplicationCommand = new RelayCommand(i => ShutdownApplication());
            ShutdownSystemCommand      = new RelayCommand(i => appHost.ShutdownSystem());
            RestartSystemCommand       = new RelayCommand(i => appHost.RebootSystem());
            SleepSystemCommand         = new RelayCommand(i => appHost.SetSystemToSleep());

            RefreshRestartServerNotification();
        }
        public ScreensaverManager(IUserInputManager userInput, IPresentationManager presentationManager, IPlaybackManager playback, ISessionManager session, IApiClient apiClient, ITheaterConfigurationManager theaterConfigurationManager, ILogManager logManager, IServerEvents serverEvents)
        {
            _userInput = userInput;
            _presentationManager = presentationManager;
            _playback = playback;
            _session = session;
            _apiClient = apiClient;
            _theaterConfigurationManager = theaterConfigurationManager;
            _logger = logManager.GetLogger(GetType().Name);
            _serverEvents = serverEvents;

            _session.UserLoggedIn += session_UserChanged;
            _session.UserLoggedOut += session_UserChanged;

            _playback.PlaybackCompleted += _playback_PlaybackCompleted;
            _playback.PlaybackStarted += _playback_PlaybackStarted;

            _serverEvents.BrowseCommand += _serverEvents_BrowseCommand;
            _serverEvents.MessageCommand += _serverEvents_MessageCommand;
            _serverEvents.PlayCommand += _serverEvents_PlayCommand;
            _serverEvents.PlaystateCommand += _serverEvents_PlaystateCommand;
            _serverEvents.GeneralCommand += _serverEvents_GeneralCommand; 

            SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;

            StartTimer();
        }
예제 #10
0
 public HashServices(IServerEvents serverEvents)
 {
     if (serverEvents == null)
     {
         throw new ArgumentNullException(nameof(serverEvents));
     }
     _serverEvents = serverEvents;
 }
예제 #11
0
        public SubscriptionManager(IServerEvents sse, ICacheClient cache, IFuture future, ISubscriptionStorage storage)
        {
            _sse     = sse;
            _cache   = cache;
            _future  = future;
            _storage = storage;

            _future.FireRepeatedly(TimeSpan.FromSeconds(10), this.Flush, "SSE Flush");
        }
예제 #12
0
 public TvHomePageGenerator(IImageManager imageManager, INavigator navigator, IApiClient apiClient, ISessionManager sessionManager, IServerEvents serverEvents, IPlaybackManager playbackManager, ILogManager logManager)
 {
     _imageManager = imageManager;
     _navigator = navigator;
     _apiClient = apiClient;
     _sessionManager = sessionManager;
     _serverEvents = serverEvents;
     _playbackManager = playbackManager;
     _logManager = logManager;
 }
        public DefaultThemePageMasterCommandsViewModel(INavigationService navigationService, ISessionManager sessionManager, IPresentationManager presentationManager, IApiClient apiClient, ILogger logger, ITheaterApplicationHost appHost, IServerEvents serverEvents, IImageManager imageManager) 
            : base(navigationService, sessionManager, presentationManager, apiClient, logger, appHost, serverEvents)
        {
            ImageManager = imageManager;

            UserCommand = new RelayCommand(i => ShowUserMenu());
            LogoutCommand = new RelayCommand(i => Logout());

            PowerOptionsEnabled = true;
        }
예제 #14
0
 public RecordingService(ILogFactory loggerFactory, IRecordingRepository recordingRepository, ISoundWordsConfiguration soundWordsConfiguration, IDbConnectionFactory dbConnectionFactory, IFileSystem fileSystem, IServerEvents serverEvents, IBackgroundPool backgroundPool)
 {
     _logger = loggerFactory.GetLogger(GetType());
     _recordingRepository     = recordingRepository;
     _soundWordsConfiguration = soundWordsConfiguration;
     _dbConnectionFactory     = dbConnectionFactory;
     _fileSystem     = fileSystem;
     _serverEvents   = serverEvents;
     _backgroundPool = backgroundPool;
 }
 public HomePageViewModel(IPresentationManager presentationManager, IApiClient apiClient, ISessionManager sessionManager, ILogger logger, IImageManager imageManager, INavigationService nav, IPlaybackManager playbackManager, IServerEvents serverEvents)
 {
     _presentationManager = presentationManager;
     _apiClient = apiClient;
     _sessionManager = sessionManager;
     _logger = logger;
     _imageManager = imageManager;
     _nav = nav;
     _playbackManager = playbackManager;
     _serverEvents = serverEvents;
 }
예제 #16
0
 public ItemDetailsContext(IApplicationHost appHost, IApiClient apiClient, IImageManager imageManager, IServerEvents serverEvents, INavigator navigator, IPresenter presenter, ISessionManager sessionManager)
     : base(appHost)
 {
     _apiClient = apiClient;
     _imageManager = imageManager;
     _serverEvents = serverEvents;
     _navigator = navigator;
     _presenter = presenter;
     _sessionManager = sessionManager;
     _generators = appHost.GetExports<IItemDetailSectionGenerator>();
 }
예제 #17
0
 public HomePageViewModel(IPresentationManager presentationManager, IApiClient apiClient, ISessionManager sessionManager, ILogger logger, IImageManager imageManager, INavigationService nav, IPlaybackManager playbackManager, IServerEvents serverEvents)
 {
     _presentationManager = presentationManager;
     _apiClient           = apiClient;
     _sessionManager      = sessionManager;
     _logger          = logger;
     _imageManager    = imageManager;
     _nav             = nav;
     _playbackManager = playbackManager;
     _serverEvents    = serverEvents;
 }
예제 #18
0
        public TvViewModel(IPresentationManager presentation, IImageManager imageManager, IApiClient apiClient, ISessionManager session, INavigationService nav, IPlaybackManager playback, ILogger logger, double tileWidth, double tileHeight, IServerEvents serverEvents, string parentId)
            : base(presentation, apiClient)
        {
            _sessionManager = session;
            _playbackManager = playback;
            _imageManager = imageManager;
            _navService = nav;
            _logger = logger;
            _serverEvents = serverEvents;
            ParentId = parentId;

            TileWidth = tileWidth;
            TileHeight = tileHeight;

            var spotlightTileHeight = TileHeight * 2 + TileMargin * 2;
            var spotlightTileWidth = 16 * (spotlightTileHeight / 9) + 100;

            var lowerSpotlightWidth = spotlightTileWidth / 3 - (TileMargin * 1.5);

            SpotlightViewModel = new ImageViewerViewModel(_imageManager, new List<ImageViewerImage>())
            {
                Height = spotlightTileHeight,
                Width = spotlightTileWidth,
                CustomCommandAction = i => _navService.NavigateToItem(i.Item, ViewType.Tv),
                ImageStretch = Stretch.UniformToFill,
                FocusedCommandAction = () => GalleryItemFocused()
            };

            GenresViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService)
            {
                GalleryHeight = TileHeight,
                GalleryWidth = lowerSpotlightWidth,
                CustomCommandAction = () => NavigateWithLoading(NavigateToGenresInternal),
                FocusedCommandAction = () => GalleryItemFocused()
            };

            AllShowsViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService)
            {
                GalleryHeight = TileHeight,
                GalleryWidth = lowerSpotlightWidth,
                CustomCommandAction = () => NavigateWithLoading(NavigateToAllShows),
                FocusedCommandAction = () => GalleryItemFocused()
            };

            UpcomingViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService)
            {
                GalleryHeight = TileHeight,
                GalleryWidth = lowerSpotlightWidth,
                CustomCommandAction = () => NavigateWithLoading(NavigateToAllShows),
                FocusedCommandAction = () => GalleryItemFocused()
            };

            LoadViewModels();
        }
예제 #19
0
        public TvViewModel(IPresentationManager presentation, IImageManager imageManager, IApiClient apiClient, ISessionManager session, INavigationService nav, IPlaybackManager playback, ILogger logger, double tileWidth, double tileHeight, IServerEvents serverEvents, string parentId)
            : base(presentation, apiClient)
        {
            _sessionManager  = session;
            _playbackManager = playback;
            _imageManager    = imageManager;
            _navService      = nav;
            _logger          = logger;
            _serverEvents    = serverEvents;
            ParentId         = parentId;

            TileWidth  = tileWidth;
            TileHeight = tileHeight;

            var spotlightTileHeight = TileHeight * 2 + TileMargin * 2;
            var spotlightTileWidth  = 16 * (spotlightTileHeight / 9) + 100;

            var lowerSpotlightWidth = spotlightTileWidth / 3 - (TileMargin * 1.5);

            SpotlightViewModel = new ImageViewerViewModel(_imageManager, new List <ImageViewerImage>())
            {
                Height = spotlightTileHeight,
                Width  = spotlightTileWidth,
                CustomCommandAction  = i => _navService.NavigateToItem(i.Item, ViewType.Tv),
                ImageStretch         = Stretch.UniformToFill,
                FocusedCommandAction = () => GalleryItemFocused()
            };

            GenresViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService)
            {
                GalleryHeight        = TileHeight,
                GalleryWidth         = lowerSpotlightWidth,
                CustomCommandAction  = () => NavigateWithLoading(NavigateToGenresInternal),
                FocusedCommandAction = () => GalleryItemFocused()
            };

            AllShowsViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService)
            {
                GalleryHeight        = TileHeight,
                GalleryWidth         = lowerSpotlightWidth,
                CustomCommandAction  = () => NavigateWithLoading(NavigateToAllShows),
                FocusedCommandAction = () => GalleryItemFocused()
            };

            UpcomingViewModel = new GalleryViewModel(ApiClient, _imageManager, _navService)
            {
                GalleryHeight        = TileHeight,
                GalleryWidth         = lowerSpotlightWidth,
                CustomCommandAction  = () => NavigateWithLoading(NavigateToAllShows),
                FocusedCommandAction = () => GalleryItemFocused()
            };

            LoadViewModels();
        }
예제 #20
0
        protected BaseItemsListSectionGenerator(IApiClient apiClient, ISessionManager sessionManager, IImageManager imageManager, INavigator navigator, IServerEvents serverEvents, IPlaybackManager playbackManager)
        {
            _apiClient = apiClient;
            _sessionManager = sessionManager;
            _imageManager = imageManager;
            _navigator = navigator;
            _serverEvents = serverEvents;
            _playbackManager = playbackManager;

            ListThreshold = 8;
        }
예제 #21
0
 public RebuildJob(ILogFactory logFactory, ISoundWordsConfiguration soundWordsConfiguration, IDbConnectionFactory dbConnectionFactory,
                   IServerEvents serverEvents, IFileSystem fileSystem,
                   Func <string, bool, File.IFileAbstraction> fileAbstractionFactory)
 {
     _logger = logFactory.GetLogger(GetType());
     _soundWordsConfiguration = soundWordsConfiguration;
     _dbConnectionFactory     = dbConnectionFactory;
     _serverEvents            = serverEvents;
     _fileSystem             = fileSystem;
     _fileAbstractionFactory = fileAbstractionFactory;
 }
예제 #22
0
 public ItemListContext(IApplicationHost appHost, IApiClient apiClient, IImageManager imageManager,
                        IServerEvents serverEvents, INavigator navigator, IPresenter presenter,
                        ISessionManager sessionManager, IPlaybackManager playbackManager) : base(appHost)
 {
     _apiClient = apiClient;
     _imageManager = imageManager;
     _serverEvents = serverEvents;
     _navigator = navigator;
     _presenter = presenter;
     _sessionManager = sessionManager;
     _playbackManager = playbackManager;
 }
        public FolderPage(BaseItemDto parent, DisplayPreferences displayPreferences, IApiClient apiClient, IImageManager imageManager, ISessionManager sessionManager, IPresentationManager presentation, INavigationService navigationManager, IPlaybackManager playbackManager, ILogger logger, IServerEvents serverEvents, ListPageConfig options)
        {
            _navigationManager = navigationManager;
            _playbackManager = playbackManager;
            _logger = logger;
            _serverEvents = serverEvents;
            _presentationManager = presentation;
            _sessionManager = sessionManager;
            _imageManager = imageManager;
            _apiClient = apiClient;
            _options = options;
            _displayPreferences = displayPreferences;

            _parentItem = parent;

            InitializeComponent();

            Loaded += FolderPage_Loaded;
            Unloaded += FolderPage_Unloaded;

            SetDefaults(displayPreferences);

            _viewModel = new ItemListViewModel(GetItemsAsync, _presentationManager, _imageManager, _apiClient, _navigationManager, _playbackManager, _logger, _serverEvents)
            {
                ImageDisplayHeightGenerator = GetImageDisplayHeight,
                DisplayNameGenerator = GetDisplayName,
                PreferredImageTypesGenerator = GetPreferredImageTypes,

                ShowSidebarGenerator = GetShowSidebar,
                ScrollDirectionGenerator = GetScrollDirection,

                AutoSelectFirstItem = true,

                ShowLoadingAnimation = true
            };

            _viewModel.AddIndexOptions(options.IndexOptions);

            _viewModel.PropertyChanged += _viewModel_PropertyChanged;

            _viewModel.DisplayPreferences = displayPreferences;

            DataContext = _viewModel;

            UpdateSortTitle();
            UpdateSortOrder();

            BtnSort.Visibility = _options.SortOptions.Count > 0
                                     ? Visibility.Visible
                                     : Visibility.Collapsed;

            BtnSort.Click += BtnSort_Click;
        }
예제 #24
0
 public FullScreenPlaybackContext(ITheaterApplicationHost appHost, IPlaybackManager playbackManager, IApiClient apiClient, IImageManager imageManager, IPresenter presentationManager, ILogManager logManager, INavigator nav, IServerEvents serverEvents, IEventAggregator events)
     : base(appHost)
 {
     _logger = logManager.GetLogger("OSD");
     _playbackManager = playbackManager;
     _apiClient = apiClient;
     _imageManager = imageManager;
     _presentationManager = presentationManager;
     _nav = nav;
     _serverEvents = serverEvents;
     _events = events;
 }
        public DefaultThemePageContentViewModel(INavigationService navigationService, ISessionManager sessionManager, IApiClient apiClient, IImageManager imageManager, IPresentationManager presentation, IPlaybackManager playbackManager, ILogger logger, IApplicationHost appHost, IServerEvents serverEvents)
            : base(navigationService, sessionManager, playbackManager, logger, appHost, apiClient, presentation, serverEvents)
        {
            _imageManager = imageManager;

            NavigationService.Navigated += NavigationService_Navigated;
            SessionManager.UserLoggedIn += SessionManager_UserLoggedIn;
            SessionManager.UserLoggedOut += SessionManager_UserLoggedOut;
            UserCommand = new RelayCommand(i => ShowUserMenu());

            DisplayPreferencesCommand = new RelayCommand(i => ShowDisplayPreferences());
        }
        public FolderPage(BaseItemDto parent, DisplayPreferences displayPreferences, IApiClient apiClient, IImageManager imageManager, ISessionManager sessionManager, IPresentationManager presentation, INavigationService navigationManager, IPlaybackManager playbackManager, ILogger logger, IServerEvents serverEvents, ListPageConfig options)
        {
            _navigationManager   = navigationManager;
            _playbackManager     = playbackManager;
            _logger              = logger;
            _serverEvents        = serverEvents;
            _presentationManager = presentation;
            _sessionManager      = sessionManager;
            _imageManager        = imageManager;
            _apiClient           = apiClient;
            _options             = options;
            _displayPreferences  = displayPreferences;

            _parentItem = parent;

            InitializeComponent();

            Loaded   += FolderPage_Loaded;
            Unloaded += FolderPage_Unloaded;

            SetDefaults(displayPreferences);

            _viewModel = new ItemListViewModel(GetItemsAsync, _presentationManager, _imageManager, _apiClient, _navigationManager, _playbackManager, _logger, _serverEvents)
            {
                ImageDisplayHeightGenerator  = GetImageDisplayHeight,
                DisplayNameGenerator         = GetDisplayName,
                PreferredImageTypesGenerator = GetPreferredImageTypes,

                ShowSidebarGenerator     = GetShowSidebar,
                ScrollDirectionGenerator = GetScrollDirection,

                AutoSelectFirstItem = true,

                ShowLoadingAnimation = true
            };

            _viewModel.AddIndexOptions(options.IndexOptions);

            _viewModel.PropertyChanged += _viewModel_PropertyChanged;

            _viewModel.DisplayPreferences = displayPreferences;

            DataContext = _viewModel;

            UpdateSortTitle();
            UpdateSortOrder();

            BtnSort.Visibility = _options.SortOptions.Count > 0
                                     ? Visibility.Visible
                                     : Visibility.Collapsed;

            BtnSort.Click += BtnSort_Click;
        }
예제 #27
0
 public DetailPageViewModel(ItemViewModel item, IApiClient apiClient, ISessionManager sessionManager, IImageManager imageManager, IPresentationManager presentationManager, IPlaybackManager playback, INavigationService navigation, ILogger logger, IServerEvents serverEvents, ViewType context)
 {
     _apiClient           = apiClient;
     _sessionManager      = sessionManager;
     _imageManager        = imageManager;
     _presentationManager = presentationManager;
     _playback            = playback;
     _navigation          = navigation;
     _logger       = logger;
     _serverEvents = serverEvents;
     Context       = context;
     ItemViewModel = item;
 }
 public DetailPageViewModel(ItemViewModel item, IApiClient apiClient, ISessionManager sessionManager, IImageManager imageManager, IPresentationManager presentationManager, IPlaybackManager playback, INavigationService navigation, ILogger logger, IServerEvents serverEvents, ViewType context)
 {
     _apiClient = apiClient;
     _sessionManager = sessionManager;
     _imageManager = imageManager;
     _presentationManager = presentationManager;
     _playback = playback;
     _navigation = navigation;
     _logger = logger;
     _serverEvents = serverEvents;
     Context = context;
     ItemViewModel = item;
 }
예제 #29
0
        public DefaultTheme(IPlaybackManager playbackManager, IImageManager imageManager, IApiClient apiClient, INavigationService navService, ISessionManager sessionManager, IPresentationManager presentationManager, ILogManager logManager, IServerEvents serverEvents, IApplicationHost appHost)
        {
            Current = this;

            _playbackManager     = playbackManager;
            _imageManager        = imageManager;
            _apiClient           = apiClient;
            _navService          = navService;
            _sessionManager      = sessionManager;
            _presentationManager = presentationManager;
            _serverEvents        = serverEvents;
            _appHost             = appHost;
            _logger = logManager.GetLogger(GetType().Name);
        }
예제 #30
0
        public DefaultTheme(IPlaybackManager playbackManager, IImageManager imageManager, IApiClient apiClient, INavigationService navService, ISessionManager sessionManager, IPresentationManager presentationManager, ILogManager logManager, IServerEvents serverEvents, IApplicationHost appHost)
        {
            Current = this;

            _playbackManager = playbackManager;
            _imageManager = imageManager;
            _apiClient = apiClient;
            _navService = navService;
            _sessionManager = sessionManager;
            _presentationManager = presentationManager;
            _serverEvents = serverEvents;
            _appHost = appHost;
            _logger = logManager.GetLogger(GetType().Name);
        }
 public WebSocketEntryPoint(ISessionManager sessionManagerManager, IApiClient apiClient, ILogManager logManager, IApplicationHost appHost, IImageManager imageManager, INavigationService navigationService, IPlaybackManager playbackManager, IPresentationManager presentationManager, ICommandManager commandManager, IServerEvents serverEvents, IUserInputManager userInputManager)
 {
     _sessionManager = sessionManagerManager;
     _apiClient = apiClient;
     _logger = logManager.GetLogger(GetType().Name);
     _appHost = (ApplicationHost)appHost;
     _imageManager = imageManager;
     _navigationService = navigationService;
     _playbackManager = playbackManager;
     _presentationManager = presentationManager;
     _commandManager = commandManager;
     _userInputManager = userInputManager;
     _serverEvents = serverEvents;
 }
        public DefaultThemePageContentViewModel(INavigationService navigationService, ISessionManager sessionManager, IApiClient apiClient, IImageManager imageManager, IPresentationManager presentation, IPlaybackManager playbackManager, ILogger logger, ITheaterApplicationHost appHost, IServerEvents serverEvents, ITheaterConfigurationManager config)
            : base(navigationService, sessionManager, playbackManager, logger, appHost, apiClient, presentation, serverEvents)
        {
            _imageManager = imageManager;
            _config = config;

            MasterCommands = new DefaultThemePageMasterCommandsViewModel(navigationService, sessionManager, presentation, apiClient, logger, appHost, serverEvents, imageManager);

            NavigationService.Navigated += NavigationService_Navigated;
            SessionManager.UserLoggedIn += SessionManager_UserLoggedIn;
            SessionManager.UserLoggedOut += SessionManager_UserLoggedOut;

            _config.UserConfigurationUpdated += _config_UserConfigurationUpdated;
        }
        public FolderPage(BaseItemDto parent, DisplayPreferences displayPreferences, IApiClient apiClient, IImageManager imageManager, IPresentationManager presentation, INavigationService navigationManager, IPlaybackManager playbackManager, ILogger logger, IServerEvents serverEvents, ListPageConfig options)
        {
            _logger = logger;
            _presentationManager = presentation;
            _imageManager = imageManager;
            _apiClient = apiClient;
            _options = options;

            _parentItem = parent;

            InitializeComponent();

            Loaded += FolderPage_Loaded;

            SetDefaults(displayPreferences);

            var playAllFromHere = parent.IsType("playlist") || parent.IsType("musicalbum");

            _viewModel = new ItemListViewModel(vm => options.CustomItemQuery(vm, displayPreferences), _presentationManager, _imageManager, _apiClient, navigationManager, playbackManager, _logger, serverEvents)
            {
                ImageDisplayHeightGenerator = GetImageDisplayHeight,
                DisplayNameGenerator = options.DisplayNameGenerator ?? GetDisplayName,
                PreferredImageTypesGenerator = GetPreferredImageTypes,

                ShowSidebarGenerator = GetShowSidebar,
                ScrollDirectionGenerator = GetScrollDirection,

                AutoSelectFirstItem = true,

                ShowLoadingAnimation = true,

                PlayAllFromHereOnPlayCommand = playAllFromHere,
                PlayAllFromHereOnNavigateCommand = playAllFromHere
            };

            _viewModel.AddIndexOptions(options.IndexOptions);

            _viewModel.PropertyChanged += _viewModel_PropertyChanged;

            _viewModel.DisplayPreferences = displayPreferences;

            if (!string.IsNullOrEmpty(options.IndexValue))
            {
                var index = options.IndexOptions.First(i => string.Equals(i.Name, options.IndexValue));
                _viewModel.IndexOptionsCollectionView.MoveCurrentTo(index);
            }

            DataContext = _viewModel;
        }
예제 #34
0
        public FullscreenVideoPage(IUserInputManager userInputManager, IPlaybackManager playbackManager, INavigationService nav, IPresentationManager presentation, IApiClient apiClient, IImageManager imageManager, ILogger logger, IServerEvents serverEvents)
        {
            _userInputManager = userInputManager;
            _playbackManager  = playbackManager;
            _nav          = nav;
            _presentation = presentation;
            _apiClient    = apiClient;
            _imageManager = imageManager;
            _logger       = logger;
            _serverEvents = serverEvents;

            InitializeComponent();

            IsMouseIdle = false;
        }
        public FullscreenVideoPage(IUserInputManager userInputManager, IPlaybackManager playbackManager, INavigationService nav, IPresentationManager presentation, IApiClient apiClient, IImageManager imageManager, ILogger logger, IServerEvents serverEvents)
        {
            _userInputManager = userInputManager;
            _playbackManager = playbackManager;
            _nav = nav;
            _presentation = presentation;
            _apiClient = apiClient;
            _imageManager = imageManager;
            _logger = logger;
            _serverEvents = serverEvents;

            InitializeComponent();

            IsMouseIdle = false;
        }
예제 #36
0
        public ItemListViewModel(Task<ItemsResult> items, string title, IApiClient apiClient, IImageManager imageManager, IServerEvents serverEvents, INavigator navigator, ISessionManager sessionManager, IPlaybackManager playbackManager)
        {
            _items = items;
            _apiClient = apiClient;
            _imageManager = imageManager;
            _serverEvents = serverEvents;
            _navigator = navigator;
            _sessionManager = sessionManager;
            _playbackManager = playbackManager;
            Items = new RangeObservableCollection<ItemTileViewModel>();

            PresentationOptions = new RootPresentationOptions {
                ShowMediaBrowserLogo = false,
                Title = title
            };
        }
예제 #37
0
        public ResumeEpisodesViewModel(Task<TvView> tvViewTask, IApiClient apiClient, IImageManager imageManager, IServerEvents serverEvents, INavigator navigator, ISessionManager sessionManager, IPlaybackManager playbackManager)
        {
            _apiClient = apiClient;
            _imageManager = imageManager;
            _serverEvents = serverEvents;
            _navigator = navigator;
            _sessionManager = sessionManager;
            _playbackManager = playbackManager;

            Episodes = new RangeObservableCollection<ItemTileViewModel>();
            for (int i = 0; i < 3; i++) {
                Episodes.Add(CreateEpisodeItem());
            }

            IsVisible = true;
            LoadItems(tvViewTask);
        }
예제 #38
0
        public LatestTrailersViewModel(Task<MoviesView> moviesViewTask, IApiClient apiClient, IImageManager imageManager, IServerEvents serverEvents, INavigator navigator, ISessionManager sessionManager, IPlaybackManager playbackManager)
        {
            _apiClient = apiClient;
            _imageManager = imageManager;
            _serverEvents = serverEvents;
            _navigator = navigator;
            _sessionManager = sessionManager;
            _playbackManager = playbackManager;

            Trailers = new RangeObservableCollection<ItemTileViewModel>();
            for (int i = 0; i < 8; i++) {
                Trailers.Add(CreateMovieItem());
            }

            IsVisible = true;
            LoadItems(moviesViewTask);
        }
예제 #39
0
        /// <summary>
        /// Initializes a new instance of the <see cref="NavigationService" /> class.
        /// </summary>
        /// <param name="themeManager">The theme manager.</param>
        /// <param name="playbackManagerFactory">The playback manager factory.</param>
        /// <param name="apiClient">The API client.</param>
        /// <param name="presentationManager">The presentation manager.</param>
        public NavigationService(IThemeManager themeManager, Func <IPlaybackManager> playbackManagerFactory, IApiClient apiClient, IPresentationManager presentationManager, ITheaterConfigurationManager config, Func <ISessionManager> sessionFactory, IApplicationHost appHost, IInstallationManager installationManager, IImageManager imageManager, ILogger logger, IUserInputManager userInputManager, IServerEvents serverEvents)
        {
            _themeManager           = themeManager;
            _playbackManagerFactory = playbackManagerFactory;
            _apiClient           = apiClient;
            _presentationManager = presentationManager;
            _config              = config;
            _sessionFactory      = sessionFactory;
            _appHost             = appHost;
            _installationManager = installationManager;
            _imageManager        = imageManager;
            _logger              = logger;
            _userInputManager    = userInputManager;
            _serverEvents        = serverEvents;

            presentationManager.WindowLoaded += presentationManager_WindowLoaded;
        }
예제 #40
0
        public SearchViewModel(IPresentationManager presentationManager, IImageManager imageManager, IApiClient apiClient, ISessionManager sessionManager, INavigationService navService, IPlaybackManager playbackManager, ILogger logger, IServerEvents serverEvents)
        {
            _presentationManager = presentationManager;
            _imageManager        = imageManager;
            _apiClient           = apiClient;
            _sessionManager      = sessionManager;
            _navService          = navService;
            _playbackManager     = playbackManager;
            _logger       = logger;
            _serverEvents = serverEvents;
            _dispatcher   = Dispatcher.CurrentDispatcher;

            LoadMatchedItemsViewModel();
            LoadMatchedPeopleViewModel();

            AlphaInputViewModel = new AlphaInputViewModel(UpdateSearchText, presentationManager, _imageManager, _apiClient, _navService, _playbackManager, _logger, _serverEvents);
        }
예제 #41
0
        public MovieSpotlightViewModel(Task<MoviesView> moviesViewTask, IImageManager imageManager, INavigator navigator, IApiClient apiClient, IServerEvents serverEvents,
                                       IPlaybackManager playbackManager, ISessionManager sessionManager, ILogManager logManager)
        {
            _imageManager = imageManager;
            _navigator = navigator;
            _apiClient = apiClient;
            _serverEvents = serverEvents;
            _playbackManager = playbackManager;
            _sessionManager = sessionManager;
            _logger = logManager.GetLogger("Movies Spotlight");
            SpotlightHeight = HomeViewModel.TileHeight*2 + HomeViewModel.TileMargin*2;
            SpotlightWidth = 16*(SpotlightHeight/9) + 100;
            _miniSpotlightWidth = HomeViewModel.TileWidth + (HomeViewModel.TileMargin/4) - 1;

            LowerSpotlightWidth = SpotlightWidth/2 - HomeViewModel.TileMargin;
            LowerSpotlightHeight = HomeViewModel.TileHeight;

            BrowseMoviesCommand = new RelayCommand(arg => {
                var itemParams = new ItemListParameters { 
                    Items = GetMovies(),
                    Title = "Browse Movies"
                };

                navigator.Navigate(Go.To.ItemList(itemParams));

                //await navigator.Navigate(Go.To.Item(await _apiClient.GetPersonAsync("Chris Pine", sessionManager.CurrentUser.Id)));
            });

            SpotlightViewModel = new ItemSpotlightViewModel(imageManager, apiClient) {
                ImageType = ImageType.Backdrop,
                ItemSelectedAction = i => navigator.Navigate(Go.To.Item(i))
            };

            AllMoviesImagesViewModel = new ImageSlideshowViewModel(imageManager, Enumerable.Empty<string>()) {
                ImageStretch = Stretch.UniformToFill
            };

            MiniSpotlightItems = new RangeObservableCollection<ItemTileViewModel> {
                CreateMiniSpotlightItem(),
                CreateMiniSpotlightItem(),
                CreateMiniSpotlightItem(),
            };

            LoadViewModels(moviesViewTask);
        }
예제 #42
0
        public RecommendationsViewModel(BaseItemDto item, IApiClient apiClient, IImageManager imageManager, IServerEvents serverEvents, INavigator navigator, ISessionManager sessionManager, IPlaybackManager playbackManager)
        {
            _item = item;
            _apiClient = apiClient;
            _imageManager = imageManager;
            _serverEvents = serverEvents;
            _navigator = navigator;
            _sessionManager = sessionManager;
            _playbackManager = playbackManager;

            Items = new RangeObservableCollection<ItemTileViewModel>();
            for (int i = 0; i < 6; i++) {
                Items.Add(CreateItem());
            }

            IsVisible = true;
            LoadItems();
        }
        public AlphaInputViewModel(Func<AlphaInputViewModel, Task<Boolean>> alphaItemSelectedDelegate, IPresentationManager presentationManager, IImageManager imageManager, IApiClient apiClient, INavigationService navigationService, IPlaybackManager playbackManager, ILogger logger, IServerEvents serverEvents)
            : base(null, presentationManager, imageManager, apiClient, navigationService, playbackManager, logger, serverEvents)
        {
           _alphaItemSelectedDelegate = alphaItemSelectedDelegate;     // SWA TODO should proably set up a event for this

            EnableBackdropsForCurrentItem = false;
            EnableBackdropsForCurrentItem = false;
            ScrollDirection = ScrollDirection.Horizontal;
            ShowSidebar = false;
            AutoSelectFirstItem = false;
            ShowLoadingAnimation = false;
            IsVirtualizationRequired = false;

            ClickCommand = new RelayCommand(Click);

            IndexOptionsCollectionView.CurrentChanged -= IndexOptionsCollectionView_CurrentChanged;
            AddIndexOptions(AlphabetTabItemList);
        }
        public SearchPage(BaseItemDto parent, IApiClient apiClient, ISessionManager sessionManager, IImageManager imageManager, IPresentationManager presentation, INavigationService navigatioService, IPlaybackManager playbackManager, ILogger logger, IServerEvents serverEvents)
        {
            _logger = logger;
            _imageManager = imageManager;
            _navigationService = navigatioService;
            _apiClient = apiClient;
            _parentItem = parent;
           
            InitializeComponent();

            this.Loaded += SearchPage_Loaded;

            _searchViewModel = new SearchViewModel(presentation, _imageManager, _apiClient, sessionManager, navigatioService, playbackManager, _logger, serverEvents);

            _searchViewModel.MatchedItemsViewModel.PropertyChanged += PropertyChanged;
            _searchViewModel.MatchedPeopleViewModel.PropertyChanged += PropertyChanged;
         
            DataContext = _searchViewModel;
        }
예제 #45
0
        public PageContentViewModel(INavigationService navigationService, ISessionManager sessionManager, IPlaybackManager playbackManager, ILogger logger, IApplicationHost appHost, IApiClient apiClient, IPresentationManager presentationManager, IServerEvents serverEvents)
        {
            NavigationService   = navigationService;
            SessionManager      = sessionManager;
            PlaybackManager     = playbackManager;
            Logger              = logger;
            AppHost             = appHost;
            ApiClient           = apiClient;
            PresentationManager = presentationManager;
            ServerEvents        = serverEvents;

            NavigationService.Navigated       += NavigationServiceNavigated;
            SessionManager.UserLoggedIn       += SessionManagerUserLoggedIn;
            SessionManager.UserLoggedOut      += SessionManagerUserLoggedOut;
            PlaybackManager.PlaybackStarted   += PlaybackManager_PlaybackStarted;
            PlaybackManager.PlaybackCompleted += PlaybackManager_PlaybackCompleted;

            SettingsCommand           = new RelayCommand(i => NavigationService.NavigateToSettingsPage());
            HomeCommand               = new RelayCommand(i => NavigationService.NavigateToHomePage());
            FullscreenVideoCommand    = new RelayCommand(i => NavigationService.NavigateToInternalPlayerPage());
            RestartServerCommand      = new RelayCommand(i => RestartServer());
            RestartApplicationCommand = new RelayCommand(i => RestartApplication());

            _dispatcher = Dispatcher.CurrentDispatcher;

            _clockTimer = new Timer(ClockTimerCallback, null, 0, 10000);

            IsLoggedIn = SessionManager.CurrentUser != null;
            var page = NavigationService.CurrentPage;

            IsOnHomePage        = page is IHomePage;
            IsOnFullscreenVideo = page is IFullscreenVideoPage;

            ServerEvents.RestartRequired     += ServerEvents_RestartRequired;
            ServerEvents.ServerRestarting    += ServerEvents_ServerRestarting;
            ServerEvents.ServerShuttingDown  += ServerEvents_ServerShuttingDown;
            ServerEvents.Connected           += ServerEvents_Connected;
            AppHost.HasPendingRestartChanged += AppHostHasPendingRestartChanged;
            RefreshRestartApplicationNotification();

            // If already connected, get system info now.
            RefreshRestartServerNotification();
        }
        public SearchViewModel(IPresentationManager presentationManager, IImageManager imageManager, IApiClient apiClient, ISessionManager sessionManager, INavigationService navService, IPlaybackManager playbackManager, ILogger logger, IServerEvents serverEvents)
        {

            _presentationManager = presentationManager;
            _imageManager = imageManager;
            _apiClient = apiClient;
            _sessionManager = sessionManager;
            _navService = navService;
            _playbackManager = playbackManager;
            _logger = logger;
            _serverEvents = serverEvents;
            _dispatcher = Dispatcher.CurrentDispatcher;

            LoadMatchedItemsViewModel();
            LoadMatchedPeopleViewModel();

            AlphaInputViewModel = new AlphaInputViewModel(UpdateSearchText, presentationManager, _imageManager, _apiClient, _navService, _playbackManager, _logger, _serverEvents);

        }
        public PageContentViewModel(INavigationService navigationService, ISessionManager sessionManager, IPlaybackManager playbackManager, ILogger logger, IApplicationHost appHost, IApiClient apiClient, IPresentationManager presentationManager, IServerEvents serverEvents)
        {
            NavigationService = navigationService;
            SessionManager = sessionManager;
            PlaybackManager = playbackManager;
            Logger = logger;
            AppHost = appHost;
            ApiClient = apiClient;
            PresentationManager = presentationManager;
            ServerEvents = serverEvents;

            NavigationService.Navigated += NavigationServiceNavigated;
            SessionManager.UserLoggedIn += SessionManagerUserLoggedIn;
            SessionManager.UserLoggedOut += SessionManagerUserLoggedOut;
            PlaybackManager.PlaybackStarted += PlaybackManager_PlaybackStarted;
            PlaybackManager.PlaybackCompleted += PlaybackManager_PlaybackCompleted;

            SettingsCommand = new RelayCommand(i => NavigationService.NavigateToSettingsPage());
            HomeCommand = new RelayCommand(i => NavigationService.NavigateToHomePage());
            FullscreenVideoCommand = new RelayCommand(i => NavigationService.NavigateToInternalPlayerPage());
            RestartServerCommand = new RelayCommand(i => RestartServer());
            RestartApplicationCommand = new RelayCommand(i => RestartApplication());

            _dispatcher = Dispatcher.CurrentDispatcher;

            _clockTimer = new Timer(ClockTimerCallback, null, 0, 10000);

            IsLoggedIn = SessionManager.CurrentUser != null;
            var page = NavigationService.CurrentPage;
            IsOnHomePage = page is IHomePage;
            IsOnFullscreenVideo = page is IFullscreenVideoPage;

            ServerEvents.RestartRequired += ServerEvents_RestartRequired;
            ServerEvents.ServerRestarting += ServerEvents_ServerRestarting;
            ServerEvents.ServerShuttingDown += ServerEvents_ServerShuttingDown;
            ServerEvents.Connected += ServerEvents_Connected;
            AppHost.HasPendingRestartChanged += AppHostHasPendingRestartChanged;
            RefreshRestartApplicationNotification();

            // If already connected, get system info now.
            RefreshRestartServerNotification();
        }
예제 #48
0
        public ItemsListViewModel(ItemsResult itemsResult, IApiClient apiClient, IImageManager imageManager, IServerEvents serverEvents, INavigator navigator, IPlaybackManager playbackManager)
        {
            _itemsResult = itemsResult;
            _apiClient = apiClient;
            _imageManager = imageManager;
            _serverEvents = serverEvents;
            _navigator = navigator;
            _playbackManager = playbackManager;

            var itemType = itemsResult.Items.Length > 0 ? itemsResult.Items.First().Type : null;
            if (itemType == "Episode") {
                _preferredImageTypes = new[] { ImageType.Screenshot, ImageType.Thumb, ImageType.Art, ImageType.Primary };
            } else {
                _preferredImageTypes = new[] { ImageType.Backdrop, ImageType.Thumb, ImageType.Art };
            }

            Title = SelectHeader(itemsResult.Items.Length > 0 ? itemsResult.Items.First().Type : null);
            Items = new RangeObservableCollection<ItemTileViewModel>();
            LoadItems();
        }
        public ItemListViewModel(Func<ItemListViewModel, Task<ItemsResult>> getItemsDelegate, IPresentationManager presentationManager, IImageManager imageManager, IApiClient apiClient, INavigationService navigationService, IPlaybackManager playbackManager, ILogger logger, IServerEvents serverEvents)
        {
            EnableBackdropsForCurrentItem = true;

            _getItemsDelegate = getItemsDelegate;
            _navigationService = navigationService;
            _playbackManager = playbackManager;
            _logger = logger;
            _serverEvents = serverEvents;
            _apiClient = apiClient;
            _imageManager = imageManager;
            _dispatcher = Dispatcher.CurrentDispatcher;
            _presentationManager = presentationManager;

            _indexOptionsCollectionView = new ListCollectionView(_indexOptions);
            _indexOptionsCollectionView.CurrentChanged += _indexOptionsCollectionView_CurrentChanged;

            NavigateCommand = new RelayCommand(Navigate);
            PlayCommand = new RelayCommand(Play);
        }
        public ItemListViewModel(Func <ItemListViewModel, Task <ItemsResult> > getItemsDelegate, IPresentationManager presentationManager, IImageManager imageManager, IApiClient apiClient, INavigationService navigationService, IPlaybackManager playbackManager, ILogger logger, IServerEvents serverEvents)
        {
            EnableBackdropsForCurrentItem = true;

            _getItemsDelegate    = getItemsDelegate;
            _navigationService   = navigationService;
            _playbackManager     = playbackManager;
            _logger              = logger;
            _serverEvents        = serverEvents;
            _apiClient           = apiClient;
            _imageManager        = imageManager;
            _dispatcher          = Dispatcher.CurrentDispatcher;
            _presentationManager = presentationManager;

            _indexOptionsCollectionView = new ListCollectionView(_indexOptions);
            _indexOptionsCollectionView.CurrentChanged += _indexOptionsCollectionView_CurrentChanged;

            NavigateCommand = new RelayCommand(Navigate);
            PlayCommand     = new RelayCommand(Play);
        }
예제 #51
0
        public ItemViewModel(IApiClient apiClient, IImageManager imageManager, IPlaybackManager playbackManager, IPresentationManager presentation, ILogger logger, IServerEvents serverEvents)
        {
            _apiClient       = apiClient;
            _imageManager    = imageManager;
            _playbackManager = playbackManager;
            _presentation    = presentation;
            _logger          = logger;
            _serverEvents    = serverEvents;

            PlayCommand        = new RelayCommand(o => Play());
            ResumeCommand      = new RelayCommand(o => Resume());
            PlayTrailerCommand = new RelayCommand(o => PlayTrailer());

            ToggleLikesCommand      = new RelayCommand(ToggleLikes);
            ToggleDislikesCommand   = new RelayCommand(ToggleDislikes);
            ToggleIsFavoriteCommand = new RelayCommand(ToggleIsFavorite);
            ToggleIsPlayedCommand   = new RelayCommand(ToggleIsPlayed);

            _serverEvents.UserDataChanged += _serverEvents_UserDataChanged;
        }
예제 #52
0
        public TransportOsdViewModel(IPlaybackManager playbackManager, IApiClient apiClient, IImageManager imageManager, IPresentationManager presentationManager, ILogger logger, INavigationService nav, IServerEvents serverEvents)
        {
            Logger = logger;
            PresentationManager = presentationManager;
            ImageManager        = imageManager;
            ApiClient           = apiClient;
            PlaybackManager     = playbackManager;
            NavigationService   = nav;
            _serverEvents       = serverEvents;

            _currentDispatcher = Dispatcher.CurrentDispatcher;

            PauseCommand           = new RelayCommand(Pause);
            StopCommand            = new RelayCommand(Stop);
            SkipBackwardCommand    = new RelayCommand(SkipBackward);
            SkipForwardCommand     = new RelayCommand(SkipForward);
            NextChapterCommand     = new RelayCommand(NextChapter);
            PreviousChapterCommand = new RelayCommand(PreviousChapter);
            PlayCommand            = new RelayCommand(Play);

            MediaPlayer = playbackManager.MediaPlayers.FirstOrDefault(i => i.PlayState != PlayState.Idle);
        }
예제 #53
0
        public ServerApi(string adminPassword)
        {
            _events = NotifierGenerator.MakeEvents <IServerEvents>();
            _events.ConnectionClosing += OnConnectionClosing;
            ServerModel.Notifier.Add(_events);

            _commands = new Dictionary <long, ICommand>();
            AddCommand(new ServerRegisterCommand());
            AddCommand(new ServerUnregisterCommand());
            AddCommand(new ServerSendRoomMessageCommand());
            AddCommand(new ServerCreateRoomCommand());
            AddCommand(new ServerDeleteRoomCommand());
            AddCommand(new ServerInviteUsersCommand());
            AddCommand(new ServerKickUsersCommand());
            AddCommand(new ServerExitFromRoomCommand());
            AddCommand(new ServerRefreshRoomCommand());
            AddCommand(new ServerSetRoomAdminCommand());
            AddCommand(new ServerAddFileToRoomCommand());
            AddCommand(new ServerRemoveFileFromRoomCommand());
            AddCommand(new ServerP2PConnectRequestCommand());
            AddCommand(new ServerP2PReadyAcceptCommand());
            AddCommand(new ServerPingRequestCommand());
            AddCommand(new ServerAdminCommand(adminPassword));
        }
예제 #54
0
 public Service(IBus bus, ISubscriptionManager manager, IServerEvents events)
 {
     _bus     = bus;
     _manager = manager;
 }
 public ServerEventsNotificationPublisher(IServerEvents serverEvents)
 {
     _serverEvents = serverEvents;
 }
예제 #56
0
 public static void NotifyChannel(this IServerEvents server, string channel, object message)
 {
     server.NotifyChannel(channel, Selector.Id(message.GetType()), message);
 }
예제 #57
0
 public static void NotifySession(this IServerEvents server, string sspid, object message, string channel = null)
 {
     server.NotifySession(sspid, Selector.Id(message.GetType()), message, channel);
 }
예제 #58
0
 public static void NotifyUserName(this IServerEvents server, string userName, object message, string channel = null)
 {
     server.NotifyUserName(userName, Selector.Id(message.GetType()), message, channel);
 }