Пример #1
0
        public void SetSource(string source)
        {
            Console.WriteLine("SetSource: {0}", source);

            hitSources = new ArrayList();

            if (source != null)
            {
                hitSources.Add(source);
            }

            hits = new ArrayList();
            for (int i = 0; i < NumResults; i++)
            {
                HitTilePair pair = (HitTilePair)all_hits [i];

                if (SourceIsDisplayable(pair.Hit))
                {
                    InsertDisplayable(pair);
                }
                else
                {
                    Console.WriteLine("{0} -- {1}", pair.Hit.Type, pair.Hit.Uri);
                }
            }

            Changed();
        }
Пример #2
0
        public bool Subtract(Uri uri)
        {
            bool removed = false;

            for (int i = 0; i < all_hits.Count; ++i)
            {
                HitTilePair pair = (HitTilePair)all_hits [i];
                if (pair.Hit.Uri.Equals(uri) && pair.Hit.Uri.Fragment == uri.Fragment)
                {
                    all_hits.Remove(pair);
                    removed = true;
                    break;
                }
            }

            for (int i = 0; i < hits.Count; ++i)
            {
                HitTilePair pair = (HitTilePair)hits [i];
                if (pair.Hit.Uri.Equals(uri) && pair.Hit.Uri.Fragment == uri.Fragment)
                {
                    hits.Remove(pair);
                    break;
                }
            }

            return(removed);
        }
Пример #3
0
        private void RenderTiles(TileRenderContext ctx)
        {
            int i  = FirstDisplayed;
            int i1 = LastDisplayed;

            while (i <= i1 && i < NumResults)
            {
                HitTilePair pair = (HitTilePair)hits [i];
                ctx.Tile(pair.Tile);
                ++i;
            }
        }
Пример #4
0
        private bool InsertDisplayable(HitTilePair pair)
        {
            int i = hits.BinarySearch(pair);

            hits.Insert(i < 0 ? ~i : i, pair);
            if (i == 0 || i < LastDisplayed)
            {
                Changed();
                return(true);
            }

            return(false);
        }
Пример #5
0
        public void AddSource(string source)
        {
            hitSources.Add(source);

            for (int i = 0; i < NumDisplayableResults; i++)
            {
                HitTilePair pair = (HitTilePair)hits [i];

                if (!SourceIsDisplayable(pair.Hit))
                {
                    hits.RemoveAt(i);
                }
            }
        }
Пример #6
0
        public void SubtractSource(string source)
        {
            hitSources.Remove(source);

            for (int i = 0; i < NumResults; i++)
            {
                HitTilePair pair = (HitTilePair)hits [i];

                if (pair.Hit.Source != source)
                {
                    continue;
                }

                int j = hits.BinarySearch(pair);

                hits.Insert(j < 0 ? ~j : j, pair);
                if (j == 0 || j < LastDisplayed)
                {
                    Changed();
                }
            }
        }
Пример #7
0
        public bool Add(Hit hit, Tile tile)
        {
            bool changed = false;

            HitTilePair pair = new HitTilePair(hit, tile);
            int         i    = all_hits.BinarySearch(pair);

            all_hits.Insert(i < 0 ? ~i : i, pair);
            if (i == 0 || i < LastDisplayed)
            {
                Changed();
                changed = true;
            }

            if (SourceIsDisplayable(hit))
            {
                if (InsertDisplayable(pair))
                {
                    changed = true;
                }
            }

            return(changed);
        }
Пример #8
0
            public int CompareTo(object obj)
            {
                HitTilePair other = (HitTilePair)obj;

                return(hit.CompareTo(other.hit));
            }
Пример #9
0
		public bool Add (Hit hit, Tile tile)
		{
			bool changed = false;
			
			HitTilePair pair = new HitTilePair (hit, tile);
			int i = all_hits.BinarySearch (pair);
			all_hits.Insert (i < 0 ? ~i : i, pair);
			if (i == 0 || i < LastDisplayed) {
				Changed ();
				changed = true;
			}

			if (SourceIsDisplayable (hit)) {
				if (InsertDisplayable (pair))
					changed = true;
			}

			return changed;
		}
Пример #10
0
		private bool InsertDisplayable (HitTilePair pair)
		{
			int i = hits.BinarySearch (pair);
				
			hits.Insert (i < 0 ? ~i : i, pair);
			if (i == 0 || i < LastDisplayed) {
				Changed ();
				return true;
			}

			return false;
		}