Esempio n. 1
0
        public PanelView(IPanelPresenter presenter, IAddonManager addonManager, IPanelItemFactoryManager factoryManager)
        {
            InitializeComponent();
            // init presenters
            m_Presenter      = presenter;
            m_Presenter.View = this;

            m_AddonManager   = addonManager;
            m_FactoryManager = factoryManager;


            // setup items cache
            var cache = new ListViewItemCache(this);

            //LV.CacheVirtualItems += m_Cache.CacheVirtualItems;
            LV.RetrieveVirtualItem += cache.RetrieveVirtualItem;
            // set dropdown direction for sub-menus (actual for dual-monitor system)
            //mComp.DropDownDirection = ToolStripDropDownDirection.AboveLeft;
            //mSendToNewTab.DropDownDirection = ToolStripDropDownDirection.AboveLeft;
            // focus listview when panel got focus
            GotFocus += (sender, args) => ActiveControl = LV;
            // set filter's presenter
            pFilter.Presenter      = App.Resolve <IFilterPresenter>();
            pFilter.Presenter.View = pFilter;
        }
Esempio n. 2
0
        private void CreateCache(int startIndex, int endIndex)
        {
            var tabInfo = this._statuses.Tabs[this._curTab.Text];

            if (tabInfo.AllCount == 0)
                return;

            // キャッシュ要求(要求範囲±30を作成)
            startIndex = Math.Max(startIndex - 30, 0);
            endIndex = Math.Min(endIndex + 30, tabInfo.AllCount - 1);

            var cacheLength = endIndex - startIndex + 1;

            var posts = tabInfo[startIndex, endIndex]; //配列で取得
            var listItems = Enumerable.Range(0, cacheLength)
                .Select(x => this.CreateItem(this._curTab, posts[x], startIndex + x))
                .ToArray();

            var listCache = new ListViewItemCache
            {
                TargetList = this._curList,
                StartIndex = startIndex,
                EndIndex = endIndex,
                Post = posts,
                ListItem = listItems,
            };

            Interlocked.Exchange(ref this._listItemCache, listCache);
        }