示例#1
0
        private void setWallpaperBT_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "")
            {
                return;
            }
            DateEntry wallpaperData;
            Settings  settings = GetCurrentSettings();

            wallpaperData = new DateEntry(DateTime.Now, settings.file, settings.style);
            string wallPaper = wallpaperData.fileName;
            string newFile   = "";

            if (!Path.HasExtension(wallpaperData.fileName))
            {
                newFile = saveFile.GetRandomWallpaper(wallpaperData.fileName, "").fileName;
                if (newFile != "")
                {
                    wallPaper = newFile;
                }
                else
                {
                    return;
                }
            }
            saveFile.SetWallpaper(wallPaper, wallpaperData.style);
        }
示例#2
0
        public DateEntry GetRandomWallpaper(string folder, string lastEntry)
        {
            // *.bmp; *.jpeg; *.jpg; *.png"
            DateEntry ret = new DateEntry();

            ret.errorList = new List <Tuple <DateTime, string> >();
            try
            {
                DirectoryInfo    di                = new DirectoryInfo(folder);
                string[]         extensionArray    = new string[] { ".bmp", ".jpeg", ".jpg", ".png" };
                HashSet <string> allowedExtensions = new HashSet <string>(extensionArray, StringComparer.OrdinalIgnoreCase);
                Random           rd                = new Random();
                int        ran   = -1;
                FileInfo[] files = Array.FindAll(di.GetFiles(), f => allowedExtensions.Contains(f.Extension));
                for (int i = 0; i < 10; i++)
                {
                    ran = rd.Next(files.Count());
                    if (files[ran].Name == lastEntry)
                    {
                        if (i != 0)
                        {
                            ret.errorList.Add(Tuple.Create(DateTime.Now, "Randomed same wallpaper " + i.ToString() + " times in a row."));
                        }
                    }
                    else
                    {
                        break;
                    }
                    if (i == 9)
                    {
                        ret.errorList.Add(Tuple.Create(DateTime.Now, "Randomed same wallpaper 10 times in a row."));
                    }
                }
                ret.fileName = Path.Combine(folder, files[ran].Name);
                ret.errorList.Add(Tuple.Create(DateTime.Now, "Found wallpaper :: " + ret.fileName));
                return(ret);
            }
            catch (Exception e)
            {
                ret.errorList.Add(Tuple.Create(DateTime.Now, e.Message.ToString()));
                ret.fileName = "";
                return(ret);
            }
        }
示例#3
0
        public DateEntry GetCurrentWallpaper(DateTime date)
        {
            List <DateEntry> allData = ReadXMLData();

            if (allData.Count == 0)
            {
                return(new DateEntry(date, "", Wallpaper.Style.Stretched));
            }
            else if (allData.Count == 1)
            {
                return(new DateEntry(date, allData[0].fileName, allData[0].style));
            }

            DateEntry previousVal = new DateEntry(date, "", Wallpaper.Style.Stretched);

            foreach (DateEntry entry in allData)
            {
                if ((entry.date.Month < date.Month) || (entry.date.Month == date.Month && entry.date.Day <= date.Day))
                {
                    previousVal = entry;
                }
                else
                {
                    if (previousVal.fileName == "")
                    {
                        // Then we actually want the final entry
                        return(allData.Last());
                    }
                    else
                    {
                        return(previousVal);
                    }
                }
            }
            return(previousVal);
        }
示例#4
0
        static void Main(string[] args)
        {
            if (args.Count() == 0)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
            else
            {
                if (args.Contains("-caller"))
                {
                    string target = args[Array.IndexOf(args, "-caller") + 1];
                    try
                    {
                        SaveFile saveFile = new SaveFile(target);
                        LogFile  log      = new LogFile(Path.Combine(Path.GetDirectoryName(target), Path.GetFileNameWithoutExtension(target) + ".log"), args.Contains("-log"));
                        try
                        {
                            XElement root = saveFile.getXML().Root.Element("CurrentDate");
                            // If it is the same day, and its a slideshow, don't change it.
                            if (DateTime.Now.ToShortDateString() == root.Element("Day").Value&& !Path.HasExtension(root.Element("File").Value))
                            {
                                log.writeLine(DateTime.Now, "Day already checked.");
                                return;
                            }
                            DateEntry wallpaperData;
                            wallpaperData = saveFile.GetCurrentWallpaper(DateTime.Now);
                            string    wallPaper = wallpaperData.fileName;
                            DateEntry newFile   = wallpaperData;
                            newFile.errorList = new List <Tuple <DateTime, string> >();
                            if (!Path.HasExtension(wallpaperData.fileName))
                            {
                                string lastEntry = root.Element("LastEntry").Value;
                                newFile = saveFile.GetRandomWallpaper(wallpaperData.fileName, lastEntry);
                                if (newFile.fileName != "")
                                {
                                    wallPaper = newFile.fileName;
                                }
                                else
                                {
                                    log.writeLine(newFile.errorList.ToArray());
                                    return;
                                }
                            }
                            saveFile.SetWallpaper(wallPaper, wallpaperData.style);
                            root.Element("Day").Value       = DateTime.Now.ToShortDateString();
                            root.Element("File").Value      = wallpaperData.fileName;
                            root.Element("Style").Value     = wallpaperData.style.ToString();
                            root.Element("LastEntry").Value = newFile.fileName;
                            Globals.Beautify(saveFile.getXML(), saveFile.getSettingsFileName());

                            log.writeLine(wallpaperData.errorList.ToArray());
                            log.writeLine(newFile.errorList.ToArray());
                        }
                        catch (Exception e)
                        {
                            log.writeLine(DateTime.Now, e.Message.ToString());
                        }
                    }
                    catch
                    {
                        //Cannot access the logfile or xml
                    }
                }
            }
            return;
        }