Пример #1
0
        void SaveSettingsFromInterface()
        {
            Properties.Settings.Default.Autorun = autorun.IsChecked.Value;
            WorkWithSystem.AutorunControl(Wallpapers_Everyday.Properties.Settings.Default.Autorun, Assembly.GetExecutingAssembly().Location, "Wallpapers Everyday", "-autorun");
            Properties.Settings.Default.Debug               = debug.IsChecked.Value;
            Properties.Settings.Default.AlwaysSet           = alwaysSet.IsChecked.Value;
            Properties.Settings.Default.OnlyDownload        = onlyDownload.IsChecked.Value;
            Properties.Settings.Default.Notify              = bigFolderNotify.IsChecked.Value;
            Properties.Settings.Default.MaxFolderSize       = bigFolderSize.Value;
            Properties.Settings.Default.RemoveOld           = autoRemoveOldPictures.IsChecked.Value;
            Properties.Settings.Default.Win10Intresting     = saveWin10Interesting.IsChecked.Value;
            Properties.Settings.Default.Win10IntrestingPath = saveWin10InterestingPath.DirectoryPath;

            Properties.Settings.Default.Save();
        }
Пример #2
0
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            if (RunOnlyOne.ChekRunProgram("Wallpapers Everyday for you!"))
            {
                Window win = new Window();
                Application.Current.MainWindow = win;
                Application.Current.Shutdown();
            }

            if (e.Args.Length > 0)
            {
                TaskbarIcon icon = new TaskbarIcon();
                icon.Icon        = new Icon(Wallpapers_Everyday.Properties.Resources.trayIcon, 16, 16);
                icon.Visibility  = Visibility.Visible;
                icon.ToolTipText = "Wallpapers Everyday";

                // на случай, если прога была в автозапуске, но ее переместили и запустили в тихом режиме, нужно подправить запись
                WorkWithSystem.AutorunControl(Wallpapers_Everyday.Properties.Settings.Default.Autorun, Assembly.GetExecutingAssembly().Location, "Wallpapers Everyday", "-autorun");

                // заглушка для успешного завершения программы, без окна и App.Cur.Shutdown() прога не закроется и будет висеть в озу
                Window win = new Window();
                Application.Current.MainWindow = win;

                var state = Logic.Work();
                switch (state.Item1)
                {
                case Logic.FinishCode.Good: break;

                case Logic.FinishCode.Warning: icon.ShowBalloonTip("Wallpapers Everyday", state.Item2, BalloonIcon.Info); break;

                case Logic.FinishCode.Error: icon.ShowBalloonTip("Wallpapers Everyday", state.Item2, BalloonIcon.Error); break;

                case Logic.FinishCode.Fail: MessageBox.Show(state.Item2, "Wallpapers Everyday", MessageBoxButton.OK, MessageBoxImage.Error); break;
                }

                Thread.Sleep(5000);
                icon.Visibility = Visibility.Hidden;
                Application.Current.Shutdown();
            }
            else
            {
                MainWindow win = new MainWindow();
                Application.Current.MainWindow = win;
                win.Show();
            }
        }
Пример #3
0
        /// <summary>
        /// Логический метод установки обоев. Выполняет все требуемые шаги (получение кода, выделение ссылки и т.д.), требуемые для установки свежих обоев.
        /// </summary>
        /// <returns>Код завершения функции и сопровождающее сообщение.</returns>
        public static (FinishCode, string) Work()
        {
            if (Properties.Settings.Default.Debug)
            {
                Logs.WriteLogFile($"\n\n\n\n\n[{DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss")}]: запуск...");
            }

            var size = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Size;

            // исключаем старые маленькие разрешения и неподдерживаемое 5 : 4
            if ((size.Width < 1280 && size.Height < 720) || (size.Width == 1280 && size.Height == 1024))
            {
                return(FinishCode.Fail, "К сожалению, Ваше разрешение экрана слишком мало или не поддерживается!");
            }

            string workDirectory = Directory.GetCurrentDirectory();

            MessageBox.Show(Properties.Settings.Default.Name);
            // если папки для заставок нет, создаем ее
            Directory.CreateDirectory(workDirectory + @"\images");
            int imagesSize;

            // ===============================================================
            // ===============================================================
            // ===============================================================

            // если инета нет
            if (!Web.CheckConnection())
            {
                // но стоит галка на постоянном обновлении и нет "только загрузка"
                if ((Properties.Settings.Default.AlwaysSet) && (!Properties.Settings.Default.OnlyDownload))
                {
                    // то проверяем, первый ли запуск. и если не первый (т.е. уже есть какой-то скачанный файл)
                    if (Properties.Settings.Default.Name != "no")
                    {
                        string notification;
                        // то ставим последнюю обоину
                        if (File.Exists(workDirectory + "\\images\\" + Properties.Settings.Default.Name))
                        {
                            Wallpaper.SetWallpaper(workDirectory + "\\images\\" + Properties.Settings.Default.Name);
                            notification = "Отсутствует соединение с интернетом! Были поставлены последние обои.";
                        }
                        else
                        {
                            notification = "Отсутствует соединение с интернетом! Не удалось поставить последние обои: файл не найден.";
                        }

                        if (Properties.Settings.Default.Debug)
                        {
                            Logs.WriteLogFile(notification);
                        }

                        imagesSize = WorkWithSystem.GetDirectorySize(workDirectory + "\\images");
                        if (Properties.Settings.Default.Notify && imagesSize > Properties.Settings.Default.MaxFolderSize)
                        {
                            notification += $"\nРазмер папки с обоями превышает рекомендуемый! ({imagesSize} MB)";
                        }
                        return(FinishCode.Error, notification);
                    }
                    else // если же первый
                    {
                        return(FinishCode.Error, "Отсутствует соединение с интернетом!");
                    }
                }
                else // если же нет "постоянного обновления" или есть "только загрузка"
                {
                    return(FinishCode.Error, "Отсутствует соединение с интернетом!");
                }
            }

            if (Properties.Settings.Default.Debug)
            {
                Logs.WriteLogFile("Получение кода...");
            }

            string temp = null;

            try
            {
                temp = Web.GetHtmlCode("https://www.bing.com/");
            }
            catch (Exception e)
            {
                if (Properties.Settings.Default.Debug)
                {
                    Logs.WriteLogFile($"Исключение: {e.Message}\nВнутреннее исключение: {e.InnerException.Message}");
                }
                return(FinishCode.Error, "В ходе работы произошла ошибка!\nПодробности в логе.");
            }

            if (Properties.Settings.Default.Debug)
            {
                Logs.WriteLogFile($"Код получен:\n{temp}\nВыделение ссылки...");
            }

            string url;

            try
            {
                url = temp = SelectUrlFromHtml(temp);
            }
            catch (Exception e)
            {
                if (Properties.Settings.Default.Debug)
                {
                    Logs.WriteLogFile($"Исключение: {e.Message}\nВнутреннее исключение: {e.InnerException.Message}");
                }
                return(FinishCode.Error, "В ходе работы произошла ошибка!\nПодробности в логе.");
            }

            if (Properties.Settings.Default.Debug)
            {
                Logs.WriteLogFile($"Ссылка выделена:\n{temp}");
            }

            temp = SelectNameFromUrl(temp);
            if (Properties.Settings.Default.Name == temp)
            {
                string notification = "Новых обоев пока нет!";
                if (Properties.Settings.Default.AlwaysSet)
                {
                    if (File.Exists(workDirectory + "\\images\\" + Properties.Settings.Default.Name))
                    {
                        Wallpaper.SetWallpaper($@"{workDirectory}\images\{temp}");
                        notification += " Были поставлены последние обои.";
                    }
                    else
                    {
                        notification = " Не удалось поставить последние обои: файл не найден.";
                    }
                }
                if (Properties.Settings.Default.Debug)
                {
                    Logs.WriteLogFile(notification);
                }

                return(FinishCode.Warning, notification);
            }

            if (Properties.Settings.Default.Debug)
            {
                Logs.WriteLogFile("Загрузка обоев...");
            }

            try
            {
                Web.Download("https://www.bing.com" + url, $@"{workDirectory}\images\{Properties.Settings.Default.Name = temp}");

                if (Properties.Settings.Default.Debug)
                {
                    Logs.WriteLogFile($"Обои загружены: {Properties.Settings.Default.Name}");
                }
            }
            catch (Exception e)
            {
                if (Properties.Settings.Default.Debug)
                {
                    if (e.InnerException != null)
                    {
                        Logs.WriteLogFile($"Исключение: {e.Message}\nВнутреннее исключение: {e.InnerException.Message}");
                    }
                    else
                    {
                        Logs.WriteLogFile($"Исключение: {e.Message}");
                    }
                }
                return(FinishCode.Error, "В ходе работы произошла ошибка!\nПодробности в логе.");
            }

            Properties.Settings.Default.InstalledWallpaperIndex++; // новые обои попадают в начало - сдвигаем индекс, чтобы он оставался на том же файле в массиве при переключении

            // если нужно, ставим обои
            if (!Properties.Settings.Default.OnlyDownload)
            {
                Wallpaper.SetWallpaper($@"{workDirectory}\images\{Properties.Settings.Default.Name}");
                Properties.Settings.Default.InstalledWallpaperIndex = 0;
            }

            // сохраняем новые параметры
            Properties.Settings.Default.Save();

            if (Properties.Settings.Default.Win10Intresting)
            {
                Wallpaper.SaveWin10Interesting(Properties.Settings.Default.Win10IntrestingPath);
                GC.Collect(); // после сохранения WE жрет ОЧЕНЬ много памяти из-за хэширования, но теперь ему столько памяти не нужно
            }

            // если нужно, удаляем старые обои, пока не войдем в указанный предел
            imagesSize = WorkWithSystem.GetDirectorySize(workDirectory + "\\images");
            if (imagesSize > Properties.Settings.Default.MaxFolderSize && Properties.Settings.Default.RemoveOld)
            {
                FileInfo[] files = new DirectoryInfo(workDirectory + "\\images").GetFiles().OrderBy(f => f.LastWriteTime).ToArray();
                MessageBox.Show($"1 - {files[0].CreationTime}; -1 - {files[files.Length-1].CreationTime}");
                while (imagesSize > Properties.Settings.Default.MaxFolderSize)
                {
                    int i = 0;
                    imagesSize -= (int)(files[i].Length / 1048576); // переводим в MB
                    files[i].Delete();
                    i++;
                }
                return(FinishCode.Warning, $"Старые обои были удалены! ({imagesSize} MB)");
            }

            // если нужно, уведомляем
            if (Properties.Settings.Default.Notify)
            {
                if (Properties.Settings.Default.Debug)
                {
                    Logs.WriteLogFile($"Вес папки с обоями: {imagesSize} Mb");
                }
                if (imagesSize > Properties.Settings.Default.MaxFolderSize)
                {
                    return(FinishCode.Warning, $"Размер папки с обоями превышает установленную границу! ({imagesSize} MB)");
                }
            }

            return(FinishCode.Good, "");
        }