/// <summary>
        /// Get directory items and set them to obs collection
        /// </summary>
        /// <param name="root">Directory full path</param>
        private async void GetDir(string root)
        {
            try {
                if (File.Exists(root))
                {
                    DirectoryList.SelectedItem = null;
                    return;
                }
                currentDirectory = new DirectoryInfo(root);
                DirList          = DirList ?? new ObservableCollection <DirectoryItem>();
                DirList.Clear();
                // if name of folder is '0' set it as 'emulated/0'
                CurrFolderNameInfo = currentDirectory.Name == "0" ? Path.Combine(currentDirectory.Parent.Name, currentDirectory.Name) : currentDirectory.Name;
                CurrFolderPathInfo = currentDirectory.GetFileSystemInfoFullName();

                await Task.Run(() => {
                    Utilites.SetDirectoriesToList(currentDirectory, DirList);
                    foreach (var item in DirList)
                    {
                        item.PropertyChanged += ItemChecked_PropertyChanged;
                    }
                });
            } catch (Exception ex) {
                return;
            }
        }
        private async void EntrySearch_TextChanged(object sender, TextChangedEventArgs e)
        {
            List <FileSystemInfo> baseStors    = null;
            List <FileSystemInfo> foundedItems = null;

            CurrFolderPathInfo = "Founded - 0";
            var searchText = "";

            try {
                DirList.Clear();
                if (!string.IsNullOrEmpty(e.NewTextValue) || !string.IsNullOrWhiteSpace(e.NewTextValue))
                {
                    searchText   = e.NewTextValue.Trim().ToLower();
                    baseStors    = new List <FileSystemInfo>();
                    foundedItems = new List <FileSystemInfo>();
                    // get storage folders, this allow to skip 'self directory'
                    baseStors.AddRange(new DirectoryInfo("/storage").GetFileSystemInfos());
                    await Task.Run(() => {
                        foreach (var item in baseStors)
                        {
                            if (item.Name == "self")
                            {
                                continue;
                            }
                            // search all entries by full path and then skipping elements, witch names that don't match
                            foreach (var elem in Utilites.SearchAccessibleDirectoryItemsByFullName(item.GetFileSystemInfoFullName(), searchText).Distinct())
                            {
                                if (elem.Split('/').Last().ToLower().Contains(searchText))
                                {
                                    foundedItems.Add(elem.Split('.').Count() > 1 ? new FileInfo(elem) as FileSystemInfo : new DirectoryInfo(elem));
                                }
                            }
                        }
                        Utilites.FillDirsCollectionByItems(foundedItems, DirList, true);

                        CurrFolderPathInfo = $"Founded - {DirList.Count()}";
                    });
                }
            } catch (Exception ex) { }
        }
        private async void ButtonSearch_CheckAll_Accept_Clicked(object sender, EventArgs e)
        {
            if (IsTransferMode || IsCopyMode)
            {
                ModalBackGroundShown     = true;
                ActivityIndicatorShown   = true;
                ActivityIndicatorMessage = $"Processed - 0/{ItemsForTransfer.Count()}";

                // start operation
                await Task.Run(() => {
                    var i = 0;
                    foreach (var item in ItemsForTransfer)
                    {
                        if (currentDirectory.FullName.Contains(item.FullPath))
                        {
                            ShowErrorMessage($"This is a child folder of {item.Name}");
                            return(false);
                        }
                        Utilites.MoveCopyDirItem(item.FullPath, Path.Combine(currentDirectory.FullName, item.Name), IsCopyMode);
                        i++;
                        ActivityIndicatorMessage = $"Processed - {i}/{ItemsForTransfer.Count()}";
                    }
                    return(true);
                }).ContinueWith((arg) => {
                    if (!arg.Result)
                    {
                        return;
                    }
                    foreach (var item in DirList)
                    {
                        item.ItemChecked = isAllChecked;
                    }
                    GetDir(currentDirectory.GetFileSystemInfoFullName());
                }).ContinueWith((arg) => {
                    ModalBackGroundShown     = false;
                    ActivityIndicatorShown   = false;
                    ActivityIndicatorMessage = "";
                });

                SetTransferUi(false);
                return;
            }
            if (MenuShown)
            {
                isAllChecked = !isAllChecked;
                await Task.Run(() => {
                    foreach (var item in DirList)
                    {
                        item.ItemChecked = isAllChecked;
                    }
                });
            }
            else
            {
                isSearchShown = !isSearchShown;
                SetSearchUi(isSearchShown);
                if (isSearchShown)
                {
                    DirList.Clear();
                    // little hack for android
                    await Task.Run(() => {
                        Task.Delay(200).ContinueWith((args) => EntrySearchField.Focus());
                    });
                }
                else
                {
                    GetDir(currentDirectory.GetFileSystemInfoFullName());
                }
            }
        }