Beispiel #1
0
        private void FindTable(string itemPath, string text, FindOptions options, FindTableCacheInfo cacheInfo, List <FindResultInfo> results)
        {
            int index = 0;

            foreach (var row in cacheInfo.Rows)
            {
                int c = 0;
                foreach (var value in row.Values)
                {
                    if (value != null && value.IndexOf(text) >= 0)
                    {
                        var resultItem = new FindResultInfo()
                        {
                            Path             = itemPath,
                            Row              = index,
                            ColumnName       = cacheInfo.Columns[c],
                            Value            = value,
                            Tags             = row.Tags,
                            IsEnabled        = row.IsEnabled,
                            ModificationInfo = row.ModificationInfo,
                        };
                        results.Add(resultItem);
                    }
                    c++;
                }
                index++;
            }
        }
        public FindResultItemViewModel(FindResultInfo resultInfo)
        {
            this.resultInfo = resultInfo;
            var itemName = new ItemName(resultInfo.Path);

            this.categoryName = itemName.CategoryPath.Trim(PathUtility.SeparatorChar);
            this.typeName     = itemName.Name;
        }
        private bool FindNextFromResult(object param, bool first)
        {
            try
            {
                var arr = param as object[];
                string findString = arr[0] as string;
                dynamic list = arr[1];
                bool matchCase = (bool)arr[2];
                object selectedItem = arr[3];

                int startIndex = 0;

                if (first)
                    startIndex = 0;
                else if (selectedItem != null)
                {
                    startIndex = list.IndexOf(selectedItem) + 1;
                    if (startIndex > list.Count + 1)
                        startIndex = 0;
                }

                for (int i = startIndex; i < list.Count; i++)
                {
                    dynamic item = list[i];
                    dynamic logItem = item;

                    string message = logItem.Message;

                    if (matchCase == false)
                    {
                        message = message.ToUpper();
                        findString = findString.ToUpper();
                    }

                    int findIndex = message.IndexOf(findString);
                    if (findIndex >= 0)
                    {
                        FindResultInfo findResultInfo = new FindResultInfo();
                        findResultInfo.SelectedItem = item;
                        findResultInfo.SelectionStart = findIndex;
                        findResultInfo.SelectionLength = findString.Length;
                        FindResult = findResultInfo;
                        return true;
                    }
                }

                return false;
            }
            catch
            {
                return false;
            }
        }
Beispiel #4
0
        public async Task <FindResultInfo> Find(BookInfo incoming)
        {
            FindResultInfo result = await FindBook(incoming);

            if (result.Status != MatchStatus.UpToDate)
            {
                return(result);
            }

            FindResultInfo fileResult = FindBookFiles(incoming, result);

            return(fileResult);
        }
Beispiel #5
0
        public async Task <IEnumerable <MatchInfo> > Match(IEnumerable <MatchInfo> incoming)
        {
            var matches = new List <MatchInfo>();

            IEnumerable <MatchInfo> toMatch = incoming
                                              .Where(b => b.IsSelected)
                                              .Where(b => b.Status == MatchStatus.NotAttempted);

            foreach (var match in toMatch)
            {
                FindResultInfo result = await _bookFinder.Find(match.Book);

                match.SetMatch(result.Book, result.Status, result.NewTypes);

                matches.Add(match);

                _messages.Write("Match done: {0}: {1}", match.Book.Title, match.Status);
            }

            return(matches);
        }
Beispiel #6
0
        FindResultInfo FindBookFiles(BookInfo incoming, FindResultInfo foundResult)
        {
            string [] foundTypes = foundResult.Book.Types.ToArray();

            IEnumerable <string> missing = incoming.Types.Where(t => !foundTypes.Contains(t));

            if (missing.Any())
            {
                return(new FindResultInfo
                {
                    Book = foundResult.Book,
                    Status = MatchStatus.NewFiles,
                    NewTypes = missing
                });
            }
            else
            {
                return(new FindResultInfo
                {
                    Book = foundResult.Book,
                    Status = MatchStatus.UpToDate
                });
            }
        }
 public FindResultItemViewModel(FindResultInfo resultInfo)
 {
     this.resultInfo = resultInfo;
     this.itemName   = new ItemName(resultInfo.Path);
 }