Signed-off-by: Andrea Odetti <mariofutire@gmail.com>
This commit is contained in:
parent
8a14c7e974
commit
16c70e4cde
3 changed files with 40 additions and 32 deletions
|
@ -8,49 +8,57 @@
|
||||||
#include "Core.h"
|
#include "Core.h"
|
||||||
#include "Harddisk.h"
|
#include "Harddisk.h"
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
|
||||||
|
void insertDisk(sa2::SDLFrame * frame, const char * filename, const size_t dragAndDropSlot, const size_t dragAndDropDrive)
|
||||||
|
{
|
||||||
|
CardManager & cardManager = GetCardMgr();
|
||||||
|
const SS_CARDTYPE cardInSlot = cardManager.QuerySlot(dragAndDropSlot);
|
||||||
|
switch (cardInSlot)
|
||||||
|
{
|
||||||
|
case CT_Disk2:
|
||||||
|
{
|
||||||
|
Disk2InterfaceCard * card2 = dynamic_cast<Disk2InterfaceCard*>(cardManager.GetObj(dragAndDropSlot));
|
||||||
|
const ImageError_e error = card2->InsertDisk(dragAndDropDrive, filename, IMAGE_USE_FILES_WRITE_PROTECT_STATUS, IMAGE_DONT_CREATE);
|
||||||
|
if (error != eIMAGE_ERROR_NONE)
|
||||||
|
{
|
||||||
|
card2->NotifyInvalidImage(dragAndDropDrive, filename, error);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CT_GenericHDD:
|
||||||
|
{
|
||||||
|
if (!HD_Insert(dragAndDropDrive, filename))
|
||||||
|
{
|
||||||
|
frame->FrameMessageBox("Invalid HD image", "ERROR", MB_OK);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
frame->FrameMessageBox("Invalid D&D target", "ERROR", MB_OK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
namespace sa2
|
namespace sa2
|
||||||
{
|
{
|
||||||
|
|
||||||
void processFile(SDLFrame * frame, const char * filename, const size_t dragAndDropSlot)
|
void processFile(SDLFrame * frame, const char * filename, const size_t dragAndDropSlot, const size_t dragAndDropDrive)
|
||||||
{
|
{
|
||||||
const char * yaml = ".yaml";
|
const char * yaml = ".yaml";
|
||||||
if (strlen(filename) > strlen(yaml) && !strcmp(filename + strlen(filename) - strlen(yaml), yaml))
|
if (strlen(filename) > strlen(yaml) && !strcmp(filename + strlen(filename) - strlen(yaml), yaml))
|
||||||
{
|
{
|
||||||
common2::setSnapshotFilename(filename, true);
|
common2::setSnapshotFilename(filename, true);
|
||||||
frame->ResetSpeed();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CardManager & cardManager = GetCardMgr();
|
insertDisk(frame, filename, dragAndDropSlot, dragAndDropDrive);
|
||||||
SS_CARDTYPE cardInSlot = cardManager.QuerySlot(dragAndDropSlot);
|
|
||||||
switch (cardInSlot)
|
|
||||||
{
|
|
||||||
case CT_Disk2:
|
|
||||||
{
|
|
||||||
// for now we insert in DRIVE_1
|
|
||||||
Disk2InterfaceCard * card2 = dynamic_cast<Disk2InterfaceCard*>(cardManager.GetObj(dragAndDropSlot));
|
|
||||||
const ImageError_e error = card2->InsertDisk(dragAndDropSlot, filename, IMAGE_USE_FILES_WRITE_PROTECT_STATUS, IMAGE_DONT_CREATE);
|
|
||||||
if (error != eIMAGE_ERROR_NONE)
|
|
||||||
{
|
|
||||||
card2->NotifyInvalidImage(dragAndDropSlot, filename, error);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case CT_GenericHDD:
|
|
||||||
{
|
|
||||||
if (!HD_Insert(dragAndDropSlot, filename))
|
|
||||||
{
|
|
||||||
frame->FrameMessageBox("Invalid HD image", "ERROR", MB_OK);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
frame->FrameMessageBox("Invalid D&D target", "ERROR", MB_OK);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
frame->ResetSpeed();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,5 +2,5 @@ namespace sa2
|
||||||
{
|
{
|
||||||
class SDLFrame;
|
class SDLFrame;
|
||||||
|
|
||||||
void processFile(SDLFrame * frame, const char * filename, const size_t dragAndDropSlot);
|
void processFile(SDLFrame * frame, const char * filename, const size_t dragAndDropSlot, const size_t dragAndDropDrive);
|
||||||
}
|
}
|
||||||
|
|
|
@ -317,7 +317,7 @@ namespace sa2
|
||||||
|
|
||||||
void SDLFrame::ProcessDropEvent(const SDL_DropEvent & drop)
|
void SDLFrame::ProcessDropEvent(const SDL_DropEvent & drop)
|
||||||
{
|
{
|
||||||
processFile(this, drop.file, myDragAndDropSlot);
|
processFile(this, drop.file, myDragAndDropSlot, myDragAndDropDrive);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SDLFrame::ProcessKeyDown(const SDL_KeyboardEvent & key)
|
void SDLFrame::ProcessKeyDown(const SDL_KeyboardEvent & key)
|
||||||
|
|
Loading…
Add table
Reference in a new issue