Example #1
0
 public static void prepareGruppGrid( vdXceed.vdPlainGrid ug, bool readOnly )
 {
     ug.G.ScrollBars = GridScrollBars.ForcedVertical;
     ug.addColumn("#", typeof (int), 25);
     var col = ug.addColumn("", typeof (int), 30);
     col.HorizontalAlignment = Xceed.Grid.HorizontalAlignment.Center;
     col.CellViewer = new GridStatusCellPainter();
     ug.addColumn("Typ", 35);
     ug.addColumn("Grupp", 150);
     ug.addColumn("Slogan", 70);
     ug.addColumn("På b", typeof (int), 35);
     ug.addColumn("Frv", typeof (int), 35);
     ug.addColumn("Utg", typeof (int), 35);
     ug.addColumn("GEx", typeof (int), 35);
     ug.addColumn("", 20);
     ug.addColumn("", 20);
     foreach (Column c in ug.G.Columns)
         c.ReadOnly = readOnly || (c.Index != 0 && c.Index != 8);
     ug.setColumnFullWidth(3);
 }
        public static void checkErrorsX(
			Skola skola,
			vdXceed.vdPlainGrid grd,
			out string strText,
			out bool fSevere )
        {
            var sb = new System.Text.StringBuilder();
            fSevere = false;

            {
                var strOklar = "";
                var strBeskrSakn = "";
                var fHasAtLeastOneGroupPicture = false;
                var dicScanCodesWithPortraits = new Dictionary<string, Person>();

                foreach (Grupp grupp in skola.Grupper.GrupperIOrdning())
                {
                    if (grupp.GruppTyp == GruppTyp.GruppInfällning)
                        continue;

                    if (!string.IsNullOrEmpty(grupp.ThumbnailKey) /*&& grupp.Thumbnails.Count != 0*/)
                    {
                        switch (grupp.Numrering)
                        {
                            case GruppNumrering.Klar:
                            case GruppNumrering.EjNamnsättning:
                            case GruppNumrering.EjNumrering:
                                if (grd == null)
                                    break;
                                var strTyp = string.Empty;
                                if ((grupp.Special & TypeOfGroupPhoto.Gruppbild) != 0)
                                    strTyp += "G";
                                if ((grupp.Special & TypeOfGroupPhoto.Katalog) != 0)
                                    strTyp += "K";
                                if ((grupp.Special & TypeOfGroupPhoto.Spex) != 0)
                                    strTyp += "P";
                                if ((grupp.Special & TypeOfGroupPhoto.SkyddadId) != 0)
                                    strTyp += "S";
                                var row = grd.addRow();
                                row.Cells[0].Value = grd.G.DataRows.Count;
                                row.Cells[1].Value = (int) grupp.Numrering;
                                row.Cells[2].Value = strTyp;
                                row.Cells[3].Value = grupp.Namn;
                                row.Cells[4].Value = grupp.Slogan;
                                row.Cells[5].Value = grupp.PersonerNärvarande.Count;
                                row.Cells[6].Value = grupp.PersonerFrånvarande.Count;
                                row.Cells[7].Value = grupp.PersonerSlutat.Count;
                                if (grupp.AntalGratisEx >= 0)
                                    row.Cells[8].Value = grupp.AntalGratisEx;
                                row.Cells[9].Value = string.IsNullOrEmpty(grupp.ThumbnailGrayKey) ? "" : "G";
                                row.EndEdit();
                                row.Tag = grupp;
                                break;
                            default:
                                strOklar += "  " + grupp.Namn + "\r\n";
                                break;
                        }
                        fHasAtLeastOneGroupPicture = true;

                        var tn = grupp.Thumbnails[grupp.ThumbnailKey];
                        if (tn == null || !grupp.ThumbnailLocked )
                        {
                            fSevere = true;
                            sb.AppendFormat("FEL:\r\nSaknar vald och låst bild för gruppen \"{0}\"! Du måste välja en bild och sätta hänglås på den!\r\n", grupp.Namn);
                        }
                    }
                    else if (grupp.GruppTyp == GruppTyp.GruppNormal)
                    {
                        if (grupp.isAggregated && (grupp.Special & TypeOfGroupPhoto.Gruppbild) == 0)
                        {
                            grupp.EjFotoOrsak1 = "Övrigt";
                            grupp.EjFotoOrsak2 = "Samfotad: " + grupp.aggregate.Namn;
                        }
                        else if (!Global.GrpNoPhoto_Reasons_Complete.Contains(grupp.EjFotoOrsak1))
                            if (grupp.EjFotoOrsak2 == null || grupp.EjFotoOrsak2.Length < 5)
                                strBeskrSakn += "  " + grupp.Namn + "\r\n";
                    }

                    foreach (var person in grupp.AllaPersoner)
                    {
                        if (string.IsNullOrEmpty(person.ThumbnailKey) && person.Thumbnails.Count == 0)
                            continue;

                        var tn = person.Thumbnails[person.ThumbnailKey];
                        if (tn == null || !person.ThumbnailLocked)
                        {
                            fSevere = true;
                            sb.AppendFormat(
                                "FEL:\r\nSaknar vald och låst bild för \"{0}\" i \"{1}\"! Du måste välja en bild och sätta hänglås på den!\r\n",
                                person.Namn, grupp.Namn);
                        }

                        if (!string.IsNullOrEmpty(person.ScanCode))
                        {
                            Person p;
                            if (dicScanCodesWithPortraits.TryGetValue(person.ScanCode, out p))
                            {
                                fSevere = true;
                                sb.AppendFormat(
                                    "FEL:\r\n\"{0}\" i grupp \"{1}\" och \"{2}\" i grupp \"{3}\" är båda porträttfotade med samma kundid!\r\n",
                                    p.Namn, p.Grupp.Namn,
                                    person.Namn, person.Grupp.Namn);
                            }
                            else
                                dicScanCodesWithPortraits.Add(person.ScanCode, person);
                        }
                    }
                }

                foreach (var grupp in skola.MakuleradeGrupper)
                    if (!Global.GrpNoPhoto_Reasons_Complete.Contains(grupp.EjFotoOrsak1))
                        if (grupp.EjFotoOrsak2 == null || grupp.EjFotoOrsak2.Length < 5)
                            strBeskrSakn += "  " + grupp.Namn + "\r\n";
                if (strOklar.Length != 0)
                {
                    sb.Append("FEL:\r\nDu kan inte bränna eftersom följande grupper ännu inte numrerats:\r\n" +
                              strOklar + "\r\n");
                    fSevere = true;
                }
                if (strBeskrSakn.Length != 0 && fHasAtLeastOneGroupPicture)
                {
                    sb.Append("FEL:\r\nDu kan inte bränna innan du angett skäl till varför följande grupper inte fotograferats:\r\n" +
                              strBeskrSakn + "\r\n");
                    fSevere = true;
                }
            }

            {
                var gruppInf = skola.Grupper.GruppMedTyp(GruppTyp.GruppInfällning);
                if (gruppInf != null)
                    foreach (var person in gruppInf.PersonerNärvarande)
                    {
                        bool fCorrectGroupName = false;
                        foreach (var grupp in skola.Grupper)
                            if (string.Compare(person.Titel, grupp.Namn, true) == 0)
                                fCorrectGroupName = true;
                        if (!fCorrectGroupName)
                        {
                            sb.AppendFormat(
                                "FEL:\r\nInfällningen {0} är placerad i en grupp som inte finns!!! Åtgärda detta först!\r\n\r\n",
                                person.Namn);
                            fSevere = true;
                        }
                    }
            }

            {
                int nAntal, nLovade, nValda;
                Global.Skola.Vimmel.räkna(out nAntal, out nLovade, out nValda);
                if (nAntal != 0 && (nLovade + nValda) < 15)
                    sb.Append("VARNING:\r\nDu har inte valt femton vimmelbilder!\r\n\r\n");
            }

            //if (Global.Preferences.Brand == Brand.Photomic)
            //{
            //    var hasGray = false;
            //    foreach (var grupp in skola.Grupper)
            //        if (grupp.Thumbnails[grupp.ThumbnailGrayKey] != null)
            //            hasGray = true;
            //    if (!hasGray)
            //        sb.Append("VARNING:\r\nDu har inte markerat något gråkort!\r\n\r\n");
            //}

            strText = sb.ToString();
        }
        private void ugG_DragDropEvent(vdXceed.vdPlainGrid sender, vdXceed.vdPlainGrid.DragDropAction action, Cell cell, DragEventArgs args, ref bool fCancel)
        {
            var p = args!=null ? ugG.PointToClient( new Point( args.X, args.Y ) ) : Point.Empty;
            Type typeFound;

            try
            {
                switch ( action )
                {
                    case vdXceed.vdPlainGrid.DragDropAction.QueryBeginDrag:
                        if ( ugG.selectedDataRow!=null )
                        {
                            var  grupper = new PlataDM.Grupp[ugG.G.SelectedRows.Count];
                            for ( var i = 0 ; i < grupper.Length ; i++ )
                                grupper[i] = ugG.G.SelectedRows[i].Tag as PlataDM.Grupp;
                            this.DoDragDrop( new DataObject(grupper), DragDropEffects.Copy );
                            ugG.HighlightRow = null;
                        }
                        break;

                    case vdXceed.vdPlainGrid.DragDropAction.QueryDrop:
                        ugG.HighlightRow = cell!=null ? cell.ParentRow : null;
                        typeFound = getFirstPresentType( args.Data, typeof(PlataDM.Grupp[]) );
                        if ( typeFound!=null )
                            args.Effect = args.AllowedEffect;
                        else
                            args.Effect = DragDropEffects.None;
                        if ( p.Y<15 )
                            ugG.G.Scroll( ScrollDirection.Up );
                        else if ( p.Y > ugG.Height-15 )
                            ugG.G.Scroll( ScrollDirection.Down );
                        //						System.Diagnostics.Debug.WriteLine( string.Format("{0} {1}", args.X, args.Y ) );
                        break;

                    case vdXceed.vdPlainGrid.DragDropAction.Dropped:
                        ugG.HighlightRow = null;

                        typeFound = getFirstPresentType( args.Data, typeof(PlataDM.Grupp[]) );
                        if ( typeFound==null )
                            return;

                        foreach ( PlataDM.Grupp grupp in Global.Skola.Grupper )
                            grupp.Ordning *= 100;
                        int nDropAtIndex;
                        var grupperDragged = (PlataDM.Grupp[])args.Data.GetData( typeFound );
                        if ( cell==null )
                        {
                            if ( p.Y < 15 )
                                nDropAtIndex = 0;
                            else
                                nDropAtIndex = 1000000;
                        }
                        else
                            nDropAtIndex = ((cell.ParentRow as DataRow).Tag as PlataDM.Grupp).Ordning - 1;
                        foreach ( var grupp in grupperDragged )
                            grupp.Ordning = nDropAtIndex++;

                        vdUsr.vdOneShotTimer.start( 1, new EventHandler(delayedGroupRefresh), null );
                        break;
                }
            }
            catch ( Exception ex )
            {
                Global.showMsgBox( this, ex.ToString() );
            }
        }