예제 #1
0
        private void Form1_Load(object sender, EventArgs e)
        {
            if (this.DesignMode)
            {
                return;
            }

            RestoreSizeAndLocation();

            // load default/missing cover images. this will also initiate the background image downloader
            var format = System.Drawing.Imaging.ImageFormat.Jpeg;

            PictureStorage.SetDefaultImage(PictureSize._80x80, Properties.Resources.default_cover_80x80.ToBytes(format));
            PictureStorage.SetDefaultImage(PictureSize._300x300, Properties.Resources.default_cover_300x300.ToBytes(format));
            PictureStorage.SetDefaultImage(PictureSize._500x500, Properties.Resources.default_cover_500x500.ToBytes(format));

            RefreshImportMenu();

            setVisibleCount(null, 0);

            reloadGrid();

            // also applies filter. ONLY call AFTER loading grid
            loadInitialQuickFilterState();

            // init bottom counts
            backupsCountsLbl.Text = "[Calculating backed up book quantities]";
            pdfsCountsLbl.Text    = "[Calculating backed up PDFs]";
            setBackupCounts(null, null);
        }
예제 #2
0
파일: Form1.cs 프로젝트: rmcrackan/Libation
        public Form1()
        {
            InitializeComponent();

            // back up string formats
            beginBookBackupsToolStripMenuItem_format = beginBookBackupsToolStripMenuItem.Text;
            beginPdfBackupsToolStripMenuItem_format  = beginPdfBackupsToolStripMenuItem.Text;

            if (this.DesignMode)
            {
                return;
            }

            // independent UI updates
            this.Load        += (_, _) => this.RestoreSizeAndLocation(Configuration.Instance);
            this.Load        += RefreshImportMenu;
            this.FormClosing += (_, _) => this.SaveSizeAndLocation(Configuration.Instance);
            LibraryCommands.LibrarySizeChanged           += reloadGridAndUpdateBottomNumbers;
            LibraryCommands.BookUserDefinedItemCommitted += setBackupCounts;
            // used by async migrations to update ui when complete
            DataLayer.UserDefinedItem.Batch_ItemChanged += reloadGridAndUpdateBottomNumbers;

            var format = System.Drawing.Imaging.ImageFormat.Jpeg;

            PictureStorage.SetDefaultImage(PictureSize._80x80, Properties.Resources.default_cover_80x80.ToBytes(format));
            PictureStorage.SetDefaultImage(PictureSize._300x300, Properties.Resources.default_cover_300x300.ToBytes(format));
            PictureStorage.SetDefaultImage(PictureSize._500x500, Properties.Resources.default_cover_500x500.ToBytes(format));
        }
예제 #3
0
        public static ReadPictureResponse MapPictureStorageToReadPictureResponse(PictureStorage pictureStorage)
        {
            if (pictureStorage == null)
            {
                return(null);
            }

            return(new ReadPictureResponse
            {
                Id = pictureStorage.Id,
                Url = pictureStorage.Url,
                Caption = pictureStorage.Caption,
                CreatedAt = pictureStorage.CreatedAt,
                Votes = pictureStorage.Votes
            });
        }
예제 #4
0
        public async Task UpdateAsync(string pictureId, PictureStorage pictureStorage)
        {
            var pictureUpdateBuilder = Builders <PictureStorage> .Update;

            var updateValues = new List <UpdateDefinition <PictureStorage> >();

            if (!string.IsNullOrEmpty(pictureStorage.Caption))
            {
                updateValues.Add(pictureUpdateBuilder.Set(x => x.Caption, pictureStorage.Caption));
            }

            updateValues.Add(pictureUpdateBuilder.Set(x => x.Votes, pictureStorage.Votes));

            var pictureUpdate = pictureUpdateBuilder.Combine(updateValues);

            await _pictureCollection.UpdateOneAsync(x => x.Id == pictureId, pictureUpdate);
        }
예제 #5
0
        public static Image GetImage(string pictureId, PictureSize size)
        {
            var def = new PictureDefinition(pictureId, size);

            if (!cache.ContainsKey(def))
            {
                (var isDefault, var bytes) = PictureStorage.GetPicture(def);

                var image = ImageReader.ToImage(bytes);
                if (isDefault)
                {
                    return(image);
                }
                cache[def] = image;
            }
            return(cache[def]);
        }
예제 #6
0
        public override void Processable_Begin(object sender, LibraryBook libraryBook)
        {
            base.Processable_Begin(sender, libraryBook);

            GetCoverArtDelegate = () => PictureStorage.GetPictureSynchronously(
                new PictureDefinition(
                    libraryBook.Book.PictureId,
                    PictureSize._500x500));

            //Set default values from library
            AudioDecodable_TitleDiscovered(sender, libraryBook.Book.Title);
            AudioDecodable_AuthorsDiscovered(sender, string.Join(", ", libraryBook.Book.Authors));
            AudioDecodable_NarratorsDiscovered(sender, string.Join(", ", libraryBook.Book.NarratorNames));
            AudioDecodable_CoverImageDiscovered(sender,
                                                PictureStorage.GetPicture(
                                                    new PictureDefinition(
                                                        libraryBook.Book.PictureId,
                                                        PictureSize._80x80)).bytes);
        }
예제 #7
0
        // 1st draft: lazily cribbed from GridEntry.ctor()
        private void initDetails()
        {
            this.Text = Book.Title;

            (_, var picture)   = PictureStorage.GetPicture(new PictureDefinition(Book.PictureId, PictureSize._80x80));
            this.coverPb.Image = Dinah.Core.Drawing.ImageReader.ToImage(picture);

            var t = @$ "
Title: {Book.Title}
Author(s): {Book.AuthorNames}
Narrator(s): {Book.NarratorNames}
Length: {(Book.LengthInMinutes == 0 ? " " : $" { Book.LengthInMinutes / 60 } hr {
                Book.LengthInMinutes % 60
            } min ")}
Category: {string.Join(" > ", Book.CategoriesNames)}
Purchase Date: {_libraryBook.DateAdded.ToString(" d ")}
".Trim();

            if (!string.IsNullOrWhiteSpace(Book.SeriesNames))
            {
                t += $"\r\nSeries: {Book.SeriesNames}";
            }

            var bookRating = Book.Rating?.ToStarString();

            if (!string.IsNullOrWhiteSpace(bookRating))
            {
                t += $"\r\nBook Rating:\r\n{bookRating}";
            }

            var myRating = Book.UserDefinedItem.Rating?.ToStarString();

            if (!string.IsNullOrWhiteSpace(myRating))
            {
                t += $"\r\nMy Rating:\r\n{myRating}";
            }

            this.detailsTb.Text = t;
        }
예제 #8
0
        public async Task <string> CreateAsync(PictureStorage pictureStorage)
        {
            await _pictureCollection.InsertOneAsync(pictureStorage);

            return(pictureStorage.Id);
        }