mirror of
https://github.com/ogoguel/activegs-ios.git
synced 2024-12-27 17:29:42 +00:00
325 lines
7.8 KiB
C++
325 lines
7.8 KiB
C++
// DiskEditURL.cpp : implementation file
|
|
//
|
|
|
|
#include "../Common.win32/stdafx.h"
|
|
//#include "ActiveGSApp.h"
|
|
#include "activecommon.h"
|
|
#include "DiskEditURL.h"
|
|
#include <Windowsx.h>
|
|
|
|
// CDiskEditURL dialog
|
|
|
|
IMPLEMENT_DYNAMIC(CDiskEditURL, CDialog)
|
|
|
|
CDiskEditURL::CDiskEditURL(CWnd* pParent /*=NULL*/)
|
|
: CTabActiveInfo(CDiskEditURL::IDD, pParent)
|
|
{
|
|
selectedItem=0;
|
|
}
|
|
|
|
CDiskEditURL::~CDiskEditURL()
|
|
{
|
|
|
|
}
|
|
|
|
BOOL CDiskEditURL::OnInitDialog()
|
|
{
|
|
selectedItem = 0;
|
|
CDialog::OnInitDialog();
|
|
/*
|
|
DragAcceptFiles(TRUE);
|
|
CDialog* edit = (CDialog*)GetDlgItem(IDC_EDITURL);
|
|
ASSERT(edit);
|
|
edit->DragAcceptFiles(TRUE);
|
|
*/
|
|
return TRUE;
|
|
}
|
|
|
|
void CDiskEditURL::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
}
|
|
void CDiskEditURL::OnDropFiles()
|
|
{
|
|
/*
|
|
HDROP hDrop = (HDROP)wParam;
|
|
char filename[MAX_PATH];
|
|
DragQueryFile(hDrop, // Struture Identifier
|
|
|
|
0, // -1 to Drop more than one file or ( integer 0 to max )
|
|
|
|
// to drop selected No of files
|
|
|
|
filename,// Droped File Name
|
|
|
|
MAX_PATH); // Max char
|
|
*/
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CDiskEditURL, CDialog)
|
|
// ON_MESSAGE(WM_DROPFILES,OnDropFiles)// Message Handler for Drang and Drop
|
|
ON_CONTROL(WM_DROPFILES,IDC_EDITURL,OnDropFiles)
|
|
// ON_CONTROL(EN_UPDATE,IDC_EDITURL,OnDropFiles)
|
|
ON_BN_CLICKED(IDC_MOUNTBUTTON, &CDiskEditURL::OnBnClickedMountbutton)
|
|
ON_BN_CLICKED(IDC_EJECT, &CDiskEditURL::OnBnClickedEject)
|
|
ON_BN_CLICKED(IDC_RELOAD, &CDiskEditURL::OnBnClickedReload)
|
|
ON_NOTIFY(LVN_ITEMACTIVATE, IDC_SLOTLIST, &CDiskEditURL::OnLvnItemActivateSlotlist)
|
|
ON_NOTIFY(HDN_ITEMCLICK, 0, &CDiskEditURL::OnHdnItemclickSlotlist)
|
|
ON_BN_CLICKED(IDC_REBOOT5, &CDiskEditURL::OnBnClickedReboot5)
|
|
ON_BN_CLICKED(IDC_REBOOT6, &CDiskEditURL::OnBnClickedReboot6)
|
|
ON_BN_CLICKED(IDC_REBOOT7, &CDiskEditURL::OnBnClickedReboot7)
|
|
ON_BN_CLICKED(IDC_MOUNTBUTTON, &CDiskEditURL::OnBnClickedMountbutton)
|
|
ON_CBN_SELCHANGE(IDC_COMBOSLOT, &CDiskEditURL::OnCbnSelchangeComboslot)
|
|
ON_BN_CLICKED(IDC_FILESELECT, &CDiskEditURL::OnBnClickedFileselect)
|
|
ON_BN_CLICKED(IDC_SWAP, &CDiskEditURL::OnBnClickedSwap)
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// CDiskEditURL message handlers
|
|
|
|
void CDiskEditURL::OnBnClickedMountbutton()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
CDialog* edit = (CDialog*)GetDlgItem(IDC_EDITURL);
|
|
char path[MAX_PATH];
|
|
int l = Edit_GetLine(edit->m_hWnd,0,path,MAX_PATH);
|
|
path[l]=0;
|
|
|
|
int slot,drive;
|
|
if (getCurrentSlotAndDrive(slot,drive))
|
|
{
|
|
CEmulator::theEmulator->config->setSlot(slot,drive,path,REPLACECURRENT);
|
|
}
|
|
}
|
|
void CDiskEditURL::OnBnClickedEject()
|
|
{
|
|
|
|
int slot,drive;
|
|
if (!getCurrentSlotAndDrive(slot,drive)) return ;
|
|
CEmulator::theEmulator->ejectDisk(slot,drive);
|
|
|
|
}
|
|
|
|
void CDiskEditURL::OnBnClickedReload()
|
|
{
|
|
int slot,drive;
|
|
if (!getCurrentSlotAndDrive(slot,drive)) return ;
|
|
CEmulator::theEmulator->reloadDisk(slot,drive);
|
|
}
|
|
|
|
void CDiskEditURL::OnLvnItemActivateSlotlist(NMHDR *pNMHDR, LRESULT *pResult)
|
|
{
|
|
LPNMITEMACTIVATE pNMIA = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
|
|
// TODO: Add your control notification handler code here
|
|
/*
|
|
CListCtrl *pList = (CListCtrl*)GetDlgItem(IDC_SLOTLIST);
|
|
ASSERT(pList);
|
|
POSITION p = pList->GetFirstSelectedItemPosition();
|
|
if (!p) return ;
|
|
int i =pList->GetNextSelectedItem(p);
|
|
selectedItem = pList->GetItemData(i);
|
|
refreshItem();
|
|
*/
|
|
*pResult = 0;
|
|
}
|
|
|
|
int CDiskEditURL::getCurrentSlotAndDrive(int& slot, int &drive)
|
|
{
|
|
if (selectedItem==-1) return 0;
|
|
CComboBox *pCombo = (CComboBox*)GetDlgItem(IDC_COMBOSLOT);
|
|
int data = pCombo->GetItemData(selectedItem);
|
|
slot = data / 10;
|
|
drive = data %10;
|
|
return 1;
|
|
}
|
|
|
|
void CDiskEditURL::refresh()
|
|
{
|
|
|
|
CListCtrl *pList = (CListCtrl*)GetDlgItem(IDC_SLOTLIST);
|
|
if (pList)
|
|
{
|
|
pList->DeleteAllItems();
|
|
int nbi=0;
|
|
for(int slot=5;slot<=7;slot++)
|
|
{
|
|
int maxdrive=2;
|
|
if (slot==7) maxdrive=MAXSLOT7DRIVES;
|
|
for(int disk=1;disk<=maxdrive;disk++)
|
|
for(int active=0;active<ACTIVEGSMAXIMAGE;active++)
|
|
{
|
|
CSlotInfo info;
|
|
CEmulator* emu=CEmulator::theEmulator;
|
|
int ret = emu->getLocalMultipleIMGInfo(slot,disk,info,active);
|
|
if (!ret) continue;
|
|
if (info.status==UNDEFINED || info.status ==NOTHING) continue;
|
|
|
|
MyString str;
|
|
str.Format("S%dD%d",slot,disk);
|
|
if (ret==1)
|
|
str +="*";
|
|
pList->InsertItem(nbi,str.c_str());
|
|
// pList->SetItemData(nbi,(slot-5);
|
|
// pList->SetItemText(nbi,1,"e");
|
|
|
|
|
|
MyString shortname (info.shortname.c_str());
|
|
|
|
MyString sizeStr;
|
|
if (info.size>1*1024*1024)
|
|
sizeStr.Format(_T("%4dMb"),info.size/(1024*1024));
|
|
else
|
|
sizeStr.Format(_T("%4dKo"),info.size/1024);
|
|
|
|
MyString prefix;
|
|
switch(info.status)
|
|
{
|
|
case MOUNTED:
|
|
prefix = info.prefix.c_str();
|
|
break;
|
|
case EJECTED:
|
|
if (!info.filename.IsEmpty())
|
|
prefix = "*EJECTED*";
|
|
break;
|
|
case READY2MOUNT:
|
|
prefix = "*READY2MOUNT*";
|
|
shortname = getfile(info.url);
|
|
break;
|
|
case DELAYEDMOUNT:
|
|
prefix = "*DELAYEDMOUNT*";
|
|
shortname = getfile(info.url);
|
|
break;
|
|
case FAILED:
|
|
prefix ="*FAILED*";
|
|
break;
|
|
}
|
|
pList->SetItemText(nbi,1,shortname.c_str());
|
|
pList->SetItemText(nbi,2,sizeStr.c_str());
|
|
pList->SetItemText(nbi,3,prefix.c_str());
|
|
|
|
// pList->SetItemText(nbi,5,info.name);
|
|
|
|
nbi++;
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
// int slot = selectedItem;
|
|
BOOL beject = TRUE;
|
|
BOOL breload = TRUE;
|
|
BOOL bmount = TRUE;
|
|
BOOL bSwap = FALSE;
|
|
|
|
int slot,drive;
|
|
if (getCurrentSlotAndDrive(slot,drive))
|
|
{
|
|
const CSlotInfo& info = CEmulator::theEmulator->getLocalIMGInfo(slot,drive);
|
|
SetDlgItemText(IDC_EDITURL,info.url);
|
|
switch(info.status)
|
|
{
|
|
case UNDEFINED:
|
|
beject=FALSE;
|
|
breload=FALSE;
|
|
break;
|
|
case FAILED:
|
|
beject=FALSE;
|
|
breload=TRUE;
|
|
break;
|
|
case EJECTED:
|
|
beject=FALSE;
|
|
breload=TRUE;
|
|
break;
|
|
case READY2MOUNT:
|
|
case DELAYEDMOUNT:
|
|
beject=TRUE;
|
|
breload=FALSE;
|
|
break;
|
|
case MOUNTED:
|
|
beject=TRUE;
|
|
breload=FALSE;
|
|
}
|
|
|
|
int sw = CEmulator::theEmulator->getSmartSwap();
|
|
if ( ((sw/10) == slot) && ( (sw%10) == drive ) ) // OG A UNIFIER!!!!
|
|
bSwap = TRUE;
|
|
}
|
|
else
|
|
{
|
|
beject=FALSE;
|
|
breload=FALSE;
|
|
}
|
|
|
|
::EnableWindow(GetDlgItem(IDC_EJECT)->m_hWnd,beject);
|
|
::EnableWindow(GetDlgItem(IDC_RELOAD)->m_hWnd,breload);
|
|
::EnableWindow(GetDlgItem(IDC_MOUNTBUTTON)->m_hWnd,bmount);
|
|
::EnableWindow(GetDlgItem(IDC_SWAP)->m_hWnd,bSwap);
|
|
}
|
|
|
|
|
|
void CDiskEditURL::OnHdnItemclickSlotlist(NMHDR *pNMHDR, LRESULT *pResult)
|
|
{
|
|
LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR);
|
|
// TODO: Add your control notification handler code here
|
|
*pResult = 0;
|
|
}
|
|
|
|
void CDiskEditURL::OnBnClickedReboot5()
|
|
{
|
|
CEmulator::theEmulator->onBootSlotChanged(5);
|
|
}
|
|
|
|
void CDiskEditURL::OnBnClickedReboot6()
|
|
{
|
|
CEmulator::theEmulator->onBootSlotChanged(6);
|
|
}
|
|
|
|
void CDiskEditURL::OnBnClickedReboot7()
|
|
{
|
|
CEmulator::theEmulator->onBootSlotChanged(7);}
|
|
|
|
|
|
|
|
void CDiskEditURL::OnCbnSelchangeComboslot()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
CComboBox *pCombo = (CComboBox*)GetDlgItem(IDC_COMBOSLOT);
|
|
selectedItem = pCombo->GetCurSel();
|
|
refresh();
|
|
// SetDlgItemText(IDC_EDITURL,l_strFileName);
|
|
}
|
|
|
|
void CDiskEditURL::OnBnClickedFileselect()
|
|
{
|
|
|
|
// CFileDialog l_SampleDlg(TRUE,NULL,NULL,OFN_OVERWRITEPROMPT,"2MG Images (*.img)|*.2mg|II Images (*.dsk)|*.dsk|II Images (*.nib)|*.nib|Archives (*.zip)|*.zip||");
|
|
CFileDialog l_SampleDlg(TRUE,NULL,NULL,OFN_OVERWRITEPROMPT,"Disk Image (*.img;*.dsk;*.nib;*.bin;*.zip)||");
|
|
|
|
int iRet = l_SampleDlg.DoModal();
|
|
CString l_strFileName;
|
|
l_strFileName = l_SampleDlg.GetPathName();
|
|
|
|
if(iRet == IDOK)
|
|
{
|
|
// CDialog* edit = (CDialog*)GetDlgItem(IDC_EDITURL);
|
|
SetDlgItemText(IDC_EDITURL,l_strFileName);
|
|
OnBnClickedMountbutton();
|
|
// MessageBox(l_strFileName);
|
|
// MessageBox(l_strFileName);
|
|
|
|
}
|
|
/*
|
|
else
|
|
MessageBox("No File Selected!");
|
|
*/
|
|
}
|
|
|
|
void CDiskEditURL::OnBnClickedSwap()
|
|
{
|
|
// int slot = selectedItem;
|
|
int slot,drive;
|
|
if (!getCurrentSlotAndDrive(slot,drive)) return ;
|
|
CEmulator::theEmulator->swapDisk(slot,drive);
|
|
}
|