示例#1
0
        private async void lstItems_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (_blnSkipRefresh)
            {
                return;
            }

            try
            {
                using (await CursorWait.NewAsync(this, token: _objGenericToken))
                {
                    if (await lstItems.DoThreadSafeFuncAsync(x => x.SelectedValue, _objGenericToken) is
                        MasterIndexEntry objEntry)
                    {
                        await Task.WhenAll(
                            lblSourceLabel.DoThreadSafeAsync(x => x.Visible         = true, _objGenericToken),
                            lblSourceClickReminder.DoThreadSafeAsync(x => x.Visible = true, _objGenericToken),
                            objEntry.DisplaySource.SetControlAsync(lblSource, _objGenericToken));

                        (bool blnSuccess, Task <string> tskNotes) = await _dicCachedNotes.TryGetValueAsync(objEntry, _objGenericToken);

                        if (!blnSuccess)
                        {
                            if (!GlobalSettings.Language.Equals(GlobalSettings.DefaultLanguage,
                                                                StringComparison.OrdinalIgnoreCase) &&
                                (objEntry.TranslatedNameOnPage != objEntry.EnglishNameOnPage ||
                                 objEntry.Source.Page != objEntry.DisplaySource.Page))
                            {
                                // don't check again it is not translated
                                tskNotes = Task.Run(async() =>
                                {
                                    string strReturn = await CommonFunctions.GetTextFromPdfAsync(
                                        objEntry.Source.ToString(),
                                        objEntry.EnglishNameOnPage);
                                    if (string.IsNullOrEmpty(strReturn))
                                    {
                                        strReturn = await CommonFunctions.GetTextFromPdfAsync(
                                            objEntry.DisplaySource.ToString(), objEntry.TranslatedNameOnPage);
                                    }
                                    return(strReturn);
                                }, _objGenericToken);
                            }
                            else
                            {
                                tskNotes = Task.Run(() =>
                                                    CommonFunctions.GetTextFromPdfAsync(
                                                        objEntry.Source.ToString(),
                                                        objEntry.EnglishNameOnPage), _objGenericToken);
                            }

                            await _dicCachedNotes.TryAddAsync(objEntry, tskNotes, _objGenericToken);
                        }

                        string strNotes = await tskNotes;
                        await txtNotes.DoThreadSafeAsync(x =>
                        {
                            x.Text    = strNotes;
                            x.Visible = true;
                        }, _objGenericToken);
                    }
                    else
                    {
                        await Task.WhenAll(
                            lblSourceLabel.DoThreadSafeAsync(x => x.Visible         = false, _objGenericToken),
                            lblSourceClickReminder.DoThreadSafeAsync(x => x.Visible = false, _objGenericToken),
                            SourceString.Blank.SetControlAsync(lblSource, _objGenericToken),
                            txtNotes.DoThreadSafeAsync(x => x.Visible = false, _objGenericToken));
                    }
                }
            }
            catch (OperationCanceledException)
            {
                //swallow this
            }
        }
示例#2
0
        private async void lstItems_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (_blnSkipRefresh)
            {
                return;
            }
            using (CursorWait.New(this))
            {
                if (lstItems.DoThreadSafeFunc(x => x.SelectedValue) is MasterIndexEntry objEntry)
                {
                    await lblSourceLabel.DoThreadSafeAsync(x => x.Visible = true);

                    await lblSource.DoThreadSafeAsync(x => x.Visible = true);

                    await lblSourceClickReminder.DoThreadSafeAsync(x => x.Visible = true);

                    await lblSource.DoThreadSafeAsync(x => x.Text = objEntry.DisplaySource.ToString());

                    await lblSource.DoThreadSafeAsync(x => x.ToolTipText = objEntry.DisplaySource.LanguageBookTooltip);

                    (bool blnSuccess, Task <string> tskNotes) = await _dicCachedNotes.TryGetValueAsync(objEntry);

                    if (!blnSuccess)
                    {
                        if (!GlobalSettings.Language.Equals(GlobalSettings.DefaultLanguage,
                                                            StringComparison.OrdinalIgnoreCase) &&
                            (objEntry.TranslatedNameOnPage != objEntry.EnglishNameOnPage ||
                             objEntry.Source.Page != objEntry.DisplaySource.Page))
                        {
                            // don't check again it is not translated
                            tskNotes = Task.Run(async() =>
                            {
                                string strReturn = await CommonFunctions.GetTextFromPdfAsync(objEntry.Source.ToString(),
                                                                                             objEntry.EnglishNameOnPage);
                                if (string.IsNullOrEmpty(strReturn))
                                {
                                    strReturn = await CommonFunctions.GetTextFromPdfAsync(
                                        objEntry.DisplaySource.ToString(), objEntry.TranslatedNameOnPage);
                                }
                                return(strReturn);
                            });
                        }
                        else
                        {
                            tskNotes = Task.Run(() =>
                                                CommonFunctions.GetTextFromPdfAsync(objEntry.Source.ToString(),
                                                                                    objEntry.EnglishNameOnPage));
                        }

                        await _dicCachedNotes.TryAddAsync(objEntry, tskNotes);
                    }

                    string strNotes = await tskNotes;
                    await txtNotes.DoThreadSafeAsync(x => x.Text = strNotes);

                    await txtNotes.DoThreadSafeAsync(x => x.Visible = true);
                }
                else
                {
                    await lblSourceLabel.DoThreadSafeAsync(x => x.Visible = false);

                    await lblSource.DoThreadSafeAsync(x => x.Visible = false);

                    await lblSourceClickReminder.DoThreadSafeAsync(x => x.Visible = false);

                    await txtNotes.DoThreadSafeAsync(x => x.Visible = false);
                }
            }
        }