private void InitCaseButtons(GameObject caseObj, MenuCase m)
    {
        //Setup the edit button on the case object to load the case
        //Button editButton = caseObj.transform.Find("ImageRows/Rows/Row0/EditButton").GetComponentInChildren<Button>();
        Button readButton;

        if (GlobalData.GDS.isMobile)
        {
            readButton = caseObj.transform.Find("Row4/OpenReader")?.GetComponent <Button>();
        }
        else
        {
            readButton = caseObj.transform.Find("Row4/OpenReader").GetComponent <Button>();
        }

        readButton?.onClick.AddListener(delegate
        {
            //Load recommended courses here
            //--------
            LoadReader(m);
        });

        Button loadInfoButton = caseObj.GetComponent <Button>();

        //Setup the case object button to load the info panel
        loadInfoButton.onClick.AddListener(delegate
        {
            LoadInfoPanel(m);
        });
    }
    private void PopulateRecommendedCase(Transform caseObj, MenuCase m)
    {
        string patientName       = "ImageRows/Rows/Row0/NameData";
        string author            = "ImageRows/Rows/Row1/AuthorData";
        string audience          = "Row3/AudienceData";
        string tags              = "Row2/TagData";
        string text              = "Text";
        string filename          = "Filename";
        string difficultyTextLoc = "Row3/DifficultyData";
        string beginnerImage     = "Row3/BeginnerImage";
        string intermediateImage = "Row3/IntermediateImage";
        string advancedImage     = "Row3/AdvancedImage";

        caseObj.Find(patientName).GetComponentInChildren <TextMeshProUGUI>().text = m.patientName.Replace("_", " "); //patientname will need to go here eventually
        caseObj.Find(author).GetComponentInChildren <TextMeshProUGUI>().text      = m.description;                   //"by " + menuItems [menuItems.Count - 1].authorName;
        caseObj.Find(audience).GetComponentInChildren <TextMeshProUGUI>().text    = m.audience;                      //Need audience variable?
        caseObj.Find(tags).GetComponentInChildren <TextMeshProUGUI>().text        = m.GetTagsAsOneString();
        caseObj.Find(text).GetComponentInChildren <TextMeshProUGUI>().text        = m.description + ", " + m.filename.Replace(".ced", "");
        caseObj.Find(filename).GetComponentInChildren <TextMeshProUGUI>().text    = m.filename;
        string difficulty = m.difficulty;

        caseObj.transform.Find(difficultyTextLoc).GetComponentInChildren <TextMeshProUGUI>().text = difficulty;

        caseObj.transform.Find(beginnerImage).gameObject.SetActive(false);
        caseObj.transform.Find(intermediateImage).gameObject.SetActive(false);
        caseObj.transform.Find(advancedImage).gameObject.SetActive(false);
        switch (difficulty)
        {
        case "Beginner":
            caseObj.transform.Find(beginnerImage).gameObject.SetActive(true);
            break;

        case "Intermediate":
            caseObj.transform.Find(intermediateImage).gameObject.SetActive(true);
            break;

        case "Advanced":
            caseObj.transform.Find(advancedImage).gameObject.SetActive(true);
            break;

        default:
            caseObj.transform.Find(advancedImage).gameObject.SetActive(true);
            break;
        }

        if (m.completed)
        {
            //Enable completed thingy
            caseObj.transform.Find("CaseCompleted").gameObject.SetActive(true);
        }
    }
    private void LoadReader(MenuCase m)
    {
        GlobalData.createCopy   = false;
        GlobalData.resourcePath = "Reader";
        //Set case
        //set ds.filename
        //ds.ReloadFile

        ReaderDataScript ds = GameObject.Find("GaudyBG").GetComponent <ReaderDataScript>();

        ds.loadingScreen.gameObject.SetActive(true);
        Destroy(GameObject.Find("FinishedCasePanel"));
        GlobalData.caseObj = m;
        ds.SetFileName(m.filename);
        ds.ReloadFile();
    }
    public void ImportFile()
    {
        extensions = new string[] { "ced" };
        var filePath = FileBrowser.OpenSingleFile("Open case file", Application.persistentDataPath, extensions);

        if (string.IsNullOrWhiteSpace(filePath))
        {
            GlobalData.fileName = "[Import] Canceled";
            Debug.Log("[Import] Canceled");
            Cursor.visible = false;
            return;
        }

        XmlDocument xmlDoc = new XmlDocument();

        try {
            string s = File.ReadAllText(filePath);
            print(s);
            xmlDoc.LoadXml(s); //This loads the locally saved file
        } catch (Exception) {
            string           text    = "";
            AesManaged       aes     = new AesManaged();
            ICryptoTransform decrypt = aes.CreateDecryptor(Encoding.UTF8.GetBytes(GlobalData.encryptionKey), Encoding.UTF8.GetBytes(GlobalData.encryptionIV));
            using (FileStream fs = new FileStream(filePath, FileMode.Open)) {
                using (CryptoStream cs = new CryptoStream(fs, decrypt, CryptoStreamMode.Read)) {
                    using (StreamReader sr = new StreamReader(cs)) {
                        text = sr.ReadToEnd();
                    }
                }
            }
            //xmlDoc.LoadXml(DecryptStringFromBytes_Aes(GetBytesFromHex(s)));
            try {
                xmlDoc.LoadXml(text);
            } catch (XmlException xmlError) {
                Debug.LogWarning(xmlError.Message);
                return;
            }
        }

        XmlDocument subXmlDoc = new XmlDocument();

        subXmlDoc.LoadXml(xmlDoc.DocumentElement.ChildNodes[0].OuterXml);
        string menuText = subXmlDoc.GetElementsByTagName("menu")[0].InnerText;

        string[] menuSplit = menuText.Split(new string[] { "--" }, StringSplitOptions.None);
        menuSplit[0] = GlobalData.accountId.ToString();
        menuSplit[1] = "[CHECKFORDUPLICATE]" + menuSplit[1];
        bool addCase = true;

        if (File.Exists(GameObject.Find("GaudyBG").GetComponent <ServerControls>().GetLocalSavesFolderPath() + menuSplit[1]))
        {
            addCase = false;
        }
        //Change the record number to avoid local conflicts or maybe remove that check for the menu
        menuText = string.Join("--", menuSplit);
        MenuCase m = new MenuCase(menuSplit);
        string   savePathNoExtension = GameObject.Find("GaudyBG").GetComponent <ServerControls>().GetLocalSavesFolderPath() + m.filename.Remove(m.filename.Length - ".ced".Length);

        //Save local menu preview
        File.WriteAllText(savePathNoExtension + " menu.txt", menuText);
        //Save .ced
        File.WriteAllBytes(savePathNoExtension + ".ced", EncryptStringToBytes_Aes(xmlDoc.DocumentElement.ChildNodes[1].OuterXml));
        //Save .cei
        File.WriteAllBytes(savePathNoExtension + ".cei", EncryptStringToBytes_Aes(xmlDoc.DocumentElement.ChildNodes[2].OuterXml));

        if (addCase)
        {
            GameObject.Find("GaudyBG").GetComponent <ServerControls>().AddCase(m, true);
        }
        else
        {
            GameObject.Find("GaudyBG").GetComponent <LoginManager>().ShowMessage("Reimported case");
        }
    }
 private void LoadInfoPanel(MenuCase m)
 {
 }