Skip to content

Commit b301471

Browse files
committed
finished almost all the function at version 1.0
1 parent 865aa30 commit b301471

File tree

15 files changed

+231
-35
lines changed

15 files changed

+231
-35
lines changed

finder/finder.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
Finder::Finder(QWidget *parent):
44
QDockWidget("finder", parent),
5+
TAG("Finder"),
56
mRootWidget(new QWidget(this)),
67
mMainLayout(new QHBoxLayout()),
78
mRegModeBox(new QCheckBox("regular mode", mRootWidget)),
@@ -26,6 +27,11 @@ Finder::Finder(QWidget *parent):
2627
// setting
2728
connect(mFindButton, &QPushButton::clicked, this, &Finder::onFindButtonClicked);
2829
connect(mFindPreButton, &QPushButton::clicked, this, &Finder::onFindPreButtonClicked);
30+
connect(mExpressionEdit, &QLineEdit::editingFinished, this, &Finder::onFindButtonClicked);
31+
}
32+
33+
Finder::~Finder()
34+
{
2935
}
3036

3137
void Finder::onFindButtonClicked()

finder/finder.h

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,16 @@
1414
#include <QFlags>
1515
#include <QString>
1616

17+
#include "utils/logutil.h"
18+
1719

1820
class Finder : public QDockWidget
1921
{
2022
Q_OBJECT
2123

2224
public:
2325
Finder(QWidget *parent);
26+
~Finder();
2427

2528
signals:
2629
void findTriggered(const QString &exp, const QTextDocument::FindFlags &options, bool regMode);
@@ -33,13 +36,15 @@ private slots:
3336
void onFindTriggered(bool backward);
3437

3538
private:
36-
QWidget *mRootWidget;
37-
QLayout *mMainLayout;
39+
const QString TAG;
40+
41+
QWidget *mRootWidget;
42+
QLayout *mMainLayout;
3843

39-
QCheckBox *mRegModeBox;
40-
QCheckBox *mCaseSenseBox;
41-
QCheckBox *mWholeWordBox;
42-
QLineEdit *mExpressionEdit;
44+
QCheckBox *mRegModeBox;
45+
QCheckBox *mCaseSenseBox;
46+
QCheckBox *mWholeWordBox;
47+
QLineEdit *mExpressionEdit;
4348
QPushButton *mFindButton;
4449
QPushButton *mFindPreButton;
4550

highlighter/highlighter.cpp

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ Highlighter::Highlighter(QWidget *parent):
2020
{
2121
setupUi();
2222
mFilter = QSharedPointer<LogFilter>(new LogFilter());
23+
emit logFilterChanged(mFilter);
2324
connect(mJsonEdit, &JsonTextEdit::updated, this, &Highlighter::onJsonObjectUpdated);
2425
initDir();
2526
initFSWatcher();
@@ -55,14 +56,15 @@ void Highlighter::setupUi()
5556
mRootWidget->setLayout(mMainLayout);
5657
setWidget(mRootWidget);
5758

58-
setTabWidth(4);
59-
6059
connect(mNewButton, &QToolButton::clicked, this, &Highlighter::onNewButtonClicked);
6160
connect(mDelButton, &QToolButton::clicked, this, &Highlighter::onDelButtonClicked);
6261
connect(mSaveButton, &QToolButton::clicked, this, &Highlighter::onSaveButtonClicked);
6362
connect(mRuleBox, &QComboBox::currentTextChanged, this, &Highlighter::onRuleSelectedChanged);
6463
connect(mRuleBox, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &Highlighter::onRulesBoxIndexChanged);
6564
connect(mHighlightButton, &QToolButton::clicked, this, &Highlighter::onHighlightButtonClicked);
65+
connect(mJsonEdit, &JsonTextEdit::edittingCompleted, this, &Highlighter::onJsonEdittingCompleted);
66+
connect(mFindNxtButton, &QPushButton::clicked, this, &Highlighter::onFindNexClicked);
67+
connect(mFindPreButton, &QPushButton::clicked, this, &Highlighter::onFindPreClicked);
6668
}
6769

6870
void Highlighter::initDir()
@@ -92,12 +94,6 @@ void Highlighter::initFSWatcher()
9294
this, &Highlighter::onRulesDirChanged);
9395
}
9496

95-
void Highlighter::setTabWidth(int nspace)
96-
{
97-
QFontMetrics metrics(mJsonEdit->font());
98-
mJsonEdit->setTabStopDistance(nspace * metrics.width(' '));
99-
}
100-
10197
QSharedPointer<AbstractLineFilter> Highlighter::logHighlighter()
10298
{
10399
return mFilter;
@@ -107,6 +103,12 @@ void Highlighter::onJsonObjectUpdated(const QJsonObject &jsonObject)
107103
{
108104
mFilter->clearRule();
109105

106+
if (jsonObject.isEmpty()) {
107+
LogUtil::i(TAG, "empty jsonObject");
108+
mFilter->update();
109+
return;
110+
}
111+
110112
// traverse every rules
111113
foreach (const QString &ruleName, jsonObject.keys()) {
112114
QJsonValue value = jsonObject.value(ruleName);
@@ -313,4 +315,34 @@ void Highlighter::saveAsRuleFile(const QString &fileName, const QString &content
313315
void Highlighter::onHighlightButtonClicked()
314316
{
315317
LogUtil::i(TAG, "onHighlightButtonClicked");
318+
emit logHighlighterTriggered();
319+
}
320+
321+
void Highlighter::onJsonEdittingCompleted()
322+
{
323+
LogUtil::i(TAG, "onJsonEdittingCompleted");
324+
emit logHighlighterTriggered();
325+
}
326+
327+
void Highlighter::onFindNexClicked()
328+
{
329+
QString comboPattern = mFilter->comboVisiblePattern();
330+
331+
if (comboPattern.isNull()) return;
332+
333+
emit findTriggered(comboPattern,
334+
QTextDocument::FindFlag::FindCaseSensitively,
335+
true);
336+
}
337+
338+
void Highlighter::onFindPreClicked()
339+
{
340+
QString comboPattern = mFilter->comboVisiblePattern();
341+
342+
if (comboPattern.isNull()) return;
343+
344+
emit findTriggered(comboPattern,
345+
QTextDocument::FindFlag::FindCaseSensitively
346+
|QTextDocument::FindFlag::FindBackward,
347+
true);
316348
}

highlighter/highlighter.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,11 @@ class Highlighter : public QDockWidget
4848
explicit Highlighter(QWidget *parent = nullptr);
4949

5050
QSharedPointer<AbstractLineFilter> logHighlighter();
51-
void setTabWidth(int nspace);
5251

5352
signals:
54-
void logHighlighterChanged();
53+
void logFilterChanged(const QSharedPointer<AbstractLineFilter> &highlighter);
54+
void logHighlighterTriggered();
55+
void findTriggered(const QString &exp, const QTextDocument::FindFlags &options, bool regMode);
5556

5657
private slots:
5758
void onJsonObjectUpdated(const QJsonObject &jsonObject);
@@ -62,6 +63,9 @@ private slots:
6263
void onRuleSelectedChanged(const QString &rule);
6364
void onRulesBoxIndexChanged(int index);
6465
void onHighlightButtonClicked();
66+
void onJsonEdittingCompleted();
67+
void onFindNexClicked();
68+
void onFindPreClicked();
6569

6670
private:
6771
void setupUi();

highlighter/jsontextedit.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ JsonTextEdit::JsonTextEdit(QWidget *parent):
66
new JsonHighlighter(document());
77
mSpacePattern = QRegularExpression(R"(^\s*)");
88

9+
setTabWidth(2);
10+
setMinimumWidth(300);
11+
912
connect(this, &QPlainTextEdit::textChanged,
1013
this, &JsonTextEdit::updateJsonObject);
1114
}
@@ -16,6 +19,9 @@ void JsonTextEdit::keyPressEvent(QKeyEvent *event)
1619

1720
switch (event->key()) {
1821
case Qt::Key::Key_Return:
22+
if (event->modifiers() == Qt::KeyboardModifier::ControlModifier)
23+
emit edittingCompleted();
24+
else
1925
autoInsertSpace();
2026
break;
2127
}
@@ -48,10 +54,19 @@ void JsonTextEdit::updateJsonObject()
4854
if (!jsonDoc.isNull()) {
4955
mJsonObject = jsonDoc.object();
5056
emit updated(mJsonObject);
57+
} else {
58+
mJsonObject = QJsonObject();
59+
emit updated(mJsonObject);
5160
}
5261
}
5362

5463
QString JsonTextEdit::jsonString()
5564
{
5665
return document()->toRawText().simplified();
5766
}
67+
68+
void JsonTextEdit::setTabWidth(int nspace)
69+
{
70+
QFontMetrics metrics(font());
71+
setTabStopDistance(nspace * metrics.width('a'));
72+
}

highlighter/jsontextedit.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,11 @@ Q_OBJECT
2626

2727
QString jsonString();
2828
QJsonObject & jsonObject();
29+
void setTabWidth(int nspace);
2930

3031
signals:
3132
void updated(const QJsonObject &json);
33+
void edittingCompleted();
3234

3335
protected:
3436
virtual void keyPressEvent(QKeyEvent *event);

highlighter/logfilter.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,19 @@ void LogFilter::setDefaultRule(const Rule &rule)
3737
{
3838
mDefaultRule = rule;
3939
}
40+
41+
QString LogFilter::comboVisiblePattern()
42+
{
43+
QString comboPattern;
44+
45+
foreach (Rule rule, mRules) {
46+
if (rule.visible) {
47+
if (!comboPattern.isNull() && comboPattern != "")
48+
comboPattern.append("|");
49+
comboPattern.append(rule.pattern.pattern());
50+
}
51+
}
52+
53+
return comboPattern;
54+
}
55+

highlighter/logfilter.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ class LogFilter : public AbstractLineFilter
4444
void addRule(const Rule &rule);
4545
void clearRule();
4646
void setDefaultRule(const Rule &rule);
47+
QString comboVisiblePattern();
4748

4849
protected:
4950
virtual void onNextLine(const QString &line);

logviewer/logviewer.cpp

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
LogViewer::LogViewer(QWidget *parent):
44
QWidget(parent),
5+
TAG("LogViewer"),
56
mRootLayout(new QHBoxLayout(this)),
67
mMainTabWidget(new QTabWidget(this)),
78
mViewportList()
@@ -20,6 +21,7 @@ void LogViewer::setupUi()
2021

2122
// MainTabWidget
2223
mMainTabWidget->setTabsClosable(true);
24+
mMainTabWidget->setMovable(true);
2325

2426
connect(mMainTabWidget, &QTabWidget::tabCloseRequested,
2527
this, &LogViewer::close);
@@ -58,6 +60,7 @@ void LogViewer::find(const QString &exp, const QTextDocument::FindFlags &options
5860
void LogViewer::open(const QString &path)
5961
{
6062
LogViewport *viewport = new LogViewport(path, mMainTabWidget);
63+
viewport->showBuffer();
6164
mMainTabWidget->addTab(viewport, viewport->title());
6265
mViewportList.append(viewport);
6366
}
@@ -106,15 +109,17 @@ void LogViewer::highlightCurrentLine()
106109

107110
void LogViewer::onLineFilterUpdate()
108111
{
109-
updateContent();
112+
//updateContent();
110113
}
111114

112115
void LogViewer::updateContent()
113116
{
117+
LogUtil::i(TAG, QString("updateContent"));
118+
114119
if (mViewportList.length() <= 0) return;
115120

116121
if (mFilter.isNull()) {
117-
displayRawLog();
122+
displayRawLog(mMainTabWidget->currentIndex());
118123
return;
119124
}
120125

@@ -147,16 +152,25 @@ void LogViewer::updateContent()
147152

148153
void LogViewer::setLineFilter(const QSharedPointer<AbstractLineFilter> &filter)
149154
{
155+
if (mFilter.get() == filter) return;
156+
150157
mFilter = filter;
151158

152159
connect(mFilter.get(), &AbstractLineFilter::updated,
153160
this, &LogViewer::onLineFilterUpdate);
154161
updateContent();
155162
}
156163

157-
void LogViewer::displayRawLog()
164+
void LogViewer::displayRawLog(int index)
158165
{
166+
LogUtil::i(TAG, QString("displayRawLog.index=%1").arg(index));
167+
159168
if (mViewportList.length() <= 0) return;
160169

161-
mViewportList.at(mMainTabWidget->currentIndex())->showBuffer();
170+
mViewportList.at(index)->showBuffer();
171+
}
172+
173+
void LogViewer::onLineFilterTriggered()
174+
{
175+
updateContent();
162176
}

logviewer/logviewer.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
#include "abstractlinefilter.h"
3030
#include "logviewport.h"
31+
#include "utils/logutil.h"
3132

3233

3334
class LogViewer : public QWidget
@@ -40,14 +41,15 @@ class LogViewer : public QWidget
4041

4142
void setLineFilter(const QSharedPointer<AbstractLineFilter> &filter);
4243
void updateContent();
43-
void displayRawLog();
44+
void displayRawLog(int index);
4445

4546
public slots:
4647
void open(const QString &path);
4748
void close(int index);
4849
void closeCurrent();
4950
void closeAll();
5051
void find(const QString &exp, const QTextDocument::FindFlags &options, bool regMode);
52+
void onLineFilterTriggered();
5153

5254
private slots:
5355
void highlightCurrentLine();
@@ -57,9 +59,10 @@ private slots:
5759
void setupUi();
5860

5961
private:
60-
QLayout *mRootLayout;
61-
QTabWidget *mMainTabWidget;
62-
QList<LogViewport *> mViewportList;
62+
const QString TAG;
63+
QLayout *mRootLayout;
64+
QTabWidget *mMainTabWidget;
65+
QList<LogViewport *> mViewportList;
6366

6467
QSharedPointer<AbstractLineFilter> mFilter;
6568
};

0 commit comments

Comments
 (0)