Adding new category is supported.

Leonardo Robol [2011-10-24 15:11]
Adding new category is supported.
Filename
Larss.pro
include/editcategorydialog.h
include/mainwindow.h
larss/editcategorydialog.cpp
larss/mainwindow.cpp
ui/editcategorydialog.ui
ui/mainwindow.ui
diff --git a/Larss.pro b/Larss.pro
index dd58d63..35dafc4 100644
--- a/Larss.pro
+++ b/Larss.pro
@@ -15,15 +15,18 @@ SOURCES += larss/main.cpp\
     larss/feedmodel.cpp \
     larss/rssparser.cpp \
     larss/feedpoller.cpp \
-    larss/editfeeddialog.cpp
+    larss/editfeeddialog.cpp \
+    larss/editcategorydialog.cpp

 HEADERS  += include/mainwindow.h \
     include/feedmodel.h \
     include/rssparser.h \
     include/feedpoller.h \
-    include/editfeeddialog.h
+    include/editfeeddialog.h \
+    include/editcategorydialog.h

 FORMS    += ui/mainwindow.ui \
-    ui/editfeeddialog.ui
+    ui/editfeeddialog.ui \
+    ui/editcategorydialog.ui

 INCLUDEPATH += ./include
diff --git a/include/editcategorydialog.h b/include/editcategorydialog.h
new file mode 100644
index 0000000..74662ab
--- /dev/null
+++ b/include/editcategorydialog.h
@@ -0,0 +1,31 @@
+#ifndef EDITCATEGORYDIALOG_H
+#define EDITCATEGORYDIALOG_H
+
+#include <QDialog>
+
+namespace Ui {
+    class EditCategoryDialog;
+}
+
+namespace Larss {
+
+    class EditCategoryDialog : public QDialog
+    {
+        Q_OBJECT
+
+    public:
+        explicit EditCategoryDialog(QWidget *parent = 0);
+        ~EditCategoryDialog();
+
+        /**
+         * @brief Get the name of the category to be created.
+         */
+        QString getCategoryName();
+
+    private:
+        Ui::EditCategoryDialog *ui;
+    };
+
+}
+
+#endif // EDITCATEGORYDIALOG_H
diff --git a/include/mainwindow.h b/include/mainwindow.h
index e326cc0..dc628ec 100644
--- a/include/mainwindow.h
+++ b/include/mainwindow.h
@@ -32,6 +32,8 @@ private slots:

     void on_actionAdd_Feed_triggered();

+    void on_actionAdd_Category_triggered();
+
 private:
     Ui::MainWindow *ui;
     void do_exit();
diff --git a/larss/editcategorydialog.cpp b/larss/editcategorydialog.cpp
new file mode 100644
index 0000000..51a8c0e
--- /dev/null
+++ b/larss/editcategorydialog.cpp
@@ -0,0 +1,22 @@
+#include "include/editcategorydialog.h"
+#include "ui_editcategorydialog.h"
+
+using namespace Larss;
+
+EditCategoryDialog::EditCategoryDialog(QWidget *parent) :
+    QDialog(parent),
+    ui(new Ui::EditCategoryDialog)
+{
+    ui->setupUi(this);
+}
+
+EditCategoryDialog::~EditCategoryDialog()
+{
+    delete ui;
+}
+
+QString
+EditCategoryDialog::getCategoryName()
+{
+    return ui->newCategoryName->text();
+}
diff --git a/larss/mainwindow.cpp b/larss/mainwindow.cpp
index d52f0f3..8e0610a 100644
--- a/larss/mainwindow.cpp
+++ b/larss/mainwindow.cpp
@@ -1,6 +1,7 @@
 #include "mainwindow.h"
 #include "ui_mainwindow.h"
 #include "editfeeddialog.h"
+#include "editcategorydialog.h"
 #include <QDebug>
 #include <QtGui>

@@ -112,8 +113,16 @@ void Larss::MainWindow::on_actionAdd_Feed_triggered()
     Larss::EditFeedDialog dialog(this, feedModel);
     if (dialog.exec() == QDialog::Accepted)
     {
-        qDebug() << "Adding new feed";
         feedModel->addFeed(dialog.getFeedName(),
                            dialog.getFeedUrl(), dialog.getCategoryId());
     }
 }
+
+void Larss::MainWindow::on_actionAdd_Category_triggered()
+{
+    Larss::EditCategoryDialog dialog(this);
+    if (dialog.exec() == QDialog::Accepted)
+    {
+        feedModel->addCategory(dialog.getCategoryName());
+    }
+}
diff --git a/ui/editcategorydialog.ui b/ui/editcategorydialog.ui
new file mode 100644
index 0000000..bba5ffa
--- /dev/null
+++ b/ui/editcategorydialog.ui
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>EditCategoryDialog</class>
+ <widget class="QDialog" name="EditCategoryDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>261</width>
+    <height>103</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_2">
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <item>
+      <widget class="QLabel" name="label">
+       <property name="text">
+        <string>Insert the name of the new category</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <item>
+        <widget class="QLabel" name="label_2">
+         <property name="text">
+          <string>Name</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QLineEdit" name="newCategoryName"/>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QDialogButtonBox" name="buttonBox">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="standardButtons">
+        <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>EditCategoryDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>EditCategoryDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/ui/mainwindow.ui b/ui/mainwindow.ui
index 7247ffb..ead9dc2 100644
--- a/ui/mainwindow.ui
+++ b/ui/mainwindow.ui
@@ -98,6 +98,7 @@
     <property name="title">
      <string>File</string>
     </property>
+    <addaction name="actionAdd_Category"/>
     <addaction name="actionAdd_Feed"/>
     <addaction name="separator"/>
     <addaction name="actionExit"/>
@@ -115,6 +116,11 @@
     <string>Add Feed</string>
    </property>
   </action>
+  <action name="actionAdd_Category">
+   <property name="text">
+    <string>Add Category</string>
+   </property>
+  </action>
  </widget>
  <layoutdefault spacing="6" margin="11"/>
  <customwidgets>
ViewGit