Skip to content

Commit e0b6da8

Browse files
committed
add
1 parent e41ab8b commit e0b6da8

File tree

6 files changed

+696
-7
lines changed

6 files changed

+696
-7
lines changed

app/components/SignatureSettings.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,4 +177,4 @@ export default connect((state) => ({
177177
loadingFiles: loadingRemoteFilesSelector(state, { loading: true }),
178178
saveToDocuments: state.settings.saveToDocuments,
179179
settings: state.settings.sign,
180-
}), { changeSignatureDetached, changeSignatureEncoding, changeSignatureOutfolder, changeSignatureTimestamp, toggleSaveToDocuments }, null, { pure: false })(SignatureSettings);
180+
}), { changeSignatureDetached, changeSignatureEncoding, changeSignatureOutfolder, changeSignatureTimestamp, toggleSaveToDocuments }, null, { pure: false })(SignatureSettings);
Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
import PropTypes from "prop-types";
2+
import React from "react";
3+
import { connect } from "react-redux";
4+
import {
5+
changeSignatureDetached, changeSignatureEncoding,
6+
changeSignatureOutfolder, changeSignatureTimestamp, toggleSaveToDocuments,
7+
} from "../AC";
8+
import { DEFAULT_DOCUMENTS_PATH } from "../constants";
9+
import { loadingRemoteFilesSelector } from "../selectors";
10+
import { mapToArr } from "../utils";
11+
import CheckBoxWithLabel from "./CheckBoxWithLabel";
12+
import EncodingTypeSelector from "./EncodingTypeSelector";
13+
import HeaderWorkspaceBlock from "./HeaderWorkspaceBlock";
14+
import SelectFolder from "./SelectFolder";
15+
16+
const dialog = window.electron.remote.dialog;
17+
18+
interface IFileRedux {
19+
active: boolean;
20+
extension: string;
21+
filename: string;
22+
fullpath: string;
23+
id: number;
24+
lastModifiedDate: Date;
25+
remoteId: string;
26+
socket: string;
27+
}
28+
29+
export interface IRemoteFile {
30+
extra: any;
31+
id: number;
32+
loaded: boolean;
33+
loading: boolean;
34+
name: string;
35+
socketId: string;
36+
totalSize: number;
37+
url: string;
38+
}
39+
40+
interface ISignatureSettingsProps {
41+
changeSignatureTimestamp: (timestamp: boolean) => void;
42+
changeSignatureOutfolder: (path: string) => void;
43+
changeSignatureEncoding: (encoding: string) => void;
44+
changeSignatureDetached: (detached: boolean) => void;
45+
loadingFiles: IRemoteFile[];
46+
files: IFileRedux[];
47+
saveToDocuments: boolean;
48+
settings: {
49+
detached: boolean,
50+
encoding: string,
51+
outfolder: string,
52+
saveToDocuments: boolean,
53+
timestamp: boolean,
54+
};
55+
toggleSaveToDocuments: (saveToDocuments: boolean) => void;
56+
}
57+
58+
class SignatureSettings extends React.Component<ISignatureSettingsProps, any> {
59+
static contextTypes = {
60+
locale: PropTypes.string,
61+
localize: PropTypes.func,
62+
};
63+
64+
65+
addDirect() {
66+
// tslint:disable-next-line:no-shadowed-variable
67+
const { changeSignatureOutfolder } = this.props;
68+
69+
if (!window.framework_NW) {
70+
const directory = dialog.showOpenDialog({ properties: ["openDirectory"] });
71+
if (directory) {
72+
changeSignatureOutfolder(directory[0]);
73+
}
74+
} else {
75+
const clickEvent = document.createEvent("MouseEvents");
76+
clickEvent.initEvent("click", true, true);
77+
document.querySelector("#choose-folder").dispatchEvent(clickEvent);
78+
}
79+
}
80+
81+
handleDetachedClick = () => {
82+
// tslint:disable-next-line:no-shadowed-variable
83+
const { changeSignatureDetached, settings } = this.props;
84+
changeSignatureDetached(!settings.detached);
85+
}
86+
87+
handleTimestampClick = () => {
88+
// tslint:disable-next-line:no-shadowed-variable
89+
const { changeSignatureTimestamp, settings } = this.props;
90+
changeSignatureTimestamp(!settings.timestamp);
91+
}
92+
93+
handleSaveToDocumentsClick = () => {
94+
// tslint:disable-next-line:no-shadowed-variable
95+
const { changeSignatureOutfolder, toggleSaveToDocuments, saveToDocuments } = this.props;
96+
97+
if (!saveToDocuments) {
98+
changeSignatureOutfolder(DEFAULT_DOCUMENTS_PATH);
99+
} else {
100+
changeSignatureOutfolder("");
101+
}
102+
103+
toggleSaveToDocuments(!saveToDocuments);
104+
}
105+
106+
handleOutfolderChange = (ev: any) => {
107+
ev.preventDefault();
108+
// tslint:disable-next-line:no-shadowed-variable
109+
const { changeSignatureOutfolder } = this.props;
110+
changeSignatureOutfolder(ev.target.value);
111+
}
112+
113+
handleEncodingChange = (encoding: string) => {
114+
// tslint:disable-next-line:no-shadowed-variable
115+
const { changeSignatureEncoding } = this.props;
116+
changeSignatureEncoding(encoding);
117+
}
118+
119+
render() {
120+
const { saveToDocuments, settings } = this.props;
121+
const { localize, locale } = this.context;
122+
123+
const disabled = this.getDisabled();
124+
125+
return (
126+
<div id="sign-settings-content" className="content-wrapper z-depth-1">
127+
<HeaderWorkspaceBlock text={localize("Sign.sign_setting", locale)} />
128+
<div className="settings-content">
129+
<EncodingTypeSelector EncodingValue={settings.encoding} handleChange={this.handleEncodingChange} />
130+
<CheckBoxWithLabel
131+
disabled={disabled}
132+
onClickCheckBox={this.handleDetachedClick}
133+
isChecked={settings.detached}
134+
elementId="detached-sign"
135+
title={localize("Sign.sign_detached", locale)} />
136+
<CheckBoxWithLabel onClickCheckBox={this.handleTimestampClick}
137+
disabled={disabled}
138+
isChecked={settings.timestamp}
139+
elementId="sign-time"
140+
title={localize("Sign.sign_time", locale)} />
141+
<CheckBoxWithLabel onClickCheckBox={this.handleSaveToDocumentsClick}
142+
disabled={disabled}
143+
isChecked={saveToDocuments}
144+
elementId="saveToDocuments"
145+
title={localize("Documents.save_to_documents", locale)} />
146+
<SelectFolder
147+
disabled={disabled}
148+
directory={saveToDocuments ? DEFAULT_DOCUMENTS_PATH : settings.outfolder}
149+
viewDirect={this.handleOutfolderChange}
150+
openDirect={this.addDirect.bind(this)} />
151+
</div>
152+
</div>
153+
);
154+
}
155+
156+
getDisabled = () => {
157+
const { files, loadingFiles } = this.props;
158+
159+
if (loadingFiles.length) {
160+
return true;
161+
}
162+
163+
if (files.length) {
164+
for (const file of files) {
165+
if (file.socket) {
166+
return true;
167+
}
168+
}
169+
}
170+
171+
return false;
172+
}
173+
}
174+
175+
export default connect((state) => ({
176+
files: mapToArr(state.files.entities),
177+
loadingFiles: loadingRemoteFilesSelector(state, { loading: true }),
178+
saveToDocuments: state.settings.saveToDocuments,
179+
settings: state.settings.sign,
180+
}), { changeSignatureDetached, changeSignatureEncoding, changeSignatureOutfolder, changeSignatureTimestamp, toggleSaveToDocuments }, null, { pure: false })(SignatureSettings);

app/components/SignatureWindow.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,9 @@ class SignatureWindow extends React.Component<ISignatureWindowProps, any> {
236236
if (!key) {
237237
$(".toast-key_not_found").remove();
238238
Materialize.toast(localize("Sign.key_not_found", locale), 2000, "toast-key_not_found");
239-
console.log("++++2");
240-
console.log(localize("Events.sign", locale));
241-
logger.log({
239+
240+
241+
logger.log({
242242
level: "error",
243243
message: "Key not found",
244244
operation: localize("Events.sign", locale),

0 commit comments

Comments
 (0)