std::vector<int> PluginGame5GraphDialog::getSolutionNodes() { QFile trcFile(getTraceFile()); QString trcString; if (trcFile.open(QIODevice::ReadOnly)) { trcString = QString(trcFile.readAll()); } QString solutionStr; int begin = trcString.indexOf("SD"); int end; if (begin > 0) { end = trcString.indexOf("SES", begin); solutionStr = trcString.mid(begin + 2, end - begin - 2); } QRegExp regExp("(\\d{1,5})((\\s\\d){3}\\s\\s\\d{1,2}\\s\\d{1,2})"); std::vector<int> list; list.push_back(1); int pos=0; while((pos = regExp.indexIn(solutionStr, pos))!= -1) { list.push_back(regExp.cap(1).toInt()); pos += regExp.matchedLength(); } trcFile.close(); return list; }
QStringList PluginGame5GraphDialog::parseTrace() { QFile trcFile(getTraceFile()); QString trcString; if (trcFile.open(QIODevice::ReadOnly)) { trcString = QString(trcFile.readAll()); } int begin = trcString.indexOf("SB"); int end = trcString.indexOf("SEN", begin + 2); QString trcStringS; trcStringS = trcString.mid(begin + 2, end - begin - 2); QRegExp regExp("(STN|STR)(((\\s)-?\\d{1,5}){8}((\\s)(\\s)(\\d{1,2})(\\s)(\\d{1,2})))(((\\nSRK)((\\s)\\d){4})(\\s\\d{1,2})((\\nSRK)((\\s)\\d){3})(\\s\\d{1,2}))?"); QStringList list; int pos=0; while((pos = regExp.indexIn(trcStringS, pos))!= -1) { list << regExp.cap(2) + regExp.cap(16) + regExp.cap(21); pos += regExp.matchedLength(); } trcFile.close(); return list; }
void MyMoneyForecast::addFutureTransactions(void) { MyMoneyTransactionFilter filter; MyMoneyFile* file = MyMoneyFile::instance(); // collect and process all transactions that have already been entered but // are located in the future. filter.setDateFilter(forecastStartDate(), forecastEndDate()); filter.setReportAllSplits(false); QValueList<MyMoneyTransaction> transactions = file->transactionList(filter); QValueList<MyMoneyTransaction>::const_iterator it_t = transactions.begin(); for(; it_t != transactions.end(); ++it_t ) { const QValueList<MyMoneySplit>& splits = (*it_t).splits(); QValueList<MyMoneySplit>::const_iterator it_s = splits.begin(); for(; it_s != splits.end(); ++it_s ) { if(!(*it_s).shares().isZero()) { MyMoneyAccount acc = file->account((*it_s).accountId()); if(isForecastAccount(acc)) { dailyBalances balance; balance = m_accountList[acc.id()]; //if it is income, the balance is stored as negative number if(acc.accountType() == MyMoneyAccount::Income) { balance[(*it_t).postDate()] += ((*it_s).shares() * MyMoneyMoney(-1, 1)); } else { balance[(*it_t).postDate()] += (*it_s).shares(); } m_accountList[acc.id()] = balance; } } } } #if 0 QFile trcFile("forecast.csv"); trcFile.open(IO_WriteOnly); QTextStream s(&trcFile); { s << "Already present transactions\n"; QMap<QString, dailyBalances>::Iterator it_a; QMap<QString, QString>::ConstIterator it_n; for(it_n = m_nameIdx.begin(); it_n != m_nameIdx.end(); ++it_n) { MyMoneyAccount acc = file->account(*it_n); it_a = m_accountList.find(*it_n); s << "\"" << acc.name() << "\","; for(int i = 0; i < 90; ++i) { s << "\"" << (*it_a)[i].formatMoney("") << "\","; } s << "\n"; } } #endif }
QString PluginGame5GraphDialog::getTraceTimeStamp() { QFile trcFile(getTraceFile()); QString trcString; if (trcFile.open(QIODevice::ReadOnly)) { trcString = QString(trcFile.readLine()); } QString timeStamp = trcString.section(' ', -2, -1); return timeStamp; }
QString PluginGame5GraphDialog::getTraceInfo() { QFile trcFile(getTraceFile()); QString trcString; if (trcFile.open(QIODevice::ReadOnly)) { trcString = QString(trcFile.readAll()); } int begin = trcString.indexOf("DPS_C"); QString trcStringShort = trcString.mid(begin); trcFile.close(); return trcStringShort; }