/// <summary>
 /// Signs the user out of the device.
 /// </summary>
 protected void SignOut()
 {
     try
     {
         DateTime startTime = DateTime.Now;
         _geniusBytesApp.SignOut();
         OnTimeStatusUpdate("SignOut", startTime, DateTime.Now);
         if (!_geniusBytesApp.VerifySignOut())
         {
             if (!_geniusBytesApp.ExistElementText("Manual Login"))
             {
                 _geniusBytesApp.SignOut();
                 if (!_geniusBytesApp.VerifySignOut())
                 {
                     throw new DeviceWorkflowException("Failed to Verify SignOut.");
                 }
             }
         }
     }
     catch (DeviceWorkflowException)
     {
         if (!_geniusBytesApp.VerifySignOut())
         {
             DateTime startTime = DateTime.Now;
             OnTimeStatusUpdate("Retry SignOut", startTime, DateTime.Now);
             _geniusBytesApp.SignOut();
             if (!_geniusBytesApp.VerifySignOut())
             {
                 throw new DeviceWorkflowException("Verify SingOut Failure.");
             }
         }
     }
 }
        /// <summary>
        /// Set options for the scan job.
        /// </summary>
        /// <returns>The result of the scan.</returns>
        private void SetOptions()
        {
            TimeSpan timeout    = TimeSpan.FromSeconds(5);
            string   optionText = string.Empty;

            if (_activityData.AppName == GeniusBytesScanType.Scan2Mail)
            {
                _geniusBytesApp.AddDocument(timeout);
            }

            _geniusBytesApp.SetFileName(FilePrefix.ToString(), _activityData.AppName);
            _geniusBytesApp.SetImagePreview(_activityData.ImagePreview);

            optionText = _activityData.ColourOption.GetDescription();
            if (!_geniusBytesApp.ExistElementText(optionText))
            {
                UpdateStatus($"Setting color option to {optionText}.");
                _geniusBytesApp.SelectColorOption(_activityData.ColourOption, timeout);
            }

            optionText = _activityData.SidesOption.GetDescription();
            if (!_geniusBytesApp.ExistElementText(optionText))
            {
                UpdateStatus($"Setting sides option to {optionText}.");
                _geniusBytesApp.SelectSidesOption(_activityData.SidesOption, timeout);
            }

            optionText = _activityData.ResolutionOption.GetDescription();
            if (!_geniusBytesApp.ExistElementText(optionText))
            {
                UpdateStatus($"Setting resolution option to {optionText}.");
                _geniusBytesApp.SelectResolutionOption(_activityData.ResolutionOption, timeout);
            }

            if (_activityData.FileType != GeniusByteScanFileTypeOption.Multipage_PDF)
            {
                _geniusBytesApp.SetFileType(_activityData.FileType, timeout);
            }
        }