Use QXml for export engine
Change import/export engine filter to Qt format Qt doesn't add extension in its file dialog Fix a bug : op was not correctly set by default in OnOperationModified (GridAccount)
This commit is contained in:
parent
9e1686bd6e
commit
8128fe0008
|
@ -538,7 +538,7 @@ QString KissCount::GetImportEngineExtensions()
|
||||||
std::vector<ImportEngine*>* importEngines = KissCount::GetImportEngines();
|
std::vector<ImportEngine*>* importEngines = KissCount::GetImportEngines();
|
||||||
|
|
||||||
for(i=0; i<(int)importEngines->size()-1; i++)
|
for(i=0; i<(int)importEngines->size()-1; i++)
|
||||||
res = res + (*importEngines)[i]->GetFileExt() + "|" ;
|
res = res + (*importEngines)[i]->GetFileExt() + ";;" ;
|
||||||
|
|
||||||
if (importEngines->size())
|
if (importEngines->size())
|
||||||
res = res + (*importEngines)[i]->GetFileExt();
|
res = res + (*importEngines)[i]->GetFileExt();
|
||||||
|
@ -546,14 +546,23 @@ QString KissCount::GetImportEngineExtensions()
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
ImportEngine* KissCount::GetImportEngine(QString path)
|
ImportEngine* KissCount::GetImportEngine(QString path, QString filter)
|
||||||
{
|
{
|
||||||
std::vector<ImportEngine*>::iterator it;
|
std::vector<ImportEngine*>::iterator it;
|
||||||
std::vector<ImportEngine*>* importEngines = KissCount::GetImportEngines();
|
std::vector<ImportEngine*>* importEngines = KissCount::GetImportEngines();
|
||||||
|
QString tmp;
|
||||||
|
|
||||||
for(it=importEngines->begin(); it!=importEngines->end(); it++)
|
for(it=importEngines->begin(); it!=importEngines->end(); it++)
|
||||||
|
{
|
||||||
|
if (filter == (*it)->GetFileExt())
|
||||||
|
{
|
||||||
|
tmp = path;
|
||||||
|
if (!tmp.endsWith((*it)->GetShortExt()))
|
||||||
|
tmp += (*it)->GetShortExt();
|
||||||
if ((*it)->HandleFile(path, _user, _db, this))
|
if ((*it)->HandleFile(path, _user, _db, this))
|
||||||
return *it;
|
return *it;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -587,7 +596,7 @@ QString KissCount::GetExportEngineExtensions()
|
||||||
std::vector<ExportEngine*>* exportEngines = KissCount::GetExportEngines();
|
std::vector<ExportEngine*>* exportEngines = KissCount::GetExportEngines();
|
||||||
|
|
||||||
for(i=0; i<(int)exportEngines->size()-1; i++)
|
for(i=0; i<(int)exportEngines->size()-1; i++)
|
||||||
res = res + (*exportEngines)[i]->GetFileExt() + "|" ;
|
res = res + (*exportEngines)[i]->GetFileExt() + ";;" ;
|
||||||
|
|
||||||
if (exportEngines->size())
|
if (exportEngines->size())
|
||||||
res = res + (*exportEngines)[i]->GetFileExt();
|
res = res + (*exportEngines)[i]->GetFileExt();
|
||||||
|
@ -595,14 +604,23 @@ QString KissCount::GetExportEngineExtensions()
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
ExportEngine* KissCount::GetExportEngine(QString path)
|
ExportEngine* KissCount::GetExportEngine(QString path, QString filter)
|
||||||
{
|
{
|
||||||
std::vector<ExportEngine*>::iterator it;
|
std::vector<ExportEngine*>::iterator it;
|
||||||
std::vector<ExportEngine*>* exportEngines = KissCount::GetExportEngines();
|
std::vector<ExportEngine*>* exportEngines = KissCount::GetExportEngines();
|
||||||
|
QString tmp;
|
||||||
|
|
||||||
for(it=exportEngines->begin(); it!=exportEngines->end(); it++)
|
for(it=exportEngines->begin(); it!=exportEngines->end(); it++)
|
||||||
if ((*it)->HandleFile(path, _user, _db, this))
|
{
|
||||||
|
if (filter == (*it)->GetFileExt())
|
||||||
|
{
|
||||||
|
tmp = path;
|
||||||
|
if (!tmp.endsWith((*it)->GetShortExt()))
|
||||||
|
tmp += (*it)->GetShortExt();
|
||||||
|
if ((*it)->HandleFile(tmp, _user, _db, this))
|
||||||
return *it;
|
return *it;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -125,13 +125,13 @@ public:
|
||||||
static void UnRegisterImportEngine(ImportEngine* engine);
|
static void UnRegisterImportEngine(ImportEngine* engine);
|
||||||
|
|
||||||
QString GetImportEngineExtensions();
|
QString GetImportEngineExtensions();
|
||||||
ImportEngine* GetImportEngine(QString path);
|
ImportEngine* GetImportEngine(QString path, QString filter);
|
||||||
|
|
||||||
static void RegisterExportEngine(ExportEngine* engine);
|
static void RegisterExportEngine(ExportEngine* engine);
|
||||||
static void UnRegisterExportEngine(ExportEngine* engine);
|
static void UnRegisterExportEngine(ExportEngine* engine);
|
||||||
|
|
||||||
QString GetExportEngineExtensions();
|
QString GetExportEngineExtensions();
|
||||||
ExportEngine* GetExportEngine(QString path);
|
ExportEngine* GetExportEngine(QString path, QString filter);
|
||||||
|
|
||||||
void UpdateImportPattern();
|
void UpdateImportPattern();
|
||||||
|
|
||||||
|
|
|
@ -105,3 +105,8 @@ QString ExportEngine::GetFileExt()
|
||||||
return _(_longExt.toStdString().c_str());
|
return _(_longExt.toStdString().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString ExportEngine::GetShortExt()
|
||||||
|
{
|
||||||
|
return _shortExt;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,9 +32,12 @@ public:
|
||||||
~ExportEngine();
|
~ExportEngine();
|
||||||
|
|
||||||
// Get supported file extension. Example :
|
// Get supported file extension. Example :
|
||||||
// "OFX files (*.ofx)|*.ofx"
|
// "OFX files (*.ofx)"
|
||||||
virtual QString GetFileExt();
|
virtual QString GetFileExt();
|
||||||
|
|
||||||
|
// ".ofx"
|
||||||
|
virtual QString GetShortExt();
|
||||||
|
|
||||||
// Handle the file
|
// Handle the file
|
||||||
virtual bool HandleFile(const QString& path, User* user, Database* db, KissCount* kiss)=0;
|
virtual bool HandleFile(const QString& path, User* user, Database* db, KissCount* kiss)=0;
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
along with KissCount. If not, see <http://www.gnu.org/licenses/>.
|
along with KissCount. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <libxml/encoding.h>
|
#include <QXmlStreamWriter>
|
||||||
#include <libxml/xmlwriter.h>
|
#include <QFile>
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
@ -30,8 +30,8 @@ XMLExportEngine::XMLExportEngine()
|
||||||
{
|
{
|
||||||
KissCount::RegisterExportEngine(this);
|
KissCount::RegisterExportEngine(this);
|
||||||
|
|
||||||
_shortExt = "xml";
|
_shortExt = ".xml";
|
||||||
_longExt = _("KissCount XML files (*.xml)|*.xml");
|
_longExt = _("KissCount XML files (*.xml)");
|
||||||
}
|
}
|
||||||
|
|
||||||
XMLExportEngine::~XMLExportEngine()
|
XMLExportEngine::~XMLExportEngine()
|
||||||
|
@ -55,17 +55,17 @@ bool XMLExportEngine::SaveAccounts()
|
||||||
ESCAPE_CHARS(account.name);
|
ESCAPE_CHARS(account.name);
|
||||||
ESCAPE_CHARS(account.number);
|
ESCAPE_CHARS(account.number);
|
||||||
|
|
||||||
xmlTextWriterStartElement(_writer, (const xmlChar*) "account");
|
_writer->writeStartElement("account");
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "id", (const xmlChar*) QString::number(account.id).toStdString().c_str());
|
_writer->writeAttribute("id", QString::number(account.id));
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "name", (const xmlChar*) account.name.toStdString().c_str());
|
_writer->writeAttribute("name", account.name);
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "number", (const xmlChar*) account.number.toStdString().c_str());
|
_writer->writeAttribute("number", account.number);
|
||||||
// xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "shared", (const xmlChar*) (account.shared ? "1" : "0"));
|
// _writer->writeAttribute("shared", (account.shared ? "1" : "0"));
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "blocked", (const xmlChar*) (account.blocked ? "1" : "0"));
|
_writer->writeAttribute("blocked", (account.blocked ? "1" : "0"));
|
||||||
// xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "default", (const xmlChar*) (account._default ? "1" : "0"));
|
// _writer->writeAttribute("default", (account._default ? "1" : "0"));
|
||||||
// xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "is_owner", (const xmlChar*) (account.is_owner ? "1" : "0"));
|
// _writer->writeAttribute("is_owner", (account.is_owner ? "1" : "0"));
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "virtual", (const xmlChar*) (account._virtual ? "1" : "0"));
|
_writer->writeAttribute("virtual", (account._virtual ? "1" : "0"));
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "hidden", (const xmlChar*) (account.hidden ? "1" : "0"));
|
_writer->writeAttribute("hidden", (account.hidden ? "1" : "0"));
|
||||||
xmlTextWriterEndElement(_writer);
|
_writer->writeEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -74,15 +74,16 @@ bool XMLExportEngine::SaveAccounts()
|
||||||
bool XMLExportEngine::SaveAccountAmounts()
|
bool XMLExportEngine::SaveAccountAmounts()
|
||||||
{
|
{
|
||||||
std::map<AccountAmount, double, AccountAmount>::iterator it;
|
std::map<AccountAmount, double, AccountAmount>::iterator it;
|
||||||
|
QString v;
|
||||||
|
|
||||||
for(it=_accountAmounts.begin(); it!=_accountAmounts.end(); it++)
|
for(it=_accountAmounts.begin(); it!=_accountAmounts.end(); it++)
|
||||||
{
|
{
|
||||||
xmlTextWriterStartElement(_writer, (const xmlChar*) "account_amount");
|
_writer->writeStartElement("account_amount");
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "account", (const xmlChar*) QString::number(it->first.account).toStdString().c_str());
|
_writer->writeAttribute("account", QString::number(it->first.account));
|
||||||
xmlTextWriterWriteFormatAttribute(_writer, (const xmlChar*) "month", "%d", it->first.month);
|
_writer->writeAttribute("month", QString::number(it->first.month));
|
||||||
xmlTextWriterWriteFormatAttribute(_writer, (const xmlChar*) "year", "%d", it->first.year);
|
_writer->writeAttribute("year", QString::number(it->first.year));
|
||||||
xmlTextWriterWriteFormatAttribute(_writer, (const xmlChar*) "amount", "%.2lf", it->second);
|
_writer->writeAttribute("amount", v.sprintf("%.2lf", it->second));
|
||||||
xmlTextWriterEndElement(_writer);
|
_writer->writeEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -93,6 +94,7 @@ bool XMLExportEngine::SaveCategories()
|
||||||
Category category;
|
Category category;
|
||||||
std::map<int, int>::iterator it;
|
std::map<int, int>::iterator it;
|
||||||
int rgb;
|
int rgb;
|
||||||
|
QString v;
|
||||||
|
|
||||||
for(it=_categories.begin(); it!=_categories.end(); it++)
|
for(it=_categories.begin(); it!=_categories.end(); it++)
|
||||||
{
|
{
|
||||||
|
@ -100,21 +102,21 @@ bool XMLExportEngine::SaveCategories()
|
||||||
|
|
||||||
ESCAPE_CHARS(category.name);
|
ESCAPE_CHARS(category.name);
|
||||||
|
|
||||||
xmlTextWriterStartElement(_writer, (const xmlChar*) "category");
|
_writer->writeStartElement("category");
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "id", (const xmlChar*) QString::number(category.id).toStdString().c_str());
|
_writer->writeAttribute("id", QString::number(category.id));
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "parent", (const xmlChar*) QString::number(category.parent).toStdString().c_str());
|
_writer->writeAttribute("parent", QString::number(category.parent));
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "name", (const xmlChar*) category.name.toStdString().c_str());
|
_writer->writeAttribute("name", category.name);
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "font", (const xmlChar*) category.font.toStdString().c_str());
|
_writer->writeAttribute("font", category.font);
|
||||||
rgb = category.backcolor.blue();
|
rgb = category.backcolor.blue();
|
||||||
rgb |= category.backcolor.green() << 8;
|
rgb |= category.backcolor.green() << 8;
|
||||||
rgb |= category.backcolor.red() << 16;
|
rgb |= category.backcolor.red() << 16;
|
||||||
xmlTextWriterWriteFormatAttribute(_writer, (const xmlChar*) "backcolor", "0x%08X", rgb);
|
_writer->writeAttribute("backcolor", v.sprintf("0x%08X", rgb));
|
||||||
rgb = category.forecolor.blue();
|
rgb = category.forecolor.blue();
|
||||||
rgb |= category.forecolor.green() << 8;
|
rgb |= category.forecolor.green() << 8;
|
||||||
rgb |= category.forecolor.red() << 16;
|
rgb |= category.forecolor.red() << 16;
|
||||||
xmlTextWriterWriteFormatAttribute(_writer, (const xmlChar*) "forecolor", "0x%08X", rgb);
|
_writer->writeAttribute("forecolor", v.sprintf("0x%08X", rgb));
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "fix_cost", (const xmlChar*) (category.fix_cost ? "1" : "0"));
|
_writer->writeAttribute("fix_cost", (category.fix_cost ? "1" : "0"));
|
||||||
xmlTextWriterEndElement(_writer);
|
_writer->writeEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -123,28 +125,29 @@ bool XMLExportEngine::SaveCategories()
|
||||||
bool XMLExportEngine::SaveOperations(std::vector<Operation>* operations)
|
bool XMLExportEngine::SaveOperations(std::vector<Operation>* operations)
|
||||||
{
|
{
|
||||||
std::vector<Operation>::iterator it;
|
std::vector<Operation>::iterator it;
|
||||||
|
QString v;
|
||||||
|
|
||||||
for(it=operations->begin(); it!=operations->end(); it++)
|
for(it=operations->begin(); it!=operations->end(); it++)
|
||||||
{
|
{
|
||||||
ESCAPE_CHARS(it->description);
|
ESCAPE_CHARS(it->description);
|
||||||
|
|
||||||
xmlTextWriterStartElement(_writer, (const xmlChar*) "operation");
|
_writer->writeStartElement("operation");
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "id", (const xmlChar*) QString::number(it->id).toStdString().c_str());
|
_writer->writeAttribute("id", QString::number(it->id));
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "parent", (const xmlChar*) QString::number(it->parent).toStdString().c_str());
|
_writer->writeAttribute("parent", QString::number(it->parent));
|
||||||
xmlTextWriterWriteFormatAttribute(_writer, (const xmlChar*) "day", "%d", it->day);
|
_writer->writeAttribute("day", QString::number(it->day));
|
||||||
xmlTextWriterWriteFormatAttribute(_writer, (const xmlChar*) "month", "%d", it->month);
|
_writer->writeAttribute("month", QString::number(it->month));
|
||||||
xmlTextWriterWriteFormatAttribute(_writer, (const xmlChar*) "year", "%d", it->year);
|
_writer->writeAttribute("year", QString::number(it->year));
|
||||||
xmlTextWriterWriteFormatAttribute(_writer, (const xmlChar*) "amount", "%.2lf", it->amount);
|
_writer->writeAttribute("amount", v.sprintf("%.2lf", it->amount));
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "description", (const xmlChar*) it->description.toStdString().c_str());
|
_writer->writeAttribute("description", it->description);
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "category", (const xmlChar*) QString::number(it->category).toStdString().c_str());
|
_writer->writeAttribute("category", QString::number(it->category));
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "fix_cost", (const xmlChar*) (it->fix_cost ? "1" : "0"));
|
_writer->writeAttribute("fix_cost", (it->fix_cost ? "1" : "0"));
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "account", (const xmlChar*) QString::number(it->account).toStdString().c_str());
|
_writer->writeAttribute("account", QString::number(it->account));
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "checked", (const xmlChar*) (it->checked ? "1" : "0"));
|
_writer->writeAttribute("checked", (it->checked ? "1" : "0"));
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "transfert", (const xmlChar*) QString::number(it->transfert).toStdString().c_str());
|
_writer->writeAttribute("transfert", QString::number(it->transfert));
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "formula", (const xmlChar*) it->formula.toStdString().c_str());
|
_writer->writeAttribute("formula", it->formula);
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "meta", (const xmlChar*) (it->meta ? "1" : "0"));
|
_writer->writeAttribute("meta", (it->meta ? "1" : "0"));
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "virtual", (const xmlChar*) (it->_virtual ? "1" : "0"));
|
_writer->writeAttribute("virtual", (it->_virtual ? "1" : "0"));
|
||||||
xmlTextWriterEndElement(_writer);
|
_writer->writeEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -152,37 +155,40 @@ bool XMLExportEngine::SaveOperations(std::vector<Operation>* operations)
|
||||||
|
|
||||||
bool XMLExportEngine::SaveFile(std::vector<Operation>* operations)
|
bool XMLExportEngine::SaveFile(std::vector<Operation>* operations)
|
||||||
{
|
{
|
||||||
|
QFile file(_path);
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
rc = ExportEngine::SaveFile(operations);
|
rc = ExportEngine::SaveFile(operations);
|
||||||
|
|
||||||
if (!rc) return false;
|
if (!rc) return false;
|
||||||
|
|
||||||
_writer = xmlNewTextWriterFilename(_path.toStdString().c_str(), 0);
|
if (!file.open(QIODevice::ReadWrite))
|
||||||
|
|
||||||
if (!_writer)
|
|
||||||
{
|
{
|
||||||
std::cout << "Error can't open the file" << std::endl;
|
std::cout << "Error can't open the file " << _path.toStdString() << std::endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = xmlTextWriterStartDocument(_writer, 0, "UTF-8", 0);
|
_writer = new QXmlStreamWriter(&file);
|
||||||
|
|
||||||
if (rc < 0) return false;
|
_writer->setCodec("UTF-8");
|
||||||
|
_writer->setAutoFormatting(true);
|
||||||
xmlTextWriterStartElement(_writer, (const xmlChar*) "kisscount");
|
_writer->setAutoFormattingIndent(4);
|
||||||
xmlTextWriterWriteAttribute(_writer, (const xmlChar*) "version", (const xmlChar*) "1");
|
_writer->writeStartDocument("1.0");
|
||||||
|
_writer->writeStartElement("kisscount");
|
||||||
|
_writer->writeAttribute("version", "1");
|
||||||
|
|
||||||
SaveAccounts();
|
SaveAccounts();
|
||||||
SaveAccountAmounts();
|
SaveAccountAmounts();
|
||||||
SaveCategories();
|
SaveCategories();
|
||||||
SaveOperations(operations);
|
SaveOperations(operations);
|
||||||
|
|
||||||
xmlTextWriterEndElement(_writer);
|
_writer->writeEndElement();
|
||||||
|
_writer->writeEndDocument();
|
||||||
|
|
||||||
xmlTextWriterEndDocument(_writer);
|
file.flush();
|
||||||
|
file.close();
|
||||||
|
|
||||||
xmlFreeTextWriter(_writer);
|
delete _writer;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ public:
|
||||||
bool SaveFile(std::vector<Operation>* operations);
|
bool SaveFile(std::vector<Operation>* operations);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
xmlTextWriterPtr _writer;
|
QXmlStreamWriter* _writer;
|
||||||
|
|
||||||
bool SaveAccounts();
|
bool SaveAccounts();
|
||||||
bool SaveAccountAmounts();
|
bool SaveAccountAmounts();
|
||||||
|
|
|
@ -199,8 +199,8 @@ GrisbiImportEngine::GrisbiImportEngine()
|
||||||
{
|
{
|
||||||
KissCount::RegisterImportEngine(this);
|
KissCount::RegisterImportEngine(this);
|
||||||
|
|
||||||
_shortExt = "gsb";
|
_shortExt = ".gsb";
|
||||||
_longExt = _("Grisbi files (*.gsb)|*.gsb");
|
_longExt = _("Grisbi files (*.gsb)");
|
||||||
|
|
||||||
_sax.startElement = GrisbiStartElement ;
|
_sax.startElement = GrisbiStartElement ;
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,6 +52,11 @@ QString ImportEngine::GetFileExt()
|
||||||
return _(_longExt.toStdString().c_str());
|
return _(_longExt.toStdString().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString ImportEngine::GetShortExt()
|
||||||
|
{
|
||||||
|
return _shortExt;
|
||||||
|
}
|
||||||
|
|
||||||
std::vector<QString> ExplodeString(QString& s)
|
std::vector<QString> ExplodeString(QString& s)
|
||||||
{
|
{
|
||||||
QString tmp = s, cur = "";
|
QString tmp = s, cur = "";
|
||||||
|
|
|
@ -41,9 +41,11 @@ public:
|
||||||
~ImportEngine();
|
~ImportEngine();
|
||||||
|
|
||||||
// Get supported file extension. Example :
|
// Get supported file extension. Example :
|
||||||
// "OFX files (*.ofx)|*.ofx"
|
// "OFX files (*.ofx)"
|
||||||
virtual QString GetFileExt();
|
virtual QString GetFileExt();
|
||||||
|
|
||||||
|
virtual QString GetShortExt();
|
||||||
|
|
||||||
// Handle the file
|
// Handle the file
|
||||||
virtual bool HandleFile(const QString& path, User* user, Database* db, KissCount* kiss)=0;
|
virtual bool HandleFile(const QString& path, User* user, Database* db, KissCount* kiss)=0;
|
||||||
|
|
||||||
|
|
|
@ -136,8 +136,8 @@ OFXImportEngine::OFXImportEngine()
|
||||||
ofx_set_transaction_cb(_ctx, transaction_cb, this);
|
ofx_set_transaction_cb(_ctx, transaction_cb, this);
|
||||||
ofx_set_statement_cb(_ctx, account_balance_cb, this);
|
ofx_set_statement_cb(_ctx, account_balance_cb, this);
|
||||||
|
|
||||||
_shortExt = "ofx";
|
_shortExt = ".ofx";
|
||||||
_longExt = _("OFX files (*.ofx)|*.ofx");
|
_longExt = _("OFX files (*.ofx)");
|
||||||
}
|
}
|
||||||
|
|
||||||
OFXImportEngine::~OFXImportEngine()
|
OFXImportEngine::~OFXImportEngine()
|
||||||
|
|
|
@ -263,8 +263,8 @@ XMLImportEngine::XMLImportEngine()
|
||||||
{
|
{
|
||||||
KissCount::RegisterImportEngine(this);
|
KissCount::RegisterImportEngine(this);
|
||||||
|
|
||||||
_shortExt = "xml";
|
_shortExt = ".xml";
|
||||||
_longExt = _("KissCount xml files (*.xml)|*.xml");
|
_longExt = _("KissCount xml files (*.xml)");
|
||||||
|
|
||||||
_sax.startElement = XmlStartElement ;
|
_sax.startElement = XmlStartElement ;
|
||||||
}
|
}
|
||||||
|
|
|
@ -111,7 +111,7 @@ void ExportPanel::OnButtonSearch()
|
||||||
|
|
||||||
void ExportPanel::OnButtonExport()
|
void ExportPanel::OnButtonExport()
|
||||||
{
|
{
|
||||||
QString path;
|
QString path, filter;
|
||||||
|
|
||||||
if (!_operations || !_operations->size())
|
if (!_operations || !_operations->size())
|
||||||
{
|
{
|
||||||
|
@ -119,12 +119,12 @@ void ExportPanel::OnButtonExport()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
path = QFileDialog::getSaveFileName(0, _("Save as"), "", _kiss->GetExportEngineExtensions());
|
path = QFileDialog::getSaveFileName(0, _("Save as"), "", _kiss->GetExportEngineExtensions(), &filter);
|
||||||
|
|
||||||
if (path.size() == 0)
|
if (path.size() == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
_exportEngine = _kiss->GetExportEngine(path);
|
_exportEngine = _kiss->GetExportEngine(path, filter);
|
||||||
|
|
||||||
if (!_exportEngine)
|
if (!_exportEngine)
|
||||||
{
|
{
|
||||||
|
|
|
@ -867,6 +867,22 @@ void GridAccount::OnOperationModified(int row, int col)
|
||||||
|
|
||||||
cur_op = (_displayedOperations)[row] ;
|
cur_op = (_displayedOperations)[row] ;
|
||||||
|
|
||||||
|
new_op.id = 0;
|
||||||
|
new_op.parent = 0;
|
||||||
|
new_op.day = 0;
|
||||||
|
new_op.month = 0;
|
||||||
|
new_op.year = 0;
|
||||||
|
new_op.amount = 0.0;
|
||||||
|
new_op.description = "";
|
||||||
|
new_op.category = 0;
|
||||||
|
new_op.fix_cost = false;
|
||||||
|
new_op.account = 0;
|
||||||
|
new_op.checked = 0;
|
||||||
|
new_op.transfert = 0;
|
||||||
|
new_op.formula = "";
|
||||||
|
new_op.meta = false;
|
||||||
|
new_op._virtual = false;
|
||||||
|
|
||||||
if (col == DEBIT)
|
if (col == DEBIT)
|
||||||
setItem(row, CREDIT, new QTableWidgetItem(""));
|
setItem(row, CREDIT, new QTableWidgetItem(""));
|
||||||
else if (col == CREDIT)
|
else if (col == CREDIT)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user