annotate data/fileio/RemoteFile.h @ 299:576be0d0d218

* Merge transform directory from sv-match-alignment branch (the previous comment included notes for this stuff, but I missed it in the actual merge) * Fix crash when a transform fails to create an output model and the thread that created the transform then deletes its input model thinking it's no longer needed, even though the transform run thread is still using it -- fix is to wait() on the transform before returning the null output model
author Chris Cannam
date Fri, 28 Sep 2007 16:15:06 +0000
parents ce6f65ab3327
children 4fc6f49436b3
rev   line source
Chris@208 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@208 2
Chris@208 3 /*
Chris@208 4 Sonic Visualiser
Chris@208 5 An audio file viewer and annotation editor.
Chris@208 6 Centre for Digital Music, Queen Mary, University of London.
Chris@208 7 This file copyright 2007 QMUL.
Chris@208 8
Chris@208 9 This program is free software; you can redistribute it and/or
Chris@208 10 modify it under the terms of the GNU General Public License as
Chris@208 11 published by the Free Software Foundation; either version 2 of the
Chris@208 12 License, or (at your option) any later version. See the file
Chris@208 13 COPYING included with this distribution for more information.
Chris@208 14 */
Chris@208 15
Chris@208 16 #ifndef _REMOTE_FILE_H_
Chris@208 17 #define _REMOTE_FILE_H_
Chris@208 18
Chris@208 19 #include <QUrl>
Chris@208 20 #include <QMutex>
Chris@208 21 #include <QString>
Chris@210 22 #include <QTimer>
Chris@208 23
Chris@208 24 class QFtp;
Chris@208 25 class QHttp;
Chris@208 26 class QFile;
Chris@208 27 class QProgressDialog;
Chris@210 28 class QHttpResponseHeader;
Chris@208 29
Chris@208 30 class RemoteFile : public QObject
Chris@208 31 {
Chris@208 32 Q_OBJECT
Chris@208 33
Chris@208 34 public:
Chris@208 35 RemoteFile(QUrl url);
Chris@208 36 virtual ~RemoteFile();
Chris@208 37
Chris@210 38 bool isAvailable();
Chris@210 39
Chris@208 40 void wait();
Chris@208 41
Chris@208 42 bool isOK() const;
Chris@208 43 bool isDone() const;
Chris@210 44
Chris@208 45 QString getLocalFilename() const;
Chris@208 46 QString getErrorString() const;
Chris@208 47
Chris@211 48 void deleteLocalFile();
Chris@211 49
Chris@208 50 static bool canHandleScheme(QUrl url);
Chris@208 51
Chris@208 52 signals:
Chris@208 53 void progress(int percent);
Chris@208 54 void ready();
Chris@208 55
Chris@208 56 protected slots:
Chris@208 57 void dataReadProgress(int done, int total);
Chris@214 58 void httpResponseHeaderReceived(const QHttpResponseHeader &resp);
Chris@214 59 void ftpCommandFinished(int, bool);
Chris@208 60 void dataTransferProgress(qint64 done, qint64 total);
Chris@208 61 void done(bool error);
Chris@210 62 void showProgressDialog();
Chris@210 63 void cancelled();
Chris@208 64
Chris@208 65 protected:
Chris@208 66 QFtp *m_ftp;
Chris@208 67 QHttp *m_http;
Chris@208 68 QFile *m_localFile;
Chris@208 69 QString m_localFilename;
Chris@208 70 QString m_errorString;
Chris@208 71 bool m_ok;
Chris@210 72 int m_lastStatus;
Chris@208 73 bool m_done;
Chris@208 74 QProgressDialog *m_progressDialog;
Chris@210 75 QTimer m_progressShowTimer;
Chris@208 76
Chris@211 77 void cleanup();
Chris@211 78
Chris@208 79 QString createLocalFile(QUrl url);
Chris@208 80
Chris@208 81 static QMutex m_fileCreationMutex;
Chris@208 82 static int m_count;
Chris@208 83 };
Chris@208 84
Chris@208 85 #endif