public ChannelDlg(TeamTalk tt, ChannelDlgType dlgtype, int channelid, int parentid) { ttclient = tt; this.dlgtype = dlgtype; InitializeComponent(); if (channelid > 0 && ttclient.GetChannel(channelid, ref chan)) { string path = ""; ttclient.GetChannelPath(channelid, ref path); chanpathTextBox.Text = path; channameTextBox.Text = chan.szName; topicTextBox.Text = chan.szTopic; passwdTextBox.Text = chan.szPassword; maxusersNumericUpDown.Value = chan.nMaxUsers; diskquotaNumericUpDown.Value = chan.nDiskQuota / 1024; permchannelCheckBox.Checked = chan.uChannelType.HasFlag(ChannelType.CHANNEL_PERMANENT); singletxCheckBox.Checked = chan.uChannelType.HasFlag(ChannelType.CHANNEL_SOLO_TRANSMIT); classroomCheckBox.Checked = chan.uChannelType.HasFlag(ChannelType.CHANNEL_CLASSROOM); oprecvonlyCheckBox.Checked = chan.uChannelType.HasFlag(ChannelType.CHANNEL_OPERATOR_RECVONLY); novoiceactCheckBox.Checked = chan.uChannelType.HasFlag(ChannelType.CHANNEL_NO_VOICEACTIVATION); norecordCheckBox.Checked = chan.uChannelType.HasFlag(ChannelType.CHANNEL_NO_RECORDING); switch (chan.audiocodec.nCodec) { case Codec.SPEEX_CODEC: tabControl1.SelectedIndex = (int)CodecTabs.SPEEX_CBR_TAB; speexnbRadioButton.Checked = chan.audiocodec.speex.nBandmode == 0; speexwbRadioButton.Checked = chan.audiocodec.speex.nBandmode == 1; speexuwbRadioButton.Checked = chan.audiocodec.speex.nBandmode == 2; speexqualityTrackBar.Value = chan.audiocodec.speex.nQuality; speexTxInterval.Value = chan.audiocodec.speex.nTxIntervalMSec; speexstereoCheckBox.Checked = chan.audiocodec.speex.bStereoPlayback; break; case Codec.SPEEX_VBR_CODEC: tabControl1.SelectedIndex = (int)CodecTabs.SPEEX_VBR_TAB; speexvbrnbRadioButton.Checked = chan.audiocodec.speex_vbr.nBandmode == 0; speexvbrwbRadioButton.Checked = chan.audiocodec.speex_vbr.nBandmode == 1; speexvbruwbRadioButton.Checked = chan.audiocodec.speex_vbr.nBandmode == 2; speexvbrqualityTrackBar.Value = chan.audiocodec.speex_vbr.nQuality; speexvbrbitrateNumericUpDown.Value = chan.audiocodec.speex_vbr.nBitRate; speexvbrmaxbrNumericUpDown.Value = chan.audiocodec.speex_vbr.nMaxBitRate; speexvbrTxInterval.Value = chan.audiocodec.speex_vbr.nTxIntervalMSec; speexvbrdtxCheckBox.Checked = chan.audiocodec.speex_vbr.bDTX; speexvbrstereoCheckBox.Checked = chan.audiocodec.speex_vbr.bStereoPlayback; break; case Codec.OPUS_CODEC: tabControl1.SelectedIndex = (int)CodecTabs.OPUS_TAB; int i = opussamplerateComboBox.FindString(chan.audiocodec.opus.nSampleRate.ToString()); if (i < 0) { i = 0; } opussamplerateComboBox.SelectedIndex = i; opuschannelsComboBox.SelectedIndex = chan.audiocodec.opus.nChannels - 1; switch (chan.audiocodec.opus.nApplication) { case OpusConstants.OPUS_APPLICATION_AUDIO: opusaudioRadioButton.Checked = true; break; case OpusConstants.OPUS_APPLICATION_VOIP: opusvoipRadioButton.Checked = true; break; default: opusvoipRadioButton.Checked = true; break; } opuscomplexityNumericUpDown.Value = chan.audiocodec.opus.nComplexity; opusfecCheckBox.Checked = chan.audiocodec.opus.bFEC; opusdtxCheckBox.Checked = chan.audiocodec.opus.bDTX; opusvbrCheckBox.Checked = chan.audiocodec.opus.bVBR; opusvbrconstraintCheckBox.Checked = chan.audiocodec.opus.bVBRConstraint; opusbitrateNumericUpDown.Value = chan.audiocodec.opus.nBitRate / 1000; opusTxIntervalNumericUpDown.Value = chan.audiocodec.opus.nTxIntervalMSec; break; } agcCheckBox.Checked = chan.audiocfg.bEnableAGC; gainlevelTrackBar.Value = chan.audiocfg.nGainLevel; } else { string path = ""; ttclient.GetChannelPath(parentid, ref path); chanpathTextBox.Text = path; chan.nParentID = parentid; } UserType usertype = ttclient.GetMyUserType(); switch (dlgtype) { case ChannelDlgType.JOIN_CHANNEL: //when joining a channel 'disk quota' and 'max users' are set to server's default values diskquotaNumericUpDown.ReadOnly = true; maxusersNumericUpDown.ReadOnly = true; goto case ChannelDlgType.CREATE_CHANNEL; case ChannelDlgType.CREATE_CHANNEL: opussamplerateComboBox.SelectedIndex = 0; opuschannelsComboBox.SelectedIndex = 0; opuschannelsComboBox.SelectedIndex = 0; //only admins can change static channel property permchannelCheckBox.Enabled = ttclient.UserRights.HasFlag(UserRight.USERRIGHT_MODIFY_CHANNELS); diskquotaNumericUpDown.ReadOnly = !ttclient.UserRights.HasFlag(UserRight.USERRIGHT_MODIFY_CHANNELS); agcCheckBox.Checked = true; gainlevelTrackBar.Value = 8000; break; case ChannelDlgType.UPDATE_CHANNEL: break; case ChannelDlgType.VIEW_CHANNEL: channameTextBox.ReadOnly = true; topicTextBox.ReadOnly = true; passwdTextBox.ReadOnly = true; oppasswdTextBox.ReadOnly = true; maxusersNumericUpDown.ReadOnly = true; diskquotaNumericUpDown.ReadOnly = true; permchannelCheckBox.Enabled = false; singletxCheckBox.Enabled = false; classroomCheckBox.Enabled = false; oprecvonlyCheckBox.Enabled = false; novoiceactCheckBox.Enabled = false; norecordCheckBox.Enabled = false; agcCheckBox.Enabled = false; gainlevelTrackBar.Enabled = false; tabControl1.Enabled = false; break; } }