// Copyright © 2017-19 sss
// 
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

#ifndef UI_H
#define UI_H


class CDlgEncryptedFileMsgBox : public CDlgBase
{
public:
	CDlgEncryptedFileMsgBox();
	bool OnInitDialog() override;
	void onClick_IGNORE(CCtrlButton*);
	void onClick_DECRYPT(CCtrlButton*);

private:
	CCtrlCheck chk_REMEMBER;
	CCtrlButton btn_IGNORE, btn_DECRYPT;
};

class CDlgExportKeysMsgBox : public CDlgBase
{
public:
	CDlgExportKeysMsgBox();
	bool OnInitDialog() override;
	void onClick_OK(CCtrlButton*);
	void onClick_CANCEL(CCtrlButton*);

private:
	CCtrlButton btn_OK, btn_CANCEL;
	CCtrlCheck chk_PUBLIC, chk_PRIVATE, chk_ALL;
};

class CDlgChangePasswdMsgBox : public CDlgBase //always modal
{
public:
	CDlgChangePasswdMsgBox();
	void onClick_OK(CCtrlButton*);
private:
	CCtrlButton btn_OK;
	CCtrlEdit edit_NEW_PASSWD1, edit_NEW_PASSWD2, edit_OLD_PASSWD;
};

class CDlgFirstRun : public CDlgBase
{
public:
	CDlgFirstRun();

	bool OnInitDialog() override;
	void onClick_COPY_PUBKEY(CCtrlButton*);
	void onClick_EXPORT_PRIVATE(CCtrlButton*);
	void onClick_CHANGE_PASSWD(CCtrlButton*);
	void onClick_GENERATE_RANDOM(CCtrlButton*);
	void onClick_GENERATE_KEY(CCtrlButton*);
	void onClick_OTHER(CCtrlButton*);
	void onClick_DELETE_KEY(CCtrlButton*);
	void onClick_OK(CCtrlButton*);
	void onChange_ACCOUNT(CCtrlCombo*);
	void onChange_KEY_LIST(CCtrlListView::TEventInfo *ev);
	virtual void OnDestroy() override;

private:
	void refresh_key_list();
	CCtrlListView list_KEY_LIST;
	CCtrlButton btn_COPY_PUBKEY, btn_EXPORT_PRIVATE, btn_CHANGE_PASSWD, btn_GENERATE_RANDOM, btn_GENERATE_KEY, btn_OTHER, btn_DELETE_KEY, btn_OK;
	CCtrlEdit edit_KEY_PASSWORD;
	CCtrlCombo combo_ACCOUNT;
	CCtrlData lbl_KEY_ID, lbl_GENERATING_KEY;
	wchar_t fp[16];
};

class CDlgGpgBinOpts : public CDlgBase
{
public:
	CDlgGpgBinOpts();
	bool OnInitDialog() override;
	void onClick_SET_BIN_PATH(CCtrlButton*);
	void onClick_SET_HOME_DIR(CCtrlButton*);
	void onClick_OK(CCtrlButton*);
	void onClick_GENERATE_RANDOM(CCtrlButton*);
	virtual void OnDestroy() override;
private:
	CCtrlButton btn_SET_BIN_PATH, btn_SET_HOME_DIR, btn_OK, btn_GENERATE_RANDOM;
	CCtrlEdit edit_BIN_PATH, edit_HOME_DIR;
	CCtrlCheck chk_AUTO_EXCHANGE;
};

class CDlgNewKey : public CDlgBase
{
public:
	CDlgNewKey(MCONTACT hContact, wstring new_key);
	bool OnInitDialog() override;
	virtual void OnDestroy() override;
	void onClick_IMPORT(CCtrlButton*);
	void onClick_IMPORT_AND_USE(CCtrlButton*);
	void onClick_IGNORE_KEY(CCtrlButton*);
private:
	wstring new_key;
	MCONTACT hContact;
	CCtrlData lbl_KEY_FROM, lbl_MESSAGE;
	CCtrlButton btn_IMPORT, btn_IMPORT_AND_USE, btn_IGNORE_KEY;
};

class CDlgKeyGen : public CDlgBase //TODO: in modal mode window destroying on any button press even without direct "Close" call
{
public:
	CDlgKeyGen();
	bool OnInitDialog() override;

	void onClick_OK(CCtrlButton*);
	void onClick_CANCEL(CCtrlButton*);
	virtual void OnDestroy() override;

private:
	CCtrlCombo combo_KEY_TYPE;
	CCtrlEdit edit_KEY_LENGTH, edit_KEY_PASSWD, edit_KEY_REAL_NAME, edit_KEY_EMAIL, edit_KEY_COMMENT, edit_KEY_EXPIRE_DATE;
	CCtrlData lbl_GENERATING_TEXT;
	CCtrlButton btn_OK, btn_CANCEL;

};

class CDlgLoadExistingKey : public CDlgBase
{
public:
	CDlgLoadExistingKey();
	bool OnInitDialog() override;
	virtual void OnDestroy() override;
	void onClick_OK(CCtrlButton*);
	void onClick_CANCEL(CCtrlButton*);
	void onChange_EXISTING_KEY_LIST(CCtrlListView::TEventInfo * /*ev*/);
private:
	wchar_t id[16];
	CCtrlButton btn_OK, btn_CANCEL;
	CCtrlListView list_EXISTING_KEY_LIST;
};

class CDlgImportKey : public CDlgBase
{
public:
	CDlgImportKey(MCONTACT hContact);
	bool OnInitDialog() override;
	virtual void OnDestroy() override;
	void onClick_IMPORT(CCtrlButton*);
private:
	MCONTACT hContact;
	CCtrlCombo combo_KEYSERVER;
	CCtrlButton btn_IMPORT;
};

class CDlgKeyPasswordMsgBox : public CDlgBase //always modal
{
public:
	CDlgKeyPasswordMsgBox(MCONTACT _hContact);
	bool OnInitDialog() override;
	virtual void OnDestroy() override;
	void onClick_OK(CCtrlButton*);
	void onClick_CANCEL(CCtrlButton*);
private:
	char *inkeyid = nullptr;
	MCONTACT hContact;
	CCtrlData lbl_KEYID;
	CCtrlEdit edit_KEY_PASSWORD;
	CCtrlCheck chk_DEFAULT_PASSWORD, chk_SAVE_PASSWORD;
	CCtrlButton btn_OK, btn_CANCEL;
};

#endif // UI_H