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