internal static bool CheckForIcuLocked(string inputLocale, bool runSilent, CallingID caller)
{
bool fOk;
string locale = null;
if (inputLocale != null)
{
int icuName = inputLocale.LastIndexOf(Path.DirectorySeparatorChar);
string icuPortion = inputLocale.Substring(icuName + 1);
int iLocale = icuPortion.LastIndexOf(".");
if (iLocale < 0)
iLocale = icuPortion.Length;
locale = icuPortion.Substring(0, iLocale);
}
do
{
fOk = true;
var lockedFile = Icu.CheckIcuLocked(locale);
if (lockedFile != null)
{
LogFile.AddLine(String.Format(" File Access Error: {0}. Asking user to Retry or Cancel. Caller={1}", lockedFile, caller));
if (runSilent)
{
LogFile.AddLine(" Silently cancelled operation.");
Console.WriteLine(@"Silently cancelled operation.");
return false;
}
string message; // for now
var nl = Environment.NewLine;
switch (caller)
{
case CallingID.CID_RESTORE:
message = String.Format(Properties.Resources.ksCloseFieldWorksForRestore,
lockedFile);
break;
case CallingID.CID_NEW:
message = String.Format(Properties.Resources.ksCloseFieldWorksToInstall,
lockedFile);
break;
default:
message = String.Format(Properties.Resources.ksCannotCompleteChanges,
lockedFile);
break;
}
message = message + nl + nl + "Close Clipboard Converter" + nl + nl + "Close This FW App";
var caption = Properties.Resources.ksMsgHeader;
const MessageBoxButtons buttons = MessageBoxButtons.RetryCancel;
const MessageBoxIcon icon = MessageBoxIcon.Exclamation;
const MessageBoxDefaultButton defButton = MessageBoxDefaultButton.Button1;
var result = MessageBox.Show(message, caption, buttons, icon, defButton);
if (result == DialogResult.Cancel)
{
LogFile.AddLine(" User cancelled operation.");
Console.WriteLine(@"User cancelled operation.");
return false;
}
fOk = false;
}
} while (fOk == false);
return true;
}