private void LoadCloudScanners(TwainCloudTokens cloudTokens) { var apiRoot = CloudManager.GetCloudApiRoot(); var client = new TwainCloudClient(apiRoot, cloudTokens); var applicationManager = new ApplicationManager(client); applicationManager.GetScanners().ContinueWith(task => { var scanners = task.Result; foreach (var s in scanners) { ListViewItem listviewitem = new ListViewItem ( new[] { s.Name, s.Description, s.Manufacturer, CloudManager.GetScannerCloudUrl(s), "(no ip)" } ); listviewitem.Tag = s; AddCloudScanner(listviewitem); // Fix our buttons... SetButtons(ButtonState.Devices); } }); }
/////////////////////////////////////////////////////////////////////////////// // Public Methods... /////////////////////////////////////////////////////////////////////////////// #region Public Methods... /// <summary> /// /// </summary> /// <param name="a_dnssd">The mDNS info</param> /// <param name="a_fScale">change the scale of the form</param> /// <param name="a_twaincloudtokens">TWAIN Cloud access tokens</param> /// <param name="a_blFoundOne">return how we did</param> /// <param name="a_resourcemanager">localization</param> public FormSelect(ref Dnssd a_dnssd, float a_fScale, TwainCloudTokens a_twaincloudtokens, out bool a_blFoundOne, ResourceManager a_resourcemanager) { // Init stuff... InitializeComponent(); MinimizeBox = false; MaximizeBox = false; Config.ElevateButton(m_buttonManageTwainLocal.Handle); m_listviewSelect.MouseDoubleClick += new MouseEventHandler(m_listviewSelect_MouseDoubleClick); m_resourcemanager = a_resourcemanager; // Listview Headers... m_listviewSelect.Columns.Add("Name"); m_listviewSelect.Columns.Add("Device"); m_listviewSelect.Columns.Add("Note"); m_listviewSelect.Columns.Add("Address"); m_listviewSelect.Columns.Add("IPv4/IPv6"); // Scaling... if ((a_fScale > 0) && (a_fScale != 1)) { this.Font = new Font(this.Font.FontFamily, this.Font.Size * a_fScale, this.Font.Style); } // Localize... m_buttonOpen.Text = Config.GetResource(m_resourcemanager, "strButtonOpen"); m_labelSelect.Text = Config.GetResource(m_resourcemanager, "strLabelSelectScanner"); this.Text = Config.GetResource(m_resourcemanager, "strFormSelectTitle"); // Hang onto this... m_dnssd = a_dnssd; m_twaincloudtokens = a_twaincloudtokens; // Load the list box... Thread.Sleep(1000); a_blFoundOne = LoadScannerNames(false); // Put the focus on the select box... ActiveControl = m_listviewSelect; // Start our timer... m_timerLoadScannerNames = new System.Windows.Forms.Timer(); m_timerLoadScannerNames.Tick += new EventHandler(TimerEventProcessor); m_timerLoadScannerNames.Interval = 15000; m_timerLoadScannerNames.Tag = this; m_timerLoadScannerNames.Start(); a_blFoundOne |= LoadCloudScanners(m_twaincloudtokens); }
/// <summary> /// Start polling for tasks... /// </summary> /// <returns>true on success</returns> public async Task <bool> MonitorTasksStart() { DeviceSession devicesession = null; string szCloudApiRoot = ""; string szCloudScannerId = ""; var cloudScanner = GetCurrentCloudScanner(); // If cloud fails, we should keep going so that the // user can still run TWAIN Local... if (cloudScanner != null) { try { szCloudApiRoot = CloudManager.GetCloudApiRoot(); var twaincloudtokens = new TwainCloudTokens(cloudScanner.AuthorizationToken, cloudScanner.RefreshToken); var twaincloudclient = new TwainCloudClient(szCloudApiRoot, twaincloudtokens); twaincloudclient.TokensRefreshed += (sender, args) => { cloudScanner.AuthorizationToken = args.Tokens.AuthorizationToken; cloudScanner.RefreshToken = args.Tokens.RefreshToken; SaveScannerRegistration(cloudScanner); }; devicesession = new DeviceSession(twaincloudclient, cloudScanner.Id); szCloudScannerId = cloudScanner.Id; } catch (Exception exception) { Log.Error("MonitorTasksStart: failed to initialize cloud, has it been registered? - " + exception.Message); devicesession = null; } } // Start monitoring for commands... var blSuccess = await m_twainlocalscannerdevice.DeviceHttpServerStart(devicesession, szCloudApiRoot, szCloudScannerId); if (!blSuccess) { Log.Error("MonitorTasksStart: DeviceHttpServerStart failed..."); return(false); } // All done... return(true); }
private bool LoadCloudScanners(TwainCloudTokens a_twaincloudtokens) { // The user hasn't identified themselves... if (a_twaincloudtokens == null) { return(false); } var apiRoot = CloudManager.GetCloudApiRoot(); var client = new TwainCloudClient(apiRoot, a_twaincloudtokens); var applicationManager = new ApplicationManager(client); applicationManager.GetScanners().ContinueWith(task => { var scanners = task.Result; foreach (var s in scanners) { ListViewItem listviewitem = new ListViewItem ( new[] { s.Name, s.Id, s.Description, CloudManager.GetScannerCloudUrl(s), "(no ip)" } ); listviewitem.Tag = s; AddCloudScanner(listviewitem); // Fix our buttons... SetButtons(ButtonState.Devices); } }); // All done, there's no guarantee that we have any // cloud scanners, but since the user identified // themselves, we can proceed... return(true); }
private async void connectButton_Click_1(object sender, EventArgs e) { var scanner = registeredDevicesComboBox.SelectedItem as CloudScanner; var tokens = new TwainCloudTokens(scanner.AuthorizationToken, scanner.RefreshToken); var client = new TwainCloudClient(Constants.ApiRoot, tokens); client.TokensRefreshed += (o, args) => { scanner.AuthorizationToken = args.Tokens.AuthorizationToken; scanner.RefreshToken = args.Tokens.RefreshToken; SaveScannerRegistration(scanner); }; var deviceSession = new DeviceSession(client, scanner.Id); deviceSession.Received += async(o, message) => { Debug.WriteLine("cloud message received: " + message); await deviceSession.Send("message received"); }; await deviceSession.Connect(scanner.Id); }
public TwainCloudAuthorizedEventArgs(TwainCloudTokens tokens) { Tokens = tokens; }