misc/quazip/quazipnewinfo.h
changeset 8057 93e16240f178
parent 8051 f26422ef0333
parent 8055 04dd8b7fb605
child 8058 bcebfc477459
equal deleted inserted replaced
8051:f26422ef0333 8057:93e16240f178
     1 #ifndef QUA_ZIPNEWINFO_H
       
     2 #define QUA_ZIPNEWINFO_H
       
     3 
       
     4 /*
       
     5 Copyright (C) 2005-2011 Sergey A. Tachenov
       
     6 
       
     7 This program is free software; you can redistribute it and/or modify it
       
     8 under the terms of the GNU Lesser General Public License as published by
       
     9 the Free Software Foundation; either version 2 of the License, or (at
       
    10 your option) any later version.
       
    11 
       
    12 This program is distributed in the hope that it will be useful, but
       
    13 WITHOUT ANY WARRANTY; without even the implied warranty of
       
    14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
       
    15 General Public License for more details.
       
    16 
       
    17 You should have received a copy of the GNU Lesser General Public License
       
    18 along with this program; if not, write to the Free Software Foundation,
       
    19 Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
       
    20 
       
    21 See COPYING file for the full LGPL text.
       
    22 
       
    23 Original ZIP package is copyrighted by Gilles Vollant, see
       
    24 quazip/(un)zip.h files for details, basically it's zlib license.
       
    25  **/
       
    26 
       
    27 #include <QDateTime>
       
    28 #include <QString>
       
    29 
       
    30 #include "quazip_global.h"
       
    31 
       
    32 /// Information about a file to be created.
       
    33 /** This structure holds information about a file to be created inside
       
    34  * ZIP archive. At least name should be set to something correct before
       
    35  * passing this structure to
       
    36  * QuaZipFile::open(OpenMode,const QuaZipNewInfo&,int,int,bool).
       
    37  **/
       
    38 struct QUAZIP_EXPORT QuaZipNewInfo {
       
    39   /// File name.
       
    40   /** This field holds file name inside archive, including path relative
       
    41    * to archive root.
       
    42    **/
       
    43   QString name;
       
    44   /// File timestamp.
       
    45   /** This is the last file modification date and time. Will be stored
       
    46    * in the archive central directory. It is a good practice to set it
       
    47    * to the source file timestamp instead of archive creating time. Use
       
    48    * setFileDateTime() or QuaZipNewInfo(const QString&, const QString&).
       
    49    **/
       
    50   QDateTime dateTime;
       
    51   /// File internal attributes.
       
    52   quint16 internalAttr;
       
    53   /// File external attributes.
       
    54   quint32 externalAttr;
       
    55   /// File comment.
       
    56   /** Will be encoded using QuaZip::getCommentCodec().
       
    57    **/
       
    58   QString comment;
       
    59   /// File local extra field.
       
    60   QByteArray extraLocal;
       
    61   /// File global extra field.
       
    62   QByteArray extraGlobal;
       
    63   /// Uncompressed file size.
       
    64   /** This is only needed if you are using raw file zipping mode, i. e.
       
    65    * adding precompressed file in the zip archive.
       
    66    **/
       
    67   ulong uncompressedSize;
       
    68   /// Constructs QuaZipNewInfo instance.
       
    69   /** Initializes name with \a name, dateTime with current date and
       
    70    * time. Attributes are initialized with zeros, comment and extra
       
    71    * field with null values.
       
    72    **/
       
    73   QuaZipNewInfo(const QString& name);
       
    74   /// Constructs QuaZipNewInfo instance.
       
    75   /** Initializes name with \a name and dateTime with timestamp of the
       
    76    * file named \a file. If the \a file does not exists or its timestamp
       
    77    * is inaccessible (e. g. you do not have read permission for the
       
    78    * directory file in), uses current date and time. Attributes are
       
    79    * initialized with zeros, comment and extra field with null values.
       
    80    * 
       
    81    * \sa setFileDateTime()
       
    82    **/
       
    83   QuaZipNewInfo(const QString& name, const QString& file);
       
    84   /// Sets the file timestamp from the existing file.
       
    85   /** Use this function to set the file timestamp from the existing
       
    86    * file. Use it like this:
       
    87    * \code
       
    88    * QuaZipFile zipFile(&zip);
       
    89    * QFile file("file-to-add");
       
    90    * file.open(QIODevice::ReadOnly);
       
    91    * QuaZipNewInfo info("file-name-in-archive");
       
    92    * info.setFileDateTime("file-to-add"); // take the timestamp from file
       
    93    * zipFile.open(QIODevice::WriteOnly, info);
       
    94    * \endcode
       
    95    *
       
    96    * This function does not change dateTime if some error occured (e. g.
       
    97    * file is inaccessible).
       
    98    **/
       
    99   void setFileDateTime(const QString& file);
       
   100 };
       
   101 
       
   102 #endif