Ticket #1906: weather_units.3.patch

File weather_units.3.patch, 13.9 KB (added by mythtv-dev@…, 14 years ago)

Patch for two new unit conversions in MythWeather?

  • mythweather/mythweather/weather.h

    diff -ur mythplugins-0.19.orig/mythweather/mythweather/weather.h mythplugins-0.19/mythweather/mythweather/weather.h
    old new  
    9797    bool changeTemp;
    9898    bool changeLoc;
    9999    bool changeAgg;
    100     int config_Units;
    101100    int config_Aggressiveness;
    102101    int curConfig;
    103102    int curPage;
     
    108107    bool validArea;
    109108    bool readReadme;
    110109    bool pastTime;
    111     bool convertData;
     110    enum
     111    {
     112        CV_IMPERIAL = 0,
     113        CV_SI_KM,
     114        CV_SI_MILES,
     115        CV_SI_NAUTICAL,
     116        CV_END
     117    };
     118    int convertData;
    112119    bool firstRun;
    113120    bool conError;
    114121    int updateInterval;
  • mythweather/mythweather/weather.cpp

    diff -ur mythplugins-0.19.orig/mythweather/mythweather/weather.cpp mythplugins-0.19/mythweather/mythweather/weather.cpp
    old new  
    5353    if (appCode == 1)
    5454        debug = true;
    5555    validArea = true;
    56     convertData = false;
     56    convertData = CV_IMPERIAL;
    5757    gotLetter = false;
    5858    readReadme = false;
    5959    pastTime = false;
     
    144144    QString convertFlag = gContext->GetSetting("SIUnits");
    145145    if (convertFlag.upper() == "YES")
    146146    {
    147         config_Units = 2;
    148147        if (debug == true)
    149148                cerr << "MythWeather: --- Converting Data\n";
    150         convertData = true;
     149        convertData = CV_SI_KM;
     150    }
     151    else if (convertFlag.upper() == "YES_MILES")
     152    {
     153        if (debug == true)
     154                cerr << "MythWeather: --- Converting Data except for miles\n";
     155        convertData = CV_SI_MILES;
     156    }
     157    else if (convertFlag.upper() == "YES_NAUTICAL")
     158    {
     159        if (debug == true)
     160                cerr << "MythWeather: --- Converting Data (nautical miles)\n";
     161        convertData = CV_SI_NAUTICAL;
    151162    }
    152163    else
    153         config_Units = 1;
     164        convertData = CV_IMPERIAL;
    154165
    155166    updateInterval = 30;
    156167    nextpageInterval = 10;
     
    444455        if (changeTemp == true)
    445456        {
    446457
    447             if (config_Units == 2)
     458            if (convertData == CV_SI_KM)
    448459            {
    449460                units = "YES";
    450461                gContext->SetSetting("SIUnits", "YES");
    451                 convertData = true;
     462            }
     463            else if (convertData == CV_SI_MILES)
     464            {
     465                units = "YES_MILES";
     466                gContext->SetSetting("SIUnits", "YES_MILES");
     467            }
     468            else if (convertData == CV_SI_NAUTICAL)
     469            {
     470                units = "YES_NAUTICAL";
     471                gContext->SetSetting("SIUnits", "YES_NAUTICAL");
    452472            }
    453473            else
    454474            {
    455475                units = "NO";
    456476                gContext->SetSetting("SIUnits", "NO");
    457                 convertData = false;
     477                convertData = CV_IMPERIAL;
    458478            }
    459479            setSetting("SIUnits", units, false);
    460480        }
     
    11421162                ltype->ResetList();
    11431163                ltype->SetItemText(0, tr("Imperial (Fahrenheit, in, etc)"));
    11441164                ltype->SetItemText(1, tr("Metric (Celsius, kPa, etc)"));
    1145                 ltype->SetItemCurrent(config_Units - 1);
     1165                ltype->SetItemText(2, tr("Metric except for miles"));
     1166                ltype->SetItemText(3, tr("Metric except for nautical miles"));
     1167                ltype->SetItemCurrent(convertData);
    11461168            }
    11471169            ltype = (UIListType *)container->GetType("alpha");
    11481170            if (ltype)
     
    12181240{
    12191241    if (inSetup == false)
    12201242    {
    1221         if (convertData == false)
    1222         {
    1223                 if (debug == true)     
    1224                         cerr << "MythWeather: Converting weather data.\n";
    1225                 convertData = true;
    1226         }
     1243        if (convertData >= CV_END - 1)
     1244            convertData = CV_IMPERIAL;
    12271245        else
    1228         {
    1229                 if (debug == true)
    1230                         cerr << "MythWeather: Not converting weather data.\n";
    1231                 convertData = false;
    1232         }
    1233 
     1246            convertData++;
    12341247        update_timeout();
    12351248        update(fullRect);
    12361249    }
     
    12791292                           {
    12801293                               ltype->SetItemText(0, tr("Imperial (Fahrenheit, in, etc)"));
    12811294                               ltype->SetItemText(1, tr("Metric (Celsius, kPa, etc)"));
    1282                                ltype->SetItemCurrent(config_Units - 1);
     1295                               ltype->SetItemText(2, tr("Metric except for miles"));
     1296                               ltype->SetItemText(3, tr("Metric except for nautical miles"));
     1297                               ltype->SetItemCurrent(convertData);
    12831298                           }
    12841299                       }
    12851300                       break;
     
    13141329                {
    13151330                    UIListType *type = (UIListType *)container->GetType("mainlist");
    13161331                    changeTemp = true;
    1317                     if (config_Units == 1 && container)
    1318                     {
    1319                         type->SetItemCurrent(1);
    1320                         config_Units = 2;
    1321                     }   
    1322                     else if (container)
     1332                    if (container)
    13231333                    {
    1324                         type->SetItemCurrent(0);
    1325                         config_Units = 1;
     1334                        if (convertData <= CV_IMPERIAL)
     1335                            convertData = CV_END - 1;
     1336                        else
     1337                            convertData--;
     1338                        type->SetItemCurrent(convertData);
    13261339                    }
    13271340                }
    13281341            }
     
    14461459                           {
    14471460                               ltype->SetItemText(0, "Imperial (Fahrenheit, in, etc)");
    14481461                               ltype->SetItemText(1, "Metric (Celsius, kPa, etc)");
    1449                                ltype->SetItemCurrent(config_Units - 1);
     1462                               ltype->SetItemText(2, "Metric except for miles");
     1463                               ltype->SetItemText(3, "Metric except for nautical miles");
     1464                               ltype->SetItemCurrent(convertData);
    14501465                           }
    14511466                       }
    14521467                       break;
     
    14821497                {
    14831498                    UIListType *type = (UIListType *)container->GetType("mainlist");
    14841499                    changeTemp = true;
    1485                     if (config_Units == 1 && container)
    1486                     {
    1487                         type->SetItemCurrent(1);
    1488                         config_Units = 2;
    1489                     }
    1490                     else if (container)
     1500                    if (container)
    14911501                    {
    1492                         type->SetItemCurrent(0);
    1493                         config_Units = 1;
     1502                        if (convertData >= CV_END - 1)
     1503                            convertData = CV_IMPERIAL;
     1504                        else
     1505                            convertData++;
     1506                        type->SetItemCurrent(convertData);
    14941507                    }
    14951508                }
    14961509            }
     
    16511664          ltype = (UIListType *)container->GetType("mainlist");
    16521665          if (ltype)
    16531666          {
    1654               if (config_Units == 1)
    1655                   ltype->SetItemCurrent(0);
    1656               else
    1657                   ltype->SetItemCurrent(1);
    1658 
     1667              ltype->SetItemCurrent(convertData);
    16591668              ltype->SetActive(true);
    16601669          }
    16611670          ltype = (UIListType *)container->GetType("options");
     
    18401849    {
    18411850        SetText(container, "curtemp", curTemp);
    18421851
    1843         if (convertData == false)
     1852        if (convertData == CV_IMPERIAL)
    18441853            SetText(container, "units", "oF");
    18451854        else
    18461855            SetText(container, "units", "oC");
    18471856
    1848         if (convertData == false)
     1857        if (convertData == CV_IMPERIAL)
    18491858            SetText(container, "barometer", barometer + " in");
    18501859        else
    18511860            SetText(container, "barometer", barometer + " kPa");
     
    18561865            SetText(container, "winddata", tr("Calm"));
    18571866        else if (winddir == "VAR")
    18581867        {
    1859             if (convertData == false)
     1868            if (convertData == CV_SI_NAUTICAL)
     1869                SetText(container, "winddata", curWind + " knots");
     1870            else if (convertData != CV_SI_KM)
    18601871                SetText(container, "winddata", curWind + " mph");
    18611872            else
    18621873                SetText(container, "winddata", curWind + " Km/h");
    18631874        }
    18641875        else
    18651876        {
    1866             if (convertData == false)
     1877            if (convertData == CV_SI_NAUTICAL)
     1878                SetText(container, "winddata", tr(winddir) + tr(" at ") + curWind + " knots");
     1879            else if (convertData != CV_SI_KM)
    18671880                SetText(container, "winddata", tr(winddir) + tr(" at ") + curWind + " mph");
    18681881            else
    18691882                SetText(container, "winddata", tr(winddir) + tr(" at ") + curWind + " Km/h");
     
    18731886        {
    18741887            if (visibility == "")
    18751888                SetText(container, "visibility", "???");
    1876             else if (convertData == false)
     1889            else if (convertData == CV_SI_NAUTICAL)
     1890                SetText(container, "visibility", visibility + " nautical mi");
     1891            else if (convertData != CV_SI_KM)
    18771892                SetText(container, "visibility", visibility + " mi");
    18781893            else
    18791894                SetText(container, "visibility", visibility + " km");
     
    18811896        else
    18821897            SetText(container, "visibility", tr("Unlimited"));
    18831898
    1884         if (convertData == false)
     1899        if (convertData == CV_IMPERIAL)
    18851900            SetText(container, "windchill", curFeel + tr(" F"));
    18861901        else
    18871902            SetText(container, "windchill", curFeel + tr(" C"));
     
    19421957         todayDesc += tr(" calm.");
    19431958    else
    19441959    {
    1945         if (convertData == false)
     1960        if (convertData == CV_SI_NAUTICAL)
     1961                todayDesc += tr(" coming in at ") + curWind + tr(" knots from the ") + tr(winddir) + ".";
     1962        else if (convertData != CV_SI_KM)
    19461963                todayDesc += tr(" coming in at ") + curWind + tr(" mph from the ") + tr(winddir) + ".";
    19471964        else
    19481965                todayDesc += tr(" coming in at ") + curWind + tr(" Km/h from the ") + tr(winddir) + ".";
     
    19541971    {
    19551972        if (visibility == "")
    19561973           todayDesc += tr(" Visibility conditions are unknown.");
    1957         else if (convertData == false)
     1974        else if (convertData == CV_SI_NAUTICAL)
     1975           todayDesc += tr(" There will be a visibility of ") + visibility + tr(" nautical miles.");
     1976        else if (convertData != CV_SI_KM)
    19581977           todayDesc += tr(" There will be a visibility of ") + visibility + tr(" miles.");
    19591978        else
    19601979           todayDesc += tr(" There will be a visibility of ") + visibility + tr(" km.");
     
    21852204        }
    21862205        else
    21872206        {
    2188             if (convertData == true)
     2207            if (convertData != CV_IMPERIAL)
    21892208            {
    21902209                char tempHold[32];
    21912210                double tTemp = curTemp.toDouble();
     
    21972216   
    21982217        curIcon = GetString("this.swCIcon");
    21992218        curWind = GetString("this.swWindS");
    2200         if (convertData == true)
     2219        if (convertData == CV_SI_NAUTICAL)
     2220        {
     2221            char tempHold[32];
     2222            double tTemp = curWind.toDouble();
     2223            double nTemp = (double)(tTemp*0.86);
     2224            sprintf (tempHold, "%d", (int)nTemp);
     2225            curWind = tempHold;
     2226        }
     2227        else if (convertData == CV_SI_KM)
    22012228        {
    22022229            char tempHold[32];
    22032230            double tTemp = curWind.toDouble();
     
    22092236        winddir = GetString("this.swWindD");
    22102237   
    22112238        barometer = GetString("this.swBaro");
    2212         if (convertData == true)
     2239        if (convertData != CV_IMPERIAL)
    22132240        {
    22142241            char tempHold[32];
    22152242            double tTemp = barometer.toDouble();
     
    22202247       
    22212248        curHumid = GetString("this.swHumid");
    22222249        curFeel = GetString("this.swReal");
    2223         if (convertData == true)
     2250        if (convertData != CV_IMPERIAL)
    22242251        {
    22252252            char tempHold[32];
    22262253            double tTemp = curFeel.toDouble();
     
    22312258       
    22322259        uvIndex = GetString("this.swUV");
    22332260        visibility = GetString("this.swVis");
    2234         if (convertData == true && visibility.toDouble() != 999.0)
     2261        if (visibility.toDouble() != 999.0)
    22352262        {
    2236             char tempHold[32];
    2237             double tTemp = visibility.toDouble();
    2238             double nTemp = (double)(tTemp*1.6);
    2239             sprintf (tempHold, "%.1f", nTemp);
    2240             visibility = tempHold;
     2263            if (convertData == CV_SI_NAUTICAL)
     2264            {
     2265                char tempHold[32];
     2266                double tTemp = visibility.toDouble();
     2267                double nTemp = (double)(tTemp*0.86);
     2268                sprintf (tempHold, "%.1f", nTemp);
     2269                visibility = tempHold;
     2270            }
     2271            else if (convertData == CV_SI_KM)
     2272            {
     2273                char tempHold[32];
     2274                double tTemp = visibility.toDouble();
     2275                double nTemp = (double)(tTemp*1.6);
     2276                sprintf (tempHold, "%.1f", nTemp);
     2277                visibility = tempHold;
     2278            }
    22412279        }
    22422280       
    22432281        description = GetString("this.swConText");
     
    22882326   
    22892327        for (int i = 20; i < 24; i++)
    22902328        {
    2291             if (convertData == true)
     2329            if (convertData != CV_IMPERIAL)
    22922330            {
    22932331                char tempHold[32];
    22942332                double tTemp = holdings[i].toDouble();
     
    23012339   
    23022340        for (int i = 40; i < 44; i++)
    23032341        {
    2304             if (convertData == true)
     2342            if (convertData != CV_IMPERIAL)
    23052343            {
    23062344                char tempHold[32];
    23072345                double tTemp = holdings[i].toDouble();