Exemplo n.º 1
0
        public async Task <bool> GetMyFavorite()
        {
            if (IsBusy)
            {
                return(false);
            }
            IsBusy = true;
            try
            {
                if (IsFavoriteView)
                {
                    var myimages = new List <DerpImage>();
                    var mylist   = await derpibooru.GetDerpFavoriteImages(UserAPIKey);

                    foreach (var image in mylist)
                    {
                        if (!MyImages.Any(i => i.Id == image.Id))
                        {
                            image.IsFavorite = true;
                            myimages.Add(image);
                        }
                    }
                    foreach (var img in myimages)
                    {
                        await DerpImageDb.InsertDerpImageAsync(img);
                    }
                    await ExecuteLoadItemsCommand();
                }
            }
            catch
            {
            }
            IsBusy = false;
            return(true);
        }
Exemplo n.º 2
0
        public async Task <bool> GetMyFiles()
        {
            bool res = false;

            if (IsBusy)
            {
                return(false);
            }
            if (IsFavoriteView)
            {
                IsBusy               = true;
                Downloading          = true;
                ProgressBarIsVisible = true;
                ProgressBarHeight    = 8;
                try
                {
                    int    index     = 0;
                    string directory = await fileService.CreateDirectory("");

                    var filelist = (await fileService.GetSubList("")).FindAll(i => i.Name.Contains("__"));
                    var myimages = new List <DerpImage>();
                    foreach (var file in filelist)
                    {
                        var name = file.Name;
                        if (name.Contains("__"))
                        {
                            int    d;
                            string id = name.Substring(0, name.IndexOf('_'));
                            if (int.TryParse(id, out d))
                            {
                                if (!MyImages.Any(i => i.Id == id))
                                {
                                    var image = await derpibooru.GetDerpImage(id);

                                    if (image != null)
                                    {
                                        image.IsFavorite = true;
                                        myimages.Add(image);
                                    }
                                }
                            }
                        }
                        index++;
                        Progress2 = (float)index / filelist.Count;
                    }
                    foreach (var img in myimages)
                    {
                        await DerpImageDb.InsertDerpImageAsync(img);
                    }
                    res = true;
                }
                catch
                {
                    res = false;
                }
                await ExecuteLoadItemsCommand();

                Progress2            = 0;
                ProgressBarHeight    = 0;
                ProgressBarIsVisible = false;
                Downloading          = false;
                IsBusy = false;
            }
            return(res);
        }
Exemplo n.º 3
0
 public async Task AddToMyImageListAsync(DerpImage img)
 {
     MyImages.Insert(0, img);
     await DerpImageDb.InsertDerpImageAsync(img);
 }
Exemplo n.º 4
0
 public async Task DeleteFromMyImageListAsync(DerpImage img)
 {
     MyImages.Remove(img);
     await DerpImageDb.DeleteDerpImageAsync(img);
 }
Exemplo n.º 5
0
        public async Task <bool> ExecuteLoadItemsCommand()
        {
            try
            {
                int thread;
                lock (lockobject)
                {
                    thread = ++ThreadCount;
                }
                page       = 1;
                endPage    = false;
                searchmode = true;

                if (!DerpImageDb.IsLoaded)
                {
                    await DerpImageDb.Load();
                }

                var mylist = await DerpImageDb.GetDerpImagesAsync();

                var files = await fileService.GetSubFiles("");

                List <CtFileItem> filelist = null;
                if (files != null)
                {
                    filelist = files.FindAll(i => i.Name.Contains("__"));
                    if (mylist != null)
                    {
                        mylist.Reverse();
                        MyImages = new ObservableCollection <DerpImage>(mylist);
                    }
                    fileList.Clear();
                    if (filelist != null && filelist.Count > 0)
                    {
                        fileList.AddRange(filelist);
                    }
                }

                var imgs = new ObservableCollection <DerpImage>();

                if (IsFavoriteView)
                {
                    if (CurrentKey.Length == 0)
                    {
                        imgs = MyImages;
                    }
                    else
                    {
                        imgs = SearchDerpImage(MyImages, CurrentKey);
                    }
                }
                else
                {
                    if (CurrentKey.Length == 0)
                    {
                        CurrentKey = "*";
                    }
                    var temp = await derpibooru.GetSearchImage(mylist, filelist, UserAPIKey, CurrentKey, page, sortBy, sortOrder);

                    imgs = new ObservableCollection <DerpImage>(temp);
                }

                var flag = false;
                lock (lockobject)
                {
                    if (ThreadCount == thread)
                    {
                        Images      = imgs;
                        ThreadCount = 0;
                        flag        = true;
                    }
                }
                if (flag)
                {
                    await ImageService.Instance.InvalidateCacheAsync(CacheType.All);

                    GC.Collect();
                    return(true);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            return(false);
        }