1
0
mirror of https://github.com/bobranten/Ext4Fsd.git synced 2025-10-30 05:18:31 -05:00

Ext4Fsd master

This commit is contained in:
Bo Brantén
2020-01-19 19:08:53 +01:00
commit 7b368ccf09
272 changed files with 143529 additions and 0 deletions

222
Ext2Mgr/ServiceManage.cpp Normal file
View File

@@ -0,0 +1,222 @@
// ServiceManage.cpp : implementation file
//
#include "stdafx.h"
#include "ext2mgr.h"
#include "ServiceManage.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CServiceManage dialog
CServiceManage::CServiceManage(CWnd* pParent /*=NULL*/)
: CDialog(CServiceManage::IDD, pParent)
{
//{{AFX_DATA_INIT(CServiceManage)
m_Codepage = _T("");
m_bExt3Writable = FALSE;
m_bReadonly = FALSE;
m_srvStatus = _T("");
m_sPrefix = _T("");
m_sSuffix = _T("");
m_bAutoMount = FALSE;
//}}AFX_DATA_INIT
m_nStartmode = 0;
m_bStarted = Ext2IsServiceStarted();
if (m_bStarted) {
m_srvStatus = _T("Ext2Fsd is already started.");
} else {
m_srvStatus = _T("Ext2Fsd is NOT started.");
}
m_bInited = TRUE;
}
void CServiceManage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CServiceManage)
DDX_CBString(pDX, IDC_COMBO_CODEPAGE, m_Codepage);
DDX_Check(pDX, IDC_EXT3_WRITABLE, m_bExt3Writable);
DDX_Check(pDX, IDC_READ_ONLY, m_bReadonly);
DDX_Text(pDX, IDC_SERVICE_STATUS, m_srvStatus);
DDX_Text(pDX, IDC_GLOBAL_PREFIX, m_sPrefix);
DDV_MaxChars(pDX, m_sPrefix, 31);
DDX_Text(pDX, IDC_GLOBAL_SUFFIX, m_sSuffix);
DDV_MaxChars(pDX, m_sSuffix, 31);
DDX_Check(pDX, IDC_EXT3_AUTOMOUNT, m_bAutoMount);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CServiceManage, CDialog)
//{{AFX_MSG_MAP(CServiceManage)
ON_BN_CLICKED(IDC_READ_ONLY, OnReadOnly)
ON_BN_CLICKED(IDC_EXT3_WRITABLE, OnExt3Writable)
ON_BN_CLICKED(IDC_START_SERVICE, OnStartService)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CServiceManage message handlers
void CServiceManage::OnReadOnly()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if (m_bReadonly) {
m_bExt3Writable = FALSE;
}
SET_WIN(IDC_EXT3_WRITABLE, !m_bReadonly);
UpdateData(FALSE);
}
void CServiceManage::OnExt3Writable()
{
// TODO: Add your control notification handler code here
}
void CServiceManage::OnCancel()
{
// TODO: Add extra cleanup here
CDialog::OnCancel();
}
void CServiceManage::OnOK()
{
BOOL rc;
// TODO: Add extra validation here
UpdateData(TRUE);
CComboBox *cbStartup = (CComboBox *)GetDlgItem(IDC_COMBO_STARTUP);
if (cbStartup) {
m_nStartmode = cbStartup->GetCurSel();
} else {
m_nStartmode = CB_ERR;
}
if (m_nStartmode == CB_ERR) {
AfxMessageBox("Invalid startup mode !", MB_OK|MB_ICONWARNING);
return;
}
if (m_Codepage.IsEmpty()) {
AfxMessageBox("You must select a codepage type.", MB_OK|MB_ICONWARNING);
return;
}
CComboBox *cbCodepage = (CComboBox *)GetDlgItem(IDC_COMBO_CODEPAGE);
if (cbCodepage) {
int rc = cbCodepage->FindStringExact(-1, m_Codepage);
if (rc == CB_ERR) {
AfxMessageBox("Invalid codepage type: "+m_Codepage, MB_OK|MB_ICONWARNING);
return;
}
}
if (AfxMessageBox("Current service settings will be overwritten,\ndo you want continue ?",
MB_YESNO | MB_ICONQUESTION) != IDYES) {
return;
}
rc = Ext2SetGlobalProperty(
m_nStartmode,
(BOOLEAN)m_bReadonly,
(BOOLEAN)m_bExt3Writable,
m_Codepage.GetBuffer(CODEPAGE_MAXLEN),
m_sPrefix.GetBuffer(HIDINGPAT_LEN),
m_sSuffix.GetBuffer(HIDINGPAT_LEN),
(BOOLEAN)m_bAutoMount
);
if (rc) {
/*
AfxMessageBox("Ext2 service settings updated successfully !",
MB_OK | MB_ICONINFORMATION);
*/
CDialog::OnOK();
} else {
AfxMessageBox("Failed to save the service settings !",
MB_OK | MB_ICONWARNING);
}
}
BOOL CServiceManage::OnInitDialog()
{
CDialog::OnInitDialog();
CComboBox *cbStartup = (CComboBox *)GetDlgItem(IDC_COMBO_STARTUP);
if (cbStartup) {
cbStartup->ResetContent();
cbStartup->AddString(_T("SERVICE_BOOT_START"));
cbStartup->AddString(_T("SERVICE_SYSTEM_START"));
cbStartup->AddString(_T("SERVICE_AUTO_START"));
cbStartup->AddString(_T("SERVICE_DEMAND_START"));
cbStartup->AddString(_T("SERVICE_DISABLED"));
cbStartup->SetCurSel(m_nStartmode);
}
CComboBox *cbCodepage = (CComboBox *)GetDlgItem(IDC_COMBO_CODEPAGE);
if (cbCodepage) {
int i = 0, j = -1;
cbCodepage->ResetContent();
while (gCodepages[i]) {
cbCodepage->AddString(gCodepages[i]);
if (!m_Codepage.IsEmpty()) {
CHAR *buffer = m_Codepage.GetBuffer(CODEPAGE_MAXLEN);
if (_stricmp(buffer, gCodepages[i]) == 0) {
j = i;
}
}
i++;
}
if (j == -1) {
m_Codepage = "default";
}
}
if (m_bReadonly) {
m_bExt3Writable = FALSE;
}
SET_WIN(IDC_EXT3_WRITABLE, !m_bReadonly);
SET_WIN(IDC_START_SERVICE, !m_bStarted);
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CServiceManage::OnStartService()
{
// TODO: Add your control notification handler code here
m_bStarted = Ext2StartExt2Fsd();
if (m_bStarted) {
m_srvStatus = _T("Ext2Fsd was just started.");
GetParent()->SetTimer('REFF', 500, NULL);
GetParent()->SetTimer('REFR', 3000, NULL);
} else {
m_srvStatus = _T("Ext2Fsd could NOT be started.");
}
SET_WIN(IDC_START_SERVICE, !m_bStarted);
UpdateData(FALSE);
}