[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [skrooge/Feature] /: feature: Merge of trackers by drag & drop
From: Stephane Mankowski <stephane () mankowski ! fr>
Date: 2011-08-19 19:49:53
Message-ID: 20110819194953.097DFA6078 () git ! kde ! org
[Download RAW message or body]
Git commit eb4ae4a60474b2fbef367cf8c18fd570fba66cde by Stephane Mankowski.
Committed on 19/08/2011 at 21:49.
Pushed by smankowski into branch 'Feature'.
feature: Merge of trackers by drag & drop
M +23 -3 skgbankgui/skgobjectmodel.cpp
M +18 -0 skgbankmodeler/skgtrackerobject.cpp
M +8 -0 skgbankmodeler/skgtrackerobject.h
M +1 -0 CHANGELOG
http://commits.kde.org/skrooge/eb4ae4a60474b2fbef367cf8c18fd570fba66cde
diff --git a/CHANGELOG b/CHANGELOG
index 8525367..4e9ce28 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,7 @@ skrooge (1.0.0)
*Correction bug 280362: Skrooge is not accepting dots or commas
*Correction: Better performances in check box of operation, account, tracker pages
*New feature: Addition of "Once a week" for scheduled operations
+ *New feature: Merge of trackers by drag & drop
-- maintainer Stephane MANKOWSKI <stephane@mankowski.fr> xxx
diff --git a/skgbankgui/skgobjectmodel.cpp b/skgbankgui/skgobjectmodel.cpp
index 9ff4766..343779e 100644
--- a/skgbankgui/skgobjectmodel.cpp
+++ b/skgbankgui/skgobjectmodel.cpp
@@ -766,7 +766,7 @@ Qt::ItemFlags SKGObjectModel::flags(const QModelIndex & index) \
const
if(att == "t_bookmarked" || m_ruleTable || m_recurrentoperationTable) flags \
= flags & ~Qt::ItemIsEditable; }
- if(m_categoryTable || m_payeeTable || m_accountTable || m_unitTable) {
+ if(m_categoryTable || m_payeeTable || m_accountTable || m_unitTable || \
m_trackerTable) {
if(index.isValid()) flags |= Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled;
else flags |= Qt::ItemIsDropEnabled;
}
@@ -776,13 +776,13 @@ Qt::ItemFlags SKGObjectModel::flags(const QModelIndex & index) \
const
Qt::DropActions SKGObjectModel::supportedDragActions() const
{
- if(m_categoryTable || m_payeeTable || m_accountTable || m_unitTable) return \
Qt::MoveAction; + if(m_categoryTable || m_payeeTable || m_accountTable || \
m_unitTable || m_trackerTable) return Qt::MoveAction; return \
SKGObjectModelBase::supportedDragActions(); }
Qt::DropActions SKGObjectModel::supportedDropActions() const
{
- if(m_categoryTable || m_payeeTable || m_accountTable || m_unitTable) return \
Qt::MoveAction; + if(m_categoryTable || m_payeeTable || m_accountTable || \
m_unitTable || m_trackerTable) return Qt::MoveAction; return \
SKGObjectModelBase::supportedDropActions(); }
@@ -796,6 +796,7 @@ bool SKGObjectModel::dropMimeData(const QMimeData * data,
if(!data || !(data->hasFormat("application/skg.category.ids") ||
data->hasFormat("application/skg.payee.ids") ||
data->hasFormat("application/skg.account.ids") ||
+ data->hasFormat("application/skg.refund.ids") ||
data->hasFormat("application/skg.unit.ids")
)) return false;
if(column > 0) return false;
@@ -883,6 +884,25 @@ bool SKGObjectModel::dropMimeData(const QMimeData * data,
if(!err) err = parentUnit.merge(child);
}
}
+ } else if(data->hasFormat("application/skg.refund.ids")) {
+ QByteArray encodedData = data->data("application/skg.refund.ids");
+ QDataStream stream(&encodedData, QIODevice::ReadOnly);
+ QStringList newItems;
+
+ if(parent.isValid()) {
+ SKGBEGINTRANSACTION(*getDocument(), i18nc("Noun, name of the user \
action", "Merge trackers"), err); + SKGTrackerObject trackerUnit = \
getObject(parent); + while(!stream.atEnd() && !err) {
+ int o_id;
+ QString o_table;
+ stream >> o_table;
+ stream >> o_id;
+
+ SKGTrackerObject child(getDocument(), o_id);
+ err = child.load();
+ if(!err) err = trackerUnit.merge(child);
+ }
+ }
}
SKGMainPanel::displayErrorMessage(err);
return !err;
diff --git a/skgbankmodeler/skgtrackerobject.cpp \
b/skgbankmodeler/skgtrackerobject.cpp index 588ba8c..df6a320 100644
--- a/skgbankmodeler/skgtrackerobject.cpp
+++ b/skgbankmodeler/skgtrackerobject.cpp
@@ -20,6 +20,7 @@
* @author Stephane MANKOWSKI / Guillaume DE BURE
*/
#include "skgtrackerobject.h"
+#include "skgsuboperationobject.h"
#include "skgdocumentbank.h"
#include "skgtraces.h"
@@ -115,4 +116,21 @@ double SKGTrackerObject::getCurrentAmount() const
return SKGServices::stringToDouble(getAttribute("f_CURRENTAMOUNT"));
}
+SKGError SKGTrackerObject::merge(const SKGTrackerObject& iTracker)
+{
+ SKGError err;
+
+ SKGObjectBase::SKGListSKGObjectBase ops;
+ if(!err) err = iTracker.getSubOperations(ops);
+ int nb = ops.count();
+ for(int i = 0; !err && i < nb; ++i) {
+ SKGSubOperationObject op = ops.at(i);
+ err = op.setTracker(*this);
+ if(!err) err = op.save(true, false);
+ }
+
+ if(!err) err = iTracker.remove();
+ return err;
+}
+
#include "skgtrackerobject.moc"
diff --git a/skgbankmodeler/skgtrackerobject.h b/skgbankmodeler/skgtrackerobject.h
index 79d9748..7c2fef3 100644
--- a/skgbankmodeler/skgtrackerobject.h
+++ b/skgbankmodeler/skgtrackerobject.h
@@ -119,6 +119,14 @@ public:
* @return the current amount
*/
virtual double getCurrentAmount() const;
+
+ /**
+ * Merge iTracker in current tracker
+ * @param iTracker the tracker. All operations will be transferred into this \
tracker. The tracker will be removed + * @return an object managing the error
+ * @see SKGError
+ */
+ virtual SKGError merge(const SKGTrackerObject& iTracker);
};
/**
* Declare the class
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic