コード例 #1
0
        public MainWindow()
        {
            InitializeComponent();

            skypeSetUpDone = false;
            contactInfoChangedSetUpDone = false;

            //Set up serial communication
            serial = new serialCom();
            serial.DataReceived += ThreadDataReceived;
            serial.Disconnected += arduinoDisconnected;

            lastColorSend = "";

            //Set up app presence chooser
            for (int i = 0; i < AvailailityTable.GetLength(0); i++)
            {
                CmbAppPresence.Items.Add(AvailailityTable[i, 0]);
            }

            //Timer setup
            dispatcherTimer          = new DispatcherTimer();
            dispatcherTimer.Tick    += new EventHandler(dispatcherTimer_Tick);
            dispatcherTimer.Interval = new TimeSpan(0, 0, Properties.Settings.Default.PingFreq);
            dispatcherTimer.Start();
            connectionCheck = eConnectionCheck.Wait;

            //Set up Skype client and events
            skypeSetUp();
            if (!contactInfoChangedSetUpDone)
            {
                CmbAppPresence.SelectedIndex = 0;
            }
        }
コード例 #2
0
        //--Timer event
        private void dispatcherTimer_Tick(object sender, EventArgs e)
        {
            //check connection with arduino
            switch (connectionCheck)
            {
            case eConnectionCheck.PingReceived:
                connectionCheck = eConnectionCheck.Wait;
                break;

            case eConnectionCheck.Wait:
                serial.start();    //Start connection if not already done
                connectionCheck            = eConnectionCheck.Disconnected;
                lblNoConnection.Visibility = Visibility.Visible;
                break;

            case eConnectionCheck.Disconnected:
                serial.start();    //Start connection if not already done
                break;
            }

            //setup skype if not already done
            if (!skypeSetUpDone)
            {
                skypeSetUp();
            }
        }
コード例 #3
0
 private void arduinoDisconnectedSync(object s, EventArgs e)
 {
     connectionCheck            = eConnectionCheck.Disconnected;
     lblNoConnection.Visibility = Visibility.Visible;
 }
コード例 #4
0
        void ThreadDataReceivedSync(object s, DataEventArgs e)
        {
            if (e.Data != lastColorSend)
            {
                //Set app presence
                switch (e.Data)
                {
                case "PING":
                    serial.Send("PONG");
                    //Set as ping received and hide no connection label
                    connectionCheck            = eConnectionCheck.PingReceived;
                    lblNoConnection.Visibility = Visibility.Hidden;
                    break;

                case "PONG":
                    break;

                case "BLUE":    //disconnected
                    CmbAppPresence.Text = "Libre";
                    break;

                case "GREEN":
                case "ORANGE":
                case "RED":
                    int index = 0;
                    for (index = 0; index < AvailailityTable.GetLength(0); index++)
                    {
                        if (AvailailityTable[index, 1].Equals(e.Data))
                        {
                            break;
                        }
                    }
                    CmbAppPresence.SelectedIndex = index;
                    break;
                }

                //Update Skype presence
                if (lblSkypeDisconnected.Visibility == Visibility.Hidden)
                {
                    switch (CmbAppPresence.SelectedIndex)
                    {
                    case 0:
                        SkypeUpdateAvailability(ContactAvailability.Free);
                        break;

                    case 1:
                    case 5:
                        if (skypeClient.Self.Contact.GetContactInformation(ContactInformationType.Activity).ToString().StartsWith("En "))
                        {
                            break;    //Do not change the availability if in call or conference
                        }
                        SkypeUpdateAvailability(ContactAvailability.Busy);
                        break;

                    case 2:
                        SkypeUpdateAvailability(ContactAvailability.DoNotDisturb);
                        break;

                    case 3:
                        SkypeUpdateAvailability(ContactAvailability.TemporarilyAway);
                        break;

                    case 4:
                        SkypeUpdateAvailability(ContactAvailability.Away);
                        break;
                    }
                }
            }
        }