#ifndef QT_CODE_FILE_LIST #define QT_CODE_FILE_LIST #include #include #include #include #include "utility/TimePoint.h" #include "utility/types.h" class QtCodeFile; class QtCodeSnippet; class TokenLocationFile; class QtCodeFileList : public QScrollArea { Q_OBJECT signals: void shouldScrollToSnippet(QtCodeSnippet* widget); public: QtCodeFileList(QWidget* parent = 0); virtual ~QtCodeFileList(); virtual QSize sizeHint() const; void addCodeSnippet( uint startLineNumber, const std::string& title, Id titleId, const std::string& code, std::shared_ptr locationFile, int refCount, TimePoint modificationTime, bool insert = false ); void addFile(std::shared_ptr locationFile, int refCount, TimePoint modificationTime); void clearCodeSnippets(); const std::vector& getActiveTokenIds() const; void setActiveTokenIds(const std::vector& activeTokenIds); const std::vector& getFocusedTokenIds() const; void setFocusedTokenIds(const std::vector& focusedTokenIds); const std::vector& getErrorMessages() const; void setErrorMessages(const std::vector& errorMessages); bool scrollToFirstActiveSnippet(); void expandActiveSnippetFile(); void focusTokenIds(const std::vector& focusedTokenIds); void defocusTokenIds(); private slots: void scrollToSnippet(QtCodeSnippet* snippet); private: QtCodeFile* getFile(std::shared_ptr locationFile); void updateFiles(); void ensureWidgetVisibleAnimated(QWidget *childWidget, QRectF rect); std::shared_ptr m_frame; std::vector> m_files; std::vector m_activeTokenIds; std::vector m_focusedTokenIds; std::vector m_errorMessages; }; #endif // QT_CODE_FILE_LIST