diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index f6b7db6..fafa879 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -351,38 +351,32 @@ void MainWindow::clipboardUpdated()
{
if(options.getKosCheck())
{
- QStringList names;
- if(!QApplication::clipboard()->text().contains('\n'))
+ QStringList lines, names;
+ lines = QApplication::clipboard()->text().split('\n');
+
+ foreach(QString line, lines)
{
- // Check to see if this is a right-click+Copy from the chat area:
+ // Sanitize the list if it's copied from chat. i.e....
// Rotham Visteen > Sir Nicolas Struik TU-O0T nv
- // J'erat > Lord Helios Sir Nicolas Struik B-WPLZ
- // makoto Riraille > nuggt007 JEIV-E* nv
- // Ariaphne > Izaq E-YCML nv
- // Moon Loop > XHQ-7V* AntarisIX Sabre*
- // Vipress X-TAW-SIN > CocoMaster Yung DNR-7M nv
- // Khasm Kaotiqa > CocoMaster Yung
- // Jophiel Gabriel Sir Nicolas Struik
- // Lord Helios
- // Rounon Dax > Danilo Audier Jophiel Gabriel
- // - JEIV-E
- // Khasm Kaotiqa > Koizumi Atsuchi red
- // Ars Amatoria > Sith Koroshi Dreadnought group location then?
- // Khasm Kaotiqa > N-RMSH Xe4roX
- // Khasm Kaotiqa Sir Nicolas Struik
- // Khasm Kaotiqa > Sir Nicolas Struik Sir Nicolas Struik
+ // showinfo:5//... seems to denote a link to a system, pilots will have different numbers
QRegularExpression exp("]+>([^<]+)");
- QRegularExpressionMatchIterator i = exp.globalMatch(QApplication::clipboard()->text());
- while(i.hasNext())
+ QRegularExpressionMatch match = exp.match(line);
+
+ if(match.hasMatch())
{
- QRegularExpressionMatch match = i.next();
- names.append(match.captured(1));
+ QRegularExpressionMatchIterator i = exp.globalMatch(QApplication::clipboard()->text());
+ while(i.hasNext())
+ {
+ match = i.next();
+ names.append(match.captured(1));
+ }
+ }
+ else
+ {
+ // Doesn't look like a copied line with markup, so just append it unsanitized.
+ names.append(line);
}
- }
- else
- {
- names = QApplication::clipboard()->text().split('\n');
}
QStringList toCheck;
@@ -392,7 +386,7 @@ void MainWindow::clipboardUpdated()
if(name.length() < 3 ||
name.length() > 37 ||
name.count(QLatin1Char(' ')) > 2 ||
- name.contains(QRegExp("^[^ A-Za-z0-9'\\-\\.]+$")))
+ name.contains(QRegExp("[^ A-Za-z0-9'\\-\\.]")))
{
qDebug() << "MainWindow::clipboardUpdated() - Not KOS checking invalid name " << name;
return;
@@ -404,10 +398,13 @@ void MainWindow::clipboardUpdated()
}
QString checkString = toCheck.join(',');
- AsyncInfo* kosInfo = new AsyncInfo(manager, this);
- connect(kosInfo, SIGNAL(kosResultReady(const QList&)),
- this, SLOT(gotKosReply(const QList&)));
- kosInfo->kosCheck(checkString);
+ if(checkString != "")
+ {
+ AsyncInfo* kosInfo = new AsyncInfo(manager, this);
+ connect(kosInfo, SIGNAL(kosResultReady(const QList&)),
+ this, SLOT(gotKosReply(const QList&)));
+ kosInfo->kosCheck(checkString);
+ }
}
}