private void drawMultipleEntriesState(Rectangle bounds, SpriteBatch sb)
        {
            var num1 = 22f;
            var num2 = 2f;
            var pos  = new Vector2(bounds.X + 20f, bounds.Y + 10f);
            var num3 =
                (int)
                Math.Min(searchResultsNames.Count,
                         (float)((bounds.Height - 40.0 - 40.0 - 80.0) / (num1 + (double)num2)));

            TextItem.doFontLabel(pos, "Multiple Matches", GuiData.font, new Color?(), float.MaxValue, float.MaxValue);
            pos.Y += 30f;
            if (num3 > searchResultsNames.Count)
            {
                TextItem.doFontLabel(new Vector2(pos.X, pos.Y - 18f), "Some Results Omitted", GuiData.tinyfont,
                                     new Color?(), float.MaxValue, float.MaxValue);
            }
            sb.Draw(Utils.white, new Rectangle((int)pos.X, (int)pos.Y, (int)(bounds.Width - (double)pos.X - 5.0), 2),
                    Color.White);
            pos.Y += 12f;
            for (var index = 0; index < num3; ++index)
            {
                if (Button.doButton(1237000 + index, (int)pos.X, (int)pos.Y, (int)(bounds.Width * 0.666), (int)num1,
                                    searchResultsNames[index], darkThemeColor))
                {
                    searchedName    = searchResultsNames[index];
                    state           = ADDState.MultiMatchSearch;
                    searchStartTime = os.timer;
                }
                pos.Y += num1 + num2;
            }
            pos.Y += 5f;
            sb.Draw(Utils.white, new Rectangle((int)pos.X, (int)pos.Y, (int)(bounds.Width - (double)pos.X - 5.0), 2),
                    Color.White);
            pos.Y += 10f;
            if (Button.doButton(12346080, (int)pos.X, (int)pos.Y, 160, 25, "Refine Search", themeColor))
            {
                state = ADDState.Seach;
                os.execute("getString Name");
            }
            if (!Button.doButton(12346085, (int)pos.X + 170, (int)pos.Y, 160, 25, "Go Back", darkThemeColor))
            {
                return;
            }
            state = ADDState.Welcome;
        }
        private void doPreEntryViewSearch()
        {
            var fileForName = findFileForName(searchedName);

            if (fileForName != null)
            {
                setDegreesFromFileEntryData(fileForName.data);
            }
            else if (searchResultsNames.Count > 1)
            {
                state = ADDState.MultipleEntriesFound;
            }
            else
            {
                state = ADDState.EntryNotFound;
            }
        }
 public override void navigatedTo()
 {
     state = ADDState.Welcome;
 }
 private void drawEditDegreeState(Rectangle bounds, SpriteBatch sb)
 {
     if (Button.doButton(456010, bounds.X + 2, bounds.Y + 2, 160, 30, "Back", darkThemeColor))
         state = ADDState.Entry;
     var pos = new Vector2(bounds.X + 10f, bounds.Y + 60f);
     var flag = editedField == ADDEditField.None;
     TextItem.doSmallLabel(pos, "University:", new Color?());
     pos.X += 110f;
     TextItem.doSmallLabel(pos, searchedDegrees[editedIndex].uni,
         editedField == ADDEditField.Uni ? themeColor : Color.White);
     pos.X -= 110f;
     pos.Y += 20f;
     if (flag && Button.doButton(46700, (int) pos.X, (int) pos.Y, 80, 20, "Edit", darkThemeColor))
     {
         editedField = ADDEditField.Uni;
         os.execute("getString University");
     }
     pos.Y += 30f;
     TextItem.doSmallLabel(pos, "Degree:", new Color?());
     pos.X += 110f;
     TextItem.doSmallLabel(pos, searchedDegrees[editedIndex].name,
         editedField == ADDEditField.Degree ? themeColor : Color.White);
     pos.X -= 110f;
     pos.Y += 20f;
     if (flag && Button.doButton(46705, (int) pos.X, (int) pos.Y, 80, 20, "Edit", darkThemeColor))
     {
         editedField = ADDEditField.Degree;
         os.execute("getString Degree");
     }
     pos.Y += 30f;
     TextItem.doSmallLabel(pos, "GPA:", new Color?());
     pos.X += 110f;
     TextItem.doSmallLabel(pos, string.Concat(searchedDegrees[editedIndex].GPA),
         editedField == ADDEditField.GPA ? themeColor : Color.White);
     pos.X -= 110f;
     pos.Y += 20f;
     if (flag && Button.doButton(46710, (int) pos.X, (int) pos.Y, 80, 20, "Edit", darkThemeColor))
     {
         editedField = ADDEditField.GPA;
         os.execute("getString GPA");
     }
     pos.Y += 30f;
     if (editedField != ADDEditField.None)
     {
         if (!doEditField())
             return;
         editedField = ADDEditField.None;
         os.getStringCache = "";
         saveChangesToEntry();
     }
     else
     {
         if (
             !Button.doButton(486012, bounds.X + 2, bounds.Y + bounds.Height - 40, 180, 30, "Save And Return",
                 backThemeColor))
             return;
         state = ADDState.Entry;
         comp.log(string.Concat("ACADEMIC_DATABASE::RecordEdit_:_#", editedIndex, "_: ",
             searchedName.Replace(" ", "_")));
     }
 }
 private void drawEntryState(Rectangle bounds, SpriteBatch sb)
 {
     if (state == ADDState.Entry && os.hasConnectionPermission(true))
         state = ADDState.EditPerson;
     if (Button.doButton(456010, bounds.X + 2, bounds.Y + 2, 160, 30, "Back", darkThemeColor))
         state = ADDState.Welcome;
     var x = bounds.X + 20f;
     var y1 = bounds.Y + 50f;
     TextItem.doFontLabel(new Vector2(x, y1), searchedName, GuiData.font, new Color?(),
         bounds.Width - (x - bounds.X), 60f);
     var y2 = y1 + 30f;
     if (searchedDegrees.Count == 0)
         TextItem.doFontLabel(new Vector2(x, y2), " -No Degrees Found", GuiData.smallfont, new Color?(),
             float.MaxValue, float.MaxValue);
     for (var index = 0; index < searchedDegrees.Count; ++index)
     {
         var text = "Degree :" + searchedDegrees[index].name + "\nUni      :" + searchedDegrees[index].uni +
                    "\nGPA      :" + searchedDegrees[index].GPA;
         TextItem.doFontLabel(new Vector2(x, y2), text, GuiData.smallfont, new Color?(),
             bounds.Width - (bounds.X - x), 50f);
         y2 += 60f;
         if (state == ADDState.EditPerson)
         {
             var num = y2 - 10f;
             if (Button.doButton(457900 + index, (int) x, (int) num, 100, 20, "Edit", new Color?()))
             {
                 state = ADDState.EditEntry;
                 editedField = ADDEditField.None;
                 editedIndex = index;
             }
             if (Button.doButton(456900 + index, (int) x + 105, (int) num, 100, 20,
                 needsDeletionConfirmation ? "Delete" : "Confirm?",
                 needsDeletionConfirmation ? Color.Gray : Color.Red))
             {
                 if (needsDeletionConfirmation)
                 {
                     needsDeletionConfirmation = false;
                 }
                 else
                 {
                     comp.log(string.Concat("ACADEMIC_DATABASE::RecordDeletion_:_#", index, "_: ",
                         searchedName.Replace(" ", "_")));
                     searchedDegrees.RemoveAt(index);
                     saveChangesToEntry();
                     --index;
                     needsDeletionConfirmation = true;
                 }
             }
             y2 = num + 35f;
         }
     }
     var num1 = y2 + 10f;
     if (state != ADDState.EditPerson ||
         !Button.doButton(458009, (int) x, (int) num1, 170, 30, "Add Degree", themeColor))
         return;
     var degree = new Degree("UNKNOWN", "UNKNOWN", 0.0f);
     searchedDegrees.Add(degree);
     editedIndex = searchedDegrees.IndexOf(degree);
     state = ADDState.EditEntry;
     comp.log(string.Concat("ACADEMIC_DATABASE::RecordAdd_:_#", editedIndex, "_: ",
         searchedName.Replace(" ", "_")));
 }
 private void drawMultipleEntriesState(Rectangle bounds, SpriteBatch sb)
 {
     var num1 = 22f;
     var num2 = 2f;
     var pos = new Vector2(bounds.X + 20f, bounds.Y + 10f);
     var num3 =
         (int)
             Math.Min(searchResultsNames.Count,
                 (float) ((bounds.Height - 40.0 - 40.0 - 80.0)/(num1 + (double) num2)));
     TextItem.doFontLabel(pos, "Multiple Matches", GuiData.font, new Color?(), float.MaxValue, float.MaxValue);
     pos.Y += 30f;
     if (num3 > searchResultsNames.Count)
         TextItem.doFontLabel(new Vector2(pos.X, pos.Y - 18f), "Some Results Omitted", GuiData.tinyfont,
             new Color?(), float.MaxValue, float.MaxValue);
     sb.Draw(Utils.white, new Rectangle((int) pos.X, (int) pos.Y, (int) (bounds.Width - (double) pos.X - 5.0), 2),
         Color.White);
     pos.Y += 12f;
     for (var index = 0; index < num3; ++index)
     {
         if (Button.doButton(1237000 + index, (int) pos.X, (int) pos.Y, (int) (bounds.Width*0.666), (int) num1,
             searchResultsNames[index], darkThemeColor))
         {
             searchedName = searchResultsNames[index];
             state = ADDState.MultiMatchSearch;
             searchStartTime = os.timer;
         }
         pos.Y += num1 + num2;
     }
     pos.Y += 5f;
     sb.Draw(Utils.white, new Rectangle((int) pos.X, (int) pos.Y, (int) (bounds.Width - (double) pos.X - 5.0), 2),
         Color.White);
     pos.Y += 10f;
     if (Button.doButton(12346080, (int) pos.X, (int) pos.Y, 160, 25, "Refine Search", themeColor))
     {
         state = ADDState.Seach;
         os.execute("getString Name");
     }
     if (!Button.doButton(12346085, (int) pos.X + 170, (int) pos.Y, 160, 25, "Go Back", darkThemeColor))
         return;
     state = ADDState.Welcome;
 }
 private void drawSearchState(Rectangle bounds, SpriteBatch sb)
 {
     if (Button.doButton(456010, bounds.X + 2, bounds.Y + 2, 160, 30, "Back", darkThemeColor))
         state = ADDState.Welcome;
     var str = "";
     var x = bounds.X + 6;
     var num1 = bounds.Y + 100;
     var vector2_1 = TextItem.doMeasuredSmallLabel(new Vector2(x, num1),
         "Please enter the name you with to search for:", new Color?());
     var y1 = num1 + ((int) vector2_1.Y + 10);
     var strArray = os.getStringCache.Split(new string[1]
     {
         "#$#$#$$#$&$#$#$#$#"
     }, StringSplitOptions.None);
     if (strArray.Length > 1)
     {
         str = strArray[1];
         if (str.Equals(""))
             str = os.terminal.currentLine;
     }
     var destinationRectangle = new Rectangle(x, y1, bounds.Width - 12, 80);
     sb.Draw(Utils.white, destinationRectangle, os.darkBackgroundColor);
     var num2 = y1 + 28;
     var vector2_2 = TextItem.doMeasuredSmallLabel(new Vector2(x, num2), "Name: " + str, new Color?());
     destinationRectangle.X = x + (int) vector2_2.X + 2;
     destinationRectangle.Y = num2;
     destinationRectangle.Width = 7;
     destinationRectangle.Height = 20;
     if (os.timer%1.0 < 0.300000011920929)
         sb.Draw(Utils.white, destinationRectangle, os.outlineColor);
     var y2 = num2 + 122;
     if (strArray.Length <= 2 && !Button.doButton(30, x, y2, 300, 22, "Search", os.highlightColor))
         return;
     if (strArray.Length <= 2)
         os.terminal.executeLine();
     if (str.Length > 0)
     {
         state = ADDState.PendingResult;
         searchedName = str;
         searchStartTime = os.timer;
         comp.log("ACADEMIC_DATABASE::RecordSearch_:_" + str);
     }
     else
         state = ADDState.EntryNotFound;
 }
 public override void draw(Rectangle bounds, SpriteBatch sb)
 {
     drawSideBar(bounds, sb);
     var num1 = (int) (bounds.Width/5.0);
     bounds.Width -= num1;
     bounds.X += num1;
     drawTitle(bounds, sb);
     bounds.Y += 30;
     bounds.Height -= 30;
     switch (state)
     {
         case ADDState.Welcome:
             var flag = comp.adminIP == os.thisComputer.ip;
             var destinationRectangle = bounds;
             destinationRectangle.Y = bounds.Y + 60 - 20;
             destinationRectangle.Height = 22;
             sb.Draw(Utils.white, destinationRectangle, flag ? themeColor : darkThemeColor);
             var text1 = "Valid Administrator Account Detected";
             if (!flag)
                 text1 = "Non-Admin Account Active";
             var vector2 = GuiData.smallfont.MeasureString(text1);
             var position1 = new Vector2(destinationRectangle.X + destinationRectangle.Width/2 - vector2.X/2f,
                 destinationRectangle.Y);
             sb.DrawString(GuiData.smallfont, text1, position1, Color.Black);
             if (Button.doButton(456011, bounds.X + 30, bounds.Y + bounds.Height/2 - 15, bounds.Width/2, 40,
                 "About This Server", themeColor))
                 state = ADDState.InfoPanel;
             if (Button.doButton(456001, bounds.X + 30, bounds.Y + bounds.Height/2 - 15 + 50, bounds.Width/2, 40,
                 "Search Entries", themeColor))
             {
                 state = ADDState.Seach;
                 os.execute("getString Name");
             }
             if (
                 !Button.doButton(456005, bounds.X + 30, bounds.Y + bounds.Height/2 - 15 + 100, bounds.Width/2,
                     40, "Exit", themeColor))
                 break;
             os.display.command = "connect";
             break;
         case ADDState.Seach:
             drawSearchState(bounds, sb);
             break;
         case ADDState.MultiMatchSearch:
         case ADDState.PendingResult:
             if (Button.doButton(456010, bounds.X + 2, bounds.Y + 2, 160, 30, "Back", darkThemeColor))
                 state = ADDState.Welcome;
             var position2 = new Vector2(bounds.X + bounds.Width/2, bounds.Y = bounds.Height/2);
             var origin = new Vector2(loadingCircle.Width/2, loadingCircle.Height/2);
             sb.Draw(loadingCircle, position2, new Rectangle?(), Color.White, (float) (os.timer%Math.PI*3.0),
                 origin, Vector2.One, SpriteEffects.None, 0.5f);
             var num2 = os.timer - searchStartTime;
             if ((state != ADDState.PendingResult || num2 <= 3.59999990463257) &&
                 (state != ADDState.MultiMatchSearch || num2 <= 0.699999988079071))
                 break;
             state = ADDState.Entry;
             needsDeletionConfirmation = true;
             doPreEntryViewSearch();
             break;
         case ADDState.Entry:
         case ADDState.EditPerson:
             drawEntryState(bounds, sb);
             break;
         case ADDState.EntryNotFound:
             if (Button.doButton(456010, bounds.X + 2, bounds.Y + 20, 160, 30, "Back", darkThemeColor))
                 state = ADDState.Welcome;
             if (Button.doButton(456015, bounds.X + 2, bounds.Y + 55, 160, 30, "Search Again", darkThemeColor))
             {
                 state = ADDState.Seach;
                 os.execute("getString Name");
             }
             TextItem.doFontLabel(new Vector2(bounds.X + 2, bounds.Y + 90), "No Entries Found", GuiData.font,
                 new Color?(), float.MaxValue, float.MaxValue);
             break;
         case ADDState.MultipleEntriesFound:
             drawMultipleEntriesState(bounds, sb);
             break;
         case ADDState.InfoPanel:
             if (Button.doButton(456010, bounds.X + 2, bounds.Y + 30, 160, 30, "Back", darkThemeColor))
                 state = ADDState.Welcome;
             var pos = new Vector2(bounds.X + 20, bounds.Y + 70);
             TextItem.doFontLabel(pos, "Information", GuiData.font, new Color?(), float.MaxValue, float.MaxValue);
             pos.Y += 40f;
             var fileEntry = root.searchForFile("info.txt");
             var text2 = "ERROR: Unhandled System.IO.FileNotFoundException\nFile \"info.txt\" was not found";
             if (fileEntry != null)
                 text2 = DisplayModule.cleanSplitForWidth(fileEntry.data, bounds.Width - 80);
             TextItem.DrawShadow = false;
             TextItem.doFontLabel(pos, text2, GuiData.smallfont, new Color?(), bounds.Width - 40, float.MaxValue);
             break;
         case ADDState.EditEntry:
             drawEditDegreeState(bounds, sb);
             break;
     }
 }
 private void doPreEntryViewSearch()
 {
     var fileForName = findFileForName(searchedName);
     if (fileForName != null)
         setDegreesFromFileEntryData(fileForName.data);
     else if (searchResultsNames.Count > 1)
         state = ADDState.MultipleEntriesFound;
     else
         state = ADDState.EntryNotFound;
 }
 public override void navigatedTo()
 {
     state = ADDState.Welcome;
 }
        private void drawEditDegreeState(Rectangle bounds, SpriteBatch sb)
        {
            if (Button.doButton(456010, bounds.X + 2, bounds.Y + 2, 160, 30, "Back", darkThemeColor))
            {
                state = ADDState.Entry;
            }
            var pos  = new Vector2(bounds.X + 10f, bounds.Y + 60f);
            var flag = editedField == ADDEditField.None;

            TextItem.doSmallLabel(pos, "University:", new Color?());
            pos.X += 110f;
            TextItem.doSmallLabel(pos, searchedDegrees[editedIndex].uni,
                                  editedField == ADDEditField.Uni ? themeColor : Color.White);
            pos.X -= 110f;
            pos.Y += 20f;
            if (flag && Button.doButton(46700, (int)pos.X, (int)pos.Y, 80, 20, "Edit", darkThemeColor))
            {
                editedField = ADDEditField.Uni;
                os.execute("getString University");
            }
            pos.Y += 30f;
            TextItem.doSmallLabel(pos, "Degree:", new Color?());
            pos.X += 110f;
            TextItem.doSmallLabel(pos, searchedDegrees[editedIndex].name,
                                  editedField == ADDEditField.Degree ? themeColor : Color.White);
            pos.X -= 110f;
            pos.Y += 20f;
            if (flag && Button.doButton(46705, (int)pos.X, (int)pos.Y, 80, 20, "Edit", darkThemeColor))
            {
                editedField = ADDEditField.Degree;
                os.execute("getString Degree");
            }
            pos.Y += 30f;
            TextItem.doSmallLabel(pos, "GPA:", new Color?());
            pos.X += 110f;
            TextItem.doSmallLabel(pos, string.Concat(searchedDegrees[editedIndex].GPA),
                                  editedField == ADDEditField.GPA ? themeColor : Color.White);
            pos.X -= 110f;
            pos.Y += 20f;
            if (flag && Button.doButton(46710, (int)pos.X, (int)pos.Y, 80, 20, "Edit", darkThemeColor))
            {
                editedField = ADDEditField.GPA;
                os.execute("getString GPA");
            }
            pos.Y += 30f;
            if (editedField != ADDEditField.None)
            {
                if (!doEditField())
                {
                    return;
                }
                editedField       = ADDEditField.None;
                os.getStringCache = "";
                saveChangesToEntry();
            }
            else
            {
                if (
                    !Button.doButton(486012, bounds.X + 2, bounds.Y + bounds.Height - 40, 180, 30, "Save And Return",
                                     backThemeColor))
                {
                    return;
                }
                state = ADDState.Entry;
                comp.log(string.Concat("ACADEMIC_DATABASE::RecordEdit_:_#", editedIndex, "_: ",
                                       searchedName.Replace(" ", "_")));
            }
        }
        private void drawEntryState(Rectangle bounds, SpriteBatch sb)
        {
            if (state == ADDState.Entry && os.hasConnectionPermission(true))
            {
                state = ADDState.EditPerson;
            }
            if (Button.doButton(456010, bounds.X + 2, bounds.Y + 2, 160, 30, "Back", darkThemeColor))
            {
                state = ADDState.Welcome;
            }
            var x  = bounds.X + 20f;
            var y1 = bounds.Y + 50f;

            TextItem.doFontLabel(new Vector2(x, y1), searchedName, GuiData.font, new Color?(),
                                 bounds.Width - (x - bounds.X), 60f);
            var y2 = y1 + 30f;

            if (searchedDegrees.Count == 0)
            {
                TextItem.doFontLabel(new Vector2(x, y2), " -No Degrees Found", GuiData.smallfont, new Color?(),
                                     float.MaxValue, float.MaxValue);
            }
            for (var index = 0; index < searchedDegrees.Count; ++index)
            {
                var text = "Degree :" + searchedDegrees[index].name + "\nUni      :" + searchedDegrees[index].uni +
                           "\nGPA      :" + searchedDegrees[index].GPA;
                TextItem.doFontLabel(new Vector2(x, y2), text, GuiData.smallfont, new Color?(),
                                     bounds.Width - (bounds.X - x), 50f);
                y2 += 60f;
                if (state == ADDState.EditPerson)
                {
                    var num = y2 - 10f;
                    if (Button.doButton(457900 + index, (int)x, (int)num, 100, 20, "Edit", new Color?()))
                    {
                        state       = ADDState.EditEntry;
                        editedField = ADDEditField.None;
                        editedIndex = index;
                    }
                    if (Button.doButton(456900 + index, (int)x + 105, (int)num, 100, 20,
                                        needsDeletionConfirmation ? "Delete" : "Confirm?",
                                        needsDeletionConfirmation ? Color.Gray : Color.Red))
                    {
                        if (needsDeletionConfirmation)
                        {
                            needsDeletionConfirmation = false;
                        }
                        else
                        {
                            comp.log(string.Concat("ACADEMIC_DATABASE::RecordDeletion_:_#", index, "_: ",
                                                   searchedName.Replace(" ", "_")));
                            searchedDegrees.RemoveAt(index);
                            saveChangesToEntry();
                            --index;
                            needsDeletionConfirmation = true;
                        }
                    }
                    y2 = num + 35f;
                }
            }
            var num1 = y2 + 10f;

            if (state != ADDState.EditPerson ||
                !Button.doButton(458009, (int)x, (int)num1, 170, 30, "Add Degree", themeColor))
            {
                return;
            }
            var degree = new Degree("UNKNOWN", "UNKNOWN", 0.0f);

            searchedDegrees.Add(degree);
            editedIndex = searchedDegrees.IndexOf(degree);
            state       = ADDState.EditEntry;
            comp.log(string.Concat("ACADEMIC_DATABASE::RecordAdd_:_#", editedIndex, "_: ",
                                   searchedName.Replace(" ", "_")));
        }
        private void drawSearchState(Rectangle bounds, SpriteBatch sb)
        {
            if (Button.doButton(456010, bounds.X + 2, bounds.Y + 2, 160, 30, "Back", darkThemeColor))
            {
                state = ADDState.Welcome;
            }
            var str       = "";
            var x         = bounds.X + 6;
            var num1      = bounds.Y + 100;
            var vector2_1 = TextItem.doMeasuredSmallLabel(new Vector2(x, num1),
                                                          "Please enter the name you with to search for:", new Color?());
            var y1       = num1 + ((int)vector2_1.Y + 10);
            var strArray = os.getStringCache.Split(new string[1]
            {
                "#$#$#$$#$&$#$#$#$#"
            }, StringSplitOptions.None);

            if (strArray.Length > 1)
            {
                str = strArray[1];
                if (str.Equals(""))
                {
                    str = os.terminal.currentLine;
                }
            }
            var destinationRectangle = new Rectangle(x, y1, bounds.Width - 12, 80);

            sb.Draw(Utils.white, destinationRectangle, os.darkBackgroundColor);
            var num2      = y1 + 28;
            var vector2_2 = TextItem.doMeasuredSmallLabel(new Vector2(x, num2), "Name: " + str, new Color?());

            destinationRectangle.X      = x + (int)vector2_2.X + 2;
            destinationRectangle.Y      = num2;
            destinationRectangle.Width  = 7;
            destinationRectangle.Height = 20;
            if (os.timer % 1.0 < 0.300000011920929)
            {
                sb.Draw(Utils.white, destinationRectangle, os.outlineColor);
            }
            var y2 = num2 + 122;

            if (strArray.Length <= 2 && !Button.doButton(30, x, y2, 300, 22, "Search", os.highlightColor))
            {
                return;
            }
            if (strArray.Length <= 2)
            {
                os.terminal.executeLine();
            }
            if (str.Length > 0)
            {
                state           = ADDState.PendingResult;
                searchedName    = str;
                searchStartTime = os.timer;
                comp.log("ACADEMIC_DATABASE::RecordSearch_:_" + str);
            }
            else
            {
                state = ADDState.EntryNotFound;
            }
        }
        public override void draw(Rectangle bounds, SpriteBatch sb)
        {
            drawSideBar(bounds, sb);
            var num1 = (int)(bounds.Width / 5.0);

            bounds.Width -= num1;
            bounds.X     += num1;
            drawTitle(bounds, sb);
            bounds.Y      += 30;
            bounds.Height -= 30;
            switch (state)
            {
            case ADDState.Welcome:
                var flag = comp.adminIP == os.thisComputer.ip;
                var destinationRectangle = bounds;
                destinationRectangle.Y      = bounds.Y + 60 - 20;
                destinationRectangle.Height = 22;
                sb.Draw(Utils.white, destinationRectangle, flag ? themeColor : darkThemeColor);
                var text1 = "Valid Administrator Account Detected";
                if (!flag)
                {
                    text1 = "Non-Admin Account Active";
                }
                var vector2   = GuiData.smallfont.MeasureString(text1);
                var position1 = new Vector2(destinationRectangle.X + destinationRectangle.Width / 2 - vector2.X / 2f,
                                            destinationRectangle.Y);
                sb.DrawString(GuiData.smallfont, text1, position1, Color.Black);
                if (Button.doButton(456011, bounds.X + 30, bounds.Y + bounds.Height / 2 - 15, bounds.Width / 2, 40,
                                    "About This Server", themeColor))
                {
                    state = ADDState.InfoPanel;
                }
                if (Button.doButton(456001, bounds.X + 30, bounds.Y + bounds.Height / 2 - 15 + 50, bounds.Width / 2, 40,
                                    "Search Entries", themeColor))
                {
                    state = ADDState.Seach;
                    os.execute("getString Name");
                }
                if (
                    !Button.doButton(456005, bounds.X + 30, bounds.Y + bounds.Height / 2 - 15 + 100, bounds.Width / 2,
                                     40, "Exit", themeColor))
                {
                    break;
                }
                os.display.command = "connect";
                break;

            case ADDState.Seach:
                drawSearchState(bounds, sb);
                break;

            case ADDState.MultiMatchSearch:
            case ADDState.PendingResult:
                if (Button.doButton(456010, bounds.X + 2, bounds.Y + 2, 160, 30, "Back", darkThemeColor))
                {
                    state = ADDState.Welcome;
                }
                var position2 = new Vector2(bounds.X + bounds.Width / 2, bounds.Y = bounds.Height / 2);
                var origin    = new Vector2(loadingCircle.Width / 2, loadingCircle.Height / 2);
                sb.Draw(loadingCircle, position2, new Rectangle?(), Color.White, (float)(os.timer % Math.PI * 3.0),
                        origin, Vector2.One, SpriteEffects.None, 0.5f);
                var num2 = os.timer - searchStartTime;
                if ((state != ADDState.PendingResult || num2 <= 3.59999990463257) &&
                    (state != ADDState.MultiMatchSearch || num2 <= 0.699999988079071))
                {
                    break;
                }
                state = ADDState.Entry;
                needsDeletionConfirmation = true;
                doPreEntryViewSearch();
                break;

            case ADDState.Entry:
            case ADDState.EditPerson:
                drawEntryState(bounds, sb);
                break;

            case ADDState.EntryNotFound:
                if (Button.doButton(456010, bounds.X + 2, bounds.Y + 20, 160, 30, "Back", darkThemeColor))
                {
                    state = ADDState.Welcome;
                }
                if (Button.doButton(456015, bounds.X + 2, bounds.Y + 55, 160, 30, "Search Again", darkThemeColor))
                {
                    state = ADDState.Seach;
                    os.execute("getString Name");
                }
                TextItem.doFontLabel(new Vector2(bounds.X + 2, bounds.Y + 90), "No Entries Found", GuiData.font,
                                     new Color?(), float.MaxValue, float.MaxValue);
                break;

            case ADDState.MultipleEntriesFound:
                drawMultipleEntriesState(bounds, sb);
                break;

            case ADDState.InfoPanel:
                if (Button.doButton(456010, bounds.X + 2, bounds.Y + 30, 160, 30, "Back", darkThemeColor))
                {
                    state = ADDState.Welcome;
                }
                var pos = new Vector2(bounds.X + 20, bounds.Y + 70);
                TextItem.doFontLabel(pos, "Information", GuiData.font, new Color?(), float.MaxValue, float.MaxValue);
                pos.Y += 40f;
                var fileEntry = root.searchForFile("info.txt");
                var text2     = "ERROR: Unhandled System.IO.FileNotFoundException\nFile \"info.txt\" was not found";
                if (fileEntry != null)
                {
                    text2 = DisplayModule.cleanSplitForWidth(fileEntry.data, bounds.Width - 80);
                }
                TextItem.DrawShadow = false;
                TextItem.doFontLabel(pos, text2, GuiData.smallfont, new Color?(), bounds.Width - 40, float.MaxValue);
                break;

            case ADDState.EditEntry:
                drawEditDegreeState(bounds, sb);
                break;
            }
        }