Connected PC GUI to model
authorUnai IRIGOYEN <onil@onil-netbook.(none)>
Sun, 25 Jul 2010 10:15:41 +0000 (12:15 +0200)
committerUnai IRIGOYEN <onil@onil-netbook.(none)>
Sun, 25 Jul 2010 10:15:41 +0000 (12:15 +0200)
code/family-shop-mgr/.gitignore
code/family-shop-mgr/GUI/FamilyShopManagerPC.cpp
code/family-shop-mgr/GUI/FamilyShopManagerPC.h
code/family-shop-mgr/GUI/FamilyShopManagerPC.ui
code/family-shop-mgr/family-shop-mgr.pro.user
code/family-shop-mgr/main.cpp

index eb74f9e..9595d7e 100644 (file)
@@ -3,4 +3,5 @@ tmp
 Makefile
 *.bak
 ShoppingList.xml
+ui_*.h
  
index 42b3ae0..584df60 100644 (file)
@@ -1,11 +1,21 @@
 #include "FamilyShopManagerPC.h"
 #include "ui_FamilyShopManagerPC.h"
 
+#include <QInputDialog>
+
 FamilyShopManagerPC::FamilyShopManagerPC(QWidget *parent) :
     QMainWindow(parent),
     ui(new Ui::FamilyShopManagerPC)
 {
     ui->setupUi(this);
+
+    connect(ui->actionEdit_shopping_list, SIGNAL(triggered()), this, SLOT(showEditMode()));
+    connect(ui->actionGo_shopping, SIGNAL(triggered()), this, SLOT(showShoppingMode()));
+
+    connect(ui->actionAdd_category, SIGNAL(triggered()), this, SLOT(addCategory()));
+    connect(ui->actionAdd_item, SIGNAL(triggered()), this, SLOT(addItem()));
+    connect(ui->actionRemove, SIGNAL(triggered()), this, SLOT(remove()));
+
 }
 
 FamilyShopManagerPC::~FamilyShopManagerPC()
@@ -24,3 +34,47 @@ void FamilyShopManagerPC::changeEvent(QEvent *e)
         break;
     }
 }
+
+void FamilyShopManagerPC::setModel(QAbstractItemModel *model)
+{
+    ui->listTreeView->setModel(model);
+}
+
+void FamilyShopManagerPC::showEditMode()
+{
+
+}
+
+void FamilyShopManagerPC::showShoppingMode()
+{
+
+}
+
+void FamilyShopManagerPC::addCategory()
+{
+    bool ok = false;
+    QString name = QInputDialog::getText(this, tr("Enter category name"), tr("Category name"),
+                                         QLineEdit::Normal, "", &ok);
+
+    if(ok)
+    {
+        emit addCategory(ui->listTreeView->currentIndex(), name);
+    }
+}
+
+void FamilyShopManagerPC::addItem()
+{
+    bool ok = false;
+    QString name = QInputDialog::getText(this, tr("Enter item name"), tr("Item name"),
+                                         QLineEdit::Normal, "", &ok);
+
+    if(ok)
+    {
+        emit addItem(ui->listTreeView->currentIndex(), name);
+    }
+}
+
+void FamilyShopManagerPC::remove()
+{
+    emit removeSignal(ui->listTreeView->currentIndex());
+}
index 2dc2d8a..6eeb08b 100644 (file)
@@ -2,6 +2,7 @@
 #define FAMILYSHOPMANAGERPC_H
 
 #include <QMainWindow>
+#include <QAbstractItemModel>
 
 namespace Ui {
     class FamilyShopManagerPC;
@@ -13,6 +14,21 @@ public:
     FamilyShopManagerPC(QWidget *parent = 0);
     ~FamilyShopManagerPC();
 
+    void setModel(QAbstractItemModel* model);
+
+public slots:
+    void showEditMode();
+    void showShoppingMode();
+
+    void addCategory();
+    void addItem();
+    void remove();
+
+signals:
+    void addCategory(QModelIndex index, QString name);
+    void addItem(QModelIndex index, QString name);
+    void removeSignal(QModelIndex index);
+
 protected:
     void changeEvent(QEvent *e);
 
index fb6b0b8..afdb000 100644 (file)
@@ -1,7 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <ui version="4.0">
+ <author>Unai IRIGOYEN</author>
  <class>FamilyShopManagerPC</class>
- <widget class="QMainWindow" name="FamilyShopManagerPC" >
-  <property name="geometry" >
+ <widget class="QMainWindow" name="FamilyShopManagerPC">
+  <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <height>400</height>
    </rect>
   </property>
-  <property name="windowTitle" >
-   <string>FamilyShopManagerPC</string>
+  <property name="windowTitle">
+   <string>Family shopping manager</string>
   </property>
-  <widget class="QMenuBar" name="menuBar" />
-  <widget class="QToolBar" name="mainToolBar" />
-  <widget class="QWidget" name="centralWidget" />
-  <widget class="QStatusBar" name="statusBar" />
+  <property name="locale">
+   <locale language="English" country="UnitedStates"/>
+  </property>
+  <widget class="QWidget" name="centralWidget">
+   <layout class="QVBoxLayout" name="verticalLayout">
+    <item>
+     <widget class="QScrollArea" name="scrollArea">
+      <property name="widgetResizable">
+       <bool>true</bool>
+      </property>
+      <widget class="QWidget" name="scrollAreaWidgetContents">
+       <property name="geometry">
+        <rect>
+         <x>0</x>
+         <y>0</y>
+         <width>586</width>
+         <height>327</height>
+        </rect>
+       </property>
+       <layout class="QVBoxLayout" name="verticalLayout_2">
+        <item>
+         <widget class="QTreeView" name="listTreeView"/>
+        </item>
+       </layout>
+      </widget>
+     </widget>
+    </item>
+   </layout>
+  </widget>
+  <widget class="QMenuBar" name="menuBar">
+   <property name="geometry">
+    <rect>
+     <x>0</x>
+     <y>0</y>
+     <width>600</width>
+     <height>18</height>
+    </rect>
+   </property>
+  </widget>
+  <widget class="QToolBar" name="mainToolBar">
+   <attribute name="toolBarArea">
+    <enum>TopToolBarArea</enum>
+   </attribute>
+   <attribute name="toolBarBreak">
+    <bool>false</bool>
+   </attribute>
+   <addaction name="actionEdit_shopping_list"/>
+   <addaction name="actionGo_shopping"/>
+   <addaction name="actionAdd_category"/>
+   <addaction name="actionAdd_item"/>
+   <addaction name="actionRemove"/>
+  </widget>
+  <widget class="QStatusBar" name="statusBar"/>
+  <action name="actionEdit_shopping_list">
+   <property name="text">
+    <string>Edit shopping list</string>
+   </property>
+  </action>
+  <action name="actionGo_shopping">
+   <property name="text">
+    <string>Go shopping!</string>
+   </property>
+  </action>
+  <action name="actionAdd_category">
+   <property name="text">
+    <string>Add category</string>
+   </property>
+  </action>
+  <action name="actionAdd_item">
+   <property name="text">
+    <string>Add item</string>
+   </property>
+  </action>
+  <action name="actionRemove">
+   <property name="text">
+    <string>Remove</string>
+   </property>
+  </action>
  </widget>
- <layoutDefault spacing="6" margin="11" />
- <pixmapfunction></pixmapfunction>
+ <layoutdefault spacing="6" margin="11"/>
  <resources/>
  <connections/>
 </ui>
index 5592352..d914ccd 100644 (file)
   <variable>buildconfiguration-Debug-buildstep0</variable>
   <valuemap type="QVariantMap">
    <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value>
+   <valuelist key="abstractProcess.Environment" type="QVariantList">
+    <value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-fGFreQMQCi,guid=40982632b0a35018e38badbd4c4c0958</value>
+    <value type="QString">DESKTOP_SESSION=default</value>
+    <value type="QString">DISPLAY=:0.0</value>
+    <value type="QString">DM_CONTROL=/var/run/xdmctl</value>
+    <value type="QString">GPG_AGENT_INFO=/tmp/gpg-zBm3MG/S.gpg-agent:1465:1</value>
+    <value type="QString">GS_LIB=/home/onil/.fonts</value>
+    <value type="QString">GTK2_RC_FILES=/etc/gtk-2.0/gtkrc:/home/onil/.gtkrc-2.0:/home/onil/.gtkrc-2.0-kde4:/home/onil/.kde/share/config/gtkrc-2.0</value>
+    <value type="QString">GTK_RC_FILES=/etc/gtk/gtkrc:/home/onil/.gtkrc::/home/onil/.kde/share/config/gtkrc</value>
+    <value type="QString">HOME=/home/onil</value>
+    <value type="QString">KDE_FULL_SESSION=true</value>
+    <value type="QString">KDE_MULTIHEAD=false</value>
+    <value type="QString">KDE_SESSION_UID=1000</value>
+    <value type="QString">KDE_SESSION_VERSION=4</value>
+    <value type="QString">LANG=fr_FR.UTF-8</value>
+    <value type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator:</value>
+    <value type="QString">LOGNAME=onil</value>
+    <value type="QString">PATH=/usr/bin:/home/onil/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games</value>
+    <value type="QString">PWD=/home/onil/Documents</value>
+    <value type="QString">QTDIR=/usr/share/qt4</value>
+    <value type="QString">QT_PLUGIN_PATH=/home/onil/.kde/lib/kde4/plugins/:/usr/lib/kde4/plugins/</value>
+    <value type="QString">SESSION_MANAGER=local/onil-netbook:@/tmp/.ICE-unix/1603,unix/onil-netbook:/tmp/.ICE-unix/1603</value>
+    <value type="QString">SHELL=/bin/bash</value>
+    <value type="QString">SHLVL=0</value>
+    <value type="QString">SSH_AGENT_PID=1464</value>
+    <value type="QString">SSH_AUTH_SOCK=/tmp/ssh-vgudGK1419/agent.1419</value>
+    <value type="QString">USER=onil</value>
+    <value type="QString">WINDOWPATH=7</value>
+    <value type="QString">XCURSOR_THEME=oxy-white</value>
+    <value type="QString">XDG_DATA_DIRS=/usr/share:/usr/share:/usr/local/share</value>
+    <value type="QString">XDG_SESSION_COOKIE=4cb4c39594fcf9ea2256393c4c2e6053-1280051542.996827-333265015</value>
+    <value type="QString">XDM_MANAGED=method=classic</value>
+   </valuelist>
+   <valuelist key="abstractProcess.arguments" type="QVariantList">
+    <value type="QString">/home/onil/Documents/Programmation/FamilyShoppingManager/family-shop-mgr/code/family-shop-mgr/family-shop-mgr.pro</value>
+    <value type="QString">-spec</value>
+    <value type="QString">linux-g++</value>
+    <value type="QString">-r</value>
+    <value type="QString">CONFIG+=debug</value>
+   </valuelist>
+   <value key="abstractProcess.command" type="QString">/usr/bin/qmake-qt4</value>
+   <value key="abstractProcess.enabled" type="bool">false</value>
+   <value key="abstractProcess.workingDirectory" type="QString">/home/onil/Documents/Programmation/FamilyShoppingManager/family-shop-mgr/code/family-shop-mgr</value>
   </valuemap>
  </data>
  <data>
   <variable>buildconfiguration-Debug-buildstep1</variable>
   <valuemap type="QVariantMap">
    <value key="ProjectExplorer.BuildConfiguration.DisplayName" type="QString">Debug</value>
+   <valuelist key="abstractProcess.Environment" type="QVariantList">
+    <value type="QString">DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-fGFreQMQCi,guid=40982632b0a35018e38badbd4c4c0958</value>
+    <value type="QString">DESKTOP_SESSION=default</value>
+    <value type="QString">DISPLAY=:0.0</value>
+    <value type="QString">DM_CONTROL=/var/run/xdmctl</value>
+    <value type="QString">GPG_AGENT_INFO=/tmp/gpg-zBm3MG/S.gpg-agent:1465:1</value>
+    <value type="QString">GS_LIB=/home/onil/.fonts</value>
+    <value type="QString">GTK2_RC_FILES=/etc/gtk-2.0/gtkrc:/home/onil/.gtkrc-2.0:/home/onil/.gtkrc-2.0-kde4:/home/onil/.kde/share/config/gtkrc-2.0</value>
+    <value type="QString">GTK_RC_FILES=/etc/gtk/gtkrc:/home/onil/.gtkrc::/home/onil/.kde/share/config/gtkrc</value>
+    <value type="QString">HOME=/home/onil</value>
+    <value type="QString">KDE_FULL_SESSION=true</value>
+    <value type="QString">KDE_MULTIHEAD=false</value>
+    <value type="QString">KDE_SESSION_UID=1000</value>
+    <value type="QString">KDE_SESSION_VERSION=4</value>
+    <value type="QString">LANG=fr_FR.UTF-8</value>
+    <value type="QString">LD_LIBRARY_PATH=/usr/lib/qtcreator:</value>
+    <value type="QString">LOGNAME=onil</value>
+    <value type="QString">PATH=/usr/bin:/home/onil/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games</value>
+    <value type="QString">PWD=/home/onil/Documents</value>
+    <value type="QString">QTDIR=/usr/share/qt4</value>
+    <value type="QString">QT_PLUGIN_PATH=/home/onil/.kde/lib/kde4/plugins/:/usr/lib/kde4/plugins/</value>
+    <value type="QString">SESSION_MANAGER=local/onil-netbook:@/tmp/.ICE-unix/1603,unix/onil-netbook:/tmp/.ICE-unix/1603</value>
+    <value type="QString">SHELL=/bin/bash</value>
+    <value type="QString">SHLVL=0</value>
+    <value type="QString">SSH_AGENT_PID=1464</value>
+    <value type="QString">SSH_AUTH_SOCK=/tmp/ssh-vgudGK1419/agent.1419</value>
+    <value type="QString">USER=onil</value>
+    <value type="QString">WINDOWPATH=7</value>
+    <value type="QString">XCURSOR_THEME=oxy-white</value>
+    <value type="QString">XDG_DATA_DIRS=/usr/share:/usr/share:/usr/local/share</value>
+    <value type="QString">XDG_SESSION_COOKIE=4cb4c39594fcf9ea2256393c4c2e6053-1280051542.996827-333265015</value>
+    <value type="QString">XDM_MANAGED=method=classic</value>
+   </valuelist>
+   <value key="abstractProcess.IgnoreReturnValue" type="bool">false</value>
+   <valuelist key="abstractProcess.arguments" type="QVariantList">
+    <value type="QString">-w</value>
+   </valuelist>
+   <value key="abstractProcess.command" type="QString">/usr/bin/make</value>
+   <value key="abstractProcess.enabled" type="bool">true</value>
+   <value key="abstractProcess.workingDirectory" type="QString">/home/onil/Documents/Programmation/FamilyShoppingManager/family-shop-mgr/code/family-shop-mgr</value>
   </valuemap>
  </data>
  <data>
index 2dacd40..2f18d9e 100644 (file)
@@ -1,10 +1,18 @@
 #include <QtGui/QApplication>
 #include "FamilyShopManagerPC.h"
+#include "ShoppingTreeModel.h"
 
 int main(int argc, char *argv[])
 {
     QApplication a(argc, argv);
     FamilyShopManagerPC w;
+    ShoppingTreeModel model("ShoppingList.xml");
+    w.setModel(&model);
+
+    QObject::connect(&w, SIGNAL(addCategory(QModelIndex, QString)), &model, SLOT(addCategory(QModelIndex&,QString)));
+    QObject::connect(&w, SIGNAL(addItem(QModelIndex,QString)), &model, SLOT(addItem(QModelIndex&,QString)));
+    QObject::connect(&w, SIGNAL(removeSignal(QModelIndex)), &model, SLOT(removeElement(QModelIndex&)));
+
     w.show();
     return a.exec();
 }