Author: tian
Date: Sun Dec 14 20:27:19 2014
New Revision: 2253

URL: http://svn.gna.org/viewcvs/gcstar?rev=2253&view=rev
Log:
Make image loading faster on Android application

Modified:
    trunk/gcstar/lib/gcstar/GCExport/GCExportBase.pm
    trunk/gcstar/lib/gcstar/GCExport/GCExportExternal.pm
    trunk/gcstar/lib/gcstar/GCExport/GCExportHTML.pm

Modified: trunk/gcstar/lib/gcstar/GCExport/GCExportBase.pm
URL: 
http://svn.gna.org/viewcvs/gcstar/trunk/gcstar/lib/gcstar/GCExport/GCExportBase.pm?rev=2253&r1=2252&r2=2253&view=diff
==============================================================================
--- trunk/gcstar/lib/gcstar/GCExport/GCExportBase.pm    (original)
+++ trunk/gcstar/lib/gcstar/GCExport/GCExportBase.pm    Sun Dec 14 20:27:19 2014
@@ -131,6 +131,29 @@
         my ($self, $suffix, $dir, $title) = @_;
         
         return $self->{options}->{parent}->getUniqueImageFileName($suffix, 
$title, $dir);
+    }
+    
+    sub createMiniature
+    {
+        my ($self, $source, $dest, $newHeight) = @_;
+
+        $source =~ /.*?(\.[^.]*)$/;
+        my $suffix = $1;
+        my $pixbuf = Gtk2::Gdk::Pixbuf->new_from_file($source);
+        my ($width, $height) = ($pixbuf->get_width, $pixbuf->get_height);
+        my $picWidth = $width * ($newHeight / $height);
+        $pixbuf = GCUtils::scaleMaxPixbuf($pixbuf, $picWidth, $newHeight, 1);
+        my $format;
+        if ($suffix =~ /png/i)
+        {
+            $format = 'png';
+        }
+        else
+        {
+            $dest =~ s/\.[^.]*$/\.jpg/;
+            $format = 'jpeg';
+        }
+        $pixbuf->save($dest, $format);       
     }
     
     sub duplicatePicture
@@ -157,21 +180,7 @@
                 my $picHeight = $self->getNewPictureHeight;
                 if ($picHeight)
                 {
-                    my $pixbuf = Gtk2::Gdk::Pixbuf->new_from_file($newPic);
-                    my ($width, $height) = ($pixbuf->get_width, 
$pixbuf->get_height);
-                    my $picWidth = $width * ($picHeight / $height);
-                    $pixbuf = GCUtils::scaleMaxPixbuf($pixbuf, $picWidth, 
$picHeight, 1);
-                    my $format;
-                    if ($suffix =~ /png/i)
-                    {
-                        $format = 'png';
-                    }
-                    else
-                    {
-                        $dest =~ s/\.[^.]*$/\.jpg/;
-                        $format = 'jpeg';
-                    }
-                    $pixbuf->save($dest, $format);
+                    $self->createMiniature($newPic, $dest, $picHeight);
                 }
                 else
                 {

Modified: trunk/gcstar/lib/gcstar/GCExport/GCExportExternal.pm
URL: 
http://svn.gna.org/viewcvs/gcstar/trunk/gcstar/lib/gcstar/GCExport/GCExportExternal.pm?rev=2253&r1=2252&r2=2253&view=diff
==============================================================================
--- trunk/gcstar/lib/gcstar/GCExport/GCExportExternal.pm        (original)
+++ trunk/gcstar/lib/gcstar/GCExport/GCExportExternal.pm        Sun Dec 14 
20:27:19 2014
@@ -45,6 +45,7 @@
         bless ($self, $class);
 
         $self->{useZip} = $self->checkOptionalModule('Archive::Zip');
+        $self->{covers} = {};
 
         return $self;
     }
@@ -57,10 +58,13 @@
     sub transformPicturePath
     {
         my ($self, $path, $file, $item, $field) = @_;
-        return $self->duplicatePicture($path,
+        my $newPath = $self->duplicatePicture($path,
                                        $field,
                                        $self->{imageDir},
                                        
$item->{$self->{model}->{commonFields}->{title}});
+        $self->{isCover}->{$newPath} = 1
+            if $self->{model}->{commonFields}->{cover} eq $field;
+        return $newPath;
     }
 
     sub process
@@ -123,8 +127,19 @@
             my $zip = Archive::Zip->new();
             $zip->addFile(basename($self->{fileName}));
             $zip->addDirectory(basename($self->{imageDir}));
+            my $miniDir = $self->{imageDir}.'-mini';
+            mkdir $miniDir;
+            $zip->addDirectory(basename($miniDir));
             my @images = glob $imagesSubDir.'/*';
-            $zip->addFile($_) foreach @images;
+            foreach my $image(@images)
+            {
+                $zip->addFile($image);
+                my $imgFile = basename($image);
+                my $fullFileName = $self->{imageDir}."/$imgFile";
+                next if !$self->{isCover}->{$image};
+                $self->createMiniature($fullFileName, "$miniDir/$imgFile", 
150);
+                $zip->addFile(basename($miniDir)."/$imgFile");
+            }
             my $result = $zip->writeToFileNamed($outFile);
             if ($result)
             {

Modified: trunk/gcstar/lib/gcstar/GCExport/GCExportHTML.pm
URL: 
http://svn.gna.org/viewcvs/gcstar/trunk/gcstar/lib/gcstar/GCExport/GCExportHTML.pm?rev=2253&r1=2252&r2=2253&view=diff
==============================================================================
--- trunk/gcstar/lib/gcstar/GCExport/GCExportHTML.pm    (original)
+++ trunk/gcstar/lib/gcstar/GCExport/GCExportHTML.pm    Sun Dec 14 20:27:19 2014
@@ -195,6 +195,7 @@
         $parent->{options}->{modelFile}->set_sensitive($model eq 'UseFile');
         $parent->{fieldsSelection}->set_sensitive($self->{isGeneric}->{$model})
             if $parent->{fieldsSelection};
+        $self->{wantsFieldsSelection} = $self->{isGeneric}->{$model};
     }
 
     sub preview
@@ -239,8 +240,9 @@
     sub wantsFieldsSelection
     {
         my $self = shift;
-        return 1;
-        return $self->{genericAdded} || $self->{genericModels};
+        return $self->{wantsFieldsSelection};
+        #return 0;
+        #return $self->{genericAdded} || $self->{genericModels};
     }
     
     sub wantsImagesSelection


_______________________________________________
GCstar-commits mailing list
[email protected]
https://mail.gna.org/listinfo/gcstar-commits

Reply via email to