#ifndef QT_CODE_FILE_LIST #define QT_CODE_FILE_LIST #include #include #include #include #include "utility/file/FilePath.h" #include "utility/TimePoint.h" #include "utility/types.h" #include "component/view/helper/CodeSnippetParams.h" class QtCodeFile; class QtCodeSnippet; class TokenLocationFile; class QtCodeFileList : public QScrollArea { Q_OBJECT signals: void shouldScrollToSnippet(QtCodeSnippet* widget, uint lineNumber); public: QtCodeFileList(QWidget* parent = 0); virtual ~QtCodeFileList(); virtual QSize sizeHint() const; void addCodeSnippet(const CodeSnippetParams& params, 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); void showActiveTokenIds(); void showFirstActiveSnippet(bool scrollTo); void focusTokenIds(const std::vector& focusedTokenIds); void defocusTokenIds(); void setFileMinimized(const FilePath path); void setFileSnippets(const FilePath path); void setFileMaximized(const FilePath path); void updateFiles(); void showContents(); void scrollToValue(int value); void scrollToActiveFileIfRequested(); private slots: void scrolled(int value); void scrollToSnippet(QtCodeSnippet* snippet, uint lineNumber); void setValue(); private: QtCodeFile* getFile(const FilePath filePath); QtCodeSnippet* getFirstActiveSnippet() const; void expandActiveSnippetFile(bool scrollTo); 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; QtCodeFile* m_scrollToFile; int m_value; }; #endif // QT_CODE_FILE_LIST