annotate data/fileio/RemoteFile.h @ 212:fb8ddd00f440

* better icon * support range mappers in thumbwheel * supply range mapper for vertical zoom from spectrogram * fix bug in fftmodel for scaled ffts * make the various widgets all respond to double-click for edit, middle-click for reset, ctrl-left-click for reset
author Chris Cannam
date Fri, 12 Jan 2007 14:49:18 +0000
parents e2bbb58e6df6
children ce6f65ab3327
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@210 58 void responseHeaderReceived(const QHttpResponseHeader &resp);
Chris@208 59 void dataTransferProgress(qint64 done, qint64 total);
Chris@208 60 void done(bool error);
Chris@210 61 void showProgressDialog();
Chris@210 62 void cancelled();
Chris@208 63
Chris@208 64 protected:
Chris@208 65 QFtp *m_ftp;
Chris@208 66 QHttp *m_http;
Chris@208 67 QFile *m_localFile;
Chris@208 68 QString m_localFilename;
Chris@208 69 QString m_errorString;
Chris@208 70 bool m_ok;
Chris@210 71 int m_lastStatus;
Chris@208 72 bool m_done;
Chris@208 73 QProgressDialog *m_progressDialog;
Chris@210 74 QTimer m_progressShowTimer;
Chris@208 75
Chris@211 76 void cleanup();
Chris@211 77
Chris@208 78 QString createLocalFile(QUrl url);
Chris@208 79
Chris@208 80 static QMutex m_fileCreationMutex;
Chris@208 81 static int m_count;
Chris@208 82 };
Chris@208 83
Chris@208 84 #endif