示例#1
0
        public GXDLMSActivityCalendarSeasonProfileDlg(GXDLMSSeasonProfile target, GXDLMSWeekProfile[] weekProfiles)
        {
            InitializeComponent();
            Target           = target;
            WeekProfile      = weekProfiles;
            AsciiBtn.Checked = GXHelpers.IsAscii(Target.Name);
            NameTb.Text      = GXHelpers.GetString(Target.Name);
            if (Target.Start != DateTime.MinValue)
            {
                StartTb.Text = Target.Start.ToFormatString();
            }
            int pos, selected = -1;

            if (weekProfiles != null)
            {
                foreach (GXDLMSWeekProfile it in weekProfiles)
                {
                    pos = WeekNameCb.Items.Add(it);
                    if (selected == -1 && StructuralComparisons.StructuralEqualityComparer.Equals(Target.WeekName, it.Name))
                    {
                        selected = pos;
                    }
                }
                if (selected != -1)
                {
                    WeekNameCb.SelectedIndex = selected;
                }
            }
            OkBtn.Enabled = weekProfiles != null && weekProfiles.Length != 0;
        }
        private void UpdateSeasonProfile(GXDLMSSeasonProfile it, ListViewItem li, ListView target)
        {
            string str;

            if (GXHelpers.IsAscii(it.Name))
            {
                str = ASCIIEncoding.ASCII.GetString(it.Name);
            }
            else
            {
                str = GXDLMSTranslator.ToHex(it.Name);
            }
            if (li == null)
            {
                li = target.Items.Add(str);
                li.SubItems.AddRange(new string[] { "", "" });
                li.Tag = it;
            }
            else
            {
                li.SubItems[0].Text = str;
            }
            li.SubItems[1].Text = it.Start.ToFormatString();
            if (GXHelpers.IsAscii(it.WeekName))
            {
                li.SubItems[2].Text = ASCIIEncoding.ASCII.GetString(it.WeekName);
            }
            else
            {
                li.SubItems[2].Text = GXDLMSTranslator.ToHex(it.WeekName);
            }
        }
        private void EditSeasonProfile(GXDLMSActivityCalendar target, GXDLMSSeasonProfile[] list, int index, ListViewItem li, ListView lv)
        {
            GXDLMSSeasonProfile item = (GXDLMSSeasonProfile)li.Tag;
            GXDLMSActivityCalendarSeasonProfileDlg dlg = new GXDLMSActivityCalendarSeasonProfileDlg(item, index == 3 ? target.WeekProfileTableActive : target.WeekProfileTablePassive);

            if (dlg.ShowDialog(this) == DialogResult.OK)
            {
                UpdateSeasonProfile(item, li, lv);
                errorProvider1.SetError(lv, Properties.Resources.ValueChangedTxt);
                Target.UpdateDirty(index, list);
            }
        }
        private void RemoveSeasonProfile(GXDLMSActivityCalendar target, int index, ListView lv)
        {
            List <GXDLMSSeasonProfile> entries = new List <GXDLMSSeasonProfile>();

            if (index == 3)
            {
                if (target.SeasonProfileActive != null)
                {
                    entries.AddRange(target.SeasonProfileActive);
                }
            }
            else
            {
                if (target.SeasonProfilePassive != null)
                {
                    entries.AddRange(target.SeasonProfilePassive);
                }
            }

            while (lv.SelectedItems.Count != 0)
            {
                ListViewItem        li   = lv.SelectedItems[0];
                GXDLMSSeasonProfile item = (GXDLMSSeasonProfile)li.Tag;
                li.Remove();
                errorProvider1.SetError(lv, Properties.Resources.ValueChangedTxt);
                if (index == 3)
                {
                    Target.UpdateDirty(index, target.SeasonProfileActive);
                }
                else
                {
                    Target.UpdateDirty(index, target.SeasonProfilePassive);
                }
                entries.Remove(item);
            }
            if (index == 3)
            {
                target.SeasonProfileActive = entries.ToArray();
            }
            else
            {
                target.SeasonProfilePassive = entries.ToArray();
            }
        }
        private void AddSeasonProfile(GXDLMSActivityCalendar target, int index, ListView li)
        {
            GXDLMSSeasonProfile item = new GXDLMSSeasonProfile();

            GXDLMSSeasonProfile[] list;
            if (index == 3)
            {
                list = target.SeasonProfileActive;
            }
            else
            {
                list = target.SeasonProfilePassive;
            }
            GXDLMSActivityCalendarSeasonProfileDlg dlg = new GXDLMSActivityCalendarSeasonProfileDlg(item, index == 3 ? target.WeekProfileTableActive : target.WeekProfileTablePassive);

            if (dlg.ShowDialog(this) == DialogResult.OK)
            {
                List <GXDLMSSeasonProfile> items = new List <GXDLMSSeasonProfile>();
                if (list != null)
                {
                    items.AddRange(list);
                }
                items.Add(item);
                if (index == 3)
                {
                    target.SeasonProfileActive = items.ToArray();
                }
                else
                {
                    target.SeasonProfilePassive = items.ToArray();
                }
                UpdateSeasonProfile(item, null, li);
                errorProvider1.SetError(li, Properties.Resources.ValueChangedTxt);
                target.UpdateDirty(index, list);
            }
        }