SXXXXXXX_PyDownloadFwViaSRIO/_OLD/Vecchia_app/FpgaBeamMeUp/beamupfilemonitor.cpp.bak
2026-01-22 17:10:05 +01:00

89 lines
2.4 KiB
C++

#include "beamupfilemonitor.h"
#include "qggrifobeamupproperties.h"
#include <windows.h>
#include <QStorageInfo>
#include "mydebug.h"
#include <windows.h>
#include <Dbt.h>
BeamupFileMonitor::BeamupFileMonitor(QObject *parent) : QObject(parent)
{
}
bool BeamupFileMonitor::nativeEventDriveDetection(const QByteArray &/*eventType*/, void *message, long */*result*/)
{
if (!QgGrifoBeamupProperties::instance().m_watchRemovable)
return false;
MSG* msg = reinterpret_cast<MSG*>(message);
if (msg->message == WM_DEVICECHANGE) {
switch (msg->wParam) {
case DBT_DEVICEARRIVAL:
MyDebug().logMsg( type_log_info, origin_msg_generic ,"Device connected");
enumDisks();
return true;
break;
case DBT_DEVICEREMOVECOMPLETE:
MyDebug().logMsg( type_log_info, origin_msg_generic ,"Device disconnected");
enumDisks();
return true;
break;
default:
break;
}
}
return false;
}
void BeamupFileMonitor::cleanUp()
{
}
#include <fileapi.h>
void BeamupFileMonitor::enumDisks()
{
auto dlist=QDir::drives();
QStringList tmp;
QString deployPath=QgGrifoBeamupProperties::instance().m_watchRemovablePath;
if (deployPath.isEmpty())
deployPath="GRIFO-E-Deploy";
foreach (auto d, dlist)
{
UINT t=GetDriveTypeA(d.filePath().toLatin1().constData());
if (t==2)
{
if (removeableDisks.contains(d.filePath()))
continue;
else
{
MyDebug().logMsg( type_log_info,
origin_msg_generic ,
QString("new %1 %2").arg(d.filePath()).arg(t));
tmp.append(d.filePath());
QFileInfo f(d.filePath()+deployPath);
if (f.isDir())
{
QDir dir(f.absoluteFilePath());
auto L=dir.entryInfoList(QStringList()<<"*.zip", QDir::Files);
foreach(auto l, L)
{
MyDebug().logMsg( type_log_info,
origin_msg_generic ,
QString("Deployable %1").arg(l.absoluteFilePath()));
}
}
}
}
}
removeableDisks=tmp;
}