LCOV - code coverage report
Current view: top level - libreoffice/sc/inc - tabprotection.hxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 1 1 100.0 %
Date: 2012-12-27 Functions: 1 1 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #ifndef SC_TAB_PROTECTION_HXX
      21             : #define SC_TAB_PROTECTION_HXX
      22             : 
      23             : #include "sal/types.h"
      24             : #include <com/sun/star/uno/Sequence.hxx>
      25             : 
      26             : #include "global.hxx"
      27             : #include <boost/shared_ptr.hpp>
      28             : 
      29             : class ScDocument;
      30             : class ScTableProtectionImpl;
      31             : 
      32             : enum ScPasswordHash
      33             : {
      34             :     PASSHASH_SHA1 = 0,
      35             :     PASSHASH_XL,
      36             :     PASSHASH_UNSPECIFIED
      37             : };
      38             : 
      39             : class ScPassHashHelper
      40             : {
      41             : public:
      42             :     /** Check for the compatibility of all password hashes.  If there is at
      43             :         least one hash that needs to be regenerated, it returns true.  If all
      44             :         hash values are compatible with the specified hash type, then it
      45             :         returns false. */
      46             :     static bool needsPassHashRegen(const ScDocument& rDoc, ScPasswordHash eHash1, ScPasswordHash eHash2 = PASSHASH_UNSPECIFIED);
      47             : 
      48             :     static ::rtl::OUString getHashURI(ScPasswordHash eHash);
      49             : 
      50             :     static ScPasswordHash getHashTypeFromURI(const ::rtl::OUString& rURI);
      51             : 
      52             : private:
      53             :     ScPassHashHelper();
      54             :     ~ScPassHashHelper();
      55             : };
      56             : 
      57             : // ============================================================================
      58             : 
      59          24 : class SAL_NO_VTABLE ScPassHashProtectable
      60             : {
      61             : public:
      62             :     virtual ~ScPassHashProtectable() = 0;
      63             : 
      64             :     virtual bool isProtected() const = 0;
      65             :     virtual bool isProtectedWithPass() const = 0;
      66             :     virtual void setProtected(bool bProtected) = 0;
      67             : 
      68             :     virtual bool isPasswordEmpty() const = 0;
      69             :     virtual bool hasPasswordHash(ScPasswordHash eHash, ScPasswordHash eHash2 = PASSHASH_UNSPECIFIED) const = 0;
      70             :     virtual void setPassword(const String& aPassText) = 0;
      71             :     virtual ::com::sun::star::uno::Sequence<sal_Int8> getPasswordHash(
      72             :         ScPasswordHash eHash, ScPasswordHash eHas2 = PASSHASH_UNSPECIFIED) const = 0;
      73             :     virtual void setPasswordHash(
      74             :         const ::com::sun::star::uno::Sequence<sal_Int8>& aPassword,
      75             :         ScPasswordHash eHash = PASSHASH_SHA1, ScPasswordHash eHash2 = PASSHASH_UNSPECIFIED) = 0;
      76             :     virtual bool verifyPassword(const String& aPassText) const = 0;
      77             : };
      78             : 
      79             : // ============================================================================
      80             : 
      81             : class SC_DLLPUBLIC ScDocProtection : public ScPassHashProtectable
      82             : {
      83             : public:
      84             :     enum Option
      85             :     {
      86             :         STRUCTURE = 0,
      87             :         WINDOWS,
      88             :         CONTENT,
      89             :         NONE        // last item - used to resize the vector
      90             :     };
      91             : 
      92             :     explicit ScDocProtection();
      93             :     explicit ScDocProtection(const ScDocProtection& r);
      94             :     virtual ~ScDocProtection();
      95             : 
      96             :     virtual bool isProtected() const;
      97             :     virtual bool isProtectedWithPass() const;
      98             :     virtual void setProtected(bool bProtected);
      99             : 
     100             :     virtual bool isPasswordEmpty() const;
     101             :     virtual bool hasPasswordHash(ScPasswordHash eHash, ScPasswordHash eHash2 = PASSHASH_UNSPECIFIED) const;
     102             :     virtual void setPassword(const String& aPassText);
     103             :     virtual ::com::sun::star::uno::Sequence<sal_Int8> getPasswordHash(
     104             :         ScPasswordHash eHash, ScPasswordHash eHash2 = PASSHASH_UNSPECIFIED) const;
     105             :     virtual void setPasswordHash(
     106             :         const ::com::sun::star::uno::Sequence<sal_Int8>& aPassword,
     107             :         ScPasswordHash eHash = PASSHASH_SHA1, ScPasswordHash eHash2 = PASSHASH_UNSPECIFIED);
     108             :     virtual bool verifyPassword(const String& aPassText) const;
     109             : 
     110             :     bool isOptionEnabled(Option eOption) const;
     111             :     void setOption(Option eOption, bool bEnabled);
     112             : 
     113             : private:
     114             :     ::boost::shared_ptr<ScTableProtectionImpl> mpImpl;
     115             : };
     116             : 
     117             : // ============================================================================
     118             : 
     119             : /** sheet protection state container
     120             : 
     121             :     This class stores sheet's protection state: 1) whether the protection
     122             :     is on, 2) password and/or password hash, and 3) any associated
     123             :     protection options.  This class is also used as a protection state
     124             :     container for the undo/redo stack, in which case the password, hash and
     125             :     the options need to be preserved even when the protection flag is
     126             :     off. */
     127             : class SC_DLLPUBLIC ScTableProtection : public ScPassHashProtectable
     128             : {
     129             : public:
     130             :     enum Option
     131             :     {
     132             :         AUTOFILTER = 0,
     133             :         DELETE_COLUMNS,
     134             :         DELETE_ROWS,
     135             :         FORMAT_CELLS,
     136             :         FORMAT_COLUMNS,
     137             :         FORMAT_ROWS,
     138             :         INSERT_COLUMNS,
     139             :         INSERT_HYPERLINKS,
     140             :         INSERT_ROWS,
     141             :         OBJECTS,
     142             :         PIVOT_TABLES,
     143             :         SCENARIOS,
     144             :         SELECT_LOCKED_CELLS,
     145             :         SELECT_UNLOCKED_CELLS,
     146             :         SHEET,
     147             :         SORT,
     148             :         NONE        // last item - used to resize the vector
     149             :     };
     150             : 
     151             :     explicit ScTableProtection();
     152             :     explicit ScTableProtection(const ScTableProtection& r);
     153             :     virtual ~ScTableProtection();
     154             : 
     155             :     virtual bool isProtected() const;
     156             :     virtual bool isProtectedWithPass() const;
     157             :     virtual void setProtected(bool bProtected);
     158             : 
     159             :     virtual bool isPasswordEmpty() const;
     160             :     virtual bool hasPasswordHash(ScPasswordHash eHash, ScPasswordHash eHash2 = PASSHASH_UNSPECIFIED) const;
     161             :     virtual void setPassword(const String& aPassText);
     162             :     virtual ::com::sun::star::uno::Sequence<sal_Int8> getPasswordHash(
     163             :         ScPasswordHash eHash, ScPasswordHash eHash2 = PASSHASH_UNSPECIFIED) const;
     164             :     virtual void setPasswordHash(
     165             :         const ::com::sun::star::uno::Sequence<sal_Int8>& aPassword,
     166             :         ScPasswordHash eHash = PASSHASH_SHA1, ScPasswordHash eHash2 = PASSHASH_UNSPECIFIED);
     167             :     virtual bool verifyPassword(const String& aPassText) const;
     168             : 
     169             :     bool isOptionEnabled(Option eOption) const;
     170             :     void setOption(Option eOption, bool bEnabled);
     171             : 
     172             : private:
     173             :     ::boost::shared_ptr<ScTableProtectionImpl> mpImpl;
     174             : };
     175             : 
     176             : 
     177             : #endif
     178             : 
     179             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10