Example #1
0
void CtrlrWaveform::handlePopupMenu (const int popupMenuItem)
{
	if (popupMenuItem == 4096)
	{
		if (audioThumbnail->isFullyLoaded())
		{
			FileChooser fc("Load a file", currentFile.getParentDirectory(), owner.getOwner().getOwner().getAudioFormatManager().getWildcardForAllFormats(), true);
			if (fc.browseForFileToOpen())
			{
				loadFromFile (fc.getResult());
			}
		}
		else
		{
			audioThumbnail->clear();
		}
	}
	else if (popupMenuItem == 4097)
	{
		WARN("Not implemented yet :(");
	}
	else if (popupMenuItem == 4098)
	{
		FileChooser fc("Save to an audio file", currentFile.getParentDirectory(), owner.getOwner().getOwner().getAudioFormatManager().getWildcardForAllFormats(), true);

		if (fc.browseForFileToSave(true))
		{
			File outputFile = fc.getResult();

			AudioFormat *format = owner.getOwner().getOwner().getAudioFormatManager().findFormatForFileExtension (outputFile.getFileExtension());

			if (format != nullptr)
			{
				{
					ScopedPointer <AudioFormatWriter> writer (format->createWriterFor (outputFile.createOutputStream(),
																						currentSampleRate,
																						audioThumbnail->getNumChannels(),
																						32,
																						metadataForAudioFiles,
																						qualityForAudioFiles));

					if (writer != nullptr)
					{
						writer->writeFromAudioSampleBuffer (audioBufferCopy, 0, audioBufferCopy.getNumSamples());
					}
					else
					{
						if (owner.getOwner().getDialogStatus())
							WARN ("Can't create AudioFormatWriter sampleRate="+String(currentSampleRate)+", channels="+String(audioThumbnail->getNumChannels())+", bitsPerSample=32, qualityIndex="+String(qualityForAudioFiles));
					}
				}
			}
			else
			{
				if (owner.getOwner().getDialogStatus())
					WARN("Can't find AudioFormat for the file: "+outputFile.getFileName());
				return;
			}
		}
	}
}