diff --git a/debian/changelog b/debian/changelog index 2eed217..b145133 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,5 @@ -kisscount (0.8-1) unstable; urgency=low +kisscount (0.9-1) unstable; urgency=low * Initial release - -- Grégory Soutadé Sat, 8 Oct 2016 20:26:00 +0200 + -- Grégory Soutadé Sat, 3 Dec 2022 20:26:00 +0200 diff --git a/src/controller/KissCount.cpp b/src/controller/KissCount.cpp index 5e0726b..23dde99 100644 --- a/src/controller/KissCount.cpp +++ b/src/controller/KissCount.cpp @@ -51,7 +51,7 @@ KissCount::KissCount(int& argc, char** argv) : QApplication(argc, argv), _user(0 _wxUI->close(); throw s; } - + _wxUI->ChangeUser(); _wxUI->setDisabled(false); } @@ -691,7 +691,7 @@ QFont KissCount::ExtractFont(QString strFont) QString KissCount::CompactFont(const QFont& font) { QString res ; - res = res.sprintf("%d;%d;%d;%d;", font.pointSize(), 0, 0, font.weight()); + res = res.asprintf("%d;%d;%d;%d;", font.pointSize(), 0, 0, font.weight()); res += font.family(); return res; diff --git a/src/controller/KissCount.hpp b/src/controller/KissCount.hpp index 61a2510..bf2895e 100644 --- a/src/controller/KissCount.hpp +++ b/src/controller/KissCount.hpp @@ -30,24 +30,11 @@ #include -#define APP_VERSION "0.8" +#define APP_VERSION "0.9" #define ESCAPE_CHARS(s) s = s.replace("\"", " "); -// #define ESCAPE_CHARS(s) s = s.replace("\"", "\\\""); s = s.replace("\'", "\\\'"); -/*{ \ - if (s.Find(wxT("\\\"")) == wxNOT_FOUND) \ - s.Replace(wxT("\""), wxT("\\\""), true); \ - if (s.Find(wxT("\\\'")) == wxNOT_FOUND) \ - s.Replace(wxT("\'"), wxT("\\\'"), true); \ - } -*/ #define UNESCAPE_CHARS(s) s = s.replace("\\\"", " "); -// #define UNESCAPE_CHARS(s) s = s.replace("\\\"", "\""); s = s.replace("\\\'", "\'"); -/*{ \ - s.Replace(wxT("\\\""), wxT("\""), true); \ - s.Replace(wxT("\\\'"), wxT("\'"), true); \ - } -*/ + class wxUI; class Database; class ImportEngine; diff --git a/src/model/Database.cpp b/src/model/Database.cpp index 071ed20..06af356 100644 --- a/src/model/Database.cpp +++ b/src/model/Database.cpp @@ -529,7 +529,7 @@ void Database::LinkOrUnlinkOperation(User* user, Operation& op) query.clear(); req = QString("SELECT id, account FROM operation WHERE description=\"%1\" AND month='%2' AND year='%3' AND amount='%4' AND meta='0' AND account !='%5' AND transfert=''") - .arg(op.description, QString::number(op.month), QString::number(op.year), v.sprintf("%d", -op.amount), QString::number(op.account)); + .arg(op.description, QString::number(op.month), QString::number(op.year), v.asprintf("%d", -op.amount), QString::number(op.account)); EXECUTE_SQL_QUERY(req, ); @@ -578,7 +578,7 @@ void Database::UpdateOperation(User* user, Operation& op, bool checkTransfert) req = "UPDATE operation SET parent='%1', account='%2', year='%3', month='%4', day='%5', amount='%6', description=:description, category='%8', tag='%9'" ; req = req.arg((op.parent) ? QString::number(op.parent) : "", QString::number(op.account), QString::number(op.year), QString::number(op.month), - QString::number(op.day), v.sprintf("%d", op.amount), QString::number(op.category), QString::number(op.tag)); + QString::number(op.day), v.asprintf("%d", op.amount), QString::number(op.category), QString::number(op.tag)); req += ", fix_cost='%1', checked='%2', transfert='%3', meta='%4', virtual='%5', formula=:formula WHERE id='%7'"; req = req.arg(QString::number(op.fix_cost), QString::number(op.checked), (op.transfert) ? QString::number(op.transfert): "", QString::number(op.meta), QString::number(op._virtual), QString::number(op.id)); @@ -604,7 +604,7 @@ int Database::AddOperation(User* user, Operation& op, bool checkTransfert) req = "INSERT INTO operation ('user', 'parent', 'account', 'year', 'month', 'day', 'amount', 'description', 'category', 'tag', 'fix_cost', 'formula', 'transfert', 'meta', 'virtual', 'checked') VALUES ('%1', '%2', '%3', '%4', '%5', '%6', '%7', :description" ; req = req.arg(QString::number(user->_id), (op.parent) ? QString::number(op.parent): "", QString::number(op.account), QString::number(op.year), - QString::number(op.month), QString::number(op.day), v.sprintf("%d", op.amount)); + QString::number(op.month), QString::number(op.day), v.asprintf("%d", op.amount)); req += ", '%1', '%2', '%3', :formula, '%4', '%5', '%6', '%7')"; req = req.arg(QString::number(op.category), QString::number(op.tag), QString::number(op.fix_cost), (op.transfert) ? QString::number(op.transfert): "", QString::number(op.meta), QString::number(op._virtual), QString::number(op.checked)); @@ -775,7 +775,7 @@ void Database::SetAccountAmount(int accountId, int month, int year, int amount) QSqlQuery query(_db); req = "INSERT or REPLACE INTO account_amount ('account', 'year', 'month', 'amount') VALUES ('%1', '%2', '%3', '%4')" ; - req = req.arg(QString::number(accountId), QString::number(year), QString::number(month), v.sprintf("%d", amount)); + req = req.arg(QString::number(accountId), QString::number(year), QString::number(month), v.asprintf("%d", amount)); EXECUTE_SQL_UPDATE(req, ); } @@ -1271,7 +1271,7 @@ void Database::GenerateMonth(User* user, int monthFrom, int yearFrom, int monthT req = "INSERT INTO account_amount ('account', 'year', 'month', 'amount') VALUES " ; req += "('%1', '%2', '%3', '%4')"; - req = req.arg(QString::number(it->id), QString::number(yearTo), QString::number(monthTo), v.sprintf("%d", amount)); + req = req.arg(QString::number(it->id), QString::number(yearTo), QString::number(monthTo), v.asprintf("%d", amount)); EXECUTE_SQL_UPDATE(req, ); } @@ -1397,9 +1397,12 @@ void Database::UpdatePreference(User* user, const QString& preference) EXECUTE_SQL_UPDATE(req, ); } -std::vector* Database::Search(User* user, QString* description, QDate* dateFrom, QDate* dateTo, - int* amountFrom, int* amountTo, - std::vector categories, int types, std::vector accounts, bool wildcards, std::vector tags) +std::vector* Database::Search(User* user, QString* description, + QDate* dateFrom, QDate* dateTo, + int* amountFrom, int* amountTo, + std::vector categories, int types, + std::vector accounts, bool wildcards, + std::vector tags) { QSqlRecord set; QSqlQuery query(_db); @@ -1466,13 +1469,13 @@ std::vector* Database::Search(User* user, QString* description, QDate if (amountFrom) { if (firstCond) req += " AND " ; else firstCond = true; - req += "ABS(amount) >= " + v.sprintf("%d", *amountFrom); + req += "ABS(amount) >= " + v.asprintf("%d", *amountFrom); } if (amountTo) { if (firstCond) req += " AND " ; else firstCond = true; - req += "ABS(amount) <= " + v.sprintf("%d", *amountTo); + req += "ABS(amount) <= " + v.asprintf("%d", *amountTo); } if (categories.size()) diff --git a/src/model/Database.hpp b/src/model/Database.hpp index fad6fb9..f09c2d8 100644 --- a/src/model/Database.hpp +++ b/src/model/Database.hpp @@ -179,7 +179,8 @@ public: std::vector* Search(User* user, QString* description, QDate* dateFrom, QDate* dateTo, int* amountFrom, int* amountTo, - std::vector categories, int types, std::vector accounts, bool wildcards, std::vector tags); + std::vector categories, int types, std::vector accounts, + bool wildcards, std::vector tags); void GetStats(User* user, int monthFrom, int yearFrom, int monthTo, int yearTo, std::map > >* accountAmounts, diff --git a/src/model/export/CSVExportEngine.cpp b/src/model/export/CSVExportEngine.cpp index 2e197dd..51becbf 100644 --- a/src/model/export/CSVExportEngine.cpp +++ b/src/model/export/CSVExportEngine.cpp @@ -48,8 +48,8 @@ bool CSVExportEngine::SaveAccounts() Account account; std::map::iterator it; - *_writer << "Accounts" << endl << endl; - *_writer << "id;name;number;blocked;virtual;hidden" << endl; + *_writer << "Accounts" << Qt::endl << Qt::endl; + *_writer << "id;name;number;blocked;virtual;hidden" << Qt::endl; for(it=_accounts.begin(); it!=_accounts.end(); it++) { @@ -78,10 +78,10 @@ bool CSVExportEngine::SaveAccounts() // *_writer << (account.is_owner ? "1" : "0") << ";"; *_writer << (account._virtual ? "1" : "0") << ";"; *_writer << (account.hidden ? "1" : "0"); - *_writer << endl; + *_writer << Qt::endl; } - *_writer << endl << endl; + *_writer << Qt::endl << Qt::endl; return true; } @@ -91,19 +91,19 @@ bool CSVExportEngine::SaveAccountAmounts() std::map::iterator it; QString v; - *_writer << "Account Amounts" << endl << endl; - *_writer << "id;month;year;amount" << endl; + *_writer << "Account Amounts" << Qt::endl << Qt::endl; + *_writer << "id;month;year;amount" << Qt::endl; for(it=_accountAmounts.begin(); it!=_accountAmounts.end(); it++) { *_writer << QString::number(it->first.account) << ";"; *_writer << QString::number(it->first.month+1) << ";"; *_writer << QString::number(it->first.year) << ";"; - *_writer << v.sprintf("%d", it->second); - *_writer << endl; + *_writer << v.asprintf("%d", it->second); + *_writer << Qt::endl; } - *_writer << endl << endl; + *_writer << Qt::endl << Qt::endl; return true; } @@ -115,8 +115,8 @@ bool CSVExportEngine::SaveCategories() int rgb; QString v; - *_writer << "Categories" << endl << endl; - *_writer << "id;parent;name;font;backcolor;forecolor;fix_cost" << endl; + *_writer << "Categories" << Qt::endl << Qt::endl; + *_writer << "id;parent;name;font;backcolor;forecolor;fix_cost" << Qt::endl; for(it=_categories.begin(); it!=_categories.end(); it++) { @@ -131,16 +131,16 @@ bool CSVExportEngine::SaveCategories() rgb = category.backcolor.blue(); rgb |= category.backcolor.green() << 8; rgb |= category.backcolor.red() << 16; - *_writer << v.sprintf("0x%08X", rgb) << ";"; + *_writer << v.asprintf("0x%08X", rgb) << ";"; rgb = category.forecolor.blue(); rgb |= category.forecolor.green() << 8; rgb |= category.forecolor.red() << 16; - *_writer << v.sprintf("0x%08X", rgb) << ";"; + *_writer << v.asprintf("0x%08X", rgb) << ";"; *_writer << (category.fix_cost ? "1" : "0"); - *_writer << endl; + *_writer << Qt::endl; } - *_writer << endl << endl; + *_writer << Qt::endl << Qt::endl; return true; } @@ -151,8 +151,8 @@ bool CSVExportEngine::SaveTags() std::map::iterator it; QString v; - *_writer << "Tags" << endl << endl; - *_writer << "id;name" << endl; + *_writer << "Tags" << Qt::endl << Qt::endl; + *_writer << "id;name" << Qt::endl; for(it=_tags.begin(); it!=_tags.end(); it++) { @@ -162,10 +162,10 @@ bool CSVExportEngine::SaveTags() *_writer << QString::number(tag.id) << ";"; *_writer << "\"" << tag.name << "\""; - *_writer << endl; + *_writer << Qt::endl; } - *_writer << endl << endl; + *_writer << Qt::endl << Qt::endl; return true; } @@ -175,8 +175,8 @@ bool CSVExportEngine::SaveOperations(std::vector* operations) std::vector::iterator it; QString v; - *_writer << "Operations" << endl << endl; - *_writer << "id;parent;day;month;year;amount;description;category;fix_cost;account;checked;transfert;formula;meta;virtual;tag" << endl; + *_writer << "Operations" << Qt::endl << Qt::endl; + *_writer << "id;parent;day;month;year;amount;description;category;fix_cost;account;checked;transfert;formula;meta;virtual;tag" << Qt::endl; for(it=operations->begin(); it!=operations->end(); it++) { @@ -187,7 +187,7 @@ bool CSVExportEngine::SaveOperations(std::vector* operations) *_writer << QString::number(it->day+1) << ";"; *_writer << QString::number(it->month+1) << ";"; *_writer << QString::number(it->year) << ";"; - *_writer << v.sprintf("%d", it->amount) << ";"; + *_writer << v.asprintf("%d", it->amount) << ";"; *_writer << "\"" << it->description << "\"" << ";"; *_writer << QString::number(it->category) << ";"; *_writer << (it->fix_cost ? "1" : "0") << ";"; @@ -198,10 +198,10 @@ bool CSVExportEngine::SaveOperations(std::vector* operations) *_writer << (it->meta ? "1" : "0") << ";"; *_writer << (it->_virtual ? "1" : "0") << ";"; *_writer << QString::number(it->tag); - *_writer << endl; + *_writer << Qt::endl; } - *_writer << endl << endl; + *_writer << Qt::endl << Qt::endl; return true; } diff --git a/src/model/export/XMLExportEngine.cpp b/src/model/export/XMLExportEngine.cpp index d294d3a..dbe057e 100644 --- a/src/model/export/XMLExportEngine.cpp +++ b/src/model/export/XMLExportEngine.cpp @@ -95,7 +95,7 @@ bool XMLExportEngine::SaveAccountAmounts() _writer->writeAttribute("account", QString::number(it->first.account)); _writer->writeAttribute("month", QString::number(it->first.month)); _writer->writeAttribute("year", QString::number(it->first.year)); - _writer->writeAttribute("amount", v.sprintf("%d", it->second)); + _writer->writeAttribute("amount", v.asprintf("%d", it->second)); _writer->writeEndElement(); } @@ -123,11 +123,11 @@ bool XMLExportEngine::SaveCategories() rgb = category.backcolor.blue(); rgb |= category.backcolor.green() << 8; rgb |= category.backcolor.red() << 16; - _writer->writeAttribute("backcolor", v.sprintf("0x%08X", rgb)); + _writer->writeAttribute("backcolor", v.asprintf("0x%08X", rgb)); rgb = category.forecolor.blue(); rgb |= category.forecolor.green() << 8; rgb |= category.forecolor.red() << 16; - _writer->writeAttribute("forecolor", v.sprintf("0x%08X", rgb)); + _writer->writeAttribute("forecolor", v.asprintf("0x%08X", rgb)); _writer->writeAttribute("fix_cost", (category.fix_cost ? "1" : "0")); _writer->writeEndElement(); } @@ -171,7 +171,7 @@ bool XMLExportEngine::SaveOperations(std::vector* operations) _writer->writeAttribute("day", QString::number(it->day)); _writer->writeAttribute("month", QString::number(it->month)); _writer->writeAttribute("year", QString::number(it->year)); - _writer->writeAttribute("amount", v.sprintf("%d", it->amount)); + _writer->writeAttribute("amount", v.asprintf("%d", it->amount)); _writer->writeAttribute("description", it->description); _writer->writeAttribute("category", QString::number(it->category)); _writer->writeAttribute("tag", QString::number(it->tag)); diff --git a/src/model/import/GrisbiImportEngine.cpp b/src/model/import/GrisbiImportEngine.cpp index e64bba9..1f2ed35 100644 --- a/src/model/import/GrisbiImportEngine.cpp +++ b/src/model/import/GrisbiImportEngine.cpp @@ -24,16 +24,16 @@ static GrisbiImportEngine grisbiImportEngine; -void GrisbiImportEngine::LoadAccount(const QXmlAttributes& attrs) +void GrisbiImportEngine::LoadAccount(const QXmlStreamAttributes& attrs) { int id, i; QString account_number, name, key; Account ac; - name = attrs.value("name"); + name = *attrs.value("name").string(); id = attrs.value("Number").toInt(); - account_number = attrs.value("Bank_account_number"); - key = attrs.value("Key"); + account_number = *attrs.value("Bank_account_number").string(); + key = *attrs.value("Key").string(); account_number += key; @@ -61,13 +61,13 @@ void GrisbiImportEngine::LoadAccount(const QXmlAttributes& attrs) _unresolvedAccounts.push_back(ac); } -void GrisbiImportEngine::LoadCategory(const QXmlAttributes& attrs) +void GrisbiImportEngine::LoadCategory(const QXmlStreamAttributes& attrs) { QString name; int id, i; Category cat; - name = attrs.value("Na"); + name = *attrs.value("Na").string(); id = attrs.value("Nb").toInt(); UNESCAPE_CHARS(name); @@ -91,7 +91,7 @@ void GrisbiImportEngine::LoadCategory(const QXmlAttributes& attrs) _unresolvedCategories.push_back(cat); } -void GrisbiImportEngine::LoadOperation(const QXmlAttributes& attrs) +void GrisbiImportEngine::LoadOperation(const QXmlStreamAttributes& attrs) { static int id=0; Operation op; @@ -111,13 +111,13 @@ void GrisbiImportEngine::LoadOperation(const QXmlAttributes& attrs) op.account = _accounts[attrs.value("Ac").toInt()]; - date = QDate::fromString(attrs.value("Dt"), "MM/dd/yyyy"); + date = QDate::fromString(*attrs.value("Dt").string(), QString("MM/dd/yyyy")); op.day = date.day(); op.month = date.month(); op.year = date.year(); op.amount = attrs.value("Am").toInt(); op.category = _categories[attrs.value("Ca").toInt()]; - op.description = attrs.value("No"); + op.description = *attrs.value("No").string(); UNESCAPE_CHARS(op.description); @@ -127,7 +127,7 @@ void GrisbiImportEngine::LoadOperation(const QXmlAttributes& attrs) MatchPattern(op.description, op); } -bool GrisbiImportEngine::startElement (const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& attrs) +bool GrisbiImportEngine::startElement (QStringRef qName, const QXmlStreamAttributes& attrs) { static char first = 0; @@ -140,10 +140,10 @@ bool GrisbiImportEngine::startElement (const QString& namespaceURI, const QStrin if (qName == "General") { - if (attrs.value("File_version") < "0.6.0") + if (*attrs.value("File_version").string() < "0.6.0") throw "Unsupported version !"; - if (attrs.value("Crypt_file") == "1") + if (*attrs.value("Crypt_file").string() == "1") throw "Crypted file !"; } @@ -165,8 +165,6 @@ GrisbiImportEngine::GrisbiImportEngine() _shortExt = ".gsb"; _longExt = _("Grisbi files (*.gsb)"); - - _sax.setContentHandler(this); } GrisbiImportEngine::~GrisbiImportEngine() @@ -177,23 +175,35 @@ bool GrisbiImportEngine::HandleFile(const QString& path, User* user, Database* d { bool res = false; QFile file(path); + QXmlStreamReader::TokenType token; if (!ImportEngine::HandleFile(path, user, db, kiss)) return false; - QXmlInputSource *source = new QXmlInputSource(&file); + QXmlStreamReader reader(&file); try { - res = _sax.parse(source, false); + while (!reader.atEnd()) { + token = reader.readNext(); + if (token == QXmlStreamReader::StartElement) + startElement(reader.name(), reader.attributes()); + } + if (reader.hasError()) { + throw reader.errorString(); + } LinkChilds(); } catch (const char* s) { - std::cout << "GrisbiImportEngine :: " << s << std::endl; + std::cout << "GrisbiImportEngine : " << s << std::endl; + res = false; + } + catch (QString& e) + { + std::cout << "GrisbiImportEngine : " << e.toStdString() << std::endl; res = false; } file.close(); - delete source; return res; } diff --git a/src/model/import/GrisbiImportEngine.hpp b/src/model/import/GrisbiImportEngine.hpp index a4ed9ae..4048866 100644 --- a/src/model/import/GrisbiImportEngine.hpp +++ b/src/model/import/GrisbiImportEngine.hpp @@ -20,12 +20,11 @@ #ifndef GRISBIIMPORTENGINE_H #define GRISBIIMPORTENGINE_H -#include -#include +#include #include "ImportEngine.hpp" -class GrisbiImportEngine : public ImportEngine, public QXmlDefaultHandler { +class GrisbiImportEngine : public ImportEngine { public: GrisbiImportEngine(); ~GrisbiImportEngine(); @@ -33,13 +32,12 @@ public: virtual bool HandleFile(const QString& path, User* user, Database* db, KissCount* kiss); private: - QXmlSimpleReader _sax; - bool startElement (const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& atts); + bool startElement (QStringRef qName, const QXmlStreamAttributes& atts); - void LoadAccount(const QXmlAttributes& atts); - void LoadCategory(const QXmlAttributes& atts); - void LoadOperation(const QXmlAttributes& atts); + void LoadAccount(const QXmlStreamAttributes& atts); + void LoadCategory(const QXmlStreamAttributes& atts); + void LoadOperation(const QXmlStreamAttributes& atts); }; #endif diff --git a/src/model/import/XMLImportEngine.cpp b/src/model/import/XMLImportEngine.cpp index fbf97f9..fd45b21 100644 --- a/src/model/import/XMLImportEngine.cpp +++ b/src/model/import/XMLImportEngine.cpp @@ -30,8 +30,6 @@ XMLImportEngine::XMLImportEngine() _shortExt = ".xml"; _longExt = _("KissCount xml files (*.xml)"); - - _sax.setContentHandler(this); } XMLImportEngine::~XMLImportEngine() @@ -42,7 +40,8 @@ bool XMLImportEngine::HandleFile(const QString& path, User* user, Database* db, { bool res = false; QFile file(path); - + QXmlStreamReader::TokenType token; + if (!ImportEngine::HandleFile(path, user, db, kiss)) return false; if (!file.open(QIODevice::ReadOnly)) @@ -51,26 +50,37 @@ bool XMLImportEngine::HandleFile(const QString& path, User* user, Database* db, return false; } - QXmlInputSource *source = new QXmlInputSource(&file); + QXmlStreamReader reader(&file); try { - res = _sax.parse(source, false); + while (!reader.atEnd()) { + token = reader.readNext(); + if (token == QXmlStreamReader::StartElement) + startElement(reader.name(), reader.attributes()); + } + if (reader.hasError()) { + throw reader.errorString(); + } LinkChilds(); } catch (const char* s) { - std::cout << "XMLImportEngine :: " << s << std::endl; + std::cout << "XMLImportEngine : " << s << std::endl; + res = false; + } + catch (QString& e) + { + std::cout << "XMLImportEngine : " << e.toStdString() << std::endl; res = false; } file.close(); - delete source; return res; } -bool XMLImportEngine::startElement (const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& attrs) +bool XMLImportEngine::startElement (QStringRef qName, const QXmlStreamAttributes& attrs) { if (qName == "kisscount") { @@ -93,11 +103,11 @@ bool XMLImportEngine::startElement (const QString& namespaceURI, const QString& else if (qName == "operation") LoadOperation(attrs); else - std::cout << "Unknown element : '" << qName.toStdString() << "'" << std::endl; + std::cout << "Unknown element : '" << qName.toString().toStdString() << "'" << std::endl; return true; } -void XMLImportEngine::LoadAccount(const QXmlAttributes& attrs) +void XMLImportEngine::LoadAccount(const QXmlStreamAttributes& attrs) { int id; Account ac; @@ -105,15 +115,15 @@ void XMLImportEngine::LoadAccount(const QXmlAttributes& attrs) ac.id = 0; - ac.name = attrs.value("name"); + ac.name = *attrs.value("name").string(); ac.id = id = attrs.value("id").toInt(); - ac.number = attrs.value("number"); + ac.number = *attrs.value("number").string(); ac.blocked = (attrs.value("blocked") == "1"); ac._virtual = (attrs.value("virtual") == "1"); ac.hidden = (attrs.value("hidden") == "1"); ac._default = (attrs.value("default") == "1"); - ac.start_date = (QDate::fromString("dd/MM/yyyy", attrs.value("start"))); - ac.end_date = (QDate::fromString("dd/MM/yyyy", attrs.value("start"))); + ac.start_date = (QDate::fromString(*attrs.value("start").string(), QString("dd/MM/yyyy"))); + ac.end_date = (QDate::fromString(*attrs.value("start").string(), QString("dd/MM/yyyy"))); UNESCAPE_CHARS(ac.name); UNESCAPE_CHARS(ac.number); @@ -148,7 +158,7 @@ void XMLImportEngine::LoadAccount(const QXmlAttributes& attrs) _unresolvedAccounts.push_back(ac); } -void XMLImportEngine::LoadAccountAmount(const QXmlAttributes& attrs) +void XMLImportEngine::LoadAccountAmount(const QXmlStreamAttributes& attrs) { AccountAmount accountAmount; int amount; @@ -161,7 +171,7 @@ void XMLImportEngine::LoadAccountAmount(const QXmlAttributes& attrs) _accountAmounts[accountAmount] = amount; } -void XMLImportEngine::LoadCategory(const QXmlAttributes& attrs) +void XMLImportEngine::LoadCategory(const QXmlStreamAttributes& attrs) { QString name; int id; @@ -171,10 +181,10 @@ void XMLImportEngine::LoadCategory(const QXmlAttributes& attrs) cat.fix_cost = false; - cat.name = name = attrs.value("name"); + cat.name = name = *attrs.value("name").string(); cat.id = id = attrs.value("id").toInt(); cat.parent = attrs.value("parent").toInt(); - cat.font = attrs.value("font"); + cat.font = *attrs.value("font").string(); if (attrs.value("backcolor") != "") { @@ -210,14 +220,14 @@ void XMLImportEngine::LoadCategory(const QXmlAttributes& attrs) _unresolvedCategories.push_back(cat); } -void XMLImportEngine::LoadTag(const QXmlAttributes& attrs) +void XMLImportEngine::LoadTag(const QXmlStreamAttributes& attrs) { QString name; int id; Tag tag; static int unknownTag = 0; - tag.name = name = attrs.value("name"); + tag.name = name = *attrs.value("name").string(); tag.id = id = attrs.value("id").toInt(); UNESCAPE_CHARS(tag.name); @@ -236,7 +246,7 @@ void XMLImportEngine::LoadTag(const QXmlAttributes& attrs) _unresolvedTags.push_back(tag); } -void XMLImportEngine::LoadOperation(const QXmlAttributes& attrs) +void XMLImportEngine::LoadOperation(const QXmlStreamAttributes& attrs) { Operation op; @@ -246,14 +256,14 @@ void XMLImportEngine::LoadOperation(const QXmlAttributes& attrs) op.month = attrs.value("month").toInt(); op.year = attrs.value("year").toInt(); op.amount = attrs.value("amount").toInt(); - op.description = attrs.value("description"); + op.description = *attrs.value("description").string(); op.category = attrs.value("category").toInt(); op.tag = attrs.value("tag").toInt(); op.fix_cost = (attrs.value("fix_cost") == "1"); op.account = attrs.value("account").toInt(); op.checked = (attrs.value("checked") == "1"); op.transfert = attrs.value("transfert").toInt(); - op.formula = attrs.value("formula"); + op.formula = *attrs.value("formula").string(); op.meta = (attrs.value("meta") == "1"); op._virtual = (attrs.value("virtual") == "1"); diff --git a/src/model/import/XMLImportEngine.hpp b/src/model/import/XMLImportEngine.hpp index 7b2a8ff..f4f4d53 100644 --- a/src/model/import/XMLImportEngine.hpp +++ b/src/model/import/XMLImportEngine.hpp @@ -20,12 +20,11 @@ #ifndef XMLIMPORTENGINE_H #define XMLIMPORTENGINE_H -#include -#include +#include #include "ImportEngine.hpp" -class XMLImportEngine : public ImportEngine, public QXmlDefaultHandler { +class XMLImportEngine : public ImportEngine { public: XMLImportEngine(); ~XMLImportEngine(); @@ -33,15 +32,14 @@ public: virtual bool HandleFile(const QString& path, User* user, Database* db, KissCount* kiss); private: - QXmlSimpleReader _sax; - bool startElement (const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& atts); + bool startElement (QStringRef qName, const QXmlStreamAttributes& atts); - void LoadAccount(const QXmlAttributes& atts); - void LoadAccountAmount(const QXmlAttributes& atts); - void LoadCategory(const QXmlAttributes& atts); - void LoadTag(const QXmlAttributes& atts); - void LoadOperation(const QXmlAttributes& atts); + void LoadAccount(const QXmlStreamAttributes& atts); + void LoadAccountAmount(const QXmlStreamAttributes& atts); + void LoadCategory(const QXmlStreamAttributes& atts); + void LoadTag(const QXmlStreamAttributes& atts); + void LoadOperation(const QXmlStreamAttributes& atts); }; #endif diff --git a/src/view/AccountPanel.cpp b/src/view/AccountPanel.cpp index 443a102..ea1c342 100644 --- a/src/view/AccountPanel.cpp +++ b/src/view/AccountPanel.cpp @@ -521,7 +521,7 @@ void AccountPanel::InitAccountsGrid(User* user, int month, int year) _accountsGrid->setItem(curLine, ACCOUNT_NAME, new QTableWidgetItem(it->name)); value = _kiss->GetAccountAmount(it->id, month, year); - _accountsGrid->setItem(curLine, ACCOUNT_INIT, new QTableWidgetItem(v.sprintf("%.2lf", (double)value/100))); + _accountsGrid->setItem(curLine, ACCOUNT_INIT, new QTableWidgetItem(v.asprintf("%.2lf", (double)value/100))); _accountsGrid->setItem(curLine, ACCOUNT_CUR, new QTableWidgetItem("")); _accountsGrid->setItem(curLine, ACCOUNT_FINAL, new QTableWidgetItem("")); for (i=0; iitem(CUR_CREDIT, 1)->setText(v.sprintf("%.2lf", (double)curCredit/100)); - _statsGrid->item(CUR_DEBIT, 1)->setText(v.sprintf("%.2lf", (double)curDebit/100)); - _statsGrid->item(TOTAL_CREDIT, 1)->setText(v.sprintf("%.2lf", (double)totalCredit/100)); - _statsGrid->item(TOTAL_DEBIT, 1)->setText(v.sprintf("%.2lf", (double)totalDebit/100)); + _statsGrid->item(CUR_CREDIT, 1)->setText(v.asprintf("%.2lf", (double)curCredit/100)); + _statsGrid->item(CUR_DEBIT, 1)->setText(v.asprintf("%.2lf", (double)curDebit/100)); + _statsGrid->item(TOTAL_CREDIT, 1)->setText(v.asprintf("%.2lf", (double)totalCredit/100)); + _statsGrid->item(TOTAL_DEBIT, 1)->setText(v.asprintf("%.2lf", (double)totalDebit/100)); - _statsGrid->item(BALANCE, 1)->setText(v.sprintf("%.2lf", (double)balance/100)); + _statsGrid->item(BALANCE, 1)->setText(v.asprintf("%.2lf", (double)balance/100)); _statsGrid->item(BALANCE, 1)->setForeground((balance >= 0) ? QBrush(Qt::green) : QBrush(Qt::red)); for (i=0, accountIt=user->_accounts.begin(); accountIt!=user->_accounts.end(); accountIt++, i++) @@ -744,13 +744,13 @@ void AccountPanel::UpdateStats() value = _accountsInitValues[accountIt->id]; if (mode == REAL_MODE) value -= (*virtuals)[accountIt->id]; - _accountsGrid->item(i, ACCOUNT_INIT)->setText(v.sprintf("%.2lf", (double)value/100)); + _accountsGrid->item(i, ACCOUNT_INIT)->setText(v.asprintf("%.2lf", (double)value/100)); _accountsGrid->item(i, ACCOUNT_INIT)->setForeground((value >= 0) ? QBrush(Qt::black) : QBrush(Qt::red)); value = curAccountAmounts[day][accountIt->id]; - _accountsGrid->item(i, ACCOUNT_CUR)->setText(v.sprintf("%.2lf", (double)value/100)); + _accountsGrid->item(i, ACCOUNT_CUR)->setText(v.asprintf("%.2lf", (double)value/100)); _accountsGrid->item(i, ACCOUNT_CUR)->setForeground((value >= 0) ? QBrush(Qt::black) : QBrush(Qt::red)); value = finalAccountAmount[accountIt->id]; - _accountsGrid->item(i, ACCOUNT_FINAL)->setText(v.sprintf("%.2lf", (double)value/100)); + _accountsGrid->item(i, ACCOUNT_FINAL)->setText(v.asprintf("%.2lf", (double)value/100)); _accountsGrid->item(i, ACCOUNT_FINAL)->setForeground((value >= 0) ? QBrush(Qt::black) : QBrush(Qt::red)); } else @@ -758,13 +758,13 @@ void AccountPanel::UpdateStats() value = _accountsInitValues[accountIt->id] - (*virtuals)[accountIt->id]; value2 = (*notChecked)[accountIt->id]; - _accountsGrid->item(i, ACCOUNT_INIT)->setText(v.sprintf("%.2lf (%.2lf)", (double)value/100, (double)(value-value2)/100)); + _accountsGrid->item(i, ACCOUNT_INIT)->setText(v.asprintf("%.2lf (%.2lf)", (double)value/100, (double)(value-value2)/100)); _accountsGrid->item(i, ACCOUNT_INIT)->setForeground((value >= 0) ? QBrush(Qt::black) : QBrush(Qt::red)); value = curAccountAmounts[day][accountIt->id]; - _accountsGrid->item(i, ACCOUNT_CUR)->setText(v.sprintf("%.2lf (%.2lf)", (double)value/100, (double)(value-value2)/100)); + _accountsGrid->item(i, ACCOUNT_CUR)->setText(v.asprintf("%.2lf (%.2lf)", (double)value/100, (double)(value-value2)/100)); _accountsGrid->item(i, ACCOUNT_CUR)->setForeground((value >= 0) ? QBrush(Qt::black) : QBrush(Qt::red)); value = finalAccountAmount[accountIt->id]; - _accountsGrid->item(i, ACCOUNT_FINAL)->setText(v.sprintf("%.2lf (%.2lf)", (double)value/100, (double)(value-value2)/100)); + _accountsGrid->item(i, ACCOUNT_FINAL)->setText(v.asprintf("%.2lf (%.2lf)", (double)value/100, (double)(value-value2)/100)); _accountsGrid->item(i, ACCOUNT_FINAL)->setForeground((value >= 0) ? QBrush(Qt::black) : QBrush(Qt::red)); } } @@ -1013,7 +1013,7 @@ void AccountPanel::OnMenuDelete() void AccountPanel::GenerateMonth(int month, int year) { QString s; - const QString syear = s.sprintf("%d", year); + const QString syear = s.asprintf("%d", year); QList items = _tree->findItems(syear, Qt::MatchExactly|Qt::MatchRecursive); QTreeWidgetItem *root, *itemYear = 0, *itemMonth; std::map > ops ; diff --git a/src/view/CostRepartitionBanner.cpp b/src/view/CostRepartitionBanner.cpp index 6c3dc6d..cbb345f 100644 --- a/src/view/CostRepartitionBanner.cpp +++ b/src/view/CostRepartitionBanner.cpp @@ -135,30 +135,32 @@ void CostRepartitionBanner::Reset() void CostRepartitionBanner::UpdateCosts(int *categoriesValues, int totalDebit) { - int i; + int i, curVal; User* user = _kiss->GetUser(); - unsigned long value, percents, utotalDebit = totalDebit; + unsigned long value = 0, percents, utotalDebit = totalDebit; QString v; QPieSeries* series = (QPieSeries*) (_pie->series()[0]); QList slices = series->slices(); for(i=0; iGetCategoriesNumber(); i++) { + curVal = abs(categoriesValues[i]); + if (totalDebit != 0) { - percents = ((categoriesValues[i]*(unsigned long)100))/utotalDebit; + percents = ((curVal*(unsigned long)100))/utotalDebit; } else percents = 0.0; if (!i) - _statsGrid->item(i, 1)->setText(v.sprintf("%.2lf (%02d %%)", (double)categoriesValues[i]/100, (int)percents)); + _statsGrid->item(i, 1)->setText(v.asprintf("%.2lf (%02d %%)", (double)curVal/100, (int)percents)); else { - _statsGrid->item(i+1, 1)->setText(v.sprintf("%.2lf (%02d %%)", (double)categoriesValues[i]/100, (int)percents)); + _statsGrid->item(i+1, 1)->setText(v.asprintf("%.2lf (%02d %%)", (double)curVal/100, (int)percents)); - slices[i-1]->setValue(categoriesValues[i] / 100); - slices[i-1]->setLabelVisible(categoriesValues[i] != 0.0); + slices[i-1]->setValue(curVal / 100); + slices[i-1]->setLabelVisible(curVal != 0.0); } } @@ -167,7 +169,7 @@ void CostRepartitionBanner::UpdateCosts(int *categoriesValues, int totalDebit) percents = (value*100)/totalDebit; else percents = 0.0; - _statsGrid->item(1, 1)->setText(v.sprintf("%.2lf (%02d %%)", (double)value/100, (int)percents)); + _statsGrid->item(1, 1)->setText(v.asprintf("%.2lf (%02d %%)", (double)value/100, (int)percents)); _statsGrid->resizeColumnsToContents(); } diff --git a/src/view/GenerateDialog.cpp b/src/view/GenerateDialog.cpp index f2478e8..ca89346 100644 --- a/src/view/GenerateDialog.cpp +++ b/src/view/GenerateDialog.cpp @@ -68,7 +68,12 @@ GenerateDialog::GenerateDialog(KissCount* kiss, wxUI *parent, int month, int yea if (toSelect != -1) { - _yearFrom->setCurrentIndex(toSelect); + /* Index has not been changed if there is only one year */ + if (toSelect == 0) + OnYearFromChange(toSelect); + else + _yearFrom->setCurrentIndex(toSelect); + toSelect=0; if (month != -1) { diff --git a/src/view/ImportPanel.cpp b/src/view/ImportPanel.cpp index 768aedd..a889a45 100644 --- a/src/view/ImportPanel.cpp +++ b/src/view/ImportPanel.cpp @@ -335,15 +335,15 @@ void ImportPanel::OnLoadOperations() if (nbAccounts) { - message += v.sprintf(_("%d accounts").toStdString().c_str(), nbAccounts); + message += v.asprintf(_("%d accounts").toStdString().c_str(), nbAccounts); if (nbCategories) message += _(" and "); } if (nbCategories) - message += v.sprintf(_("%d categories").toStdString().c_str(), nbCategories); + message += v.asprintf(_("%d categories").toStdString().c_str(), nbCategories); if (nbTags) - message += v.sprintf(_("%d tags").toStdString().c_str(), nbTags); + message += v.asprintf(_("%d tags").toStdString().c_str(), nbTags); message += _(" will be created, is it ok ?"); diff --git a/src/view/SearchPanel.cpp b/src/view/SearchPanel.cpp index 75a6796..8d0bed0 100644 --- a/src/view/SearchPanel.cpp +++ b/src/view/SearchPanel.cpp @@ -22,6 +22,12 @@ #include "SearchPanel.hpp" +enum SEARCH_TYPE { + SEARCH_DEBIT = 0, + SEARCH_CREDIT, + SEARCH_DEBIT_AND_CREDIT +}; + SearchPanel::SearchPanel(KissCount* kiss, wxUI *parent, bool lowResolution) : KissPanel(kiss, parent, lowResolution), _operations(0) { @@ -33,6 +39,7 @@ SearchPanel::SearchPanel(KissCount* kiss, wxUI *parent, bool lowResolution) : QVBoxLayout *vbox = new QVBoxLayout; QVBoxLayout *vbox2 = new QVBoxLayout; + QVBoxLayout *vbox3 = new QVBoxLayout; QHBoxLayout *hbox = new QHBoxLayout; _icons[KissPanel::LOW_RES_ICON] = SEARCH_LOW_ICON; @@ -72,8 +79,18 @@ SearchPanel::SearchPanel(KissCount* kiss, wxUI *parent, bool lowResolution) : _categories[i] = _(categoryIt->name.toStdString().c_str()) ; } + _searchType = new QComboBox(); + _searchType->addItem(_("Debit")); + _searchType->addItem(_("Credit")); + _searchType->addItem(_("Debit+Credit")); + + connect(_searchType, SIGNAL(currentIndexChanged(int)), this, SLOT(OnResultTypeChanged(int))); + _costRepartitionBanner = new CostRepartitionBanner(_kiss, this, _categories); + vbox3->addWidget(_searchType); + vbox3->addWidget(_costRepartitionBanner); + vbox2->addWidget(_changeAccountButton); vbox2->addWidget(_changeCategoryButton); vbox2->addWidget(_changeTagButton); @@ -84,7 +101,7 @@ SearchPanel::SearchPanel(KissCount* kiss, wxUI *parent, bool lowResolution) : hbox->addStretch(); hbox->addWidget(_grid); hbox->addStretch(); - hbox->addWidget(_costRepartitionBanner, 2); + hbox->addLayout(vbox3, 2); vbox->addLayout(hbox, 2); } @@ -107,11 +124,12 @@ void SearchPanel::UpdateCostRepartition() { int i; User* user = _kiss->GetUser(); - double total=0.0; + int total=0; std::vector::iterator it; Account account; Operation op; - + SEARCH_TYPE searchType = (SEARCH_TYPE) _searchType->currentIndex(); + _costRepartitionBanner->Reset(); for (i=0; iGetCategoriesNumber(); i++) @@ -127,11 +145,14 @@ void SearchPanel::UpdateCostRepartition() if (account.blocked && op.transfert && op.amount > 0) op.amount = -op.amount; - - if (op.amount >= 0) continue; - _categoriesValues[_categoriesIndexes[op.category]] -= op.amount; - total -= op.amount; + if (searchType == SEARCH_DEBIT && op.amount > 0) + continue; + else if (searchType == SEARCH_CREDIT && op.amount < 0) + continue; + + _categoriesValues[_categoriesIndexes[op.category]] += op.amount; + total += abs(op.amount); } _costRepartitionBanner->UpdateCosts(_categoriesValues, total); @@ -331,6 +352,11 @@ void SearchPanel::OnButtonRename() NeedReload(); } +void SearchPanel::OnResultTypeChanged(int index) +{ + OnButtonSearch(); +} + void SearchPanel::OnShow() { _wxUI->setWindowTitle(_kiss->GetUser()->_name + " - " + _("Search")); diff --git a/src/view/SearchPanel.hpp b/src/view/SearchPanel.hpp index ecd3758..61f1643 100644 --- a/src/view/SearchPanel.hpp +++ b/src/view/SearchPanel.hpp @@ -21,6 +21,7 @@ #define SEARCHPANEL_H #include +#include #include "view.hpp" #include "grid/GridAccount.hpp" @@ -53,12 +54,15 @@ private slots: void OnButtonChangeTag(); void OnButtonRename(); + void OnResultTypeChanged(int); + private: void UpdateCostRepartition(); std::vector *_operations; SearchBanner* _banner; GridAccount *_grid; + QComboBox *_searchType; CostRepartitionBanner *_costRepartitionBanner; QString* _categories; int *_categoriesValues; diff --git a/src/view/SnapshotsDialog.cpp b/src/view/SnapshotsDialog.cpp index 45e7104..c075035 100644 --- a/src/view/SnapshotsDialog.cpp +++ b/src/view/SnapshotsDialog.cpp @@ -93,7 +93,7 @@ void SnapshotsDialog::OnCreate() int i; bak = Database::GetDatabaseFile() + ".bak."; - bak += v.sprintf("%d.%02d.%02d", curDate.year(), curDate.month(), curDate.day()); + bak += v.asprintf("%d.%02d.%02d", curDate.year(), curDate.month(), curDate.day()); if (dir.exists(bak)) { diff --git a/src/view/StatsPanel.cpp b/src/view/StatsPanel.cpp index da766eb..c01a792 100644 --- a/src/view/StatsPanel.cpp +++ b/src/view/StatsPanel.cpp @@ -165,7 +165,7 @@ void StatsPanel::UpdateStats(int monthFrom, int yearFrom, int monthTo, int yearT std::map >::iterator accountYearIt; std::map::iterator accountMonthIt; int total; - int account, i, nbDays; + int account, i, nbDays, nbTicks = 0; QString value, v; User* user = _kiss->GetUser(); QDate date, start, end; @@ -195,6 +195,7 @@ void StatsPanel::UpdateStats(int monthFrom, int yearFrom, int monthTo, int yearT date = QDate(yearFrom, monthFrom+1, i+1); xValue.setDate(date); series->append(xValue.toMSecsSinceEpoch(), 0.0); + nbTicks++; } series->setName(_("0 line")); @@ -228,12 +229,13 @@ void StatsPanel::UpdateStats(int monthFrom, int yearFrom, int monthTo, int yearT // Line on 0 all over the years start = QDate(yearFrom, monthFrom+1, 1); end = QDate(yearTo, monthTo+1, 1); - end = end.addMonths(1).addMonths(-1); + end = end.addMonths(1); date = start; for (date = start; date <= end; date = date.addMonths(1)) { xValue.setDate(date); series->append(xValue.toMSecsSinceEpoch(), 0.0); + nbTicks++; } axisX->setLabelsAngle(-60); @@ -282,9 +284,12 @@ void StatsPanel::UpdateStats(int monthFrom, int yearFrom, int monthTo, int yearT QLegend* legend = _plot->legend(); legend->setAlignment(Qt::AlignRight); + _plot->addSeries(series0); _plot->createDefaultAxes(); + axisX->setTickCount(nbTicks); _plot->setAxisX(axisX, series0); - + // _plot->addAxis(axisX, Qt::AlignRight); + if (!_chartView) { _chartView = new QChartView(_plot); diff --git a/src/view/UsersDialog.cpp b/src/view/UsersDialog.cpp index 19ebaa9..30b1676 100644 --- a/src/view/UsersDialog.cpp +++ b/src/view/UsersDialog.cpp @@ -25,16 +25,18 @@ #include #include #include +#include #include "UsersDialog.hpp" -UsersDialog::UsersDialog(KissCount* kiss, wxUI *parent) : QDialog(0, Qt::Dialog), _kiss(kiss), _wxUI(parent) +UsersDialog::UsersDialog(KissCount* kiss, wxUI *parent) : + QDialog(parent, Qt::Dialog|Qt::WindowStaysOnTopHint), _kiss(kiss), _wxUI(parent) { QGridLayout* gridLayout; setWindowTitle(_("Users")); setModal(true); - + gridLayout = new QGridLayout(this); gridLayout->addWidget(new QLabel(_("User "), this), 0, 0); @@ -64,15 +66,22 @@ UsersDialog::UsersDialog(KissCount* kiss, wxUI *parent) : QDialog(0, Qt::Dialog) _users->addItem(*i); } - _users->setFocus(); - if (users_list.size() == 0) { OnNewUser(); throw ExceptionNewUser(); } - else - show(); +} + +void UsersDialog::showEvent(QShowEvent *event) +{ + QDialog::showEvent(event); + // QRect scr = QApplication::primaryScreen()->geometry(); + // move( scr.center() - rect().center() ); + // activateWindow(); + // raise(); + // setFocus(); + // std::cout << "SHOW EVENT" << std::endl; } void UsersDialog::OnEnter() diff --git a/src/view/UsersDialog.hpp b/src/view/UsersDialog.hpp index bcfe14f..0bcf0cb 100644 --- a/src/view/UsersDialog.hpp +++ b/src/view/UsersDialog.hpp @@ -35,6 +35,9 @@ public: class ExceptionNewUser {}; +private: + void showEvent(QShowEvent *event); + private slots: void OnEnter(); void OnOK(); diff --git a/src/view/grid/CalendarDelegate.cpp b/src/view/grid/CalendarDelegate.cpp index 1877f66..386b733 100644 --- a/src/view/grid/CalendarDelegate.cpp +++ b/src/view/grid/CalendarDelegate.cpp @@ -64,7 +64,7 @@ void CalendarDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, else ac.end_date = _date; } - model->setData(index, qVariantFromValue(_date.toString(_dateFormat))); + model->setData(index, QVariant::fromValue(_date.toString(_dateFormat))); } void CalendarDelegate::setEditorData(QWidget *editor, diff --git a/src/view/grid/ChoiceDelegate.cpp b/src/view/grid/ChoiceDelegate.cpp index a722501..41132a4 100644 --- a/src/view/grid/ChoiceDelegate.cpp +++ b/src/view/grid/ChoiceDelegate.cpp @@ -38,7 +38,7 @@ void ChoiceDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const { QComboBox *combo = qobject_cast(editor); - model->setData(index, qVariantFromValue(combo->currentText())); + model->setData(index, QVariant::fromValue(combo->currentText())); } void ChoiceDelegate::setEditorData(QWidget *editor, diff --git a/src/view/grid/DateDelegate.cpp b/src/view/grid/DateDelegate.cpp index 6cd3581..e59684b 100644 --- a/src/view/grid/DateDelegate.cpp +++ b/src/view/grid/DateDelegate.cpp @@ -41,7 +41,7 @@ void DateDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, s = QDate(_year, _month, combo->currentIndex()+1).toString(_dateFormat); - model->setData(index, qVariantFromValue(s)); + model->setData(index, QVariant::fromValue(s)); } void DateDelegate::setEditorData(QWidget *editor, diff --git a/src/view/grid/FloatDelegate.cpp b/src/view/grid/FloatDelegate.cpp index e054340..5b32405 100644 --- a/src/view/grid/FloatDelegate.cpp +++ b/src/view/grid/FloatDelegate.cpp @@ -35,7 +35,7 @@ void FloatDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, bool ok; double value = line->text().toDouble(&ok); if (ok) - model->setData(index, qVariantFromValue(s.sprintf("%.2lf", value))); + model->setData(index, QVariant::fromValue(s.asprintf("%.2lf", value))); } void FloatDelegate::setEditorData(QWidget *editor, diff --git a/src/view/grid/FormulaDelegate.cpp b/src/view/grid/FormulaDelegate.cpp index 21f052c..a978b95 100644 --- a/src/view/grid/FormulaDelegate.cpp +++ b/src/view/grid/FormulaDelegate.cpp @@ -67,13 +67,13 @@ void FormulaDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, _this->_operations->at(index.row()).formula = value; delete[] str2; res = ParseExp::EvaluateExpr(&opt, true); - model->setData(index, qVariantFromValue(s.sprintf("%.2lf", res))); + model->setData(index, QVariant::fromValue(s.asprintf("%.2lf", res))); } else { res = value.toDouble(&ok); if (ok) - model->setData(index, qVariantFromValue(s.sprintf("%.2lf", res))); + model->setData(index, QVariant::fromValue(s.asprintf("%.2lf", res))); } } diff --git a/src/view/grid/GridAccount.cpp b/src/view/grid/GridAccount.cpp index 40995b6..4cd84f5 100644 --- a/src/view/grid/GridAccount.cpp +++ b/src/view/grid/GridAccount.cpp @@ -439,10 +439,10 @@ void GridAccount::InsertOperation(User* user, Operation& op, int line, bool fix, setItem(line, OP_DATE, new QTableWidgetItem(_kiss->FormatDate(op.day+1, month+1, year))); if (op.amount < 0) { - setItem(line, DEBIT, new QTableWidgetItem(v.sprintf("%.2lf", (double)-op.amount/100))); + setItem(line, DEBIT, new QTableWidgetItem(v.asprintf("%.2lf", (double)-op.amount/100))); } else - setItem(line, CREDIT, new QTableWidgetItem(v.sprintf("%.2lf", (double)op.amount/100))); + setItem(line, CREDIT, new QTableWidgetItem(v.asprintf("%.2lf", (double)op.amount/100))); if (!op.meta) setItem(line, ACCOUNT, new QTableWidgetItem(user->GetAccountName(op.account))); @@ -464,8 +464,8 @@ void GridAccount::InsertOperation(User* user, Operation& op, int line, bool fix, { amount = _kiss->MetaPositiveAmount(op.id); - setItem(line, DEBIT, new QTableWidgetItem(v.sprintf("%.2lf", (double)amount/100))); - setItem(line, CREDIT, new QTableWidgetItem(v.sprintf("%.2lf", (double)amount/100))); + setItem(line, DEBIT, new QTableWidgetItem(v.asprintf("%.2lf", (double)amount/100))); + setItem(line, CREDIT, new QTableWidgetItem(v.asprintf("%.2lf", (double)amount/100))); } if (line <= _fixCosts) @@ -1049,9 +1049,9 @@ void GridAccount::OnOperationModified(int row, int col) /* Non null value --> set amount */ if (op_tmp.amount > 0) - setItem(row, CREDIT, new QTableWidgetItem(value.sprintf("%.2lf", (double)op_tmp.amount/100))); + setItem(row, CREDIT, new QTableWidgetItem(value.asprintf("%.2lf", (double)op_tmp.amount/100))); else if (op_tmp.amount < 0) - setItem(row, DEBIT, new QTableWidgetItem(value.sprintf("%.2lf", (double)-op_tmp.amount/100))); + setItem(row, DEBIT, new QTableWidgetItem(value.asprintf("%.2lf", (double)-op_tmp.amount/100))); } } @@ -1062,7 +1062,7 @@ void GridAccount::OnOperationModified(int row, int col) if (new_op.amount < 0) { new_op.amount *= -1.0; - setItem(row, DEBIT, new QTableWidgetItem(value.sprintf("%.2lf", (double)new_op.amount/100))); + setItem(row, DEBIT, new QTableWidgetItem(value.asprintf("%.2lf", (double)new_op.amount/100))); } if (new_op.amount != 0.0) new_op.amount *= -1.0; op_complete--; @@ -1077,7 +1077,7 @@ void GridAccount::OnOperationModified(int row, int col) if (new_op.amount < 0) { new_op.amount *= -1.0; - setItem(row, DEBIT, new QTableWidgetItem(value.sprintf("%.2lf", (double)new_op.amount/100))); + setItem(row, DEBIT, new QTableWidgetItem(value.asprintf("%.2lf", (double)new_op.amount/100))); } op_complete--; new_op.formula = _displayedOperations[row].formula; diff --git a/src/view/grid/StarDelegate.cpp b/src/view/grid/StarDelegate.cpp index 8d0d127..39f43fd 100644 --- a/src/view/grid/StarDelegate.cpp +++ b/src/view/grid/StarDelegate.cpp @@ -35,9 +35,9 @@ void StarDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, QString value = line->text().trimmed(); if ((*_accounts)[index.row()].shared) - model->setData(index, qVariantFromValue(value+ "*")); + model->setData(index, QVariant::fromValue(value+ "*")); else - model->setData(index, qVariantFromValue(value)); + model->setData(index, QVariant::fromValue(value)); } void StarDelegate::setEditorData(QWidget *editor, diff --git a/src/view/grid/TabDelegate.cpp b/src/view/grid/TabDelegate.cpp index 89b5d89..c203b41 100644 --- a/src/view/grid/TabDelegate.cpp +++ b/src/view/grid/TabDelegate.cpp @@ -41,9 +41,9 @@ void TabDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, if (index.row() < (int) _operations->size() && (*_operations)[index.row()].id && (*_operations)[index.row()].parent) - model->setData(index, qVariantFromValue(" " + value)); + model->setData(index, QVariant::fromValue(" " + value)); else - model->setData(index, qVariantFromValue(value)); + model->setData(index, QVariant::fromValue(value)); } void TabDelegate::setEditorData(QWidget *editor, diff --git a/src/view/wxUI.cpp b/src/view/wxUI.cpp index 765813c..4f2b399 100644 --- a/src/view/wxUI.cpp +++ b/src/view/wxUI.cpp @@ -31,8 +31,6 @@ #include "UsersDialog.hpp" -#include - QString wxUI::months[12] ; QColor wxUI::categoryColors[MAX_CATEGORY] = {QColor(0x00, 0x45, 0x86), QColor(0xFF, 0x3E, 0x0E), @@ -53,11 +51,10 @@ wxUI::wxUI(KissCount* kiss, const QString& title) _needReload(0) { QPushButton* button; - QDesktopWidget desk; bool lowRes; int w; - - lowRes = (desk.availableGeometry().width() <= 1024); + + lowRes = (_kiss->primaryScreen()->size().width() <= 1024); SetLanguage(""); @@ -194,10 +191,9 @@ void wxUI::InitPanels() QPushButton* button; _panels.clear(); int id=0; - QDesktopWidget desk; bool lowRes; - lowRes = (desk.availableGeometry().width() <= 1024); + lowRes = (_kiss->primaryScreen()->size().width() <= 1024); ADD_PANEL(AccountPanel); ADD_PANEL(StatsPanel);