idx(0),
tabCompleter(new TabCompleter(this))
{
-
-#ifdef Q_WS_MAC
- bindModifier = Qt::ControlModifier | Qt::AltModifier;
- jumpModifier = Qt::ControlModifier;
-#else
- bindModifier = Qt::ControlModifier;
- jumpModifier = Qt::AltModifier;
-#endif
-
connect(this, SIGNAL(returnPressed()), this, SLOT(on_returnPressed()));
connect(this, SIGNAL(textChanged(QString)), this, SLOT(on_textChanged(QString)));
-
}
InputLine::~InputLine() {
}
void InputLine::keyPressEvent(QKeyEvent * event) {
- if((event->modifiers() == jumpModifier || event->modifiers() == bindModifier) &&
- (Qt::Key_0 <= event->key() && event->key() <= Qt::Key_9)) {
- event->ignore();
- return;
- }
-
- if(event->key() == Qt::Key_Tab) { // Tabcomplete
- tabCompleter->complete();
+ if(event->key() == Qt::Key_Up) {
+ if(idx > 0) { idx--; setText(history[idx]); }
+ event->accept();
+ } else if(event->key() == Qt::Key_Down) {
+ if(idx < history.count()) idx++;
+ if(idx < history.count()) setText(history[idx]);
+ else setText("");
event->accept();
+ } else if(event->key() == Qt::Key_Select) { // for Qtopia
+ emit returnPressed();
+ QLineEdit::keyPressEvent(event);
} else {
- tabCompleter->reset();
- if(event->key() == Qt::Key_Up) {
- if(idx > 0) { idx--; setText(history[idx]); }
- event->accept();
- } else if(event->key() == Qt::Key_Down) {
- if(idx < history.count()) idx++;
- if(idx < history.count()) setText(history[idx]);
- else setText("");
- event->accept();
- } else if(event->key() == Qt::Key_Select) { // for Qtopia
- emit returnPressed();
- QLineEdit::keyPressEvent(event);
- } else {
- QLineEdit::keyPressEvent(event);
- }
+ QLineEdit::keyPressEvent(event);
}
+
}
void InputLine::on_returnPressed() {
}
void InputLine::on_textChanged(QString newText) {
- if(newText.contains('\n')) {
+ QStringList lineSeperators;
+ lineSeperators << QString("\r\n")
+ << QString('\n')
+ << QString('\r');
+
+ QString lineSep;
+ foreach(QString seperator, lineSeperators) {
+ if(newText.contains(seperator)) {
+ lineSep = seperator;
+ break;
+ }
+ }
+
+ if(lineSep.isEmpty())
+ return;
+
+ if(newText.contains(lineSep)) {
clear();
- QString line = newText.section('\n', 0, 0);
- QString remainder = newText.section('\n', 1);
+ QString line = newText.section(lineSep, 0, 0);
+ QString remainder = newText.section(lineSep, 1);
insert(line);
emit returnPressed();
insert(remainder);
}
+
}
+