00001 #include "accountmodel.h"
00002
00003 AccountModel::AccountModel(QList<DataTableAccount *> accounts)
00004 {
00005 appendRow("");
00006 for(int i = 0; i < accounts.size(); i++)
00007 {
00008 QString normalizedAccount = normalizedAccountNumber(accounts.value(i)->accountNumber());
00009 appendRow(normalizedAccount + " " + accounts.value(i)->name(), accounts.value(i)->description());
00010 }
00011 }
00012 AccountModel::AccountModel(QString path)
00013 {
00014 appendRow("", "um dieses Konto zu löschen");
00015 read(path);
00016 }
00017
00018 QString AccountModel::getFullNameByNumber(int number)
00019 {
00020 QString normalized = normalizedAccountNumber(number);
00021 QList<QStandardItem*> elements = findItems(normalized, Qt::MatchContains);
00022 if(elements.count() > 0)
00023 {
00024 return elements.value(0)->data(Qt::DisplayRole).toString();
00025 }
00026
00027 qDebug()<<"AccountModel::getFullNameByNumber(): can't resolve account number to a name";
00028 return normalized;
00029 }
00030
00031 int AccountModel::findText(QString text)
00032 {
00033 for(int i = 0; i != rowCount(); i++)
00034 {
00035 if(item(i, 0)->data(Qt::DisplayRole).toString() == text)
00036 {
00037 return i;
00038 }
00039 }
00040 return 0;
00041 }
00042
00043 bool AccountModel::existsAccountInModel(QString name)
00044 {
00045 if(findItems(name, Qt::MatchExactly).size() == 0)
00046 {
00047 return false;
00048 }
00049 else
00050 {
00051 return true;
00052 }
00053 }
00054
00055 void AccountModel::saveIntoProject(DataProject *project)
00056 {
00057 project->clearTableAccount();
00058 for(int i = 1; i < rowCount(); i++)
00059 {
00060 DataTableAccount *account = new DataTableAccount();
00061 QStringList accountParts = item(i, 0)->data(Qt::DisplayRole).toString().split(" ");
00062 account->setAccountNumber(accountParts.value(0).toInt());
00063
00064 QString name;
00065 for(int j = 1; j < accountParts.size()-1; j++)
00066 {
00067 name+=accountParts.value(j);
00068 name+=" ";
00069 }
00070 name += accountParts.value(accountParts.size()-1);
00071
00072 account->setName(name);
00073 account->setDescription(item(i, 0)->data(Qt::ToolTipRole).toString());
00074
00075 project->addTableAccount(account);
00076 }
00077 }
00078
00079 void AccountModel::read(QString path)
00080 {
00081 QFile file(path);
00082 QDomDocument doc("Allevo");
00083 if(!file.open(QIODevice::ReadOnly))
00084 {
00085 return;
00086 }
00087 if(!doc.setContent(&file))
00088 {
00089 file.close();
00090 return;
00091 }
00092 file.close();
00093 QDomElement root = doc.documentElement();
00094 QDomNode n = root.firstChild();
00095 QDomNode node = n.firstChild();
00096 while(!node.isNull())
00097 {
00098 if(node.isElement() && node.nodeName() == "account")
00099 {
00100 QDomElement e = node.toElement();
00101 appendRow(e.attribute("number")+" "+e.attribute("name"), e.attribute("description"));
00102
00103 node = node.nextSibling();
00104 }
00105 }
00106 }
00107
00108 void AccountModel::appendRow(QString name, QString toolTip)
00109 {
00110 QStringList list = name.split(" ");
00111 if(list.at(0).length() == 5)
00112 {
00113 QStandardItem *item = new QStandardItem(QIcon(":account/PersonalAccount"), name);
00114 item->setToolTip(toolTip);
00115 QStandardItemModel::appendRow(item);
00116 }
00117 else if(list.at(0).startsWith("4") || list.at(0).startsWith("5") || list.at(0).startsWith("7"))
00118 {
00119 QStandardItem *item = new QStandardItem(QIcon(":account/ProfitLossAccount"), name);
00120 item->setToolTip(toolTip);
00121 QStandardItemModel::appendRow(item);
00122 }
00123 else if(list.at(0).startsWith("3"))
00124 {
00125 QStandardItem *item = new QStandardItem(QIcon(":account/3Account"), name);
00126 item->setToolTip(toolTip);
00127 QStandardItemModel::appendRow(item);
00128 }
00129 else if(list.at(0).startsWith("2"))
00130 {
00131 QStandardItem *item = new QStandardItem(QIcon(":account/2Account"), name);
00132 item->setToolTip(toolTip);
00133 QStandardItemModel::appendRow(item);
00134 }
00135 else if(list.at(0).startsWith("8"))
00136 {
00137 QStandardItem *item = new QStandardItem(QIcon(":account/8Account"), name);
00138 item->setToolTip(toolTip);
00139 QStandardItemModel::appendRow(item);
00140 }
00141 else
00142 {
00143 QStandardItem *item = new QStandardItem(name);
00144 item->setToolTip(toolTip);
00145 QStandardItemModel::appendRow(item);
00146 }
00147 }