Beispiel #1
0
        private void LoadPlaces(IPlace[] places)
        {
            BrowseList.Clear();

            exploreText.Text = "Collections > " + "KML Collection";
            List <object> items = new List <object>();

            foreach (IPlace place in places)
            {
                items.Add(place);
            }
            BrowseList.AddRange(items);
            this.Refresh();
        }
Beispiel #2
0
        private void LoadTopLevel()
        {
            BrowseList.Clear();
            exploreText.Text = "Collections";
            topLevel         = true;
            if (!Directory.Exists(Properties.Settings.Default.CahceDirectory + @"thumbnails\"))
            {
                Directory.CreateDirectory(Properties.Settings.Default.CahceDirectory + @"thumbnails\");
            }

            AddCollectionFolders();

            ArrayList dataSets = DataSetManager.GetDataSets();

            foreach (DataSet d in dataSets)
            {
                // Todo Change this to exploere earth, moon etc.
                if (d.Sky == true)
                {
                    if (d != null)
                    {
                        ArrayList placesList = d.GetPlaces();
                        foreach (Places places in placesList)
                        {
                            if (places != null && places.Browseable)
                            {
                                ThumbMenuNode node = new ThumbMenuNode();
                                node.Name   = places.Name;
                                node.Places = places;

                                //string filename = places.ThumbnailUrl.Substring(places.ThumbnailUrl.LastIndexOf("/") + 1);
                                //DataSetManager.DownloadFile(places.ThumbnailUrl, Properties.Settings.Default.CahceDirectory + @"thumbnails\" + filename, true);

                                //node.ThumbNail = UiTools.LoadBitmap(Properties.Settings.Default.CahceDirectory + @"thumbnails\" + filename);
                                node.ThumbNail = UiTools.LoadThumbnailFromWeb(places.ThumbnailUrl);
                                BrowseList.Add(node);
                            }
                        }
                    }
                }
            }
            Refresh();
        }
Beispiel #3
0
 private void ListName_KeyDown(object sender, KeyEventArgs e)
 {
     BrowseList.Focus();
     BrowseList_Click(null, null);
 }
Beispiel #4
0
        // 获取浏览记录
        public long DoBrowse(
            BrowseList listView,
            string strLang,
            DigitalPlatform.Stop stop,
            string strResultSetName,
            string strOutputStyle,
            out string strError)
        {
            strError = "";

            Record[] records = null;

            long nStart = 0;
            long nPerCount = -1;

            int nCount = 0;

            bool bOutputKeyID = StringUtil.IsInList("keyid", strOutputStyle);

            long lTotalCount = -1;
            for (; ; )
            {
                DoIdle(); // 出让控制权,避免CPU资源耗费过度

                if (stop != null)
                {
                    if (stop.State != 0)
                    {
                        strError = "用户中断";
                        return -1;
                    }
                }

                nPerCount = -1; // 2013/2/12
            REDO:
                try
                {
                    IAsyncResult soapresult = this.ws.BeginGetRecords(
                        strResultSetName,
                        nStart,
                        nPerCount,
                        strLang,
                        strOutputStyle, //"id,cols",
                        null,
                        null);

                    for (; ; )
                    {
                        DoIdle(); // 出让控制权,避免CPU资源耗费过度
                        bool bRet = soapresult.AsyncWaitHandle.WaitOne(100, false);
                        if (bRet == true)
                            break;
                    }
                    if (this.m_ws == null)
                    {
                        strError = "用户中断";
                        this.ErrorCode = ChannelErrorCode.RequestCanceled;
                        return -1;
                    }
                    Result result = this.ws.EndGetRecords(
                        out records, soapresult);

                    if (result.Value == -1)
                    {
                        // 2011/4/21
                        if (result.ErrorCode == ErrorCodeValue.NotLogin
                            && this.Container != null)
                        {
                            // return:
                            //		-1	error
                            //		0	login failed
                            //		1	login succeed
                            int nRet = this.UiLogin("",
                                out strError);
                            if (nRet == -1 || nRet == 0)
                            {
                                return -1;
                            }

                            goto REDO;
                        }

                        ConvertErrorCode(result);
                        strError = result.ErrorString;
                        return -1;
                    }
                    else
                    {
                        Debug.Assert(records != null, "WebService GetRecords() API record参数返回值不应为null");

                        lTotalCount = result.Value;

                        if (nStart == 0 && stop != null)
                            stop.SetProgressRange(0, lTotalCount);
                    }

                    if (records != null)
                    {
                        nCount += records.Length;
                    }

                    listView.BeginUpdate();
                    try
                    {
                        // 做事
                        for (int i = 0; i < records.Length; i++)
                        {
                            DoIdle(); // 出让控制权,避免CPU资源耗费过度

                            if (stop != null)
                            {
                                if (stop.State != 0)
                                {
                                    strError = "用户中断";
                                    return -1;
                                }

                                stop.SetMessage("正在装入 " + Convert.ToString(nStart + i) + " / "
                                    + ((lTotalCount == -1) ? "?" : Convert.ToString(lTotalCount)));
                            }

                            Record record = records[i];

                            string[] cols = null;
                            if (bOutputKeyID == true)
                            {
                                cols = new string[(record.Cols == null ? 0 : record.Cols.Length) + 1];
                                cols[0] = BuildDisplayKeyString(record.Keys);
                                if (cols.Length > 1)
                                    Array.Copy(record.Cols, 0, cols, 1, cols.Length - 1);
                            }
                            else
                                cols = record.Cols;

                            listView.NewLine(record.Path + " @" + this.Url,
                                cols);
                            // record.ID 放入第一列
                            // record.Cols 放入其他列(如果为keyid方式,key在这一群的第一列)
                        }

                        if (stop != null)
                            stop.SetProgressValue(nStart + records.Length);
                    }
                    finally
                    {
                        listView.EndUpdate();
                    }

                    if (nCount >= result.Value)
                        break;

                    if (records != null)
                    {
                        nStart += records.Length;
                    }

                }
                catch (Exception ex)
                {
                    /*
                    strError = ConvertWebError(ex);
                    return -1;
                     * */
                    int nRet = ConvertWebError(ex, out strError);
                    if (nRet == 0)
                        return -1;
                    // 2013/2/11
                    if (this.ErrorCode == ChannelErrorCode.QuotaExceeded)
                    {
                        if (nPerCount > 1 || nPerCount == -1)
                            nPerCount = 1;   // 修改为最小数量重做一次
                        else
                            return -1;
                    }
                    goto REDO;
                }
            }

            this.ClearRedoCount();
            if (stop != null)
                stop.HideProgress();
            return 0;
        }
Beispiel #5
0
 protected override void SetFocusedChild()
 {
     BrowseList.Focus();
 }
Beispiel #6
0
 private void AddCollectionFolders()
 {
     BrowseList.Add(MyCollections);
 }