blob: 5abd39d9c7a04e73fc4b77c39b798f0bb10ff1f3 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef SC_UI_RETYPEPASS_DLG_HXX
#define SC_UI_RETYPEPASS_DLG_HXX
#include <vcl/dialog.hxx>
#include <vcl/button.hxx>
#include <vcl/fixed.hxx>
#include <vcl/edit.hxx>
#include <vcl/scrbar.hxx>
#include <svx/checklbx.hxx>
#include <svtools/stdctrl.hxx>
#include "tabprotection.hxx"
#include <boost/shared_ptr.hpp>
class Window;
class ScDocProtection;
class ScTableProtection;
class ScDocument;
class ScRetypePassDlg : public ModalDialog
{
public:
typedef ::boost::shared_ptr<ScDocProtection> DocProtectionPtr;
typedef ::boost::shared_ptr<ScTableProtection> TabProtectionPtr;
explicit ScRetypePassDlg(Window* pParent);
virtual ~ScRetypePassDlg();
virtual short Execute();
void SetDataFromDocument(const ScDocument& rDoc);
void SetDesiredHash(ScPasswordHash eHash);
/** Write the new set of password data to the document instance to
overwrite the current ones. */
void WriteNewDataToDocument(ScDocument& rDoc) const;
private:
ScRetypePassDlg(); // disabled
void Init();
void PopulateDialog();
void SetDocData();
void SetTableData(size_t nRowPos, SCTAB nTab);
void ResetTableRows();
/** Check the status of all hash values to see if it's okay to enable
the OK button. */
void CheckHashStatus();
private:
OKButton maBtnOk;
CancelButton maBtnCancel;
HelpButton maBtnHelp;
FixedInfo maTextDescription;
FixedLine maLineDocument;
FixedText maTextDocStatus;
PushButton maBtnRetypeDoc;
FixedLine maLineSheet;
FixedText maTextSheetName1;
FixedText maTextSheetStatus1;
PushButton maBtnRetypeSheet1;
FixedText maTextSheetName2;
FixedText maTextSheetStatus2;
PushButton maBtnRetypeSheet2;
FixedText maTextSheetName3;
FixedText maTextSheetStatus3;
PushButton maBtnRetypeSheet3;
FixedText maTextSheetName4;
FixedText maTextSheetStatus4;
PushButton maBtnRetypeSheet4;
ScrollBar maScrollBar;
String maTextNotProtected;
String maTextNotPassProtected;
String maTextHashBad;
String maTextHashGood;
String maTextHashRegen;
DECL_LINK( OKHdl, OKButton* );
DECL_LINK( RetypeBtnHdl, PushButton* );
DECL_LINK( ScrollHdl, ScrollBar* );
struct TableItem
{
String maName;
TabProtectionPtr mpProtect;
};
::std::vector<TableItem> maTableItems;
DocProtectionPtr mpDocItem;
size_t mnCurScrollPos;
ScPasswordHash meDesiredHash;
};
// ============================================================================
class ScRetypePassInputDlg : public ModalDialog
{
public:
explicit ScRetypePassInputDlg(Window* pParent, ScPassHashProtectable* pProtected);
virtual ~ScRetypePassInputDlg();
virtual short Execute();
bool IsRemovePassword() const;
String GetNewPassword() const;
private:
ScRetypePassInputDlg(); // disabled
void Init();
void CheckPasswordInput();
private:
OKButton maBtnOk;
CancelButton maBtnCancel;
HelpButton maBtnHelp;
RadioButton maBtnRetypePassword;
FixedText maPassword1Text;
Edit maPassword1Edit;
FixedText maPassword2Text;
Edit maPassword2Edit;
CheckBox maBtnMatchOldPass;
RadioButton maBtnRemovePassword;
DECL_LINK( OKHdl, OKButton* );
DECL_LINK( RadioBtnHdl, RadioButton* );
DECL_LINK( CheckBoxHdl, CheckBox* );
DECL_LINK( PasswordModifyHdl, Edit* );
ScPassHashProtectable* mpProtected;
};
#endif