Inline editing of categories and feed names.
Leonardo Robol [2011-10-24 05:27]
Inline editing of categories and feed names.
diff --git a/feedmodel.cpp b/feedmodel.cpp
index 3a53450..7382f1e 100644
--- a/feedmodel.cpp
+++ b/feedmodel.cpp
@@ -88,49 +88,19 @@ FeedModel::setData(const QModelIndex &index, const QVariant &value, int role)
return false;
QSqlQuery query(db);
+
if (index.internalId() < FEEDMODEL_MAX_CATEGORIES && index.internalId() != 0)
{
// We are trying to modify a category
-
- switch (index.column())
- {
- case 0:
- // ID
- query.prepare("UPDATE categories SET id=:value WHERE id=:id;");
- break;
- case 1:
- // Name
- query.prepare("UPDATE categories SET name=:value WHERE id=:id;");
- break;
- }
-
+ query.prepare("UPDATE categories SET name=:value WHERE id=:id;");
query.bindValue("value", value.toString());
query.bindValue("id", index.internalId());
}
else
{
// We are trying to modify a feed
- switch (index.column())
- {
- case 0:
- // ID
- query.prepare("UPDATE categories SET id=:value WHERE id=:id;");
- break;
- case 1:
- // Category
- query.prepare("UPDATE categories SET category=:value WHERE id=:id;");
- break;
- case 2:
- // Name
- query.prepare("UPDATE categories SET name=:value WHERE id=:id;");
- break;
- case 3:
- // Url
- query.prepare("UPDATE categories SET url=:value WHERE id=:id;");
- break;
- }
-
- query.bindValue("value", value);
+ query.prepare("UPDATE feeds SET name=:value WHERE id=:id;");
+ query.bindValue("value", value.toString());
query.bindValue("id", index.internalId() - FEEDMODEL_MAX_CATEGORIES);
}
@@ -142,10 +112,18 @@ FeedModel::setData(const QModelIndex &index, const QVariant &value, int role)
else
{
// Emit the datachanged signal
+ dataChanged(index, index);
return true;
}
}
+Qt::ItemFlags
+FeedModel::flags(const QModelIndex &index) const
+{
+ Q_UNUSED(index);
+ return (Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable);
+}
+
int
FeedModel::rowCount(const QModelIndex &parent) const
{
diff --git a/feedmodel.h b/feedmodel.h
index 0e6923d..6ead440 100644
--- a/feedmodel.h
+++ b/feedmodel.h
@@ -47,6 +47,11 @@ public:
QModelIndex parent(const QModelIndex &child) const;
/**
+ * @brief Return the flags for the given item.
+ */
+ Qt::ItemFlags flags(const QModelIndex &index) const;
+
+ /**
* @brief Return the data to be inserted in the column header of the treeview.
*/
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
diff --git a/mainwindow.cpp b/mainwindow.cpp
index e3da0d8..626ec1a 100644
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -19,6 +19,7 @@ MainWindow::MainWindow(QWidget *parent) :
// Load feedModel that will wrap the SQLite database
feedModel = new FeedModel(db, this);
ui->feedTreeView->setModel(feedModel);
+ ui->feedTreeView->setEditTriggers(QTreeView::DoubleClicked);
// Load the RSSParser, hiding the unnecessary columns
rssParser = new RssParser(db, feedModel, this);