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); }
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); } }
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); }
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; }