Paste multiple lines. Test version 0.0.3.

master
Tomatix 5 years ago
parent 7552c851ff
commit 88da891700
  1. 2
      CMakeLists.txt
  2. 11
      IWin/IWinChannel.cpp
  3. 2
      IWin/IWinChannel.h
  4. 13
      IWin/IWinPrivate.cpp
  5. 2
      IWin/IWinPrivate.h
  6. 11
      IWin/IWinStatus.cpp
  7. 2
      IWin/IWinStatus.h
  8. 36
      Widgets/ILineEdit.cpp
  9. 6
      Widgets/ILineEdit.h

@ -8,7 +8,7 @@ project(IdealIRC)
set(BUILD_TYPE "packaged")
set(VERSION_MAJOR 0)
set(VERSION_MINOR 0)
set(VERSION_PATCH 2)
set(VERSION_PATCH 3)
set(VERSION_APPEND "")
#

@ -81,8 +81,8 @@ IWinChannel::IWinChannel(IWinStatus* statusParent, const QString& channelName)
connect(&connection, &IRC::memberRemoved,
this, &IWinChannel::memberListRemoveMember);
connect(input, &ILineEdit::returnPressed,
this, &IWinChannel::inputEnter);
connect(input, &ILineEdit::newLine,
this, &IWinChannel::newLine);
connect(listbox, &IListWidget::itemDoubleClicked,
this, &IWinChannel::listboxDoubleclick);
@ -160,13 +160,10 @@ void IWinChannel::resetNicklist()
nlControl->clear();
}
void IWinChannel::inputEnter()
void IWinChannel::newLine(const QString& line)
{
QString text = input->text();
input->clear();
InputHandler inHndl(connection);
inHndl.parse(*this, text);
inHndl.parse(*this, line);
}
void IWinChannel::listboxDoubleclick(QListWidgetItem* item)

@ -47,7 +47,7 @@ public:
void resetNicklist();
private:
void inputEnter();
void newLine(const QString& line);
void listboxDoubleclick(QListWidgetItem* item);
bool isUserModePrefix(QChar c); //! Returns true if the passed character is a prefix like @ + etc

@ -44,8 +44,8 @@ IWinPrivate::IWinPrivate(IWinStatus* statusParent, const QString& targetName)
view->setFocusPolicy(Qt::FocusPolicy::NoFocus);
connect(input, &ILineEdit::returnPressed,
this, &IWinPrivate::inputEnter);
connect(input, &ILineEdit::newLine,
this, &IWinPrivate::newLine);
connect(view, &IIRCView::customContextMenuRequested, [this](const QPoint& point){
menuSymbols.set("nickname", getButtonText().toStdString());
@ -94,13 +94,10 @@ void IWinPrivate::refreshWindowTitle()
}
}
void IWinPrivate::inputEnter()
void IWinPrivate::newLine(const QString& line)
{
QString text = input->text();
input->clear();
InputHandler inHndl(connection);
inHndl.parse(*this, text);
InputHandler inHndl(connection);
inHndl.parse(*this, line);
}
int IWinPrivate::tabComplete(int index, QString& pattern)

@ -40,7 +40,7 @@ public:
void clear() override { view->resetView(); }
private:
void inputEnter();
void newLine(const QString& newLine);
int tabComplete(int index, QString& pattern);
QVBoxLayout* layout;

@ -52,8 +52,8 @@ IWinStatus::IWinStatus(const QString& buttonText)
view->setFocusPolicy(Qt::FocusPolicy::NoFocus);
connect(input, &ILineEdit::returnPressed,
this, &IWinStatus::inputEnter);
connect(input, &ILineEdit::newLine,
this, &IWinStatus::newLine);
connect(&connection, &IRC::connected, [this] {
MdiManager::instance().connectionStateChange();
@ -180,13 +180,10 @@ void IWinStatus::closeEvent(QCloseEvent* evt)
IWin::closeEvent(evt);
}
void IWinStatus::inputEnter()
void IWinStatus::newLine(const QString& line)
{
QString text = input->text();
input->clear();
InputHandler inHndl(connection);
inHndl.parse(*this, text);
inHndl.parse(*this, line);
}
void IWinStatus::closeAllChildren()

@ -55,7 +55,7 @@ public:
private:
void closeEvent(QCloseEvent* evt) override;
void inputEnter();
void newLine(const QString& line);
void closeAllChildren();
void Qt_Eventloop_Hook();
void disconnectedFromServer();

@ -1,5 +1,7 @@
#include "ILineEdit.h"
#include "ConfigMgr.h"
#include <QMessageBox>
#include <IWin/IWin.h>
ILineEdit::ILineEdit(ILineEdit::TabCompleteCb&& tabCompleteCb, QWidget* parent)
: QLineEdit(parent)
@ -9,7 +11,13 @@ ILineEdit::ILineEdit(ILineEdit::TabCompleteCb&& tabCompleteCb, QWidget* parent)
connect(&conf, &ConfigMgr::saved, this, &ILineEdit::loadConfig);
loadConfig();
installEventFilter(new KeyEventFilter(this));
auto* filter = new KeyEventFilter(this);
connect(filter, &KeyEventFilter::newLine,
[this](const QString& l) {
emit newLine(l);
clear();
});
installEventFilter(filter);
}
void ILineEdit::loadConfig()
@ -125,8 +133,30 @@ bool KeyEventFilter::eventFilter(QObject* obj, QEvent* evt)
input->keyDown();
return true;
}
else if (kevt->key() == Qt::Key_Return || kevt->key() == Qt::Key_Enter)
input->prevLines.push_front(input->text());
else if (kevt->key() == Qt::Key_Return || kevt->key() == Qt::Key_Enter) {
auto ln = input->text();
ln.remove('\r');
auto linelist = ln.split('\n');
bool proceedPasting{ true };
const auto* parent = dynamic_cast<IWin*>(input->parentWidget());
if (linelist.count() > 3 && parent &&
(parent->getType() == IWin::Type::Channel || parent->getType() == IWin::Type::Private))
{
auto msg = tr("You are about to paste %1 lines.\nYou should consider using an external \"paste service\".\nContinue anyway?")
.arg(linelist.count());
auto btn = QMessageBox::warning(input, tr("Flood warning"), msg, QMessageBox::Yes | QMessageBox::No);
proceedPasting = btn == QMessageBox::Yes;
}
if (proceedPasting) {
for (const auto& line : linelist) {
input->prevLines.push_front(line);
emit newLine(line);
}
}
}
else {
input->logidx = -1;
}

@ -17,6 +17,9 @@ public:
using TabCompleteCb = std::function<int(int, QString&)>;
ILineEdit(TabCompleteCb&& tabCompleteCb, QWidget* parent = nullptr);
signals:
void newLine(const QString& line);
private:
void loadConfig();
void keyTab();
@ -42,6 +45,9 @@ public:
: QObject(parent)
{}
signals:
void newLine(const QString& line);
private:
bool eventFilter(QObject* obj, QEvent *evt) override;
};

Loading…
Cancel
Save