[KimDaBa] Patch to add symlink, hardlink, and no thumbnails options to HTML export
Jesper K. Pedersen
blackie at blackie.dk
Wed Sep 29 19:02:38 BST 2004
Thanks for the patches. Unfortunately they came in to late. KimDaBa is not in
message freeze, so I can't apply it before release of 2.0
I will apply it as soon as 2.0 is release tho.
Cheers
Jesper.
On Friday 24 September 2004 01:52, Robert L Krawitz wrote:
| The following patch offers options to export by hard link and symlink
| as a way to save disk space in situations where it is not really
| necessary to copy files. In addition, there's an option offered to
| not generate thumbnails. Finally, since it can't really be separated
| out, the progress dialog is updated more accurately.
|
| diff -ru kimdaba-2004-09-11-noi18n/kimdaba/export.cpp
| kimdaba-2004-09-11-noi18.new/kimdaba/export.cpp ---
| kimdaba-2004-09-11-noi18n/kimdaba/export.cpp 2004-08-23 11:52:27.000000000
| -0400 +++ kimdaba-2004-09-11-noi18.new/kimdaba/export.cpp 2004-09-11
| 08:48:26.000000000 -0400 @@ -54,7 +54,7 @@
|
| bool ok;
| Export* exp = new Export( list, zipFile,
| config._compress->isChecked(), maxSize, config.imageFileLocation(), -
| QString::fromLatin1( "" ), ok );
| + QString::fromLatin1( "" ), ok,
| config._generateThumbnails->isChecked()); delete exp; // It will not return
| before done - we still need a class to connect slots etc.
|
| if ( ok )
| @@ -75,12 +75,18 @@
| _include = new QRadioButton( i18n("Include in .kim file"), grp );
| _manually = new QRadioButton( i18n("Manual copy next to .kim file"),
| grp ); _auto = new QRadioButton( i18n("Automatically copy next to .kim
| file"), grp ); + _link = new QRadioButton( i18n("Hard link next to .kim
| file"), grp ); _manually->setChecked( true );
|
| // Compress
| _compress = new QCheckBox( i18n("Compress Export File"), top );
| lay1->addWidget( _compress );
|
| + // Generate thumbnails
| + _generateThumbnails = new QCheckBox( i18n("Generate Thumbnails"), top
| ); + _generateThumbnails->setChecked(true);
| + lay1->addWidget( _generateThumbnails );
| +
| // Enforece max size
| QHBoxLayout* hlay = new QHBoxLayout( lay1, 6 );
| _enforeMaxSize = new QCheckBox( i18n( "Limit maximum image dimension
| to: " ), top, "_enforeMaxSize" ); @@ -99,6 +105,9 @@
| "if your images are stored in tiff.</p></qt>" );
| QWhatsThis::add( _compress, txt );
|
| + txt = i18n( "<qt><p>Generate thumbnail images</p></qt>" );
| + QWhatsThis::add( _generateThumbnails, txt );
| +
| txt = i18n( "<qt><p>With this option you may limit the maximum
| dimensions (width and height) of your images. " "Doing so will make the
| resulting export file smaller, but will of course also make the quality "
| "worse if someone wants to see the exported images with larger
| dimensions.</p></qt>" ); @@ -118,6 +127,7 @@
| QWhatsThis::add( grp, txt );
| QWhatsThis::add( _include, txt );
| QWhatsThis::add( _manually, txt );
| + QWhatsThis::add( _link, txt );
| QWhatsThis::add( _auto, txt );
| setHelp( QString::fromLatin1( "chp-exportDialog" ) );
| }
| @@ -134,7 +144,7 @@
|
|
| Export::Export( const ImageInfoList& list, const QString& zipFile, bool
| compress, int maxSize, ImageFileLocation location, - const
| QString& baseUrl, bool& ok )
| + const QString& baseUrl, bool& ok, bool
| doGenerateThumbnails )
|
| : _ok( ok ), _maxSize( maxSize ), _location( location )
|
| {
| ok = true;
| @@ -148,9 +158,11 @@
| }
|
| // Create progress dialog
| - int total = list.count(); // number of images * create the thumbnails
| - if ( location != ManualCopy )
| - total *= 2; // number of images * copy images
| + int total = 1;
| + if (location != ManualCopy)
| + total += list.count();
| + if (doGenerateThumbnails)
| + total += list.count();
|
| _steps = 0;
| _progressDialog = new QProgressDialog( QString::null, i18n("Cancel"),
| total, 0, "progress dialog", true ); @@ -165,19 +177,22 @@
| copyImages( list );
| }
|
| - if ( _ok ) {
| + if ( _ok && doGenerateThumbnails ) {
| _copyingFiles = false;
| generateThumbnails( list );
| }
|
| if ( _ok ) {
| // Create the index.xml file
| + _progressDialog->setLabelText(i18n("Creating index file"));
| QCString indexml = createIndexXML( list, baseUrl );
| time_t t;
| time(&t);
| _zip->writeFile( QString::fromLatin1( "index.xml" ),
| QString::null, QString::null, indexml.size()-1, 0444, t, t, t,
| indexml.data() );
|
| + _steps++;
| + _progressDialog->setProgress( _steps );
| _zip->close();
| }
| }
| @@ -245,6 +260,8 @@
| _zip->addLocalFile( file, QString::fromLatin1( "Images/" )
| + zippedName ); else if ( _location == AutoCopy )
| Util::copy( file, _destdir + QString::fromLatin1( "/" ) +
| zippedName ); + else if ( _location == Link )
| + Util::make_link( file, _destdir + QString::fromLatin1( "/"
| ) + zippedName ); _steps++;
| _progressDialog->setProgress( _steps );
| }
| diff -ru kimdaba-2004-09-11-noi18n/kimdaba/export.h
| kimdaba-2004-09-11-noi18.new/kimdaba/export.h ---
| kimdaba-2004-09-11-noi18n/kimdaba/export.h 2004-08-23 11:52:27.000000000
| -0400 +++ kimdaba-2004-09-11-noi18.new/kimdaba/export.h 2004-09-11
| 09:09:40.000000000 -0400 @@ -29,7 +29,7 @@
| class KZip;
| class QProgressDialog;
|
| -enum ImageFileLocation { Inline, ManualCopy, AutoCopy };
| +enum ImageFileLocation { Inline, ManualCopy, AutoCopy, Link };
|
| class Export :public ImageClient {
|
| @@ -37,7 +37,7 @@
| static void imageExport( const ImageInfoList& list);
| virtual void pixmapLoaded( const QString& fileName, const QSize& size,
| const QSize& fullSize, int angle, const QImage& ); Export( const
| ImageInfoList& list, const QString& zipFile, bool compress, int maxSize, -
| ImageFileLocation, const QString& baseUrl, bool& ok ); +
| ImageFileLocation, const QString& baseUrl, bool& ok, bool
| generateThumbnails ); static void showUsageDialog();
|
| protected:
| @@ -66,6 +66,7 @@
| public:
| ExportConfig();
| QCheckBox* _compress;
| + QCheckBox* _generateThumbnails;
| QCheckBox* _enforeMaxSize;
| QSpinBox* _maxSize;
|
| @@ -74,6 +75,7 @@
| private:
| QRadioButton* _include;
| QRadioButton* _manually;
| + QRadioButton* _link;
| QRadioButton* _auto;
| };
|
| diff -ru kimdaba-2004-09-11-noi18n/kimdaba/htmlexportdialog.cpp
| kimdaba-2004-09-11-noi18.new/kimdaba/htmlexportdialog.cpp ---
| kimdaba-2004-09-11-noi18n/kimdaba/htmlexportdialog.cpp 2004-08-23
| 11:52:27.000000000 -0400 +++
| kimdaba-2004-09-11-noi18.new/kimdaba/htmlexportdialog.cpp 2004-09-11
| 08:44:44.000000000 -0400 @@ -276,7 +276,7 @@
| if ( destURL.isEmpty() )
| destURL = _baseURL->text();
|
| - Export* exp = new Export( _list, kimFileName( false ), false, -1,
| ManualCopy, destURL, ok ); + Export* exp = new Export( _list,
| kimFileName( false ), false, -1, ManualCopy, destURL, ok, true ); delete
| exp; // It will not return before done - we still need a class to connect
| slots etc. if ( !ok )
| return false;
| diff -ru kimdaba-2004-09-11-noi18n/kimdaba/util.cpp
| kimdaba-2004-09-11-noi18.new/kimdaba/util.cpp ---
| kimdaba-2004-09-11-noi18n/kimdaba/util.cpp 2004-09-04 15:05:47.000000000
| -0400 +++ kimdaba-2004-09-11-noi18.new/kimdaba/util.cpp 2004-09-11
| 08:46:40.000000000 -0400 @@ -319,6 +319,22 @@
| return true;
| }
|
| +bool Util::make_link( const QString& from, const QString& to )
| +{
| + if (link(from.ascii(), to.ascii()) != 0)
| + return false;
| + else
| + return true;
| +}
| +
| +bool Util::make_symlink( const QString& from, const QString& to )
| +{
| + if (symlink(from.ascii(), to.ascii()) != 0)
| + return false;
| + else
| + return true;
| +}
| +
| QString Util::readInstalledFile( const QString& fileName )
| {
| QString inFileName = locate( "data", QString::fromLatin1( "kimdaba/%1"
| ).arg( fileName ) ); diff -ru kimdaba-2004-09-11-noi18n/kimdaba/util.h
| kimdaba-2004-09-11-noi18.new/kimdaba/util.h ---
| kimdaba-2004-09-11-noi18n/kimdaba/util.h 2004-09-04 15:05:47.000000000
| -0400 +++ kimdaba-2004-09-11-noi18.new/kimdaba/util.h 2004-09-11
| 08:45:32.000000000 -0400 @@ -35,6 +35,8 @@
| static void checkForBackupFile( const QString& fileName );
| static bool ctrlKeyDown();
| static bool copy( const QString& from, const QString& to );
| + static bool make_link( const QString& from, const QString& to );
| + static bool make_symlink( const QString& from, const QString& to );
| static bool runningDemo();
| static void deleteDemo();
| static QString setupDemo();
--
Jesper K. Pedersen | Klarälvdalens Datakonsult
Senior Software Engineer | www.klaralvdalens-datakonsult.se
Peder Skrams Gade 27 3. tv. |
6700 Esbjerg | Platform-independent
Denmark | software solutions
More information about the Kphotoalbum
mailing list