/// <summary>
        /// </summary>
        private void Worker()
        {
            selWebId    = Guid.NewGuid();
            selWebTitle = string.Empty;
            var       lst    = new List <CustXMLList>();
            Exception retErr = null;

            try
            {
                SPWSLists.Lists proxy = new SPCAMLQueryHelperOnline.SPWSLists.Lists();

                if (parentForm.formChooser.appMode == Chooser.AppMode.UseWSDef)
                {
                    proxy.UseDefaultCredentials = true;
                }
                else if (parentForm.formChooser.appMode == Chooser.AppMode.UseWSCreds)
                {
                    proxy.UseDefaultCredentials = false;
                    proxy.Credentials           = new System.Net.NetworkCredential(parentForm.formChooser.credUsername, parentForm.formChooser.credPassword, parentForm.formChooser.credDomain);
                }
                else if (parentForm.formChooser.appMode == Chooser.AppMode.UseWSOffice365)
                {
                    proxy.CookieContainer = SharedStuff.GetAuthCookies(new Uri(url), parentForm.formChooser.credUsername, parentForm.formChooser.credPassword);
                }

                proxy.Url = GenUtil.CombineUrls(url, XMLConsts.AsmxSuffix_Lists);

                XElement xLists = proxy.GetListCollection().GetXElement();

                foreach (XElement xList in xLists.Elements(XMLConsts.s + "List"))
                {
                    CustXMLList cXmlList = new CustXMLList()
                    {
                        DefaultViewUrl = GenUtil.GetXElemAttrAsString(xList, "DefaultViewUrl"),
                        ID             = GenUtil.GetXElemAttrAsString(xList, "ID"),
                        Hidden         = GenUtil.SafeToBool(GenUtil.GetXElemAttrAsString(xList, "Hidden")),
                        Name           = GenUtil.GetXElemAttrAsString(xList, "Name"),
                        Title          = GenUtil.GetXElemAttrAsString(xList, "Title"),
                        WebFullUrl     = GenUtil.GetXElemAttrAsString(xList, "WebFullUrl"),
                        WebId          = GenUtil.GetXElemAttrAsString(xList, "WebId")
                    };

                    if (!cXmlList.Hidden)
                    {
                        lst.Add(cXmlList);
                    }
                }
            }
            catch (Exception ex)
            {
                retErr = ex;
            }


            // update gui
            parentForm.Invoke(new MethodInvoker(() =>
            {
                tvLists.Nodes.Clear();

                if (retErr != null)
                {
                    GenUtil.LogIt(txtStatus, retErr.ToString());
                }
                else
                {
                    GenUtil.LogIt(txtStatus, "OK");

                    foreach (CustXMLList l in lst)
                    {
                        tvLists.Nodes.Add(l.ID, (l.Hidden ? l.Title + " [HIDDEN]" : l.Title));
                    }
                }

                // finish action
                btnLoad.Enabled = true;

                toolStripStatusLabel1.Text = "";
                statusStrip1.Refresh();

                picLogoWait.Visible = false;
                picLogoWait.Refresh();
            }));
        }
        /// <summary>
        /// </summary>
        private void Worker()
        {
            Exception retErr = null;
            DataTable dt     = null;

            try
            {
                SPWSLists.Lists proxy = new SPCAMLQueryHelperOnline.SPWSLists.Lists();

                if (parentForm.formChooser.appMode == Chooser.AppMode.UseWSDef)
                {
                    proxy.UseDefaultCredentials = true;
                }
                else if (parentForm.formChooser.appMode == Chooser.AppMode.UseWSCreds)
                {
                    proxy.UseDefaultCredentials = false;
                    proxy.Credentials           = new System.Net.NetworkCredential(parentForm.formChooser.credUsername, parentForm.formChooser.credPassword, parentForm.formChooser.credDomain);
                }
                else if (parentForm.formChooser.appMode == Chooser.AppMode.UseWSOffice365)
                {
                    proxy.CookieContainer = SharedStuff.GetAuthCookies(new Uri(siteUrl), parentForm.formChooser.credUsername, parentForm.formChooser.credPassword);
                }

                proxy.Url = GenUtil.CombineUrls(siteUrl, XMLConsts.AsmxSuffix_Lists);

                var strQuery = GenUtil.RemoveWhiteSpace(txtQuery.Text);
                strQuery = GenUtil.WrapWSQuery(strQuery);

                //
                StringReader rdrQuery = new StringReader(strQuery);
                XElement     xQuery   = XElement.Load(rdrQuery);

                //
                string rowLimit = (GenUtil.SafeToNum(txtRowLimit.Text) == 0 ? "" : GenUtil.SafeToNum(txtRowLimit.Text).ToString());

                //
                string webID = "";

                //
                StringReader rdrQueryOptions = null;
                if (GenUtil.IsNull(txtViewAttributes.Text))
                {
                    rdrQueryOptions = new StringReader("<QueryOptions><IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns></QueryOptions>");
                }
                else
                {
                    rdrQueryOptions = new StringReader(string.Format("<QueryOptions><IncludeMandatoryColumns>FALSE</IncludeMandatoryColumns><ViewAttributes {0} /></QueryOptions>",
                                                                     GenUtil.RemoveWhiteSpace(txtViewAttributes.Text.Trim())));
                }
                XElement xQueryOptions = XElement.Load(rdrQueryOptions);

                //
                XElement xViewFields = null;
                if (GenUtil.IsNull(txtViewFields.Text))
                {
                    xViewFields = new XElement("ViewFields");
                }
                else
                {
                    StringReader rdrViewFields = new StringReader(string.Format("<ViewFields>{0}</ViewFields>",
                                                                                GenUtil.RemoveWhiteSpace(txtViewFields.Text.Trim())));
                    xViewFields = XElement.Load(rdrViewFields);
                }

                //
                string viewName = "";

                //
                XElement results = proxy.GetListItems(
                    listName,
                    viewName,
                    xQuery.GetXmlNode(),
                    xViewFields.GetXmlNode(),
                    rowLimit,
                    xQueryOptions.GetXmlNode(),
                    webID).GetXElement();


                //
                dt = new DataTable();

                foreach (XElement xRow in results.Descendants(XMLConsts.z + "row"))
                {
                    foreach (XAttribute xAttr in xRow.Attributes())
                    {
                        string colName = xAttr.Name.ToString();

                        if (!dt.Columns.Contains(xAttr.Name.ToString()))
                        {
                            dt.Columns.Add(xAttr.Name.ToString(), typeof(string));
                        }
                    }
                }

                foreach (XElement xRow in results.Descendants(XMLConsts.z + "row"))
                {
                    DataRow dr = dt.NewRow();

                    foreach (XAttribute xAttr in xRow.Attributes())
                    {
                        string colName = xAttr.Name.ToString();
                        string colVal  = xAttr.Value;

                        dr[colName] = colVal;
                    }

                    dt.Rows.Add(dr);
                }
            }
            catch (Exception ex)
            {
                retErr = ex;
            }



            // update gui
            parentForm.Invoke(new MethodInvoker(() =>
            {
                if (retErr != null)
                {
                    GenUtil.LogIt(txtStatus, retErr.ToString());
                }
                else
                {
                    GenUtil.LogIt(txtStatus, string.Format("Found {0} Record(s).", dt.Rows.Count));

                    gvResults.DataSource = dt;

                    if (dt.Rows.Count > 0)
                    {
                        tabControl1.SelectTab(2);
                    }
                }


                // finish action
                btnSearch.Enabled          = true;
                toolStripStatusLabel1.Text = "";
                statusStrip1.Refresh();
                picLogoWait.Visible = false;
                picLogoWait.Refresh();
            }));
        }
        /// <summary>
        /// </summary>
        private void Worker()
        {
            // configure view web service
            List <CustXMLView>  lstViews  = new List <CustXMLView>();
            List <CustXMLField> lstFields = new List <CustXMLField>();

            Exception retErr = null;

            try
            {
                SPWSViews.Views proxyViews = new SPCAMLQueryHelperOnline.SPWSViews.Views();

                if (parentForm.formChooser.appMode == Chooser.AppMode.UseWSDef)
                {
                    proxyViews.UseDefaultCredentials = true;
                }
                else if (parentForm.formChooser.appMode == Chooser.AppMode.UseWSCreds)
                {
                    proxyViews.UseDefaultCredentials = false;
                    proxyViews.Credentials           = new System.Net.NetworkCredential(parentForm.formChooser.credUsername, parentForm.formChooser.credPassword, parentForm.formChooser.credDomain);
                }
                else if (parentForm.formChooser.appMode == Chooser.AppMode.UseWSOffice365)
                {
                    proxyViews.CookieContainer = SharedStuff.GetAuthCookies(new Uri(url), parentForm.formChooser.credUsername, parentForm.formChooser.credPassword);
                }

                proxyViews.Url = GenUtil.CombineUrls(url, XMLConsts.AsmxSuffix_Views);

                // configure list web service
                SPWSLists.Lists proxyLists = new SPCAMLQueryHelperOnline.SPWSLists.Lists();

                if (parentForm.formChooser.appMode == Chooser.AppMode.UseWSDef)
                {
                    proxyLists.UseDefaultCredentials = true;
                }
                else if (parentForm.formChooser.appMode == Chooser.AppMode.UseWSCreds)
                {
                    proxyLists.UseDefaultCredentials = false;
                    proxyLists.Credentials           = new System.Net.NetworkCredential(parentForm.formChooser.credUsername, parentForm.formChooser.credPassword, parentForm.formChooser.credDomain);
                }
                else if (parentForm.formChooser.appMode == Chooser.AppMode.UseWSOffice365)
                {
                    proxyLists.CookieContainer = SharedStuff.GetAuthCookies(new Uri(url), parentForm.formChooser.credUsername, parentForm.formChooser.credPassword);
                }

                proxyLists.Url = GenUtil.CombineUrls(url, XMLConsts.AsmxSuffix_Lists);

                // get list views
                XElement xViews = proxyViews.GetViewCollection(listName).GetXElement();

                foreach (XElement xView in xViews.Elements(XMLConsts.s + "View"))
                {
                    lstViews.Add(new CustXMLView()
                    {
                        DefaultView = GenUtil.SafeToBool(GenUtil.GetXElemAttrAsString(xView, "DefaultView")),
                        DisplayName = GenUtil.GetXElemAttrAsString(xView, "DisplayName"),
                        Name        = GenUtil.GetXElemAttrAsString(xView, "Name"),
                        Url         = GenUtil.GetXElemAttrAsString(xView, "Url")
                    });
                }

                // get list fields
                XElement xList = proxyLists.GetList(listName).GetXElement();

                foreach (XElement xField in xList.Descendants(XMLConsts.s + "Field"))
                {
                    CustXMLField cXmlField = new CustXMLField();

                    cXmlField.DisplayName = GenUtil.GetXElemAttrAsString(xField, "DisplayName");
                    cXmlField.ID          = GenUtil.GetXElemAttrAsString(xField, "ID");
                    cXmlField.Name        = GenUtil.GetXElemAttrAsString(xField, "Name");
                    cXmlField.Required    = GenUtil.SafeToBool(GenUtil.GetXElemAttrAsString(xField, "Required"));
                    cXmlField.Type        = GenUtil.GetXElemAttrAsString(xField, "Type");

                    if (!GenUtil.IsNull(cXmlField.ID))
                    {
                        lstFields.Add(cXmlField);
                    }
                }
            }
            catch (Exception ex)
            {
                retErr = ex;
            }



            // update gui
            parentForm.Invoke(new MethodInvoker(() =>
            {
                ddlListViews.Items.Clear();
                tvFields.Nodes.Clear();
                btnOpenListDetails.Visible = false;


                if (retErr != null)
                {
                    GenUtil.LogIt(txtStatus, retErr.ToString());
                }
                else
                {
                    GenUtil.LogIt(txtStatus, "OK");


                    // render list views
                    ddlListViews.Items.Insert(0, "None");
                    ddlListViews.SelectedIndex = 0;

                    foreach (CustXMLView v in lstViews)
                    {
                        ddlListViews.Items.Add(v.DisplayName);
                    }


                    // render list fields
                    DataTable dt = new DataTable();

                    dt.Columns.Add("Id", typeof(string));
                    dt.Columns.Add("InternalName", typeof(string));
                    dt.Columns.Add("Required", typeof(string));
                    dt.Columns.Add("Title", typeof(string));
                    dt.Columns.Add("TypeAsString", typeof(string));

                    foreach (CustXMLField cXmlField in lstFields)
                    {
                        DataRow dr = dt.NewRow();

                        dr["Id"]           = cXmlField.ID;
                        dr["InternalName"] = cXmlField.Name;
                        dr["Required"]     = cXmlField.Required.ToString();
                        dr["Title"]        = cXmlField.DisplayName;
                        dr["TypeAsString"] = cXmlField.Type;

                        dt.Rows.Add(dr);


                        TreeNode tn = new TreeNode();

                        if (lnkToggleFieldsName.Text == text_show_internalnames)
                        {
                            tn.Text = string.Format("{0} [{1}]", cXmlField.DisplayName, cXmlField.Name);
                        }
                        else
                        {
                            tn.Text = string.Format("{0} [{1}]", cXmlField.Name, cXmlField.DisplayName);
                        }

                        tn.Name = cXmlField.Name;

                        tvFields.Nodes.Add(tn);
                    }


                    DataView dv         = new DataView(dt);
                    dv.Sort             = "Title";
                    gvFields.DataSource = dv;


                    if (tvFields.Nodes.Count > 0)
                    {
                        tvFields.Sort();
                        tvFields.SelectedNode = tvFields.Nodes[0];
                    }
                }

                btnOpenListDetails.Visible = true;

                // finish action
                toolStripStatusLabel1.Text = "";
                statusStrip1.Refresh();

                picLogoWait.Visible = false;
                picLogoWait.Refresh();
            }));
        }