00001
00002
00003
00004
00005
00006
00007 #include "MimePointsDetector.h"
00008 #include <QApplication>
00009 #include <QClipboard>
00010 #include <QSize>
00011 #include <QStringList>
00012 #include "Transformation.h"
00013
00014 MimePointsDetector::MimePointsDetector ()
00015 {
00016 }
00017
00018 MimePointsDetector::~MimePointsDetector ()
00019 {
00020 }
00021
00022 bool MimePointsDetector::isMimePointsData (const Transformation &transformation,
00023 const QSize &screenSize) const
00024 {
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 const QString TAB_DELIMITER ("\t");
00042
00043 if (!transformation.transformIsDefined()) {
00044 return false;
00045 }
00046
00047 const QClipboard *clipboard = QApplication::clipboard();
00048 QString text = clipboard->text ();
00049 QStringList lines = text.split ("\n");
00050 int i;
00051
00052
00053 if (lines.count () < 2) {
00054 return false;
00055 }
00056
00057
00058 for (i = 0; i < lines.count(); i++) {
00059
00060
00061 QString line = lines.at (i);
00062 if (!line.trimmed ().isEmpty ()) {
00063
00064 QStringList fields = line.split (TAB_DELIMITER);
00065 if (fields.count () != 2) {
00066 return false;
00067 }
00068 }
00069 }
00070
00071
00072 for (i = 0; i < lines.count (); i++) {
00073
00074
00075 QString line = lines.at (i);
00076 if (!line.trimmed ().isEmpty ()) {
00077
00078 QStringList fields = line.split (TAB_DELIMITER);
00079 QString field0 = fields [0];
00080 QString field1 = fields [1];
00081 bool ok0, ok1;
00082 double value0 = field0.toDouble (&ok0);
00083 double value1 = field1.toDouble (&ok1);
00084 if (ok0 && ok1) {
00085
00086
00087 QPointF pointScreen;
00088 transformation.transformRawGraphToScreen (QPointF (value0, value1),
00089 pointScreen);
00090 if (pointScreen.x() < 0 ||
00091 pointScreen.y() < 0 ||
00092 pointScreen.x() > screenSize.width() ||
00093 pointScreen.y() > screenSize.height ()) {
00094
00095 return false;
00096 }
00097 }
00098 }
00099 }
00100
00101 return true;
00102 }