version.cpp
changeset 779 1fb50e79661c
parent 565 e7f6bcdf5f6c
     1.1 --- a/version.cpp	Mon Jul 23 12:42:02 2007 +0000
     1.2 +++ b/version.cpp	Tue Jul 07 09:34:24 2009 +0000
     1.3 @@ -1,71 +1,56 @@
     1.4  #include "version.h"
     1.5  
     1.6 +#include <QRegExp>
     1.7 +
     1.8  bool checkVersion (const QString &v)
     1.9  {
    1.10  	// returns true, if vym is able to read file regarding 
    1.11  	// the version set with setVersion
    1.12  	return checkVersion (v,__VYM_VERSION);
    1.13 -	/*
    1.14 -	QString s1=v.section (".",0,0);
    1.15 -	QString s2=v.section (".",1,1);
    1.16 -	QString s3=v.section (".",2,2);
    1.17 -	bool ok;
    1.18 -	int vv1 =QString(__VYM_VERSION).section (".",0,0).toInt(&ok,10);
    1.19 -	int vv2 =QString(__VYM_VERSION).section (".",1,1).toInt(&ok,10);
    1.20 -	int vv3 =QString(__VYM_VERSION).section (".",2,2).toInt(&ok,10);
    1.21 -	int mv1=0;
    1.22 -	int mv2=0;
    1.23 -	int mv3=0;
    1.24 -	if (!s1.isEmpty() ) mv1=s1.toInt(&ok,10);
    1.25 -	if (!s2.isEmpty() ) mv2=s2.toInt(&ok,10);
    1.26 -	if (!s3.isEmpty() ) mv3=s3.toInt(&ok,10);
    1.27 -	
    1.28 -	if (vv1 > mv1)
    1.29 -		return true;
    1.30 -	if (vv1 < mv1)
    1.31 -		return false;
    1.32 -	if (vv2 > mv2)
    1.33 -		return true;
    1.34 -	if (vv2 < mv2)
    1.35 -		return false;
    1.36 -	if (vv3 > mv3)
    1.37 -		return true;
    1.38 -	if (vv3 < mv3)
    1.39 -		return false;
    1.40 -	return true;	
    1.41 -*/
    1.42  }
    1.43  
    1.44 +
    1.45  bool checkVersion (const QString &v, const QString &d)
    1.46  {
    1.47 -	QString v1=v.section (".",0,0);
    1.48 -	QString v2=v.section (".",1,1);
    1.49 -	QString v3=v.section (".",2,2);
    1.50 -	QString d1=d.section (".",0,0);
    1.51 -	QString d2=d.section (".",1,1);
    1.52 -	QString d3=d.section (".",2,2);
    1.53  	bool ok;
    1.54 -	int d1i=d1.toInt(&ok,10);
    1.55 -	int d2i=d2.toInt(&ok,10);
    1.56 -	int d3i=d3.toInt(&ok,10);
    1.57 -	int v1i=0;
    1.58 -	int v2i=0;
    1.59 -	int v3i=0;
    1.60 -	if (!v1.isEmpty() ) v1i=v1.toInt(&ok,10);
    1.61 -	if (!v2.isEmpty() ) v2i=v2.toInt(&ok,10);
    1.62 -	if (!v3.isEmpty() ) v3i=v3.toInt(&ok,10);
    1.63 +	int v1;
    1.64 +	int v2;
    1.65 +	int v3;
    1.66 +	int d1;
    1.67 +	int d2;
    1.68 +	int d3;
    1.69 +
    1.70 +	QRegExp rx("(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})");
    1.71 +	int pos=rx.indexIn (v);
    1.72 +	if (pos>-1)
    1.73 +	{
    1.74 +		v1=rx.cap(1).toInt(&ok);
    1.75 +		v2=rx.cap(2).toInt(&ok);
    1.76 +		v3=rx.cap(3).toInt(&ok);
    1.77 +	} else
    1.78 +		qWarning (QString ("Warning: Checking version failed for v=%1").arg(v));
    1.79 +
    1.80 +	pos=rx.indexIn (d);
    1.81 +	if (pos>-1)
    1.82 +	{
    1.83 +		d1=rx.cap(1).toInt(&ok);
    1.84 +		d2=rx.cap(2).toInt(&ok);
    1.85 +		d3=rx.cap(3).toInt(&ok);
    1.86 +	} else
    1.87 +		qWarning (QString ("Warning: Checking version failed for d=%1").arg(d));
    1.88 +
    1.89  	
    1.90 -	if (d1i > v1i)
    1.91 +	if (d1 > v1)
    1.92  		return true;
    1.93 -	if (d1i < v1i)
    1.94 +	if (d1 < v1)
    1.95  		return false;
    1.96 -	if (d2i > v2i)
    1.97 +	if (d2 > v2)
    1.98  		return true;
    1.99 -	if (d2i < v2i)
   1.100 +	if (d2 < v2)
   1.101  		return false;
   1.102 -	if (d3i > v3i)
   1.103 +	if (d3 > v3)
   1.104  		return true;
   1.105 -	if (d3i < v3i)
   1.106 +	if (d3 < v3)
   1.107  		return false;
   1.108  	return true;	
   1.109