using System.Windows.Forms;\r
using System.IO;\r
using System.Runtime.InteropServices;\r
-namespace AudioRecorder\r
-{\r
+using System.Threading;\r
+\r
+namespace AudioRecorder {\r
public delegate void RefreshPanelDelegate();\r
\r
- public partial class MainForm : Form, IMainForm\r
- {\r
+ public partial class MainForm : Form, IMainForm {\r
\r
[DllImport("user32.dll")]\r
public static extern int SendMessage(IntPtr hWnd, int wMsg, int wParam, int lParam);\r
private String currentFileName;\r
private String currentFilePath;\r
private bool recording;\r
- private Timer countDownTimer;\r
+ private System.Windows.Forms.Timer countDownTimer;\r
private int countDown = 3;\r
- private Point startingPanelLocation;\r
- private Point originalPanelLocation;\r
private MMDevice currentDevice;\r
private bool pausing;\r
private float volumeHeight;\r
private RefreshPanelDelegate refreshPanel;\r
\r
- public MainForm()\r
- {\r
+ public MainForm() {\r
InitializeComponent();\r
InitializeControlTexts();\r
customTrackBar1.MainForm = this;\r
- try\r
- {\r
+ try {\r
settings = JsonSettings.GetInstance(CONFIG_FILE);\r
fileWorker = new FileWorker();\r
- countDownTimer = new Timer();\r
+ countDownTimer = new System.Windows.Forms.Timer();\r
countDownTimer.Interval = 1000;\r
countDownTimer.Tick += new EventHandler(timer_Tick);\r
selectorForm = new AudioDeviceSelectorForm(this);\r
if (selectorForm.isDeviceConnected())\r
saveAudioDeviceToConfig();\r
timeCodeWorker = new TimeCodeWorker(timecodeLabel);\r
+ CreatenewThreadToListenMasterPeekVolume();\r
}\r
- catch (Exception e)\r
- {\r
+ catch (Exception e) {\r
MessageBox.Show(e.Message, StringResources.ERROR_TITLE, MessageBoxButtons.OK, MessageBoxIcon.Error);\r
}\r
}\r
\r
- private void InitializeControlTexts()\r
- {\r
+ private void CreatenewThreadToListenMasterPeekVolume() {\r
+ new Thread(() => {\r
+ while (true) {\r
+ try {\r
+ int panelHeight = (int)Math.Round(currentDevice.AudioMeterInformation.MasterPeakValue * 100);\r
+ Debug.WriteLine(String.Format("panelHeight {0}", panelHeight));\r
+ // int panelHeight = (int)Math.Floor(currentDevice.AudioMeterInformation.MasterPeakValue * 79);\r
+ setPanelSizeHeight(panelHeight);\r
+ Thread.Sleep(1);\r
+ }\r
+ catch (Exception e) {\r
+ Console.WriteLine(e.Message);\r
+ }\r
+ }\r
+ }).Start();\r
+ }\r
+\r
+ private void InitializeControlTexts() {\r
recordButton.Text = Resources.FELVETEL;\r
stopButton.Text = Resources.LEALLITAS;\r
pauseButton.Text = Resources.SZUNET;\r
playButton.Text = Resources.LEJATSZAS;\r
}\r
\r
- private void setVolumeTrackerEdgesAndValue()\r
- {\r
- if (currentDevice != null)\r
- {\r
+ private void setVolumeTrackerEdgesAndValue() {\r
+ if (currentDevice != null) {\r
customTrackBar1.setMinimumMaximumSizesAndVolume((int)currentDevice.AudioEndpointVolume.VolumeRange.MinDecibels,\r
(int)currentDevice.AudioEndpointVolume.VolumeRange.MaxDecibels,\r
(int)currentDevice.AudioEndpointVolume.MasterVolumeLevel);\r
}\r
}\r
\r
- private void saveAudioDeviceToConfig()\r
- {\r
+ private void saveAudioDeviceToConfig() {\r
if (String.IsNullOrEmpty(settings.getAudioDeviceName()))\r
recordButton.Enabled = false;\r
- else\r
- {\r
+ else {\r
List<String> devices = selectorForm.getDeviceNames();\r
int indexOfDeviceName = devices.IndexOf(settings.getAudioDeviceName());\r
if (indexOfDeviceName == -1)\r
}\r
}\r
\r
- public void initWavRecorder(int index, String selectedAudioName)\r
- {\r
+ public void initWavRecorder(int index, String selectedAudioName) {\r
int inputDeviceIndex = index;\r
this.selectedAudioName = selectedAudioName;\r
currentDevice = selectorForm.getDevices()[index];\r
+ currentDevice.AudioEndpointVolume.OnVolumeNotification += AudioEndpointVolume_OnVolumeNotification;\r
recorder = new WavRecorder(inputDeviceIndex, currentDevice, this);\r
recordButton.Enabled = true;\r
recordButton.BackColor = Color.Lime;\r
customTrackBar1.setTickLabelLocationByPercentage(settings.getLoudValue());\r
}\r
\r
- public void setPanelSizeHeight(float height)\r
- {\r
- volumeHeight = height;\r
- if (verticalProgressBar1.InvokeRequired) {\r
- refreshPanel = RefreshVolumePanel;\r
- this.Invoke(refreshPanel);\r
- } else {\r
- RefreshVolumePanel();\r
- }\r
+ void AudioEndpointVolume_OnVolumeNotification(AudioVolumeNotificationData data) {\r
+ customTrackBar1.SetValue((int)currentDevice.AudioEndpointVolume.MasterVolumeLevel);\r
+ }\r
+\r
+ public void setPanelSizeHeight(float height) {\r
+ volumeHeight = height;\r
+ if (verticalProgressBar1.InvokeRequired) {\r
+ refreshPanel = RefreshVolumePanel;\r
+ this.Invoke(refreshPanel);\r
+ } else\r
+ RefreshVolumePanel();\r
}\r
\r
private void RefreshVolumePanel() {\r
- if(volumeHeight > settings.getLoudValue())\r
- SendMessage(verticalProgressBar1.Handle, 1040, 2, 0);\r
- else\r
- SendMessage(verticalProgressBar1.Handle, 1040, 1, 0);\r
- verticalProgressBar1.Value = (int)volumeHeight;\r
+ try {\r
+ if (recording) {\r
+ if (volumeHeight >= settings.getLoudValue())\r
+ SendMessage(verticalProgressBar1.Handle, 1040, 2, 0);\r
+ else\r
+ SendMessage(verticalProgressBar1.Handle, 1040, 1, 0);\r
+ verticalProgressBar1.Value = (int)volumeHeight;\r
+ }\r
+ } catch (Exception e) {\r
+ Console.WriteLine(e.Message);\r
+ }\r
}\r
\r
- private void Form1_Load(object sender, EventArgs e)\r
- {\r
+ private void Form1_Load(object sender, EventArgs e) {\r
\r
}\r
\r
- private void stop_Click(object sender, EventArgs e)\r
- {\r
+ private void stop_Click(object sender, EventArgs e) {\r
stopRecording();\r
}\r
\r
- private void stopRecording()\r
- {\r
- try\r
- {\r
+ private void stopRecording() {\r
+ try {\r
recording = false;\r
recordButton.Enabled = true;\r
stopButton.Enabled = false;\r
recordButton.BackColor = Color.Lime;\r
copyFileToUncPath();\r
}\r
- catch (Exception e)\r
- {\r
+ catch (Exception e) {\r
MessageBox.Show(e.Message, StringResources.ERROR_TITLE, MessageBoxButtons.OK, MessageBoxIcon.Error);\r
}\r
}\r
\r
- private void copyFileToUncPath()\r
- {\r
+ private void copyFileToUncPath() {\r
FileInfo fileInfo = new FileInfo(recorder.getCurentWavFilePath());\r
String wavFileName = fileInfo.Name;\r
String wavUncPath = DetermineWorkingDirectory(settings.getUncPath(), fileInfo.Name);\r
if (!Directory.Exists(wavUncPath))\r
Directory.CreateDirectory(wavUncPath);\r
wavUncPath = Path.Combine(wavUncPath, fileInfo.Name);\r
- //String.Format("{0}{1}{2}", settings.getUncPath(), Path.DirectorySeparatorChar, wavFileName);\r
+ //String.Format("{0}{1}{2}", settings.getUncPath(), Path.DirectorySeparatorChar, wavFileName);\r
fileWorker.copy(recorder.getCurentWavFilePath(), wavUncPath);\r
}\r
\r
protected String DetermineWorkingDirectory(string path, string ID) {\r
string result = path;\r
string subDir = ID;\r
- if (ID.Contains("_")) {\r
+ if (ID.Contains("_")) \r
subDir = ID.Split('_')[0];\r
- }\r
- if (ID.Contains(".")) {\r
+ if (ID.Contains(".")) \r
subDir = ID.Split('.')[0];\r
- }\r
result = Path.Combine(path, subDir);\r
return result;\r
}\r
\r
- private void record_Click(object sender, EventArgs e)\r
- {\r
+ private void record_Click(object sender, EventArgs e) {\r
FileNameForm nameForm = new FileNameForm(this, settings);\r
nameForm.ShowDialog();\r
}\r
\r
- private void startRecord()\r
- {\r
- try\r
- {\r
+ private void startRecord() {\r
+ try {\r
recording = true;\r
recorder.StartRecording(currentFilePath);\r
timeCodeWorker.Start();\r
stopButton.BackColor = Color.Red;\r
recordButton.BackColor = Color.White;\r
}\r
- catch (Exception e)\r
- {\r
+ catch (Exception e) {\r
MessageBox.Show(e.Message, StringResources.ERROR_TITLE, MessageBoxButtons.OK, MessageBoxIcon.Error);\r
}\r
}\r
\r
- public void recordFireEvent(String currentFileName, string id)\r
- {\r
+ public void recordFireEvent(String currentFileName, string id) {\r
recordButton.Enabled = false;\r
String path = String.Format("{0}\\{1}", settings.getWorkingDir(), id);\r
if (!Directory.Exists(path))\r
countDownTimer.Start();\r
}\r
\r
- private void SetCurrentFileNameAndPath(string currentFileName, string path)\r
- {\r
+ private void SetCurrentFileNameAndPath(string currentFileName, string path) {\r
String filePath = String.Format("{0}\\{1}", path, currentFileName);\r
int i = 0;\r
this.currentFileName = currentFileName;\r
\r
}\r
\r
- void timer_Tick(object sender, EventArgs e)\r
- {\r
+ void timer_Tick(object sender, EventArgs e) {\r
recordButton.Text = countDown.ToString();\r
countDown -= 1;\r
- if (countDown < 0)\r
- {\r
+ if (countDown < 0) {\r
countDownTimer.Stop();\r
recordButton.Text = StringResources.RECORD;\r
startRecord();\r
}\r
}\r
\r
- private void setToolTipToFileNameLabel(String filePath)\r
- {\r
+ private void setToolTipToFileNameLabel(String filePath) {\r
ToolTip toolTip = new ToolTip();\r
String uncPath = String.Format("{0}{1}{2}", settings.getUncPath(), Path.DirectorySeparatorChar, currentFileName);\r
String tip = String.Format("{0}\n{1}", filePath, uncPath);\r
toolTip.SetToolTip(fileNameLabel, tip);\r
}\r
\r
- private void selectAudioButton_Click(object sender, EventArgs e)\r
- {\r
+ private void selectAudioButton_Click(object sender, EventArgs e) {\r
showAudioDeviceSelectorForm();\r
}\r
\r
- private void showAudioDeviceSelectorForm()\r
- {\r
+ private void showAudioDeviceSelectorForm() {\r
selectorForm = new AudioDeviceSelectorForm(this);\r
if (!selectorForm.isDisposed())\r
selectorForm.ShowDialog();\r
}\r
\r
- private void MainForm_FormClosing(object sender, FormClosingEventArgs e)\r
- {\r
- if (recording)\r
- {\r
+ private void MainForm_FormClosing(object sender, FormClosingEventArgs e) {\r
+ if (recording) {\r
DialogResult result = MessageBox.Show(StringResources.ARE_YOU_SURE_TO_QUIT_DURING_RECORDING,\r
StringResources.EXIT_TITLE, MessageBoxButtons.YesNo);\r
- if (result == DialogResult.Yes)\r
- {\r
+ if (result == DialogResult.Yes) {\r
stopRecording();\r
deleteTemporariFiles();\r
- }\r
- else\r
+ } else\r
e.Cancel = true;\r
- }\r
- else\r
- {\r
+ } else {\r
if (String.IsNullOrEmpty(settings.getAudioDeviceName()))\r
settings.addSelectedAudio(selectedAudioName, CONFIG_FILE);\r
deleteTemporariFiles();\r
}\r
}\r
\r
- private void deleteTemporariFiles()\r
- {\r
- if (recorder != null)\r
- {\r
+ private void deleteTemporariFiles() {\r
+ if (recorder != null) {\r
List<String> createdFiles = recorder.getCreatedFiles();\r
fileWorker.deleteFiles(createdFiles);\r
}\r
}\r
\r
- public void disableRecordButton()\r
- {\r
+ public void disableRecordButton() {\r
recordButton.Enabled = false;\r
}\r
\r
- private void playButton_Click(object sender, EventArgs e)\r
- {\r
+ private void playButton_Click(object sender, EventArgs e) {\r
Process process = new Process();\r
ProcessStartInfo startInfo = new ProcessStartInfo();\r
startInfo.FileName = new FileInfo(currentFilePath).FullName;\r
process.Start();\r
}\r
\r
- private void volumeTrackBar_ValueChanged(object sender, EventArgs e)\r
- {\r
+ private void volumeTrackBar_ValueChanged(object sender, EventArgs e) {\r
TrackBar trackbar = sender as TrackBar;\r
if (trackbar == null)\r
return;\r
currentDevice.AudioEndpointVolume.MasterVolumeLevel = value;\r
}\r
\r
- private void pauseButton_Click(object sender, EventArgs e)\r
- {\r
+ private void pauseButton_Click(object sender, EventArgs e) {\r
pausing = !pausing;\r
recorder.pauseRecording(pausing);\r
timeCodeWorker.Pause(pausing);\r
}\r
\r
- public void volumeChanged(object sender, EventArgs e)\r
- {\r
+ public void volumeChanged(object sender, EventArgs e) {\r
TrackBar trackbar = sender as TrackBar;\r
if (trackbar == null)\r
return;\r