Esempio n. 1
0
    void OnWizardCreate()
    {
        string imgPath = null;

        if (image != null)
        {
            Object obj = image;
            imgPath = AssetDatabase.GetAssetPath(obj.GetInstanceID());
        }

        VuforiaTools uploadRequest = new VuforiaTools();

        string metaDataUpload = null;

        if (metaData != null)
        {
            if (metaData == "")
            {
                metaData = null;
            }
            else
            {
                var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(metaData);
                metaDataUpload = System.Convert.ToBase64String(plainTextBytes);
            }
        }

        if (targetName != null)
        {
            if (targetName == "")
            {
                targetName = null;
            }
        }

        string returnString = uploadRequest.UpdateImageTarget(titleContent.text, targetName, width, imgPath, active, metaDataUpload);

        //string returnString = uploadRequest.UpdateImageTarget(titleContent.text, "Happy", width, null, active, "metadad");
        //string returnString = "Testing for now";
        if (returnString != "fail")
        {
            Debug.Log("Vuforia SUCCESS! Target image updated.");
        }
        else
        {
            //Debug.Log(titleContent.text);
            //Debug.Log(targetName);
            //Debug.Log(width);
            //Debug.Log(active);
            //Debug.Log(metaData);
            Debug.Log("Vuforia Upload Failed, try again.");
            Debug.Log("Error: " + returnString);
            return;
        }
    }
    void DisplayAccount()
    {
        //Listens for up&down arrows as well as the escape key, calls Listen() method
        if (Event.current.isKey && Listen() && selectedIndex >= 0)
        {
            Event.current.Use();
            Repaint();
        }
        //sets default color.. this is mostly to set the color back to normal after making the red delete button
        Color color_default = GUI.backgroundColor;

        GUILayout.BeginHorizontal();
        GUILayout.Label("Account Settings", EditorStyles.boldLabel);
        GUILayout.Space(10);
        if (GUILayout.Button("Refresh", GUILayout.Width(65)))
        {
            UpdateAccountSummary();
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();
        GUILayout.Label("Database Name: " + vtc.accountSummary.name, EditorStyles.label);
        GUILayout.Label("Active_Images: " + vtc.accountSummary.active_images, EditorStyles.label);
        GUILayout.Label("Inactive_Images: " + vtc.accountSummary.inactive_images, EditorStyles.label);
        GUILayout.Label("Failed_Images: " + vtc.accountSummary.failed_images, EditorStyles.label);

        GUILayout.Space(10);
        GUILayout.BeginHorizontal();
        GUILayout.Label("Target List", EditorStyles.boldLabel);
        GUILayout.Space(10);
        if (GUILayout.Button("Refresh", GUILayout.Width(65)))
        {
            Debug.Log("The Refresh Button was pressed.");
            vuforiaTools = new VuforiaTools();
            RefreshList();
        }
        if (vtc.targetSummaryList.Count > 0)
        {
            if (GUILayout.Button("Add New Target", GUILayout.Width(100)))
            {
                ScriptableWizard.DisplayWizard <AddVuforiaTarget>("Add Vuforia Target", "Finish", "Select Meta Data File");
            }
        }
        GUILayout.FlexibleSpace();
        GUILayout.EndHorizontal();
        GUILayout.Space(10);

        GUILayout.Label("Searach Field", EditorStyles.label);
        GUILayout.BeginHorizontal();
        searchField = GUILayout.TextField(searchField, GUILayout.Width(200));
        if (GUILayout.Button("Clear", GUILayout.Width(60)))
        {
            searchField = "";
        }
        GUILayout.EndHorizontal();

        GUILayout.Space(10);
        //WideMode
        if (vtc.wideMode)
        {
            GUILayout.BeginHorizontal();
        }
        if (vtc.targetSummaryList.Count > 0)
        {
            scrollPos = GUILayout.BeginScrollView(scrollPos, GUILayout.Height(300), GUILayout.Width(300));
            //Changes the color of the button if the button is a selected item
            SelectItem();
            GUILayout.EndScrollView();
        }
        //For displaying the target settings if the image target is selected and it's the only one selected
        if (selectedIndex >= 0 && selectedIndexes.Count == 1)
        {
            GUILayout.Space(10);
            GUILayout.BeginVertical();
            GUILayout.Label("Target Settings", EditorStyles.boldLabel);
            GUILayout.Label("Name: " + vtc.targetSummaryList[selectedIndex].target_name, EditorStyles.label);
            GUILayout.Label("Target_ID: " + vtc.targetSummaryList[selectedIndex].target_id, EditorStyles.label);
            GUILayout.Label("Upload_Date: " + vtc.targetSummaryList[selectedIndex].upload_date, EditorStyles.label);
            if (vtc.targetSummaryList[selectedIndex].tracking_rating == -2)
            {
                GUILayout.Label("Tracking_Rating: Failed, Delete and Retry", EditorStyles.label);
            }
            else if (vtc.targetSummaryList[selectedIndex].tracking_rating == -1)
            {
                GUILayout.Label("Tracking_Rating: Processing, Refresh in a bit", EditorStyles.label);
            }
            else
            {
                GUILayout.Label("Tracking_Rating: " + vtc.targetSummaryList[selectedIndex].tracking_rating, EditorStyles.label);
            }
            GUILayout.Label("Active_Flag: " + vtc.targetSummaryList[selectedIndex].active_flag, EditorStyles.label);
            GUILayout.Label("Current_Month_Recos: " + vtc.targetSummaryList[selectedIndex].current_month_recos, EditorStyles.label);
            GUILayout.Label("Previous_Month_Recos: " + vtc.targetSummaryList[selectedIndex].previous_month_recos, EditorStyles.label);
            GUILayout.Label("Total_Recos: " + vtc.targetSummaryList[selectedIndex].total_recos, EditorStyles.label);
            GUILayout.Space(10);
            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Refresh", GUILayout.Width(65)))
            {
                vuforiaTools = new VuforiaTools();
                vuforiaTools.UpdateTargetInformation(vtc.targetSummaryList[selectedIndex].target_id);
                UpdateAccountSummary();
            }
            if (GUILayout.Button("Modify", GUILayout.Width(65)))
            {
                ScriptableWizard.DisplayWizard <ModifyVuforiaTarget>(vtc.targetSummaryList[selectedIndex].target_id, "Finish", "Select Meta Data File");
            }
            if (GUILayout.Button("Check Similar", GUILayout.Width(95)))
            {
                vuforiaTools = new VuforiaTools();
                string jsonString = vuforiaTools.CheckDuplicates(vtc.targetSummaryList[selectedIndex].target_id);
                duplicatesList = JsonUtility.FromJson <DuplicatesList>(jsonString);
            }
            GUI.backgroundColor = Color.red;
            if (GUILayout.Button("Delete", GUILayout.Width(65)))
            {
                bool delete = EditorUtility.DisplayDialog("Confirm Delete", "Are you sure you want to delete the " + vtc.targetSummaryList[selectedIndex].target_name + " image target from your cloud database?", "Ok", "Cancel");
                if (delete)
                {
                    vuforiaTools = new VuforiaTools();
                    string result = vuforiaTools.DeleteTarget(vtc.targetSummaryList[selectedIndex].target_id);
                    if (result != "fail")
                    {
                        if (selectedIndex == vtc.targetSummaryList.Count - 1)
                        {
                            selectedIndex--;
                            selectedIndexes.Remove(selectedIndex + 1);
                            UpdateAccountSummary();
                        }
                        else
                        {
                            selectedIndexes.Remove(selectedIndex);
                            UpdateAccountSummary();
                        }
                    }
                    delete = false;
                }
            }
            GUILayout.EndHorizontal();
            GUILayout.EndVertical();

            if (selectedIndexes.Count == 1 && duplicatesList.similar_targets.Count > 0)
            {
                GUILayout.Space(10);
                GUILayout.BeginVertical();
                GUILayout.Label("Similar Image Targets", EditorStyles.boldLabel);
                scrollPos3 = GUILayout.BeginScrollView(scrollPos3, GUILayout.Height(200), GUILayout.Width(300));
                foreach (string duplicateID in duplicatesList.similar_targets)
                {
                    int index = vtc.targetSummaryList.FindIndex(item => item.target_id == duplicateID);
                    GUILayout.Label(vtc.targetSummaryList[index].target_name, EditorStyles.label);
                }
                GUILayout.EndScrollView();
                GUILayout.EndVertical();
                GUILayout.FlexibleSpace();
            }
        }
        //Displays a list of the currently selected images targets instead of the target summary if more than one image target is selected.
        else if (vtc.targetSummaryList.Count > 1 && selectedIndexes.Count > 1)
        {
            GUILayout.Space(10);
            GUILayout.BeginVertical();
            GUILayout.Label("Selected Targets List (Batch Edit): " + selectedIndexes.Count + "/" + vtc.targetSummaryList.Count, EditorStyles.boldLabel);
            scrollPos2 = GUILayout.BeginScrollView(scrollPos2, GUILayout.Height(selectedIndexes.Count < 16?18 * selectedIndexes.Count + 5:300), GUILayout.Width(300));
            foreach (int index in selectedIndexes)
            {
                GUILayout.Label(vtc.targetSummaryList[index].target_name + ", Curr: " + vtc.targetSummaryList[index].current_month_recos + ", Prev: " + vtc.targetSummaryList[index].previous_month_recos, EditorStyles.label);
            }
            GUILayout.EndScrollView();
            GUILayout.Space(10);
            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Batch Deactivate", GUILayout.Width(100)))
            {
                vuforiaTools = new VuforiaTools();
                foreach (int index in selectedIndexes)
                {
                    vuforiaTools.UpdateImageTarget(vtc.targetSummaryList[index].target_id, null, 1, null, false, null);
                }
                UpdateAccountSummary();
            }
            if (GUILayout.Button("Batch Activate", GUILayout.Width(100)))
            {
                vuforiaTools = new VuforiaTools();
                foreach (int index in selectedIndexes)
                {
                    vuforiaTools.UpdateImageTarget(vtc.targetSummaryList[index].target_id, null, 1, null, true, null);
                }
                UpdateAccountSummary();
            }

            GUI.backgroundColor = Color.red;
            if (GUILayout.Button("Batch Delete", GUILayout.Width(100)))
            {
                bool delete = EditorUtility.DisplayDialog("Confirm Delete", "Are you sure you want to delete the selected image targets from your cloud database?", "Ok", "Cancel");
                if (delete)
                {
                    vuforiaTools = new VuforiaTools();
                    List <VtTargetSummary> summariesToDelete = new List <VtTargetSummary>();
                    foreach (int index in selectedIndexes)
                    {
                        summariesToDelete.Add(vtc.targetSummaryList[index]);
                    }
                    foreach (VtTargetSummary summary in summariesToDelete)
                    {
                        vuforiaTools.DeleteTarget(summary.target_id);
                        vtc.targetSummaryList.Remove(summary);
                    }
                    selectedIndexes = new List <int>();
                    selectedIndex   = -1;
                    UpdateAccountSummary();
                }
            }
            GUI.backgroundColor = color_default;
            GUILayout.EndHorizontal();
            GUILayout.EndVertical();
        }
        if (vtc.wideMode)
        {
            GUILayout.EndHorizontal();
        }
        GUI.backgroundColor = color_default;
    }