/* * public void addIdToMetadataQueue(long monitorId, DataRow image) { * this.fileDatabase.addIdToMetadataQueue(monitorId, image); * } */ private void DoWorkImageFolder(object sender, DoWorkEventArgs e) { // Debug.WriteLine(this.config.getPersistant("folders")); BackgroundWorker worker = sender as BackgroundWorker; // Lower priority to ensure smooth working of main screensaver System.Diagnostics.Process.GetCurrentProcess().PriorityClass = System.Diagnostics.ProcessPriorityClass.BelowNormal; this.bwSender = sender; this.bwEvents = e; if (!this.screensaver.readOnly) { this.swFileScan = new System.Diagnostics.Stopwatch(); this.swMetadata = new System.Diagnostics.Stopwatch(); // Folder purge done in main thread this.swFileScan.Start(); this.processFolders(); this.swFileScan.Stop(); Debug.WriteLine("FileScan: " + swFileScan.ElapsedMilliseconds + "ms"); this.swMetadata.Start(); this.processMetadata(); this.swMetadata.Stop(); Debug.WriteLine("Metadata: " + swMetadata.ElapsedMilliseconds + "ms"); } if (!this.backgroundWorker.CancellationPending) { this.fileDatabase.purgeMetadata(); } //if (Convert.ToDateTime(this.config.setValue("wallpaperLastChange")).Equals(DateTime.Today)); if (!this.backgroundWorker.CancellationPending) { Wallpaper wallpaper = new Wallpaper(this.screensaver); if (wallpaper.changeWallpaper()) { switch (this.config.getPersistantString("wallpaperSource")) { case "on": // Backwards compatability old settings case "current": wallpaper.generateWallpaper(); break; case "filter": string sql = this.config.getPersistantString("wallpaperSourceFilterSQL"); if (sql != "") { wallpaper.generateWallpaperFromSQL(sql); } break; } } } //this.cancelCompleteEvent.Set(); /* * var command = new SQLiteCommand(conn); * command.CommandText = @"SELECT COUNT(id) FROM `FileNodes`;"; * //SQLiteDataReader reader = command.ExecuteReader(); * //while (reader.Read()) { * Debug.WriteLine("Rows in DB: " + Convert.ToInt32(command.ExecuteScalar())); */ }
public void PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) { // Ignore shortcut keys when Config screen is visible // Ignore repeated keys if (this.previousKey == e.KeyCode) { this.previousKey = 0; //Console.WriteLine("PreviousKey:" + e.KeyCode.ToString()); } else { //Console.WriteLine("Key:" + e.KeyCode.ToString()); if (this.config.ActiveControl != null) Console.WriteLine(this.config.ActiveControl.Name); else Console.WriteLine("null"); if (this.config.Visible && this.config.WindowState != FormWindowState.Minimized) { switch (e.KeyCode) { case Keys.Escape: if (this.config.WindowState == FormWindowState.Minimized) { this.config.WindowState = FormWindowState.Normal; } else { if (this.action == Actions.Config) { this.config.Config_FormClosing(this, null); //this.OnExit(); } else { this.configHidden = true; this.config.Hide(); } } break; #if (DEBUG) case Keys.F12: this.config.saveDebug(); MessageBox.Show(this.config.jsonAllPersistant()); /*string log = "HTML saved"; foreach(string s in this.debugLog) { log += s + Environment.NewLine; } MessageBox.Show(log, "Debug log:");*/ break; #endif case Keys.S: if (this.config != Form.ActiveForm) { this.config.Activate(); } break; } } else { Keys KeyCode = e.KeyCode; // fix German keyboard codes for [ ] if (e.Alt && e.Control) { switch (e.KeyCode) { case Keys.D8: KeyCode = Keys.OemOpenBrackets; break; case Keys.D9: KeyCode = Keys.OemCloseBrackets; break; } } if (e.Control && KeyCode >= Keys.D0 && KeyCode <= Keys.D5) { // Control + 0 ... 5 set Rating this.stopTimers(); int rating = KeyCode - Keys.D0; for (int i = 0; i < this.monitors.Length; i++) { if (this.currentMonitor == CM_ALL || this.currentMonitor == i) { this.monitors[i].rateImage(rating); } } this.fileNodes.resetFilter(); this.startTimers(); } else switch (KeyCode) { case Keys.Escape: if (!this.configHidden) { this.OnExit(); } this.configHidden = false; break; case Keys.A: Utils.RunTaskScheduler(@"OpenUrl", "http://www.abscreensavers.com"); break; case Keys.B: Utils.RunTaskScheduler(@"OpenUrl", "http://www.abscreensavers.com/random-photo-screensaver/version-information/"); //this.monitors[i].showInfoOnMonitor("Opened in Explorer Window", false, true); //Process.Start("http://www.abscreensavers.com"); break; case Keys.C: string c; if (!e.Control && this.clipboardReady ) c = Clipboard.GetText(); else c = ""; for (int i = 0; i < this.monitors.Length; i++) { if (this.currentMonitor == CM_ALL || this.currentMonitor == i) { if (this.monitors[i].imagePath() != null) { c += this.monitors[i].imagePath() + Environment.NewLine; if (e.Control) { c += this.monitors[i].quickMetadata.getAsString() + Environment.NewLine + Environment.NewLine; this.monitors[i].showInfoOnMonitor("Metadata copied to clipboard"); } else this.monitors[i].showInfoOnMonitor("Image path added to clipboard"); } } } if (c != "") { Clipboard.SetText(c); this.clipboardReady = true; } break; case Keys.E: for (int i = 0; i < this.monitors.Length; i++) { if (this.currentMonitor == CM_ALL || this.currentMonitor == i) { if (this.monitors[i].imagePath() != null) { if (e.Control) { if (!File.Exists(Convert.ToString(this.config.getPersistant("externalEditor")))) { this.monitors[i].showInfoOnMonitor("External editor: '" + this.config.getPersistant("externalEditor") + "' not found.", true, true); } else { if (Utils.RunTaskScheduler(@"OpenInEditor" + Convert.ToString(i), Convert.ToString(this.config.getPersistant("externalEditor")), "\"" + this.monitors[i].imagePath() + "\"")) { this.monitors[i].showInfoOnMonitor("Opened in external editor", false, true); } } } else { if (Utils.RunTaskScheduler(@"OpenInExplorer" + Convert.ToString(i), "explorer.exe", "/e,/select,\"" + this.monitors[i].imagePath() + "\"")) { this.monitors[i].showInfoOnMonitor("Opened in Explorer Window", false, true); } } } } } if (Convert.ToBoolean(this.config.getPersistantBool("closeAfterImageLocate"))) this.OnExit(); break; case Keys.F: case Keys.NumPad7: for (int i = 0; i < this.monitors.Length; i++) { if (this.currentMonitor == CM_ALL || this.currentMonitor == i) { this.config.setPersistant("showFilenameM" + (i + 1), Convert.ToString(this.monitors[i].InvokeScript("toggle", new string[] { "#filename" }))); } } break; case Keys.H: for (int i = 0; i < this.monitors.Length; i++) { if (this.currentMonitor == CM_ALL || this.currentMonitor == i) { if (this.monitors[i].imagePath() != null) { FileAttributes attributes = File.GetAttributes(this.monitors[i].imagePath()); if ((attributes & FileAttributes.Hidden) == FileAttributes.Hidden) { attributes = attributes & ~FileAttributes.Hidden; this.monitors[i].showInfoOnMonitor("Showing image<br/>(Hidden file attribute cleared)", false, true); } else { attributes = attributes | FileAttributes.Hidden; this.monitors[i].showInfoOnMonitor("Hiding image<br/>(Hidden file attribute set and removed from DB)", false, true); this.fileNodes.deleteFromDB(this.monitors[i].imagePath()); } File.SetAttributes(this.monitors[i].imagePath(), attributes); } } } if (Convert.ToBoolean(this.config.getPersistantBool("closeAfterImageLocate"))) this.OnExit(); break; case Keys.I: for (int i = 0; i < this.monitors.Length; i++) { if (this.currentMonitor == CM_ALL || this.currentMonitor == i) { this.monitors[i].browser.Document.InvokeScript("identify"); } } break; case Keys.M: case Keys.N: for (int i = 0; i < this.monitors.Length; i++) { if (this.currentMonitor == CM_ALL || this.currentMonitor == i) { this.config.setPersistant("showQuickMetadataM" + (i + 1), Convert.ToString(this.monitors[i].InvokeScript("toggle", new string[] { "#quickMetadata" }))); } } break; case Keys.P: for (int i = 0; i < this.monitors.Length; i++) { if (this.currentMonitor == CM_ALL || this.currentMonitor == i) { if (!this.config.syncMonitors() || i == 0) { this.monitors[i].paused = !this.monitors[i].paused; this.monitors[i].timer.Enabled = !this.monitors[i].paused; } else { this.monitors[i].paused = this.monitors[0].paused; this.monitors[i].timer.Enabled = !this.monitors[0].paused; } if (this.monitors[i].timer.Enabled) this.monitors[i].showInfoOnMonitor("|>"); else this.monitors[i].showInfoOnMonitor("||"); } } break; case Keys.R: case Keys.NumPad1: if (this.config.changeOrder() == Config.Order.Random) { this.showInfoOnMonitors("Randomising"); } else { int monitor = this.currentMonitor; if (this.currentMonitor == CM_ALL) monitor = 0; if (this.monitors[monitor].currentImage != null) { this.fileNodes.currentSequentialSeedId = Convert.ToInt32(this.monitors[monitor].currentImage["id"]); } this.showInfoOnMonitors("Sequential"); }; break; case Keys.S: // Don't hide config screen if application is in Config mode if (this.action != Actions.Config) { if (this.config.Visible && this.config.WindowState != FormWindowState.Minimized) this.config.Hide(); else { this.config.Activate(); this.config.Show(); this.config.WindowState = FormWindowState.Normal; } } break; case Keys.T: case Keys.NumPad5: for (int i = 0; i < this.monitors.Length; i++) { if (this.currentMonitor == CM_ALL || this.currentMonitor == i) { string display = "true"; string clockType = "current"; switch(Convert.ToString(this.config.getPersistant("clockM" + (i + 1)))) { case "none": this.config.setPersistant("currentClockM" + (i + 1), "checked"); clockType = "current"; break; case "current": this.config.setPersistant("elapsedClockM" + (i + 1), "checked"); clockType = "elapsed"; break; case "elapsed": this.config.setPersistant("noClockM" + (i + 1), "checked"); clockType = "none"; display = "false"; break; } this.config.setPersistant("clockM" + (i + 1), clockType); this.monitors[i].InvokeScript("setClockType", new string[] { clockType }); this.monitors[i].InvokeScript("toggle", new string[] { "#clock", display }); this.monitors[i].InvokeScript("setClockFormat", new string[] { this.config.getPersistantString("clockFormatM" + (i + 1)) }); } } break; case Keys.U: string updateFilename = this.config.updateFilename(); if (updateFilename == null) { this.showUpdateStatus = true; this.showInfoOnMonitors("Checking for updates.", true, true); this.config.timerCheckUpdates_Tick(this, null); } else { if (e.Control) { string update = this.config.getUpdateVersion(); if (update != null) { this.config.setPersistant("ignoreVersion", update); this.config.setPersistant("ignoreUpdate", Convert.ToString(true)); this.hideUpdateInfo(); this.showInfoOnMonitors("Update " + update + " will be ignored.", true, true); } } else { switch (this.config.isUpdateNewer()) { case true: this.showInfoOnMonitors("Activating update", true, true); if (File.Exists(updateFilename) && Utils.VerifyMD5(updateFilename, this.config.updateFileMD5())) { // Keep call to explorer.exe otherwise update won't start! Utils.RunTaskScheduler(@"Run", "explorer.exe", updateFilename); } else { Utils.RunTaskScheduler(@"Run", "explorer.exe", this.config.updateDownloadUrl()); } this.OnExit(); break; case false: this.showAllUpToDate(); break; case null: break; } } } break; case Keys.W: string[] paths = new string[this.monitors.Length]; for (int i = 0; i < this.monitors.Length; i++) { paths[i] = Convert.ToString(this.monitors[i].imagePath()); if (this.currentMonitor == CM_ALL || this.currentMonitor == i) { this.monitors[i].showInfoOnMonitor("Setting as wallpaper"); } } Wallpaper wallpaper = new Wallpaper(this); wallpaper.generateWallpaper(this.currentMonitor, paths); break; case Keys.X: this.hideUpdateInfo(); break; case Keys.D0: this.currentMonitor = CM_ALL; for (int i = 0; i < this.monitors.Length; i++) { this.monitors[i].browser.Document.InvokeScript("identify"); this.monitors[i].showInfoOnMonitor("Offset (" + this.monitors[i].offset + ")"); } break; case Keys.D1:case Keys.D2:case Keys.D3: case Keys.D4:case Keys.D5:case Keys.D6: case Keys.D7:case Keys.D8:case Keys.D9: int monitorId = e.KeyValue-49; if (monitorId < this.monitors.Length) { this.currentMonitor = monitorId; this.monitors[monitorId].browser.Document.InvokeScript("identify"); this.monitors[monitorId].showInfoOnMonitor("Offset (" + this.monitors[monitorId].offset + ")"); } break; case Keys.NumPad4: case Keys.Left: this.actionPrevious(this.getStep(e)); break; case Keys.NumPad6: case Keys.Right: this.actionNext(this.getStep(e)); break; case Keys.NumPad2: case Keys.Down: this.stopTimers(); for (int i = 0; i < this.monitors.Length; i++) { if (this.currentMonitor == CM_ALL || this.currentMonitor == i) { this.monitors[i].timer.Stop(); this.monitors[i].offsetImage(this.getStep(e)); this.monitors[i].showImage(this.config.getPersistantBool("useTransitionsOnInput")); this.monitors[i].showInfoOnMonitor("v (" + this.monitors[i].offset + ")"); this.monitors[i].startTimer(); } } this.startTimers(); break; case Keys.NumPad8: case Keys.Up: this.stopTimers(); for (int i = 0; i < this.monitors.Length; i++) { if (this.currentMonitor == CM_ALL || this.currentMonitor == i) { this.monitors[i].timer.Stop(); this.monitors[i].offsetImage(this.getStep(e)*-1); this.monitors[i].showImage(this.config.getPersistantBool("useTransitionsOnInput")); this.monitors[i].showInfoOnMonitor("^ (" + this.monitors[i].offset + ")"); this.monitors[i].startTimer(); } } this.startTimers(); break; case Keys.F2: for (int i = 0; i < this.monitors.Length; i++) { if (this.currentMonitor == CM_ALL || this.currentMonitor == i) { this.monitors[i].renameFile(); } } break; case Keys.F12: for (int i = 0; i < this.monitors.Length; i++) { if (this.currentMonitor == CM_ALL || this.currentMonitor == i) { string path = this.monitors[i].saveDebug(); if (e.Control) { if (Utils.RunTaskScheduler(@"OpenInExplorer" + Convert.ToString(i), "explorer.exe", "/e,/select,\"" + path + "\"")) { this.monitors[i].showInfoOnMonitor("Opened in Explorer Window", false, true); } } } } break; case Keys.OemOpenBrackets: case Keys.OemCloseBrackets: case Keys.Oemplus: this.stopTimers(); int deg = 0; string message = ""; switch (KeyCode) { case Keys.OemOpenBrackets: deg = 270; message = "Rotating 270° clock wise"; break; case Keys.OemCloseBrackets: deg = 90; message = "Rotating 90° clock wise"; break; case Keys.Oemplus: deg = 180; message = "Upside down you're turning me"; break; } for (int i = 0; i < this.monitors.Length; i++) { if (this.currentMonitor == CM_ALL || this.currentMonitor == i) { this.monitors[i].info = message; this.monitors[i].showInfoOnMonitor(message, true, true); this.monitors[i].rotateImage(deg); } } //this.fileNodes.toggleMetadataTransaction(); this.fileNodes.resetFilter(); this.startTimers(); break; case Keys.Delete: if (this.config.getPersistantBool("deleteKey")) { this.pauseAll(false); for (int i = 0; i < this.monitors.Length; i++) { if (this.currentMonitor == CM_ALL || this.currentMonitor == i) { bool deleteFile = true; string filename = this.monitors[i].imagePath(); if (filename != null && filename.Length > 0 && File.Exists(filename)) { Cursor.Show(); this.monitors[i].Focus(); if (DialogResult.Yes == MessageBox.Show("Are you sure you want to delete '" + Path.GetFileName(filename) + "'?", "Confirm File Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation)) { deleteFile = true; } else { deleteFile = false; } Cursor.Hide(); if (deleteFile) { BackgroundWorker bgwDeleteFile = new BackgroundWorker(); bgwDeleteFile.DoWork += new DoWorkEventHandler(DoWorkDeleteFile); bgwDeleteFile.RunWorkerAsync(new Object[] {i, filename}); } } } } this.resumeAll(false); } break; default: if (!e.Alt && !e.Control && !e.Shift) { if (!this.config.getPersistantBool("onlyEscapeExits")) { this.OnExit(); } } break; } this.previousKey = e.KeyCode; } } }
public bool resetWallpaper() { Wallpaper wallpaper = new Wallpaper(this.screensaver); wallpaper.resetDefaultWallpaper(); return true; }
/* public void addIdToMetadataQueue(long monitorId, DataRow image) { this.fileDatabase.addIdToMetadataQueue(monitorId, image); } */ private void DoWorkImageFolder(object sender, DoWorkEventArgs e) { // Debug.WriteLine(this.config.getPersistant("folders")); BackgroundWorker worker = sender as BackgroundWorker; // Lower priority to ensure smooth working of main screensaver System.Diagnostics.Process.GetCurrentProcess().PriorityClass = System.Diagnostics.ProcessPriorityClass.BelowNormal; this.bwSender = sender; this.bwEvents = e; if (!this.screensaver.readOnly) { this.swFileScan = new System.Diagnostics.Stopwatch(); this.swMetadata = new System.Diagnostics.Stopwatch(); // Folder purge done in main thread this.swFileScan.Start(); this.processFolders(); this.swFileScan.Stop(); Debug.WriteLine("FileScan: " + swFileScan.ElapsedMilliseconds + "ms"); this.swMetadata.Start(); this.processMetadata(); this.swMetadata.Stop(); Debug.WriteLine("Metadata: " + swMetadata.ElapsedMilliseconds + "ms"); } if (!this.backgroundWorker.CancellationPending) this.fileDatabase.purgeMetadata(); //if (Convert.ToDateTime(this.config.setValue("wallpaperLastChange")).Equals(DateTime.Today)); if (!this.backgroundWorker.CancellationPending) { Wallpaper wallpaper = new Wallpaper(this.screensaver); if (wallpaper.changeWallpaper()) { switch (this.config.getPersistantString("wallpaperSource")) { case "on": // Backwards compatability old settings case "current": wallpaper.generateWallpaper(); break; case "filter": string sql = this.config.getPersistantString("wallpaperSourceFilterSQL"); if (sql != "") wallpaper.generateWallpaperFromSQL(sql); break; } } } //this.cancelCompleteEvent.Set(); /* var command = new SQLiteCommand(conn); command.CommandText = @"SELECT COUNT(id) FROM `FileNodes`;"; //SQLiteDataReader reader = command.ExecuteReader(); //while (reader.Read()) { Debug.WriteLine("Rows in DB: " + Convert.ToInt32(command.ExecuteScalar())); */ }
public void ConfigDocumentCompleted(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e) { if (this.screensaver.action == Screensaver.Actions.Wallpaper) { this.screensaver.initForScreensaverAndWallpaper(); Wallpaper wallpaper = new Wallpaper(this.screensaver); wallpaper.generateWallpaper(); Application.Exit(); } else { this.screensaver.initializeMonitors(); if (!this.configInitialised) { this.setInnerHTML("version", Constants.getNiceVersion()); this.setInnerHTML("versionIE", "(IE:" + this.browser.Version.Major.ToString() + "." + this.browser.Version.Minor.ToString() + ")"); this.browser.Document.InvokeScript("initFancyTreeFolder"); this.browser.Document.InvokeScript("initFancyTreeTransitions"); this.configInitialised = true; } } }