git-svn-id: file:///svnroot/family-shop-mgr@22 26eb2498-383b-47a6-be48-5d6f36779e85
[family-shop-mgr] / code / family-shop-mgr / FamilyShoppingManagerMainWindow.cpp
index fe8187c..bb8329e 100644 (file)
@@ -28,8 +28,8 @@
 
 /*******************************************************************/
 FamilyShoppingManagerMainWindow::FamilyShoppingManagerMainWindow(QWidget *parent)
-    : QMainWindow(parent), activityView(NULL), showCheckedItemsAction(NULL),
-    endShoppingAction(NULL), goShoppingAction(NULL), editMenu(NULL)
+    : QMainWindow(parent), activityView(NULL), editMenu(NULL),
+    showCheckedItemsAction(NULL), goShoppingAction(NULL), endShoppingAction(NULL)
 {
     aboutAction = new QAction(tr("&About"), this);
     connect(aboutAction, SIGNAL(triggered()), this, SLOT(showAbout()));
@@ -58,10 +58,22 @@ void FamilyShoppingManagerMainWindow::showListManager()
     setCentralWidget(activityView);
 
     editMenu = new QMenu(tr("&Edit"), this);
-    editMenu->addAction(tr("Add category"));
-    editMenu->addAction(tr("Remove category"));
-    editMenu->addAction(tr("Add item"));
-    editMenu->addAction(tr("Remove item"));
+    addCategoryAction = new QAction(tr("Add category"), this);
+    connect(addCategoryAction, SIGNAL(triggered()),
+            this, SLOT(insertRow()));
+    editMenu->addAction(addCategoryAction);
+    removeCategoryAction = new QAction(tr("Remove category"), this);
+    connect(removeCategoryAction, SIGNAL(triggered()),
+            this, SLOT(removeRow()));
+    editMenu->addAction(removeCategoryAction);
+    addItemAction = new QAction(tr("Add item"), this);
+    connect(addItemAction, SIGNAL(triggered()),
+            this, SLOT(insertRow()));
+    editMenu->addAction(addItemAction);
+    removeItemAction = new QAction(tr("Remove item"), this);
+    connect(removeItemAction, SIGNAL(triggered()),
+            this, SLOT(removeRow()));
+    editMenu->addAction(removeItemAction);
     menuBar()->addMenu(editMenu);
 
     goShoppingAction = new QAction(tr("Go shopping!"), this);
@@ -108,3 +120,100 @@ void FamilyShoppingManagerMainWindow::showAbout()
     text += "Licence: GPL";
     QMessageBox::about(this,tr("About"), text);
 }
+
+/*******************************************************************/
+void FamilyShoppingManagerMainWindow::insertChild()
+{
+     QModelIndex index = ((ListManagerView*) activityView)->
+                         selectionModel()->currentIndex();
+     QAbstractItemModel *model = ((ListManagerView*) activityView)->model();
+
+     if (model->columnCount(index) == 0) {
+         if (!model->insertColumn(0, index))
+             return;
+     }
+
+     if (!model->insertRow(0, index))
+         return;
+
+     for (int column = 0; column < model->columnCount(index); ++column)
+     {
+         QModelIndex child = model->index(0, column, index);
+         model->setData(child, QVariant("[No data]"), Qt::EditRole);
+         if (!model->headerData(column, Qt::Horizontal).isValid())
+             model->setHeaderData(column, Qt::Horizontal,
+                                  QVariant("[No header]"), Qt::EditRole);
+     }
+
+     ((ListManagerView*) activityView)->selectionModel()->
+             setCurrentIndex(model->index(0, 0, index),
+                             QItemSelectionModel::ClearAndSelect);
+     ((ListManagerView*) activityView)->updateActions();
+ }
+
+/*******************************************************************/
+/*
+bool FamilyShoppingManagerMainWindow::insertColumn(const QModelIndex &parent)
+{
+    QAbstractItemModel *model = ((ListManagerView*) activityView)->model();
+    int column = ((ListManagerView*) activityView)->selectionModel()->
+            currentIndex().column();
+
+    // Insert a column in the parent item.
+    bool changed = model->insertColumn(column + 1, parent);
+    if (changed)
+        model->setHeaderData(column + 1, Qt::Horizontal,
+                             QVariant("[No header]"), Qt::EditRole);
+
+    ((ListManagerView*) activityView)->updateActions();
+
+    return changed;
+}
+*/
+
+/*******************************************************************/
+void FamilyShoppingManagerMainWindow::insertRow()
+{
+     QModelIndex index = ((ListManagerView*) activityView)->
+                         selectionModel()->currentIndex();
+     QAbstractItemModel *model = ((ListManagerView*) activityView)->model();
+
+     if (!model->insertRow(index.row()+1, index.parent()))
+         return;
+
+     ((ListManagerView*) activityView)->updateActions();
+
+     for(int column = 0; column < model->columnCount(index.parent()); ++column)
+     {
+         QModelIndex child = model->index(index.row()+1, column, index.parent());
+         model->setData(child, QVariant("New Item"), Qt::EditRole);
+     }
+}
+
+/*******************************************************************/
+/*
+bool FamilyShoppingManagerMainWindow::removeColumn(const QModelIndex &parent)
+{
+     QAbstractItemModel *model = ((ListManagerView*) activityView)->model();
+     int column = ((ListManagerView*) activityView)->selectionModel()->
+                  currentIndex().column();
+
+     // Insert columns in each child of the parent item.
+     bool changed = model->removeColumn(column, parent);
+
+     if (!parent.isValid() && changed)
+         ((ListManagerView*) activityView)->updateActions();
+
+     return changed;
+}
+ */
+
+/*******************************************************************/
+void FamilyShoppingManagerMainWindow::removeRow()
+{
+     QModelIndex index = ((ListManagerView*) activityView)->
+                         selectionModel()->currentIndex();
+     QAbstractItemModel *model = ((ListManagerView*) activityView)->model();
+     if (model->removeRow(index.row(), index.parent()))
+         ((ListManagerView*) activityView)->updateActions();
+}