예제 #1
0
        private static IWallpaperSetter CreateWallpaperSetter()
        {
            IWallpaperSetter setter = null;

            //If Windows
            if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
            {
                setter = new WindowsWallpaperImageSetter();
            }

            //If OSX
            if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
            {
                setter = new MacOSWallpaperImageSetter();
            }

            //If Linux
            if (System.Runtime.InteropServices.RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
            {
                var desktopEnvironment = Environment.GetEnvironmentVariable("DESKTOP_SESSION") ??
                                         Environment.GetEnvironmentVariable("XDG_CURRENT_DESKTOP") ??
                                         Environment.GetEnvironmentVariable("XDG_SESSION_DESKTOP");

                switch (desktopEnvironment.ToLower())
                {
                case "gnome":
                    setter = new LinuxGnomeWallpaperImageSetter();
                    break;
                }
            }

            return(setter);
        }
예제 #2
0
        public static void Main(string[] args)
        {
            Console.WriteLine("App Started");
            Console.WriteLine("Talking to Reddit...");

            Reddit        reddit   = new Reddit();
            RedditReponse response = reddit.GetPostsAsync().Result;

            string topImage = response.data.children[0].data.url;

            Console.WriteLine("Reddit data retrieved: " + topImage);
            Console.WriteLine("Downloading file...");

            IFileSaver saver = new FileDownloader();
            string     path  = saver.Save(topImage);

            Console.WriteLine("File downloaded to: " + path);
            Console.WriteLine("Setting desktop wallpaper...");

            IWallpaperSetter setter = CreateWallpaperSetter();

            if (setter == null)
            {
                Console.Error.WriteLine("Platform not detected.");
                return;
            }

            setter.SetWallpaper(path);

            Console.WriteLine("Done!");
        }
예제 #3
0
 public MainController()
 {
     window     = new MainWindow(this);
     collection = new WallpaperCollection();
     collection.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(window.CollectionChanged);
     wallpaperSetter = new WindowsWallpaperSetter();
     wallpaperDAO    = new SQLWallpaperDAO();
     delayInterval   = 1;
 }
예제 #4
0
        public static void Main(string[] args)
        {
            Console.WriteLine("App Started");

            Reddit           reddit = new Reddit();
            IFileSaver       saver  = new FileDownloader();
            IWallpaperSetter setter = CreateWallpaperSetter();

            if (setter == null)
            {
                Console.Error.WriteLine("Platform not detected.");
                return;
            }

            Console.WriteLine("Getting top image from /r/earthporn...");

            //Get the top image to start with.
            RedditReponse response = reddit.GetPostsAsync(limit: 1).Result;

            bool liked = false;

            while (!liked)
            {
                Child post = response.data.children[0];

                Console.WriteLine("Downloading image: " + post.data.url);

                string path = saver.Save(post.data.url);

                Console.WriteLine("Image downloaded to: " + path);
                Console.WriteLine("Setting desktop wallpaper...");

                setter.SetWallpaper(path);

                Console.WriteLine("Do you like it? [Y/N]");

                var input = Console.ReadLine().Trim();
                liked = input.ToLower().Equals("y", StringComparison.OrdinalIgnoreCase);

                //If they didn't like it, get the next post and try again.
                if (!liked)
                {
                    Console.WriteLine("Getting the next image from /r/earthporn...");

                    response = reddit.GetPostsAsync(limit: 1).Result;

                    Console.WriteLine("Reddit data retrieved.");
                }
            }

            Console.WriteLine("Finished!");
        }
예제 #5
0
 public MainWindowViewModel(IGetLatestWallpapersUseCase useCase, IGetLatestWallpapersOutputPort output, UrlImageConverter imgConverter, IWallpaperSetter wallpaperSetter)
 {
     _useCase         = useCase;
     _output          = (LatestWallpapersPresenter)output;
     _imgConverter    = imgConverter;
     _wallpaperSetter = wallpaperSetter;
     _sorts           = new string[]
     {
         "Latest",
         "Top (1 day)",
         "Top (3 days)",
         "Top (1 week)",
         "Top (1 month)",
         "Top (3 months)",
         "Top (6 months)",
         "Top (1 year)"
     };
     _selectedSort = _sorts.First();
 }
예제 #6
0
        public WallpaperChanger(Database database,
                                IWallpaperSaver savewallpaper,
                                IThumbnailCacheBuilder thumbnailCacheBuilder,
                                ISearchUrlProvider searchUrlProvider,
                                IImageInfoProvider imageInfoProvider,
                                IImageLoader imageLoader,
                                IWallpaperSetter wallpaperSetter,
                                ICurrentWallpaperHolder currentWallpaperHolder)
        {
            Database               = database;
            Savewallpaper          = savewallpaper;
            ThumbnailCacheBuilder  = thumbnailCacheBuilder;
            SearchUrlProvider      = searchUrlProvider;
            ImageInfoProvider      = imageInfoProvider;
            ImageLoader            = imageLoader;
            WallpaperSetter        = wallpaperSetter;
            CurrentWallpaperHolder = currentWallpaperHolder;

            HistoryList = new HashSet <string>();
        }
 public LatestWallpapersPresenter(IWallpaperSetter setter, Random rng)
 {
     _setter = setter;
     _rng    = rng;
 }