31 #include "miscellaneous/iofactory.h"
33 #include "miscellaneous/application.h"
37 #include <QTextStream>
39 #if !defined(Q_OS_OS2)
40 #if QT_VERSION >= 0x050000
43 #include <MediaObject>
44 #include <AudioOutput>
49 IOFactory::IOFactory() {
53 #if QT_VERSION >= 0x050000
54 QSound::play(file_path);
55 #elif !defined(Q_OS_OS2)
56 Phonon::AudioOutput *out =
new Phonon::AudioOutput(Phonon::MusicCategory, qApp);
57 out->setVolume(100.0f);
60 Phonon::MediaObject *music = Phonon::createPlayer(Phonon::MusicCategory, Phonon::MediaSource(file_path));
62 Phonon::createPath(music, out);
64 QObject::connect(music, SIGNAL(finished()), music, SLOT(deleteLater()));
65 QObject::connect(music, SIGNAL(finished()), out, SLOT(deleteLater()));
70 if (!QFile::exists(source)) {
71 qDebug(
"Source file \'%s\' does not exist.", qPrintable(QDir::toNativeSeparators(source)));
75 if (QFile::exists(destination)) {
76 if (!QFile::remove(destination)) {
77 qDebug(
"Destination file \'%s\' could not be removed.", qPrintable(QDir::toNativeSeparators(destination)));
82 return QFile::copy(source, destination);
86 const QStringList& exception_file_list,
87 const QStringList& exception_folder_list) {
89 QDir dir(directory_name);
91 if (dir.exists(directory_name)) {
92 foreach (QFileInfo info,
93 dir.entryInfoList(QDir::NoDotAndDotDot | QDir::System |
94 QDir::Hidden | QDir::AllDirs | QDir::Files, QDir::DirsFirst)) {
96 if (!exception_folder_list.contains(info.fileName())) {
97 result &=
removeDirectory(info.absoluteFilePath(), exception_file_list);
100 else if (!exception_file_list.contains(info.fileName())) {
101 result &= QFile::remove(info.absoluteFilePath());
105 result &= dir.rmdir(directory_name);
112 QFile file(file_name);
114 if (!file.open(QIODevice::ReadOnly | QIODevice::Unbuffered)) {
118 QByteArray file_contents = file.readAll();
121 return file_contents.toBase64();
126 QFile target(target_file);
128 if (!target.open(QIODevice::Unbuffered | QIODevice::WriteOnly | QIODevice::Truncate)) {
132 target.write(QByteArray::fromBase64(source_data.toUtf8()));
140 if (! dir.exists()) {
144 foreach (QString d, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) {
145 QString dst_path = destination + QDir::separator() + d;
146 dir.mkpath(dst_path);
150 foreach (QString f, dir.entryList(QDir::Files)) {
151 QString original_file = source + QDir::separator() + f;
152 QString destination_file = destination + QDir::separator() + f;
154 if (!QFile::exists(destination_file) || QFile::remove(destination_file)) {
155 if (!QFile::copy(original_file, destination_file)) {
156 qDebug(
"Failed to copy file \'%s\'.", qPrintable(QDir::toNativeSeparators(original_file)));
160 qDebug(
"Failed to remove file \'%s\'.", qPrintable(QDir::toNativeSeparators(original_file)));
static bool base64ToFile(const QString &source_data, const QString &target_file)
Takes base64 byte array and saves it into file.
static bool copyFile(const QString &source, const QString &destination)
Copies source file into destination path.
static QByteArray fileToBase64(const QString &file_name)
Takes input file and reads it into base64 byte array.
static void playWaveFile(const QString &file_path)
Plays selected file with default audio output.
static bool removeDirectory(const QString &directory_name, const QStringList &exception_file_list=QStringList(), const QStringList &exception_folder_list=QStringList())
Removes given directory and all its contents if not exceptions are given.
static bool copyDirectory(QString source, QString destination)
Copies source directory into destination path.