Пример #1
0
        protected override void Configure()
        {
            base.Configure();

            _Contracts = new AppContracts();


            _SettingsPersistor = new JsonPersister <AppSettings>(Path.Combine(_Contracts.SettingsLocation, _Contracts.SettingsFilename));
            _Settings          = _SettingsPersistor.Instance;

            Container.Register <AppContracts>(_Contracts);
            Container.Register <AppSettings>(_Settings);
            Container.Register <Core.ILog>(new ProductionLogger());
            Container.Register <AutorunService>(new AutorunService(Container.Resolve <Core.ILog>(), _Settings, _Contracts));
            Container.Register <IWindowManager>(new AppWindowManager(_Settings));
            Container.Register <IBroadcastService>(new BroadcastService(_Settings, _Contracts, Container.Resolve <Core.ILog>()));

            Container.Register <SpotifyLocalApi>(new SpotifyLocalApi(Container.Resolve <Core.ILog>(), _Contracts, _Settings));
            Container.Register <ISpotifyController>(new SpotifyController(Container.Resolve <Core.ILog>(), Container.Resolve <SpotifyLocalApi>()));
            Container.Register <ICoverService>(new CoverService(_Contracts, Container.Resolve <Core.ILog>(), Container.Resolve <SpotifyLocalApi>()));

            Container.Register <IUpdateService>(new UpdateService(Container.Resolve <Core.ILog>()));
            Container.Register <IUsageTrackerService>(ApplicationDeployment.IsNetworkDeployed
                                                         ? new UsageTrackerService(_Settings, Container.Resolve <Core.ILog>(), _Contracts)
                                                         : new LocalUsageTrackerService(_Settings, Container.Resolve <Core.ILog>(), _Contracts));
        }
Пример #2
0
        static void Main()
        {
            AppContracts contracts = new AppContracts();
            bool         createdNew;

            try
            {
                instanceMutex = new Mutex(true, @"Local\" + Assembly.GetExecutingAssembly().GetType().GUID,
                                          out createdNew);
                if (!createdNew)
                {
                    instanceMutex = null;
                    return;
                }
                var clickOnceHelper = new ClickOnceHelper(contracts.PublisherName, contracts.ProductName);
                var form            = new UninstallForm(contracts);
                Application.EnableVisualStyles();
                Application.Run(form);
                if (form.Uninstall)
                {
                    clickOnceHelper.Uninstall();
                }
            }
            finally
            {
                ReleaseMutex();
            }
        }
Пример #3
0
        public ShellViewModel(IWindowManager windowManager, ISpotifyController spotifyController,
                              ICoverService coverService, AppSettings settings, ILog logger, Container kernel, ClipboardManager clipboardManager,
                              AppContracts appContracts)
        {
            _WindowManager     = windowManager;
            _SpotifyController = spotifyController;
            _CoverService      = coverService;
            _Settings          = settings;
            _Logger            = logger;
            _kernel            = kernel;
            _clipboardManager  = clipboardManager;
            _appContracts      = appContracts;
            ApplicationSize    = _Settings.ApplicationSize;

            CoverImage = NoCoverUri;

#pragma warning disable RECS0165 // Asynchronous methods should return a Task instead of void
            _SpotifyController.AttachTrackChangedHandler(async e => await UpdateView().ConfigureAwait(false));
            _SpotifyController.SpotifyOpened.Subscribe(async o => await SpotifyOpened().ConfigureAwait(false));
            _SpotifyController.SpotifyExited.Subscribe(async o => await SpotifyExited().ConfigureAwait(false));
            _SpotifyController.AttachTrackStatusChangedHandler(SpotifyControllerOnTrackStatusChanged);
#pragma warning restore RECS0165 // Asynchronous methods should return a Task instead of void

            //TODO more app sizes
            ApplicationSize             = ApplicationSize.Medium;
            SystemEvents.SessionSwitch += SystemEventsOnSessionSwitch;
        }
Пример #4
0
 public BroadcastService(AppSettings settings, AppContracts contracts, ILog log)
 {
     _Settings        = settings;
     _Contracts       = contracts;
     _Log             = log;
     _LastTimeChecked = DateTime.MinValue;
 }
Пример #5
0
 public UpdateReadyViewModel(IUpdateService updateController, AppContracts contracts, Version newVersion, List <Release> changelog)
 {
     _UpdateController = updateController;
     _Contracts        = contracts;
     NewVersion        = newVersion.ToString();
     DisplayName       = string.Format("Update ready - {0}", _Contracts.ApplicationName);
     Changelog         = changelog.Where(r => r.ReleaseVersion > contracts.ApplicationVersion).OrderByDescending(r => r.ReleaseVersion).ToList();
 }
Пример #6
0
 public SettingsViewModel(AppSettings settings, AppContracts contracts, ICoverService coverService, Core.ILog logger)
 {
     _Settings     = settings;
     _Contracts    = contracts;
     _CoverService = coverService;
     _Logger       = logger;
     DisplayName   = string.Format("Settings - {0}", _Contracts.ApplicationName);
     CacheSize     = Helper.MakeNiceSize(_CoverService.CacheSize());
 }
Пример #7
0
 /// <summary>Initializes a new SpotifyAPI object which can be used to recieve</summary>
 public SpotifyLocalApi(ILog log, AppContracts contracts)
 {
     //emulate the embed code [NEEDED]
     _client = new HttpClient();
     _client.DefaultRequestHeaders.Add("Origin", "https://open.spotify.com");
     _client.DefaultRequestHeaders.Referrer = new Uri("https://open.spotify.com/?uri=spotify:track:5Zp4SWOpbuOdnsxLqwgutt");
     _client.DefaultRequestHeaders.Add("User-Agent", "MiniPie");
     _log     = log;
     _baseUri = new Uri(contracts.SpotifyLocalHost);
 }
Пример #8
0
        private void ProcessSquirrelStartup()
        {
#if !DEBUG
            using (var mgr = new Squirrel.UpdateManager(string.Empty))
            {
                // Note, in most of these scenarios, the app exits after this method
                // completes!
                SquirrelAwareApp.HandleEvents(
                    onInitialInstall: v =>
                {
                    mgr.CreateShortcutForThisExe();
                    UriProtocolManager.RegisterUrlProtocol();
                    Environment.Exit(0);
                },
                    onAppUpdate: v =>
                {
                    mgr.CreateShortcutForThisExe();
                    Environment.Exit(0);
                },
                    onAppUninstall: v =>
                {
                    mgr.RemoveShortcutForThisExe();
                    UriProtocolManager.UnregisterUrlProtocol();
                    AppContracts contracts = new AppContracts();
                    var settingsPersistor  =
                        new JsonPersister <AppSettings>(Path.Combine(contracts.SettingsLocation,
                                                                     contracts.SettingsFilename));
                    string dir = Path.Combine(string.IsNullOrEmpty(settingsPersistor.Instance.CacheFolder)
                          ? contracts.SettingsLocation
                          : settingsPersistor.Instance.CacheFolder, CoverService.CacheDirName);
                    var log = new ProductionLogger();
                    log.Fatal("Uninstalling Minipie. Removing CoverCache from ->" + dir);
                    try
                    {
                        if (Directory.Exists(dir))
                        {
                            Directory.Delete(dir, true);
                        }
                    }
                    catch (Exception e)
                    {
                        log.FatalException(e.Message, e);
                    }
                    Environment.Exit(0);
                },
                    onFirstRun: () =>
                {
                });
            }
#endif
        }
Пример #9
0
        public AboutViewModel(AppSettings settings, AppContracts contracts)
        {
            _Settings  = settings;
            _Contracts = contracts;

            DisplayName    = string.Format("About - {0}", _Contracts.ApplicationName);
            UsedComponents = new List <ComponentData>(new [] {
                new ComponentData("http://caliburnmicro.codeplex.com/", "MIT License", "Caliburn.Micro"),
                new ComponentData("http://nlog-project.org/", "MIT License", "NLog"),
                new ComponentData("https://github.com/grumpydev/TinyIoC", "Ms-Pl", "TinyIoC"),
                new ComponentData("https://github.com/dbuksbaum/Caliburn.Micro.TinyIOC", "MIT License", "Caliburn.Micro.TinyIOC"),
                new ComponentData("http://json.codeplex.com/", "MIT License", "Newtonsoft Json.Net"),
                new ComponentData("http://jariz.nl", "Apache 2.0 License", "Spotify local API")
            });
        }
Пример #10
0
        public SettingsViewModel(AppContracts contracts,
                                 ICoverService coverService, ILog logger, HotKeyViewModel hotKeyViewModel,
                                 ISpotifyController spotifyController, AutorunService autorunService, JsonPersister <AppSettings> persister)
        {
            _settings          = persister.Instance;
            _contracts         = contracts;
            _coverService      = coverService;
            _logger            = logger;
            _spotifyController = spotifyController;
            _autorunService    = autorunService;
            _persister         = persister;

            HotKeyViewModel = hotKeyViewModel;
            DisplayName     = $"Settings - {_contracts.ApplicationName}";
            CacheSize       = Helper.MakeNiceSize(_coverService.CacheSize());
        }
Пример #11
0
        public AboutViewModel(AppContracts contracts)
        {
            _Contracts = contracts;

            DisplayName    = string.Format("About - {0}", _Contracts.ApplicationName);
            UsedComponents = new List <ComponentData>(new [] {
                new ComponentData("http://caliburnmicro.codeplex.com/", "MIT License", "Caliburn.Micro"),
                new ComponentData("http://nlog-project.org/", "MIT License", "NLog"),
                new ComponentData("http://json.codeplex.com/", "MIT License", "Newtonsoft Json.Net"),
                new ComponentData("http://jariz.nl", "Apache 2.0 License", "Spotify local API"),
                new ComponentData("http://www.codeproject.com/Articles/35159/WPF-Localization-Using-RESX-Files", "CPOL", "Resx Extention"),
                new ComponentData("https://github.com/Fody/Fody", "MIT", "Fody"),
                new ComponentData("http://www.codeproject.com/Articles/36468/WPF-NotifyIcon", "CPOL", "Hardcodet WPF NotifyIcon"),
                new ComponentData("https://github.com/Squirrel/Squirrel.Windows", "Github license", "Squirrel.Windows"),
            });
        }
Пример #12
0
        public UninstallForm(AppContracts contracts)
        {
            InitializeComponent();

            InfoLabel.Text        = Properties.Resources.RemoveMessage;
            PreserveCache.Text    = Properties.Resources.KeepCache;
            PreserveSettings.Text = Properties.Resources.KeepSettings;

            Continue.Text = Properties.Resources.Continue;
            Cancel.Text   = Properties.Resources.Cancel;

            _settingsLocation = contracts.SettingsLocation;
            var _settingsPersistor = new JsonPersister <AppSettings>(_settingsLocation);

            settings = _settingsPersistor.Instance;
        }
Пример #13
0
        private const string CoverSize = "300"; //valid sizes: 300, 640

        /// <summary>Initializes a new SpotifyAPI object which can be used to recieve</summary>
        public SpotifyLocalApi(ILog log, AppContracts contracts, AppSettings settings) {

            //emulate the embed code [NEEDED]
            _Client = new WebClient();
            _Client.Headers.Add("Origin", "https://embed.spotify.com");
            _Client.Headers.Add("Referer", "https://embed.spotify.com/?uri=spotify:track:5Zp4SWOpbuOdnsxLqwgutt");
            _Client.Encoding = Encoding.UTF8;
            if (_Client.Proxy != null)
                _Client.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials;

            _Log = log;
            _Settings = settings;
            _Contracts = contracts;

            RenewToken();
        }
Пример #14
0
        protected override void Configure()
        {
            _Contracts = new AppContracts();
            _kernel.RegisterSingleton(this);
            _SettingsPersistor = new JsonPersister <AppSettings>(Path.Combine(_Contracts.SettingsLocation, _Contracts.SettingsFilename));
            _kernel.RegisterSingleton(_SettingsPersistor);
            _kernel.RegisterSingleton(_Contracts);
            _Settings = _SettingsPersistor.Instance;
            _kernel.RegisterSingleton(_Settings);

            _log = new ProductionLogger();
            _kernel.RegisterSingleton(_log);
            _kernel.RegisterSingleton <UpdateManager>();

            _kernel.RegisterSingleton(new AutorunService(_log, _Settings, _Contracts));
            _kernel.RegisterSingleton <IWindowManager>(new AppWindowManager(_Settings));
            _kernel.RegisterSingleton <ClipboardManager>();
            _kernel.Register <IEventAggregator, EventAggregator>();

            _kernel.RegisterSingleton <ISpotifyLocalApi, SpotifyLocalApi>();
            _kernel.RegisterSingleton <ISpotifyWebApi, SpotifyWebApi>();
            _kernel.RegisterSingleton <ISpotifyNativeApi, SpotifyNativeApi>();
            _kernel.RegisterSingleton <ISpotifyController, SpotifyController>();
            //new CoverService(
            _kernel.RegisterSingleton <ICoverService>(() => new CoverService(string.IsNullOrEmpty(_Settings.CacheFolder)
                ? _Contracts.SettingsLocation
                : _Settings.CacheFolder, _log, _kernel.GetInstance <ISpotifyWebApi>()));

            _kernel.RegisterSingleton <KeyManager>();

            var classes =
                Assembly.GetExecutingAssembly()
                .GetTypes()
                .Where(
                    type =>
                    type.IsPublic && (
                        type.Namespace == typeof(ShellViewModel).Namespace ||
                        type.Namespace == typeof(ShellView).Namespace))
                .ToList();

            foreach (var @class in classes)
            {
                _kernel.Register(@class);
            }
            base.Configure();
        }
Пример #15
0
        private const string CoverSize = "300"; //valid sizes: 300, 640

        /// <summary>Initializes a new SpotifyAPI object which can be used to recieve</summary>
        public SpotifyLocalApi(ILog log, AppContracts contracts, AppSettings settings)
        {
            //emulate the embed code [NEEDED]
            _Client = new WebClient();
            _Client.Headers.Add("Origin", "https://embed.spotify.com");
            _Client.Headers.Add("Referer", "https://embed.spotify.com/?uri=spotify:track:5Zp4SWOpbuOdnsxLqwgutt");
            _Client.Encoding = Encoding.UTF8;
            if (_Client.Proxy != null)
            {
                _Client.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials;
            }

            _Log       = log;
            _Settings  = settings;
            _Contracts = contracts;

            RenewToken();
        }
Пример #16
0
        private const string CoverSize = "300"; //valid sizes: 300, 640

        /// <summary>Initializes a new SpotifyAPI object which can be used to recieve</summary>
        public SpotifyLocalApi(ILog log, AppContracts contracts, AppSettings settings)
        {
            //emulate the embed code [NEEDED]
            _Client = new WebClient();
            _Client.Headers.Add("Origin", "https://embed.spotify.com");
            _Client.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2";
            _Client.Headers.Add("Referer", "https://embed.spotify.com/?uri=spotify:track:5Zp4SWOpbuOdnsxLqwgutt");
            _Client.Encoding = Encoding.UTF8;
            if (_Client.Proxy != null)
            {
                _Client.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials;
            }

            _Log       = log;
            _Settings  = settings;
            _Contracts = contracts;

            RenewToken();
        }
Пример #17
0
 public BroadcastService(AppSettings settings, AppContracts contracts, ILog log) {
     _Settings = settings;
     _Contracts = contracts;
     _Log = log;
     _LastTimeChecked = DateTime.MinValue;
 }
Пример #18
0
 public AutorunService(ILog logger, AppSettings settings, AppContracts contracts)
 {
     _Logger    = logger;
     _Settings  = settings;
     _Contracts = contracts;
 }
Пример #19
0
 public NoSpotifyViewModel(AppContracts contracts)
 {
     _Contracts  = contracts;
     DisplayName = string.Format("No Spotify installed - {0}", _Contracts.ApplicationName);
 }