/******************************************************************************* * gui/feeds/SubFileItem.h * * * * Copyright (c) 2008, Robert Fernie * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU Affero General Public License as * * published by the Free Software Foundation, either version 3 of the * * License, or (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU Affero General Public License for more details. * * * * You should have received a copy of the GNU Affero General Public License * * along with this program. If not, see . * * * *******************************************************************************/ #ifndef _SUB_FILE_ITEM_DIALOG_H #define _SUB_FILE_ITEM_DIALOG_H #include "ui_SubFileItem.h" #include #include const uint32_t SFI_MASK_STATE = 0x000f; const uint32_t SFI_MASK_TYPE = 0x00f0; //const uint32_t SFI_MASK_FT = 0x0f00; const uint32_t SFI_MASK_FLAG = 0xf000; const uint32_t SFI_STATE_ERROR = 0x0001; const uint32_t SFI_STATE_EXTRA = 0x0002; const uint32_t SFI_STATE_REMOTE = 0x0003; const uint32_t SFI_STATE_DOWNLOAD = 0x0004; const uint32_t SFI_STATE_LOCAL = 0x0005; const uint32_t SFI_STATE_UPLOAD = 0x0006; const uint32_t SFI_TYPE_CHANNEL = 0x0010; const uint32_t SFI_TYPE_ATTACH = 0x0020; const uint32_t SFI_FLAG_CREATE = 0x1000; const uint32_t SFI_FLAG_ALLOW_DELETE = 0x2000; const uint32_t SFI_FLAG_ASSUME_FILE_READY = 0x4000; //! This create a gui widget that allows users to access files shared by user /*! * Widget that allows user to share files with a visual attachment interface * Note: extra files (files not already shared/hashed in rs) need to * be hashed by the clients of this class or else objects of this class will * have reduced functionality */ class SubFileItem : public QWidget, private Ui::SubFileItem { Q_OBJECT public: /** Default Constructor */ SubFileItem(const RsFileHash &hash, const std::string &name, const std::string &path, uint64_t size, uint32_t flags, const RsPeerId &srcId); void smaller(); RsFileHash FileHash() { return mFileHash; } std::string FileName() { return mFileName; } uint64_t FileSize() { return mFileSize; } std::string FilePath() { return mPath; } void updateItemStatic(); bool done(); bool ready(); uint32_t getState(); bool isDownloadable(bool &startable); bool isPlayable(bool &startable); void setChannelId(const std::string &channelId) { mChannelId = channelId; } public slots: void download(); void play(); void mediatype(); void copyLink(); private slots: void toggle(); void cancel(); void del(); void save(); void updateItem(); signals: void wantsToBeDeleted(); private: void Setup(); std::string mPath; RsFileHash mFileHash; std::string mFileName; uint64_t mFileSize; RsPeerId mSrcId; std::string mChannelId; uint32_t mMode; uint32_t mType; uint32_t mFlag; uint64_t mDivisor; /* for display purposes */ float amountDone; signals: void fileFinished(SubFileItem * subFileItem); }; #endif