Example #1
0
        private void Upload()
        {
            album.UploadProgress += HandleUploadProgress;
            sent_bytes            = 0;
            approx_size           = 0;

            System.Console.WriteLine("Starting Upload to Picasa");

            FilterSet filters = new FilterSet();

            filters.Add(new JpegFilter());

            if (scale)
            {
                filters.Add(new ResizeFilter((uint)size));
            }

            if (rotate)
            {
                filters.Add(new OrientationFilter());
            }

            while (photo_index < items.Length)
            {
                try {
                    IBrowsableItem item = items[photo_index];

                    FileInfo file_info;
                    Console.WriteLine("uploading {0}", photo_index);

                    progress_dialog.Message = String.Format(Catalog.GetString("Uploading picture \"{0}\" ({1} of {2})"),
                                                            item.Name, photo_index + 1, items.Length);
                    photo_index++;

                    FilterRequest request = new FilterRequest(item.DefaultVersionUri);

                    filters.Convert(request);

                    file_info = new FileInfo(request.Current.LocalPath);

                    if (approx_size == 0)                     //first image
                    {
                        approx_size = file_info.Length * items.Length;
                    }
                    else
                    {
                        approx_size = sent_bytes * items.Length / (photo_index - 1);
                    }

                    PicasaPicture picture = album.UploadPicture(request.Current.LocalPath, Path.ChangeExtension(item.Name, "jpg"), item.Description);
                    if (Core.Database != null && item is Photo)
                    {
                        Core.Database.Exports.Create((item as Photo).Id,
                                                     (item as Photo).DefaultVersionId,
                                                     ExportStore.PicasaExportType,
                                                     picture.Link);
                    }

                    sent_bytes += file_info.Length;

                    request.Dispose();
                    //tagging
                    if (item.Tags != null)
                    {
                        foreach (Tag tag in item.Tags)
                        {
                            picture.AddTag(tag.Name);
                        }
                    }
                } catch (System.Exception e) {
                    progress_dialog.Message = String.Format(Catalog.GetString("Error Uploading To Gallery: {0}"),
                                                            e.Message);
                    progress_dialog.ProgressText = Catalog.GetString("Error");
                    System.Console.WriteLine(e);

                    if (progress_dialog.PerformRetrySkip())
                    {
                        photo_index--;
                    }
                }
            }

            progress_dialog.Message      = Catalog.GetString("Done Sending Photos");
            progress_dialog.Fraction     = 1.0;
            progress_dialog.ProgressText = Catalog.GetString("Upload Complete");
            progress_dialog.ButtonLabel  = Gtk.Stock.Ok;

            if (browser)
            {
                GnomeUtil.UrlShow(null, album.Link);
            }
        }