コード例 #1
0
ファイル: FormSelect.cs プロジェクト: fdstevex/twain-direct
        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);
                }
            });
        }
コード例 #2
0
        ///////////////////////////////////////////////////////////////////////////////
        // 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);
        }
コード例 #3
0
ファイル: Scanner.cs プロジェクト: adamglowacki/twain-direct
        /// <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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
 public TwainCloudAuthorizedEventArgs(TwainCloudTokens tokens)
 {
     Tokens = tokens;
 }