MNE-CPP 0.1.9
A Framework for Electrophysiology
Loading...
Searching...
No Matches
fifffilesharer.cpp
Go to the documentation of this file.
1//=============================================================================================================
35//=============================================================================================================
36// INCLUDES
37//=============================================================================================================
38
39#include "fifffilesharer.h"
40
41//=============================================================================================================
42// QT INCLUDES
43//=============================================================================================================
44
45#include <QDir>
46
47//=============================================================================================================
48// USED NAMESPACES
49//=============================================================================================================
50
51using namespace FIFFLIB;
52
53//=============================================================================================================
54// DEFINE STATIC MEMBERS
55//=============================================================================================================
56
57const static char m_sDefaultDirectory[]("realtime_shared_files");
58const static char m_sDefaultFileName[]("realtime_file");
59
60//=============================================================================================================
61// DEFINE MEMBER METHODS
62//=============================================================================================================
63
65: FiffFileSharer(m_sDefaultDirectory)
66{
67}
68
69//=============================================================================================================
70
71FiffFileSharer::FiffFileSharer(const QString& sDirName)
72: m_sDirectory(QDir::currentPath() + "/" + sDirName)
73, m_iFileIndex(0)
74{
75}
76
77//=============================================================================================================
78
79void FiffFileSharer::copyRealtimeFile(const QString &sSourcePath)
80{
81 if(initSharedDirectory()){
82 QString sFilePath(m_sDirectory + "/" + m_sDefaultFileName + QString::number(m_iFileIndex++) + "_raw.fif");
83
84 if(QFile::copy(sSourcePath, sFilePath)){
85 QFile newFile(sFilePath);
86 if(newFile.open(QIODevice::ReadWrite)){
87 FIFFLIB::FiffStream stream(&newFile);
88 stream.skipRawData(newFile.bytesAvailable());
89 stream.finish_writing_raw();
90
91 newFile.close();
92 }
93 }
94 }
95}
96
97//=============================================================================================================
98
100{
101 if(initSharedDirectory()){
102 clearSharedDirectory();
103 m_fileWatcher.addPath(m_sDirectory);
104 connect(&m_fileWatcher, &QFileSystemWatcher::directoryChanged,
105 this, &FiffFileSharer::onDirectoryChanged, Qt::UniqueConnection);
106 connect(&m_fileWatcher, &QFileSystemWatcher::fileChanged,
107 this, &FiffFileSharer::onFileChanged, Qt::UniqueConnection);
108 } else {
109 qWarning() << "[FiffFileSharer::initWatcher] Unable to initilaize shared directory";
110 }
111}
112
113//=============================================================================================================
114
115void FiffFileSharer::clearSharedDirectory()
116{
117 QDir directory(m_sDirectory);
118 directory.setNameFilters(QStringList("*.*"));
119 directory.setFilter(QDir::Files);
120 for(auto& file : directory.entryList()){
121 directory.remove(file);
122 }
123}
124
125//=============================================================================================================
126
127void FiffFileSharer::onDirectoryChanged(const QString &sPath)
128{
129 QString filePath(sPath + "/" + m_sDefaultFileName + QString::number(m_iFileIndex) + "_raw.fif");
130 m_fileWatcher.addPath(filePath);
131}
132
133//=============================================================================================================
134
135void FiffFileSharer::onFileChanged(const QString &sPath)
136{
137 emit newFileAtPath(sPath);
138 m_fileWatcher.removePath(sPath);
139
140 m_iFileIndex++;
141}
142
143//=============================================================================================================
144
145bool FiffFileSharer::initSharedDirectory()
146{
147 QDir sharedDirectory(m_sDirectory);
148 if(!sharedDirectory.exists()){
149 sharedDirectory.mkpath(".");
150 }
151
152 return sharedDirectory.exists();
153}
FiffFileSharer class declaration.
FIFF File I/O routines.
void newFileAtPath(const QString &sPath)
void copyRealtimeFile(const QString &sSourcePath)