Пример #1
0
void InputRoku::handleQueryDeviceInfo(QHttpRequest* request, QHttpResponse* response)
{

  QByteArray data;
  QXmlStreamWriter writer(&data);
  writer.setAutoFormatting(true);

  writer.writeStartDocument();
  writer.writeStartElement("device-info");
  writer.writeTextElement("udn", Utils::ClientUUID());
  writer.writeTextElement("serial-number", ROKU_SERIAL_NUMBER);
  writer.writeTextElement("device-id", ROKU_SERIAL_NUMBER);
  writer.writeTextElement("vendor-name", "Roku");
  writer.writeTextElement("model-number", "4200X");
  writer.writeTextElement("model-name", "Roku 3");
  writer.writeTextElement("wifi-mac", "00:00:00:00:00:00");
  writer.writeTextElement("ethernet-mac", "00:00:00:00:00:00");
  writer.writeTextElement("network-type", "ethernet");
  writer.writeTextElement("user-device-name", Utils::ComputerName());
  writer.writeTextElement("software-version", "7.00");
  writer.writeTextElement("software-build", "09021");

  QLocale locale = QLocale::system();
  QString lcl = locale.name();
  QStringList landc = lcl.split("_");

  writer.writeTextElement("language", landc.value(0));
  writer.writeTextElement("country", landc.value(1));
  writer.writeTextElement("locale", locale.name());

  QTimeZone tz = QTimeZone::systemTimeZone();
  writer.writeTextElement("time-zone", tz.displayName(QTimeZone::StandardTime, QTimeZone::LongName));
  writer.writeTextElement("time-zone-offset", QString::number(tz.offsetFromUtc(QDateTime::currentDateTime()) / 60));
  writer.writeEndElement(); // device-info
  writer.writeEndDocument();

  response->setStatusCode(qhttp::ESTATUS_OK);
  response->write(data);
  response->end();
}
Пример #2
0
QString TimeZone::TimeZone::readAllCities()
{
    // get translation list
    QString lines = cityTranslations();

    QSettings settings;
    int sortOrder = settings.value("sortorder_completeList", "").toInt();
    QList<QByteArray> ids =  QTimeZone::availableTimeZoneIds();
    QString output;
    QString sign;
    QString timeoffset;
    QMultiMap<int, QString> map;
    QMultiMap<QString, QString> sorted_map;
    // QMultiMap is sorted by key by default
    // We use QMultiMap (not QMap) so we can have duplicates
    int dummy_counter_for_sort = 0; // to inverse reverted sorting
    foreach (QByteArray id, ids) {
        QTimeZone zone = QTimeZone(id);
        QDateTime zoneTime = QDateTime(QDate::currentDate(), QTime::currentTime(), zone).toLocalTime();
        int offset = zone.offsetFromUtc(QDateTime::currentDateTime());
        QString countryName = QLocale::countryToString(zone.country());
        QString countryNameOrg = countryName;
        // insert space where appropriate. Can't be done in one regex replace?
        QRegularExpression rx("([a-z])([A-Z])");
        QRegularExpressionMatch match = rx.match(countryName);
        for (int i = 1; i <= 6; i++) {
            match = rx.match(countryName);
            if (match.hasMatch()) {
                QString lowerChar1 = match.captured(1);
                QString upperChar1 = match.captured(2);
                countryName.replace(lowerChar1+upperChar1,lowerChar1 + " " + upperChar1);
            }
        }
        int index = lines.indexOf('\n'+countryName+';', 0, Qt::CaseInsensitive);
        if (index != -1) {
            index++;
            // Replace countryName with translation
            countryName = lines.mid(index+countryName.length()+1, lines.indexOf('\n',index) - lines.indexOf(';',index)-1);
        }
        if ( countryName == "Default") {
            // UTC name
            countryName = "";
        } else {
            countryName = " [" + countryName + "]";
        }
        if (offset < 0)
            sign = "-";
        else
            sign = "+";
        if((offset % 3600)==0)
            // offset equals to whole hour
            timeoffset = QString("UTC %3").arg(sign+QString::number(abs(offset)/3600));
        else
        {
            int minutes = offset/60 %60;
            timeoffset = QString("UTC %3:%4").arg(sign+QString::number(abs(offset)/3600)).arg(abs(minutes));
        }

        const int delimiter = id.lastIndexOf('/');
        int nbrSlashes = id.count("/");
        QString cityNameTr = id.mid(delimiter + 1).replace("_"," ");
        QString continentTr = id.mid(0, delimiter);
        QString stateTr = "";
        if ( nbrSlashes == 2) {
            // eg (America/North Dakota/Beulah)
            continentTr = id.mid(0, id.indexOf('/')); //first part
            stateTr = id.mid(id.indexOf('/')+1, delimiter - continentTr.length() - 1 ); //second part
        }
        if (!lines.isEmpty()) {
            int index = lines.indexOf(cityNameTr+';', 0, Qt::CaseInsensitive);
            if (index != -1) {
                cityNameTr = lines.mid(index+cityNameTr.length()+1, lines.indexOf('\n',index) - lines.indexOf(';',index)-1);
            }
            index = lines.indexOf(continentTr+';', 0, Qt::CaseInsensitive);
            if (index != -1) {
                continentTr = lines.mid(index+continentTr.length()+1, lines.indexOf('\n',index) - lines.indexOf(';',index)-1);
            }
            if (!stateTr.isEmpty()) {
                index = lines.indexOf(stateTr+';', 0, Qt::CaseInsensitive);
                if (index != -1) {
                    stateTr =  lines.mid(index+stateTr.length()+1, lines.indexOf('\n',index) - lines.indexOf(';',index)-1);
                }
                continentTr = continentTr + "/" + stateTr;
            }
        }
        if (sortOrder == 1) {
            dummy_counter_for_sort ++;
            map.insert(offset + dummy_counter_for_sort,timeoffset + " (" + continentTr + "/" + cityNameTr + ")" + countryName + ";" + id + ";" + countryNameOrg);
        } else if (sortOrder == 2) {
            sorted_map.insert(cityNameTr, timeoffset + " (" + continentTr + "/" + cityNameTr + ")" + countryName + ";" + id + ";" + countryNameOrg);
        } else if (sortOrder == 3) {
            sorted_map.insert(countryName, timeoffset + " (" + continentTr + "/" + cityNameTr + ")" + countryName + ";" + id + ";" + countryNameOrg);
        } else {
            output += timeoffset + " (" + continentTr + "/" + cityNameTr + ")" + countryName + ";" + id +  + ";" + countryNameOrg + "\n";
        }

    }