2011-11-03 22:04:35 +04:00
|
|
|
#ifndef SYNCWINDOW_H
|
|
|
|
#define SYNCWINDOW_H
|
|
|
|
|
|
|
|
#include <QMainWindow>
|
|
|
|
#include "QWebDAV.h"
|
|
|
|
#include <QSqlDatabase>
|
|
|
|
#include <QQueue>
|
|
|
|
#include <QSystemTrayIcon>
|
|
|
|
#include <QIcon>
|
2011-11-04 04:47:04 +04:00
|
|
|
#include <QSet>
|
2011-11-03 22:04:35 +04:00
|
|
|
|
|
|
|
class QTimer;
|
2011-11-04 04:47:04 +04:00
|
|
|
class QFileSystemWatcher;
|
2011-11-03 22:04:35 +04:00
|
|
|
|
|
|
|
namespace Ui {
|
|
|
|
class SyncWindow;
|
|
|
|
}
|
|
|
|
|
2011-11-04 06:21:39 +04:00
|
|
|
namespace sqlite3_util {
|
|
|
|
bool sqliteDBMemFile( QSqlDatabase memdb, QString filename, bool save );
|
|
|
|
}
|
|
|
|
|
2011-11-03 22:04:35 +04:00
|
|
|
class SyncWindow : public QMainWindow
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
explicit SyncWindow(QWidget *parent = 0);
|
|
|
|
~SyncWindow();
|
|
|
|
QWebDAV *mWebdav;
|
|
|
|
|
|
|
|
struct FileInfo {
|
|
|
|
QString name;
|
|
|
|
qint64 size;
|
|
|
|
FileInfo(QString fileName, qint64 fileSize) {
|
|
|
|
name = fileName;
|
|
|
|
size = fileSize;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
private:
|
|
|
|
Ui::SyncWindow *ui;
|
|
|
|
QSystemTrayIcon *mSystemTray;
|
|
|
|
QSqlDatabase mDB;
|
2011-11-04 06:21:39 +04:00
|
|
|
QString mDBFileName;
|
2011-11-03 22:04:35 +04:00
|
|
|
QQueue<QString> mDirectoryQueue;
|
|
|
|
QString mHomeDirectory;
|
|
|
|
QString mSyncDirectory;
|
|
|
|
QString mConfigDirectory;
|
|
|
|
QString mHost;
|
|
|
|
QString mPassword;
|
|
|
|
QString mUsername;
|
|
|
|
QTimer *mSyncTimer;
|
2011-11-04 06:21:39 +04:00
|
|
|
QTimer *mSaveDBTimer;
|
2011-11-03 22:04:35 +04:00
|
|
|
QQueue<FileInfo> mUploadingFiles;
|
|
|
|
QQueue<FileInfo> mDownloadingFiles;
|
|
|
|
//QHash<QString,qlonglong> mUploadingFiles;
|
|
|
|
//QHash<QString,qlonglong> mDownloadingFiles;
|
|
|
|
qint64 mTotalToDownload;
|
|
|
|
qint64 mTotalToUpload;
|
|
|
|
qint64 mTotalToTransfer;
|
|
|
|
qint64 mTotalTransfered;
|
|
|
|
qint64 mTotalDownloaded;
|
|
|
|
qint64 mTotalUploaded;
|
|
|
|
qint64 mCurrentFileSize;
|
|
|
|
QString mCurrentFile;
|
|
|
|
QString mTransferState;
|
|
|
|
bool mBusy;
|
|
|
|
bool mDBOpen;
|
|
|
|
qint64 mUpdateTime;
|
|
|
|
QIcon mDefaultIcon;
|
|
|
|
QIcon mSyncIcon;
|
2011-11-04 04:47:04 +04:00
|
|
|
QFileSystemWatcher *mFileWatcher;
|
|
|
|
bool mIsFirstRun;
|
|
|
|
QSet<QString> mScanDirectoriesSet;
|
|
|
|
QQueue<QString> mScanDirectories;
|
2011-11-03 22:04:35 +04:00
|
|
|
|
2011-11-04 04:47:04 +04:00
|
|
|
void updateDBLocalFile(QString name,qint64 size,qint64 last,QString type);
|
2011-11-03 22:04:35 +04:00
|
|
|
void scanLocalDirectory(QString dirPath);
|
|
|
|
QSqlQuery queryDBFileInfo(QString fileName, QString table);
|
|
|
|
QSqlQuery queryDBAllFiles(QString table);
|
|
|
|
void syncFiles();
|
|
|
|
void upload(FileInfo fileName);
|
|
|
|
void download(FileInfo fileName);
|
|
|
|
void updateDBDownload(QString fileName);
|
|
|
|
void processNextStep();
|
|
|
|
void createDataBase();
|
|
|
|
void initialize();
|
|
|
|
void readConfigFromDB();
|
|
|
|
void saveConfigToDB();
|
2011-11-04 04:47:04 +04:00
|
|
|
void scanLocalDirectoryForNewFiles(QString name);
|
|
|
|
void processLocalFile(QString name);
|
2011-11-04 22:51:22 +04:00
|
|
|
void deleteRemovedFiles();
|
|
|
|
void deleteFromLocal(QString name, bool isDir);
|
|
|
|
void deleteFromServer(QString name);
|
|
|
|
void dropFromDB(QString table, QString column, QString condition );
|
2011-11-03 22:04:35 +04:00
|
|
|
|
|
|
|
public slots:
|
|
|
|
void processDirectoryListing(QList<QWebDAV::FileInfo> fileInfo);
|
|
|
|
void processFileReady(QByteArray data,QString fileName);
|
|
|
|
void updateDBUpload(QString fileName);
|
|
|
|
void timeToSync();
|
|
|
|
void updateStatus();
|
|
|
|
void transferProgress(qint64 current,qint64 total);
|
|
|
|
void systemTrayActivated(QSystemTrayIcon::ActivationReason reason);
|
|
|
|
void saveButtonClicked();
|
2011-11-04 04:47:04 +04:00
|
|
|
void localFileChanged(QString name);
|
|
|
|
void localDirectoryChanged(QString name);
|
2011-11-04 06:21:39 +04:00
|
|
|
void closeEvent(QCloseEvent *event);
|
|
|
|
void saveDBToFile();
|
|
|
|
void loadDBFromFile();
|
2011-11-03 22:04:35 +04:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif // SYNCWINDOW_H
|