mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-30 20:40:28 -04:00 
			
		
		
		
	2. Moved some of the text handling code from MainWindow to Displaytext git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@3550 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
		
			
				
	
	
		
			137 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			137 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
| #Sov Mil Order of Malta:   15:  28:  EU:   41.90:   -12.43:    -1.0:  1A:
 | |
|     #1A;
 | |
| #Spratly Islands:          26:  50:  AS:    9.88:  -114.23:    -8.0:  1S:
 | |
|     #1S,9M0,BV9S;
 | |
| #Monaco:                   14:  27:  EU:   43.73:    -7.40:    -1.0:  3A:
 | |
|     #3A;
 | |
| #Heard Island:             39:  68:  AF:  -53.08:   -73.50:    -5.0:  VK0H:
 | |
|     #=VK0IR;
 | |
| #Macquarie Island:         30:  60:  OC:  -54.60:  -158.88:   -10.0:  VK0M:
 | |
|     #=VK0KEV;
 | |
| #Cocos-Keeling:            29:  54:  OC:  -12.15:   -96.82:    -6.5:  VK9C:
 | |
|     #AX9C,AX9Y,VH9C,VH9Y,VI9C,VI9Y,VJ9C,VJ9Y,VK9C,VK9Y,VL9C,VL9Y,VM9C,VM9Y,
 | |
|     #VN9C,VN9Y,VZ9C,VZ9Y,=VK9AA;
 | |
| */
 | |
| 
 | |
| 
 | |
| #include "countrydat.h"
 | |
| #include <QFile>
 | |
| #include <QTextStream>
 | |
| 
 | |
| 
 | |
| void CountryDat::init(const QString filename)
 | |
| {
 | |
|     _filename = filename;
 | |
|     _data.clear();
 | |
| }
 | |
| 
 | |
| QString CountryDat::_extractName(const QString line)
 | |
| {
 | |
|     int s1 = line.indexOf(':');
 | |
|     if (s1>=0)
 | |
|     {
 | |
|         QString name = line.mid(0,s1);
 | |
|         return name;
 | |
|     }
 | |
|     return "";
 | |
| }
 | |
| 
 | |
| void CountryDat::_removeBrackets(QString &line, const QString a, const QString b)
 | |
| {
 | |
|     int s1 = line.indexOf(a);
 | |
|     while (s1 >= 0)
 | |
|     {
 | |
|       int s2 = line.indexOf(b);
 | |
|       line = line.mid(0,s1) + line.mid(s2+1,-1);
 | |
|       s1 = line.indexOf(a);
 | |
|     }
 | |
| }    
 | |
| 
 | |
| QStringList CountryDat::_extractPrefix(QString &line, bool &more)
 | |
| {
 | |
|     line = line.remove(" \n");
 | |
|     line = line.replace("=","");
 | |
|     line = line.replace(" ","");
 | |
| 
 | |
|     _removeBrackets(line,"(",")");
 | |
|     _removeBrackets(line,"[","]");
 | |
|     _removeBrackets(line,"<",">");
 | |
|     _removeBrackets(line,"~","~");
 | |
| 
 | |
|     int s1 = line.indexOf(';');
 | |
|     more = true;
 | |
|     if (s1 >= 0)
 | |
|     {
 | |
|       line = line.mid(0,s1);
 | |
|       more = false;
 | |
|     }
 | |
| 
 | |
|     QStringList r = line.split(',');
 | |
| 
 | |
|     return r;
 | |
| }
 | |
| 
 | |
| 
 | |
| void CountryDat::load()
 | |
| {
 | |
|     _data.clear();
 | |
|     _countryNames.clear(); //used by countriesWorked
 | |
|   
 | |
|     QFile inputFile(_filename);
 | |
|     if (inputFile.open(QIODevice::ReadOnly))
 | |
|     {
 | |
|        QTextStream in(&inputFile);
 | |
|        while ( !in.atEnd() )
 | |
|        {
 | |
|           QString line1 = in.readLine();
 | |
|           if ( !in.atEnd() )
 | |
|           {
 | |
|             QString line2 = in.readLine();
 | |
|               
 | |
|             QString name = _extractName(line1);
 | |
|             if (name.length()>0)
 | |
|             {
 | |
|                 _countryNames << name;
 | |
|                 bool more = true;
 | |
|                 QStringList prefixs;
 | |
|                 while (more)
 | |
|                 {
 | |
|                     QStringList p = _extractPrefix(line2,more);
 | |
|                     prefixs += p;
 | |
|                     if (more)
 | |
|                         line2 = in.readLine();
 | |
|                 }
 | |
| 
 | |
|                 QString p;
 | |
|                 foreach(p,prefixs)
 | |
|                 {
 | |
|                     if (p.length() > 0)
 | |
|                         _data.insert(p,name);
 | |
|                 }
 | |
|             }
 | |
|           }
 | |
|        }
 | |
|     inputFile.close();
 | |
|     }
 | |
| }
 | |
| 
 | |
| // return country name else ""
 | |
| QString CountryDat::find(const QString prefix)
 | |
| {
 | |
|     QString pf = prefix.toUpper();
 | |
|     while(pf.length() >= 1)
 | |
|   	{
 | |
|       if (_data.contains(pf))
 | |
| 	  {
 | |
|         QString country = _data.value(pf);
 | |
| 	    return country;
 | |
| 	   }
 | |
|        pf = pf.left(pf.length()-1);
 | |
| 	 }
 | |
| 	 return "";
 | |
| }	   
 | |
| 
 | |
|       
 | |
| 
 |