From d6c03ffb021eb08c4a6d9690ed70da3ece03e885 Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Mon, 8 Feb 2016 01:24:28 +0100 Subject: [PATCH] logic: Don't show line numbers for summary --- .../component/controller/CodeController.cpp | 2 ++ .../view/helper/CodeSnippetParams.cpp | 1 + .../component/view/helper/CodeSnippetParams.h | 2 ++ src/lib_gui/qt/element/QtCodeArea.cpp | 20 +++++++++--- src/lib_gui/qt/element/QtCodeArea.h | 5 ++- src/lib_gui/qt/element/QtCodeFile.cpp | 31 +++++++++++-------- src/lib_gui/qt/element/QtCodeFile.h | 3 +- src/lib_gui/qt/element/QtCodeFileList.cpp | 17 +++++----- src/lib_gui/qt/element/QtCodeFileList.h | 3 +- src/lib_gui/qt/element/QtCodeSnippet.cpp | 5 ++- src/lib_gui/qt/view/QtCodeView.cpp | 2 ++ 11 files changed, 61 insertions(+), 30 deletions(-) diff --git a/src/lib/component/controller/CodeController.cpp b/src/lib/component/controller/CodeController.cpp index 3732ff2a..63392676 100644 --- a/src/lib/component/controller/CodeController.cpp +++ b/src/lib/component/controller/CodeController.cpp @@ -37,6 +37,8 @@ void CodeController::handleMessage(MessageActivateAll* message) statsSnippet.startLineNumber = 1; statsSnippet.endLineNumber = 1; + statsSnippet.reduced = true; + statsSnippet.locationFile = std::make_shared(FilePath()); statsSnippet.locationFile->isWholeCopy = true; diff --git a/src/lib/component/view/helper/CodeSnippetParams.cpp b/src/lib/component/view/helper/CodeSnippetParams.cpp index 179d92ac..2b273b86 100644 --- a/src/lib/component/view/helper/CodeSnippetParams.cpp +++ b/src/lib/component/view/helper/CodeSnippetParams.cpp @@ -12,6 +12,7 @@ CodeSnippetParams::CodeSnippetParams() , isActive(false) , isDeclaration(false) , isCollapsed(false) + , reduced(false) { } diff --git a/src/lib/component/view/helper/CodeSnippetParams.h b/src/lib/component/view/helper/CodeSnippetParams.h index 2b436df5..15c14736 100644 --- a/src/lib/component/view/helper/CodeSnippetParams.h +++ b/src/lib/component/view/helper/CodeSnippetParams.h @@ -33,6 +33,8 @@ struct CodeSnippetParams bool isActive; bool isDeclaration; bool isCollapsed; + + bool reduced; }; #endif // CODE_SNIPPET_PARAMS_H diff --git a/src/lib_gui/qt/element/QtCodeArea.cpp b/src/lib_gui/qt/element/QtCodeArea.cpp index 2a648d94..6e62c898 100644 --- a/src/lib_gui/qt/element/QtCodeArea.cpp +++ b/src/lib_gui/qt/element/QtCodeArea.cpp @@ -94,6 +94,7 @@ QtCodeArea::QtCodeArea( , m_setIDECursorPositionAction(nullptr) , m_eventPosition(0, 0) , m_isActiveFile(false) + , m_lineNumbersHidden(false) { setObjectName("code_area"); setReadOnly(true); @@ -116,7 +117,7 @@ QtCodeArea::QtCodeArea( annotateText(); m_digits = lineNumberDigits(); - updateLineNumberAreaWidth(0); + updateLineNumberAreaWidth(); connect(this, SIGNAL(blockCountChanged(int)), this, SLOT(updateLineNumberAreaWidth(int))); connect(this, SIGNAL(updateRequest(QRect,int)), this, SLOT(updateLineNumberArea(QRect,int))); @@ -221,13 +222,18 @@ int QtCodeArea::lineNumberDigits() const int QtCodeArea::lineNumberAreaWidth() const { - return fontMetrics().width(QLatin1Char('9')) * m_digits + 30; + if (!m_lineNumbersHidden) + { + return fontMetrics().width(QLatin1Char('9')) * m_digits + 30; + } + + return 0; } void QtCodeArea::updateLineNumberAreaWidthForDigits(int digits) { m_digits = digits; - updateLineNumberAreaWidth(0); + updateLineNumberAreaWidth(); } void QtCodeArea::updateContent() @@ -279,6 +285,12 @@ std::string QtCodeArea::getCode() const return m_code; } +void QtCodeArea::hideLineNumbers() +{ + m_lineNumberArea->hide(); + m_lineNumbersHidden = true; +} + void QtCodeArea::resizeEvent(QResizeEvent *e) { QPlainTextEdit::resizeEvent(e); @@ -529,7 +541,7 @@ void QtCodeArea::updateLineNumberArea(const QRect &rect, int dy) if (rect.contains(viewport()->rect())) { - updateLineNumberAreaWidth(0); + updateLineNumberAreaWidth(); } } diff --git a/src/lib_gui/qt/element/QtCodeArea.h b/src/lib_gui/qt/element/QtCodeArea.h index f8dcbd14..cfb299ec 100644 --- a/src/lib_gui/qt/element/QtCodeArea.h +++ b/src/lib_gui/qt/element/QtCodeArea.h @@ -89,6 +89,8 @@ public: std::string getCode() const; + void hideLineNumbers(); + protected: virtual void resizeEvent(QResizeEvent* event) Q_DECL_OVERRIDE; virtual void showEvent(QShowEvent* event) Q_DECL_OVERRIDE; @@ -102,7 +104,7 @@ protected: virtual void contextMenuEvent(QContextMenuEvent* event) Q_DECL_OVERRIDE; private slots: - void updateLineNumberAreaWidth(int newBlockCount); + void updateLineNumberAreaWidth(int newBlockCount = 0); void updateLineNumberArea(const QRect&, int); void clearSelection(); void setIDECursorPosition(); @@ -177,6 +179,7 @@ private: // the position where the context menu is opened needs to be stored] bool m_isActiveFile; + bool m_lineNumbersHidden; }; #endif // QT_CODE_AREA_H diff --git a/src/lib_gui/qt/element/QtCodeFile.cpp b/src/lib_gui/qt/element/QtCodeFile.cpp index 7183e49c..c5d6afc9 100644 --- a/src/lib_gui/qt/element/QtCodeFile.cpp +++ b/src/lib_gui/qt/element/QtCodeFile.cpp @@ -60,11 +60,6 @@ QtCodeFile::QtCodeFile(const FilePath& filePath, QtCodeFileList* parent) titleLayout->addWidget(m_title); - if (m_title->text().size() == 0) - { - m_title->hide(); - } - m_titleBar->setMinimumHeight(m_title->height() + 4); m_referenceCount = new QLabel(this); @@ -149,6 +144,11 @@ void QtCodeFile::addCodeSnippet(const CodeSnippetParams& params) std::shared_ptr snippet(new QtCodeSnippet(params, this)); + if (params.reduced) + { + m_title->hide(); + } + m_snippetLayout->addWidget(snippet.get()); if (params.locationFile->isWholeCopy) @@ -172,7 +172,7 @@ void QtCodeFile::addCodeSnippet(const CodeSnippetParams& params) m_snippets.push_back(snippet); - updateSnippets(); + setSnippets(); updateRefCount(params.refCount); } @@ -213,7 +213,7 @@ QtCodeSnippet* QtCodeFile::insertCodeSnippet(const CodeSnippetParams& params) m_snippetLayout->insertWidget(i, snippet.get()); m_snippets.insert(m_snippets.begin() + i, snippet); - updateSnippets(); + setSnippets(); updateRefCount(params.refCount); return snippet.get(); @@ -270,6 +270,8 @@ bool QtCodeFile::isCollapsedActiveFile() const void QtCodeFile::updateContent() { + updateSnippets(); + for (std::shared_ptr snippet : m_snippets) { snippet->updateContent(); @@ -425,13 +427,13 @@ bool QtCodeFile::hasSnippets() const return m_snippets.size() > 0; } -void QtCodeFile::handleMessage(MessageWindowFocus* message) -{ - updateTitleBar(); -} - void QtCodeFile::updateSnippets() { + if (m_snippets.size() == 0) + { + return; + } + int maxDigits = 1; for (std::shared_ptr snippet : m_snippets) { @@ -448,8 +450,11 @@ void QtCodeFile::updateSnippets() m_snippets.front()->setProperty("isFirst", true); m_snippets.back()->setProperty("isLast", true); +} - setSnippets(); +void QtCodeFile::handleMessage(MessageWindowFocus* message) +{ + updateTitleBar(); } void QtCodeFile::updateRefCount(int refCount) diff --git a/src/lib_gui/qt/element/QtCodeFile.h b/src/lib_gui/qt/element/QtCodeFile.h index 545076a2..c716685c 100644 --- a/src/lib_gui/qt/element/QtCodeFile.h +++ b/src/lib_gui/qt/element/QtCodeFile.h @@ -59,6 +59,8 @@ public: void requestSnippets() const; bool hasSnippets() const; + void updateSnippets(); + public slots: void clickedMinimizeButton() const; void clickedSnippetButton() const; @@ -71,7 +73,6 @@ private slots: private: virtual void handleMessage(MessageWindowFocus* message); - void updateSnippets(); void updateRefCount(int refCount); void updateTitleBar(); void doUpdateTitleBar(); diff --git a/src/lib_gui/qt/element/QtCodeFileList.cpp b/src/lib_gui/qt/element/QtCodeFileList.cpp index fe8dd2b6..187405f0 100644 --- a/src/lib_gui/qt/element/QtCodeFileList.cpp +++ b/src/lib_gui/qt/element/QtCodeFileList.cpp @@ -60,6 +60,7 @@ void QtCodeFileList::addCodeSnippet( { file->addCodeSnippet(params); } + file->setModificationTime(params.modificationTime); } @@ -173,6 +174,14 @@ void QtCodeFileList::setFileMaximized(const FilePath path) } } +void QtCodeFileList::updateFiles() +{ + for (std::shared_ptr file: m_files) + { + file->updateContent(); + } +} + void QtCodeFileList::showContents() { for (std::shared_ptr filePtr : m_files) @@ -261,14 +270,6 @@ QtCodeSnippet* QtCodeFileList::getFirstActiveSnippet() const return snippet; } -void QtCodeFileList::updateFiles() -{ - for (std::shared_ptr file: m_files) - { - file->updateContent(); - } -} - void QtCodeFileList::expandActiveSnippetFile(bool scrollTo) { for (std::shared_ptr file: m_files) diff --git a/src/lib_gui/qt/element/QtCodeFileList.h b/src/lib_gui/qt/element/QtCodeFileList.h index f51158c4..52e00164 100644 --- a/src/lib_gui/qt/element/QtCodeFileList.h +++ b/src/lib_gui/qt/element/QtCodeFileList.h @@ -56,6 +56,7 @@ public: void setFileSnippets(const FilePath path); void setFileMaximized(const FilePath path); + void updateFiles(); void showContents(); void scrollToValue(int value); void scrollToActiveFileIfRequested(); @@ -69,8 +70,6 @@ private: QtCodeFile* getFile(const FilePath filePath); QtCodeSnippet* getFirstActiveSnippet() const; - void updateFiles(); - void expandActiveSnippetFile(bool scrollTo); void ensureWidgetVisibleAnimated(QWidget *childWidget, QRectF rect); diff --git a/src/lib_gui/qt/element/QtCodeSnippet.cpp b/src/lib_gui/qt/element/QtCodeSnippet.cpp index 98ace1c9..a4d45473 100644 --- a/src/lib_gui/qt/element/QtCodeSnippet.cpp +++ b/src/lib_gui/qt/element/QtCodeSnippet.cpp @@ -90,7 +90,10 @@ QtCodeSnippet::QtCodeSnippet(const CodeSnippetParams& params, QtCodeFile* file) connect(m_footer, SIGNAL(clicked()), this, SLOT(clickedFooter())); } - updateDots(); + if (params.reduced) + { + m_codeArea->hideLineNumbers(); + } } QtCodeSnippet::~QtCodeSnippet() diff --git a/src/lib_gui/qt/view/QtCodeView.cpp b/src/lib_gui/qt/view/QtCodeView.cpp index 95a8b129..cc325ccb 100644 --- a/src/lib_gui/qt/view/QtCodeView.cpp +++ b/src/lib_gui/qt/view/QtCodeView.cpp @@ -131,6 +131,8 @@ void QtCodeView::doShowCodeSnippets(const std::vector& snippe } } + m_widget->updateFiles(); + setStyleSheet(); // so property "isLast" of QtCodeSnippet is computed correctly }