Unverified Commit 71639a5e authored by Don Gagne's avatar Don Gagne Committed by GitHub

Merge pull request #6511 from mavlink/console_improvements

Mavlink Console Improvements
parents 17a4d3d9 89506207
...@@ -33,12 +33,25 @@ MavlinkConsoleController::~MavlinkConsoleController() ...@@ -33,12 +33,25 @@ MavlinkConsoleController::~MavlinkConsoleController()
void void
MavlinkConsoleController::sendCommand(QString command) MavlinkConsoleController::sendCommand(QString command)
{ {
_history.append(command);
command.append("\n"); command.append("\n");
_sendSerialData(qPrintable(command)); _sendSerialData(qPrintable(command));
_cursor_home_pos = -1; _cursor_home_pos = -1;
_cursor = rowCount(); _cursor = rowCount();
} }
QString
MavlinkConsoleController::historyUp(const QString& current)
{
return _history.up(current);
}
QString
MavlinkConsoleController::historyDown(const QString& current)
{
return _history.down(current);
}
void void
MavlinkConsoleController::_setActiveVehicle(Vehicle* vehicle) MavlinkConsoleController::_setActiveVehicle(Vehicle* vehicle)
{ {
...@@ -192,3 +205,43 @@ MavlinkConsoleController::writeLine(int line, const QByteArray &text) ...@@ -192,3 +205,43 @@ MavlinkConsoleController::writeLine(int line, const QByteArray &text)
auto idx = index(line); auto idx = index(line);
setData(idx, data(idx, Qt::DisplayRole).toString() + text); setData(idx, data(idx, Qt::DisplayRole).toString() + text);
} }
void MavlinkConsoleController::CommandHistory::append(const QString& command)
{
if (command.length() > 0) {
// do not append duplicates
if (_history.length() == 0 || _history.last() != command) {
if (_history.length() >= maxHistoryLength) {
_history.removeFirst();
}
_history.append(command);
}
}
_index = _history.length();
}
QString MavlinkConsoleController::CommandHistory::up(const QString& current)
{
if (_index <= 0)
return current;
--_index;
if (_index < _history.length()) {
return _history[_index];
}
return "";
}
QString MavlinkConsoleController::CommandHistory::down(const QString& current)
{
if (_index >= _history.length())
return current;
++_index;
if (_index < _history.length()) {
return _history[_index];
}
return "";
}
...@@ -27,13 +27,12 @@ class MavlinkConsoleController : public QStringListModel ...@@ -27,13 +27,12 @@ class MavlinkConsoleController : public QStringListModel
public: public:
MavlinkConsoleController(); MavlinkConsoleController();
~MavlinkConsoleController(); virtual ~MavlinkConsoleController();
public slots: Q_INVOKABLE void sendCommand(QString command);
void sendCommand(QString command);
signals: Q_INVOKABLE QString historyUp(const QString& current);
void cursorChanged(int); Q_INVOKABLE QString historyDown(const QString& current);
private slots: private slots:
void _setActiveVehicle (Vehicle* vehicle); void _setActiveVehicle (Vehicle* vehicle);
...@@ -44,10 +43,23 @@ private: ...@@ -44,10 +43,23 @@ private:
void _sendSerialData(QByteArray, bool close = false); void _sendSerialData(QByteArray, bool close = false);
void writeLine(int line, const QByteArray &text); void writeLine(int line, const QByteArray &text);
class CommandHistory
{
public:
void append(const QString& command);
QString up(const QString& current);
QString down(const QString& current);
private:
static constexpr int maxHistoryLength = 100;
QList<QString> _history;
int _index = 0;
};
int _cursor_home_pos; int _cursor_home_pos;
int _cursor; int _cursor;
QByteArray _incoming_buffer; QByteArray _incoming_buffer;
Vehicle* _vehicle; Vehicle* _vehicle;
QList<QMetaObject::Connection> _uas_connections; QList<QMetaObject::Connection> _uas_connections;
CommandHistory _history;
}; };
...@@ -53,7 +53,7 @@ AnalyzePage { ...@@ -53,7 +53,7 @@ AnalyzePage {
id: delegateItem id: delegateItem
Rectangle { Rectangle {
color: qgcPal.windowShade color: qgcPal.windowShade
height: Math.round(ScreenTools.defaultFontPixelHeight * 0.5 + field.height) height: Math.round(ScreenTools.defaultFontPixelHeight * 0.1 + field.height)
width: listview.width width: listview.width
QGCLabel { QGCLabel {
...@@ -96,6 +96,15 @@ AnalyzePage { ...@@ -96,6 +96,15 @@ AnalyzePage {
conController.sendCommand(text) conController.sendCommand(text)
text = "" text = ""
} }
Keys.onPressed: {
if (event.key == Qt.Key_Up) {
text = conController.historyUp(text);
event.accepted = true;
} else if (event.key == Qt.Key_Down) {
text = conController.historyDown(text);
event.accepted = true;
}
}
} }
QGCButton { QGCButton {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment