public void StatoscopeForm_DragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { string[] droppedFilePaths = e.Data.GetData(DataFormats.FileDrop, false) as string[]; FileSessionInfo[] sessions = new FileSessionInfo[droppedFilePaths.Length]; for (int i = 0; i < droppedFilePaths.Length; i++) { sessions[i] = new FileSessionInfo(droppedFilePaths[i]); } ProcessLogLoadRequest(sessions); } else if (e.Data.GetDataPresent(DataFormats.Text)) { OpenLog(e.Data.GetData(DataFormats.Text) as string); } }
public void OpenLog(string logURI) { if (logURI == "") { return; } string tempFile = ""; string ssProtocolStr = "statoscope://"; FileSessionInfo session; try { if (logURI.StartsWith(ssProtocolStr)) { Dictionary <string, string> args = null; string argsString = logURI.Substring(ssProtocolStr.Length); // remove statoscope:// string sourceLocation; string localFile = ""; if (argsString.Contains('=')) { // argsString = "logFile=statoscope.bin&platform=ps3" -> args = { logFile: statoscope.bin, platform: ps3 } args = argsString.Split('&').ToDictionary(s => s.Split('=')[0], s => s.Split('=')[1]); sourceLocation = args["logFile"]; } else { // support for the old format sourceLocation = argsString; } DialogResult result = DialogResult.No; // MessageBox.Show("Download request for:\n\n" + sourceLocation + "\n\nWould you like to save a local copy?", "Save downloaded log", MessageBoxButtons.YesNoCancel); switch (result) { case DialogResult.Cancel: return; case DialogResult.Yes: SaveFileDialog fd = new SaveFileDialog(); fd.CheckFileExists = false; fd.FileName = "statoscope.bin"; fd.Filter = "Binary log files (*.bin)|*.bin|All files (*.*)|*.*"; fd.FilterIndex = 0; if (fd.ShowDialog() == DialogResult.OK) { localFile = fd.FileName; } break; } if (localFile == "") { tempFile = Path.GetTempFileName(); localFile = tempFile; } if (localFile == "") { return; } LogDownload.DownloadFile(sourceLocation, localFile); if (args != null) { session = new TelemetrySessionInfo(localFile, sourceLocation, args["peerName"], args["platform"], args["peerType"]); } else { session = new FileSessionInfo(localFile); } } else { session = new FileSessionInfo(logURI); } ProcessLogLoadRequest(new FileSessionInfo[] { session }); } finally { if (tempFile != "") { File.Delete(tempFile); } } }
public FileLogProcessor(FileSessionInfo sessionInfo) { SessionInfo = sessionInfo; }