[Tux4kids-commits] r1255 - in tux4kids-admin/trunk: libtux4kidsadmin tux4kids-admin/src

Michał Świtakowski swistakers-guest at alioth.debian.org
Thu Jul 23 12:49:56 UTC 2009


Author: swistakers-guest
Date: 2009-07-23 12:49:53 +0000 (Thu, 23 Jul 2009)
New Revision: 1255

Added:
   tux4kids-admin/trunk/tux4kids-admin/src/classTableModel.cpp
   tux4kids-admin/trunk/tux4kids-admin/src/classTableModel.h
   tux4kids-admin/trunk/tux4kids-admin/src/manageClassDialog.cpp
   tux4kids-admin/trunk/tux4kids-admin/src/manageClassDialog.h
   tux4kids-admin/trunk/tux4kids-admin/src/manageClassDialog.ui
   tux4kids-admin/trunk/tux4kids-admin/src/manageClassesWidget.cpp
   tux4kids-admin/trunk/tux4kids-admin/src/manageClassesWidget.h
   tux4kids-admin/trunk/tux4kids-admin/src/manageClassesWidget.ui
Modified:
   tux4kids-admin/trunk/libtux4kidsadmin/schoolData.cpp
   tux4kids-admin/trunk/libtux4kidsadmin/schoolDatabase.cpp
   tux4kids-admin/trunk/tux4kids-admin/src/CMakeLists.txt
   tux4kids-admin/trunk/tux4kids-admin/src/mainController.cpp
   tux4kids-admin/trunk/tux4kids-admin/src/mainController.h
   tux4kids-admin/trunk/tux4kids-admin/src/mainWindow.cpp
   tux4kids-admin/trunk/tux4kids-admin/src/src.pro
   tux4kids-admin/trunk/tux4kids-admin/src/studentTableModel.cpp
   tux4kids-admin/trunk/tux4kids-admin/src/studentTableModel.h
Log:
some gui elements for managing classes

Modified: tux4kids-admin/trunk/libtux4kidsadmin/schoolData.cpp
===================================================================
--- tux4kids-admin/trunk/libtux4kidsadmin/schoolData.cpp	2009-07-23 00:24:05 UTC (rev 1254)
+++ tux4kids-admin/trunk/libtux4kidsadmin/schoolData.cpp	2009-07-23 12:49:53 UTC (rev 1255)
@@ -21,7 +21,7 @@
 
 	loadStudentDirs();
 
-	//qDebug() << database.open("/home/swistak/test.db");
+	qDebug() << database.open("/home/swistak/test.db");
 }
 
 

Modified: tux4kids-admin/trunk/libtux4kidsadmin/schoolDatabase.cpp
===================================================================
--- tux4kids-admin/trunk/libtux4kidsadmin/schoolDatabase.cpp	2009-07-23 00:24:05 UTC (rev 1254)
+++ tux4kids-admin/trunk/libtux4kidsadmin/schoolDatabase.cpp	2009-07-23 12:49:53 UTC (rev 1255)
@@ -40,6 +40,28 @@
 		lastError = createTeachers.lastError().text();
 		return;
 	}
+
+	QSqlQuery createStudents("CREATE TABLE students (id integer primary key, profile_name text)", db);
+	if (!createStudents.isActive()) {
+		error = true;
+		lastError = createStudents.lastError().text();
+		return;
+	}
+
+	QSqlQuery createClassTeachers("CREATE TABLE class_teachers (id_class integer, id_teacher integer, primary key(id_class,id_teacher))", db);
+	if (!createClassTeachers.isActive()) {
+		error = true;
+		lastError = createClassTeachers.lastError().text();
+		return;
+	}
+
+	QSqlQuery createClassStudents("CREATE TABLE class_students (id_class integer, id_student integer, primary key(id_class,id_student))", db);
+	if (!createClassStudents.isActive()) {
+		error = true;
+		lastError = createClassStudents.lastError().text();
+		return;
+	}
+
 }
 
 /************************ SchoolDatabase **************************/
@@ -66,6 +88,10 @@
 {
 	Q_D(SchoolDatabase);
 
+	if (d->db.isOpen()) {
+		close();
+	}
+
 	QFile dbFile(dbFilePath);
 	d->db.setDatabaseName(dbFilePath);
 	if (dbFile.exists()) {
@@ -95,3 +121,6 @@
 	Q_D(SchoolDatabase);
 	return d->lastError;
 }
+
+
+

Modified: tux4kids-admin/trunk/tux4kids-admin/src/CMakeLists.txt
===================================================================
--- tux4kids-admin/trunk/tux4kids-admin/src/CMakeLists.txt	2009-07-23 00:24:05 UTC (rev 1254)
+++ tux4kids-admin/trunk/tux4kids-admin/src/CMakeLists.txt	2009-07-23 12:49:53 UTC (rev 1255)
@@ -12,7 +12,10 @@
 	manageStudentsWidget.cpp
 	addStudentDialog.cpp
 	studentTableModel.cpp 
-	studentTableProxyModel.cpp )
+	studentTableProxyModel.cpp 
+	manageClassesWidget.cpp 
+	classTableModel.cpp
+	manageClassDialog.cpp )
 
 SET(TUX4KIDS-ADMIN_MOC_HEADERS 
 	mainWindow.h
@@ -22,13 +25,18 @@
 	manageStudentsWidget.h
 	addStudentDialog.h
 	studentTableModel.h 
-	studentTableProxyModel.h )
+	studentTableProxyModel.h 
+	manageClassesWidget.h 
+	classTableModel.h 
+	manageClassDialog.h )
 
 SET(TUX4KIDS-ADMIN_UIS 
 	mainWindow.ui 
 	pluginManagerDialog.ui 
 	manageStudentsWidget.ui 
-	addStudentDialog.ui )
+	addStudentDialog.ui
+	manageClassesWidget.ui 
+	manageClassDialog.ui )
 
 # enable warnings
 ADD_DEFINITIONS( -Wall )

Added: tux4kids-admin/trunk/tux4kids-admin/src/classTableModel.cpp
===================================================================
--- tux4kids-admin/trunk/tux4kids-admin/src/classTableModel.cpp	                        (rev 0)
+++ tux4kids-admin/trunk/tux4kids-admin/src/classTableModel.cpp	2009-07-23 12:49:53 UTC (rev 1255)
@@ -0,0 +1,6 @@
+#include "classTableModel.h"
+
+ClassTableModel::ClassTableModel(QObject *parent)
+		: QAbstractTableModel(parent)
+{
+}

Added: tux4kids-admin/trunk/tux4kids-admin/src/classTableModel.h
===================================================================
--- tux4kids-admin/trunk/tux4kids-admin/src/classTableModel.h	                        (rev 0)
+++ tux4kids-admin/trunk/tux4kids-admin/src/classTableModel.h	2009-07-23 12:49:53 UTC (rev 1255)
@@ -0,0 +1,13 @@
+#ifndef CLASSTABLEMODEL_H
+#define CLASSTABLEMODEL_H
+
+#include <QAbstractTableModel>
+
+class ClassTableModel : public QAbstractTableModel
+{
+	Q_OBJECT
+public:
+	ClassTableModel(QObject *parent = 0);
+};
+
+#endif // CLASSTABLEMODEL_H

Modified: tux4kids-admin/trunk/tux4kids-admin/src/mainController.cpp
===================================================================
--- tux4kids-admin/trunk/tux4kids-admin/src/mainController.cpp	2009-07-23 00:24:05 UTC (rev 1254)
+++ tux4kids-admin/trunk/tux4kids-admin/src/mainController.cpp	2009-07-23 12:49:53 UTC (rev 1255)
@@ -6,7 +6,8 @@
 #include "schoolData.h"
 #include "profileDirFactory.h"
 
-MainController::MainController()
+MainController::MainController(QObject *parent)
+		: QObject(parent)
 {
 	m_pluginManager.setPluginsPath(qApp->applicationDirPath() + "/plugins");
 	m_pluginManager.loadPlugins();

Modified: tux4kids-admin/trunk/tux4kids-admin/src/mainController.h
===================================================================
--- tux4kids-admin/trunk/tux4kids-admin/src/mainController.h	2009-07-23 00:24:05 UTC (rev 1254)
+++ tux4kids-admin/trunk/tux4kids-admin/src/mainController.h	2009-07-23 12:49:53 UTC (rev 1255)
@@ -14,7 +14,7 @@
 	Q_OBJECT
 
 public:
-	MainController();
+	MainController(QObject *parent = 0);
 	~MainController();
 
 	PluginManager *pluginManager();

Modified: tux4kids-admin/trunk/tux4kids-admin/src/mainWindow.cpp
===================================================================
--- tux4kids-admin/trunk/tux4kids-admin/src/mainWindow.cpp	2009-07-23 00:24:05 UTC (rev 1254)
+++ tux4kids-admin/trunk/tux4kids-admin/src/mainWindow.cpp	2009-07-23 12:49:53 UTC (rev 1255)
@@ -3,6 +3,7 @@
 #include "pluginManagerDialog.h"
 #include "manageStudentsWidget.h"
 #include "mainController.h"
+#include "manageClassesWidget.h"
 
 MainWindow::MainWindow(MainController *mainController, QWidget *parent) : QMainWindow(parent), m_ui(new Ui::MainWindow)
 {
@@ -10,6 +11,7 @@
 
 	m_mainController = mainController;
 	m_ui->tabWidget->insertTab(1, new ManageStudentsWidget(m_mainController, this), tr("Students"));
+	m_ui->tabWidget->insertTab(2, new ManageClassesWidget(m_mainController, this), tr("Classes and Teachers"));
 
 	connect(m_ui->actionPlugins, SIGNAL(triggered()), this, SLOT(pluginsManagerClicked()));
 }

Added: tux4kids-admin/trunk/tux4kids-admin/src/manageClassDialog.cpp
===================================================================
--- tux4kids-admin/trunk/tux4kids-admin/src/manageClassDialog.cpp	                        (rev 0)
+++ tux4kids-admin/trunk/tux4kids-admin/src/manageClassDialog.cpp	2009-07-23 12:49:53 UTC (rev 1255)
@@ -0,0 +1,19 @@
+#include "manageClassDialog.h"
+#include "ui_manageClassDialog.h"
+#include "mainController.h"
+
+ManageClassDialog::ManageClassDialog(MainController *mainController, QWidget *parent) :
+		QDialog(parent),
+		m_ui(new Ui::ManageClassDialog),
+		m_mainController(mainController)
+{
+	m_ui->setupUi(this);
+
+	m_studentTableModel.setSchoolData(m_mainController->schoolData());
+	m_ui->studentsTable->setModel(&m_studentTableModel);
+}
+
+ManageClassDialog::~ManageClassDialog()
+{
+	delete m_ui;
+}

Added: tux4kids-admin/trunk/tux4kids-admin/src/manageClassDialog.h
===================================================================
--- tux4kids-admin/trunk/tux4kids-admin/src/manageClassDialog.h	                        (rev 0)
+++ tux4kids-admin/trunk/tux4kids-admin/src/manageClassDialog.h	2009-07-23 12:49:53 UTC (rev 1255)
@@ -0,0 +1,29 @@
+#ifndef MANAGECLASSDIALOG_H
+#define MANAGECLASSDIALOG_H
+
+#include <QtGui/QDialog>
+#include <QPointer>
+
+#include "studentTableModel.h"
+
+class MainController;
+
+namespace Ui {
+	class ManageClassDialog;
+}
+
+class ManageClassDialog : public QDialog
+{
+	Q_OBJECT
+public:
+	ManageClassDialog(MainController *mainController, QWidget *parent = 0);
+	~ManageClassDialog();
+
+private:
+	Ui::ManageClassDialog *m_ui;
+	QPointer <MainController> m_mainController;
+	StudentTableModel m_studentTableModel;
+
+};
+
+#endif // MANAGECLASSDIALOG_H

Added: tux4kids-admin/trunk/tux4kids-admin/src/manageClassDialog.ui
===================================================================
--- tux4kids-admin/trunk/tux4kids-admin/src/manageClassDialog.ui	                        (rev 0)
+++ tux4kids-admin/trunk/tux4kids-admin/src/manageClassDialog.ui	2009-07-23 12:49:53 UTC (rev 1255)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ManageClassDialog</class>
+ <widget class="QDialog" name="ManageClassDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>424</width>
+    <height>367</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <layout class="QFormLayout" name="formLayout">
+     <property name="fieldGrowthPolicy">
+      <enum>QFormLayout::ExpandingFieldsGrow</enum>
+     </property>
+     <item row="0" column="1">
+      <widget class="QLineEdit" name="classNameEdit"/>
+     </item>
+     <item row="0" column="0">
+      <widget class="QLabel" name="label">
+       <property name="text">
+        <string>Class name:</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QTableView" name="studentsTable"/>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

Added: tux4kids-admin/trunk/tux4kids-admin/src/manageClassesWidget.cpp
===================================================================
--- tux4kids-admin/trunk/tux4kids-admin/src/manageClassesWidget.cpp	                        (rev 0)
+++ tux4kids-admin/trunk/tux4kids-admin/src/manageClassesWidget.cpp	2009-07-23 12:49:53 UTC (rev 1255)
@@ -0,0 +1,28 @@
+#include "manageClassesWidget.h"
+#include "ui_manageClassesWidget.h"
+#include "manageClassDialog.h"
+#include "mainController.h"
+
+ManageClassesWidget::ManageClassesWidget(MainController *mainController, QWidget *parent) :
+		QWidget(parent),
+		m_ui(new Ui::ManageClassesWidget),
+		m_mainController(mainController)
+{
+	m_ui->setupUi(this);
+
+	connect(m_ui->addClassButton, SIGNAL(clicked()), this, SLOT(addClicked()));
+}
+
+ManageClassesWidget::~ManageClassesWidget()
+{
+	delete m_ui;
+}
+
+void ManageClassesWidget::addClicked()
+{
+	if (m_addClassDialog == 0) {
+		m_addClassDialog = new ManageClassDialog(m_mainController);
+	}
+
+	m_addClassDialog->showNormal();
+}

Added: tux4kids-admin/trunk/tux4kids-admin/src/manageClassesWidget.h
===================================================================
--- tux4kids-admin/trunk/tux4kids-admin/src/manageClassesWidget.h	                        (rev 0)
+++ tux4kids-admin/trunk/tux4kids-admin/src/manageClassesWidget.h	2009-07-23 12:49:53 UTC (rev 1255)
@@ -0,0 +1,31 @@
+#ifndef MANAGECLASSESWIDGET_H
+#define MANAGECLASSESWIDGET_H
+
+#include <QtGui/QWidget>
+#include <QPointer>
+
+namespace Ui {
+	class ManageClassesWidget;
+}
+
+class MainController;
+class ManageClassDialog;
+
+class ManageClassesWidget : public QWidget
+{
+	Q_OBJECT
+public:
+	ManageClassesWidget(MainController *mainController, QWidget *parent = 0);
+	~ManageClassesWidget();
+
+private:
+	Ui::ManageClassesWidget *m_ui;
+
+	QPointer<MainController> m_mainController;
+	QPointer<ManageClassDialog> m_addClassDialog;
+
+private slots:
+	void addClicked();
+};
+
+#endif // MANAGECLASSESWIDGET_H

Added: tux4kids-admin/trunk/tux4kids-admin/src/manageClassesWidget.ui
===================================================================
--- tux4kids-admin/trunk/tux4kids-admin/src/manageClassesWidget.ui	                        (rev 0)
+++ tux4kids-admin/trunk/tux4kids-admin/src/manageClassesWidget.ui	2009-07-23 12:49:53 UTC (rev 1255)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ManageClassesWidget</class>
+ <widget class="QWidget" name="ManageClassesWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QTableView" name="classesTable"/>
+   </item>
+   <item>
+    <widget class="QPushButton" name="addClassButton">
+     <property name="text">
+      <string>Add</string>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

Modified: tux4kids-admin/trunk/tux4kids-admin/src/src.pro
===================================================================
--- tux4kids-admin/trunk/tux4kids-admin/src/src.pro	2009-07-23 00:24:05 UTC (rev 1254)
+++ tux4kids-admin/trunk/tux4kids-admin/src/src.pro	2009-07-23 12:49:53 UTC (rev 1255)
@@ -12,7 +12,10 @@
     manageStudentsWidget.cpp \
     addStudentDialog.cpp \
     studentTableModel.cpp \
-    studentTableProxyModel.cpp
+    studentTableProxyModel.cpp \
+    manageClassesWidget.cpp \
+    classTableModel.cpp \
+    manageClassDialog.cpp
 HEADERS += mainWindow.h \
     mainController.h \
     pluginManager.h \
@@ -22,10 +25,15 @@
     manageStudentsWidget.h \
     addStudentDialog.h \
     studentTableModel.h \
-    studentTableProxyModel.h
+    studentTableProxyModel.h \
+    manageClassesWidget.h \
+    classTableModel.h \
+    manageClassDialog.h
 FORMS += mainWindow.ui \
     pluginManagerDialog.ui \
     manageStudentsWidget.ui \
-    addStudentDialog.ui
+    addStudentDialog.ui \
+    manageClassesWidget.ui \
+    manageClassDialog.ui
 LIBS += -ltux4kidsadmin \
     -L../../libtux4kidsadmin

Modified: tux4kids-admin/trunk/tux4kids-admin/src/studentTableModel.cpp
===================================================================
--- tux4kids-admin/trunk/tux4kids-admin/src/studentTableModel.cpp	2009-07-23 00:24:05 UTC (rev 1254)
+++ tux4kids-admin/trunk/tux4kids-admin/src/studentTableModel.cpp	2009-07-23 12:49:53 UTC (rev 1255)
@@ -20,7 +20,7 @@
 
 int StudentTableModel::columnCount(const QModelIndex &parent) const
 {
-	return 2;
+	return 3;
 }
 
 QVariant StudentTableModel::headerData(int section, Qt::Orientation orientation, int role) const
@@ -60,13 +60,46 @@
 		case StudentLastName:
 			return m_students.at(index.row())->lastName();
 		}
+	} else if (role == Qt::CheckStateRole) {
+		if (index.column() == StudentSelected) {
+			if (m_studentsSelection[index.row()]) {
+				return Qt::Checked;
+			} else {
+				return Qt::Unchecked;
+			}
+		}
 	}
 	return QVariant();
 }
 
+Qt::ItemFlags StudentTableModel::flags(const QModelIndex &index) const
+{
+	Qt::ItemFlags result;
+	result = Qt::ItemIsEnabled
+			| Qt::ItemIsSelectable;
+	if (index.column() == StudentSelected) {
+		result |= (Qt::ItemIsUserCheckable | Qt::ItemIsEditable);
+	}
+	return result;
+}
+
+bool StudentTableModel::setData(const QModelIndex &index, const QVariant &value, int role)
+{
+	if (role == Qt::CheckStateRole && index.column() == StudentSelected) {
+		m_studentsSelection[index.row()] = !m_studentsSelection[index.row()];
+		emit dataChanged(index, index);
+		return true;
+	}
+	return false;
+}
+
 void StudentTableModel::setSchoolData(const SchoolData *schoolData)
 {
 	m_students = schoolData->students();
+
+	for (int i = 0; i < m_students.size(); i++) {
+		m_studentsSelection.append(false);
+	}
 	connect(schoolData, SIGNAL(studentAdded(StudentDir*)), this,
 		SLOT(addStudent(StudentDir*)));
 	reset();

Modified: tux4kids-admin/trunk/tux4kids-admin/src/studentTableModel.h
===================================================================
--- tux4kids-admin/trunk/tux4kids-admin/src/studentTableModel.h	2009-07-23 00:24:05 UTC (rev 1254)
+++ tux4kids-admin/trunk/tux4kids-admin/src/studentTableModel.h	2009-07-23 12:49:53 UTC (rev 1255)
@@ -19,17 +19,21 @@
 	int columnCount(const QModelIndex &parent = QModelIndex()) const;
 	QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
 	QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+	Qt::ItemFlags flags(const QModelIndex &index) const;
+	bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
 
 	void setSchoolData(const SchoolData *schoolData);
 
 protected:
 
 	enum StudentField {
-		StudentFirstName = 0,
-		StudentLastName = 1
+		StudentSelected = 0,
+		StudentFirstName = 1,
+		StudentLastName = 2
 	};
 
 	QList< QPointer<StudentDir> > m_students;
+	QList<bool> m_studentsSelection;
 
 private slots:
 	void addStudent(StudentDir *newStudent);




More information about the Tux4kids-commits mailing list