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

Michał Świtakowski swistakers-guest at alioth.debian.org
Sat Aug 15 20:21:26 UTC 2009


Author: swistakers-guest
Date: 2009-08-15 20:21:26 +0000 (Sat, 15 Aug 2009)
New Revision: 1438

Modified:
   tux4kids-admin/trunk/libtux4kidsadmin/computerDir.cpp
   tux4kids-admin/trunk/libtux4kidsadmin/computerDir.h
   tux4kids-admin/trunk/libtux4kidsadmin/computerDir_p.h
   tux4kids-admin/trunk/libtux4kidsadmin/profileDir.h
   tux4kids-admin/trunk/libtux4kidsadmin/schoolData.cpp
   tux4kids-admin/trunk/libtux4kidsadmin/schoolData.h
   tux4kids-admin/trunk/libtux4kidsadmin/schoolData_p.h
   tux4kids-admin/trunk/tux4kids-admin/src/studentTableDelegate.cpp
Log:
switching computers works

Modified: tux4kids-admin/trunk/libtux4kidsadmin/computerDir.cpp
===================================================================
--- tux4kids-admin/trunk/libtux4kidsadmin/computerDir.cpp	2009-08-15 10:58:42 UTC (rev 1437)
+++ tux4kids-admin/trunk/libtux4kidsadmin/computerDir.cpp	2009-08-15 20:21:26 UTC (rev 1438)
@@ -1,9 +1,17 @@
 #include "computerDir.h"
 #include "computerDir_p.h"
 
+#include "studentDir.h"
+#include "studentDir_p.h"
+#include "profileDir.h"
+#include "profileDir_p.h"
+
+#include <QDebug>
+
 /**************************** ComputerPrivate *************************/
 
 ComputerDirPrivate::ComputerDirPrivate(QString path, int num)
+		: studentDir(0)
 {
 	QDir parentDir(path);
 	number = num;
@@ -41,3 +49,40 @@
 {
 }
 
+void ComputerDir::clear()
+{
+	Q_D(ComputerDir);
+	if (d->studentDir != 0) {
+		d->studentDir->d_func()->computerNumber = -1;
+	}
+	d->studentDir = 0;
+
+	foreach (QString fileName, d->mainDir.entryList(QDir::Files)) {
+		d->mainDir.remove(d->mainDir.absoluteFilePath(fileName));
+	}
+
+	foreach (QString dirName, d->mainDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) {
+		d->mainDir.rmdir(dirName);
+	}
+}
+
+void ComputerDir::setStudentDir(StudentDir *studentDir)
+{
+	Q_D(ComputerDir);
+
+	clear();
+	d->studentDir = studentDir;
+
+	studentDir->d_func()->computerNumber = d->number;
+	foreach(ProfileDir *profile, studentDir->profiles()) {
+		QFile::link(profile->d_func()->mainDir.absolutePath(),
+			    d->mainDir.absoluteFilePath(profile->type()));
+	}
+}
+
+StudentDir *ComputerDir::studentDir()
+{
+	Q_D(ComputerDir);
+	return d->studentDir;
+}
+

Modified: tux4kids-admin/trunk/libtux4kidsadmin/computerDir.h
===================================================================
--- tux4kids-admin/trunk/libtux4kidsadmin/computerDir.h	2009-08-15 10:58:42 UTC (rev 1437)
+++ tux4kids-admin/trunk/libtux4kidsadmin/computerDir.h	2009-08-15 20:21:26 UTC (rev 1438)
@@ -14,13 +14,14 @@
 	ComputerDir(QString path, int num, QObject *parent = 0);
 	~ComputerDir();
 
+	void clear();
+	void setStudentDir(StudentDir *studentDir);
+	StudentDir *studentDir();
+
 protected:
 	ComputerDirPrivate * const d_ptr;
 	ComputerDir(ComputerDirPrivate &dd, QObject *parent = 0);
 
-	QDir mainDir;
-	StudentDir *studentDir;
-
 private:
 	Q_DECLARE_PRIVATE(ComputerDir)
 	Q_DISABLE_COPY(ComputerDir)

Modified: tux4kids-admin/trunk/libtux4kidsadmin/computerDir_p.h
===================================================================
--- tux4kids-admin/trunk/libtux4kidsadmin/computerDir_p.h	2009-08-15 10:58:42 UTC (rev 1437)
+++ tux4kids-admin/trunk/libtux4kidsadmin/computerDir_p.h	2009-08-15 20:21:26 UTC (rev 1438)
@@ -16,6 +16,7 @@
 	ComputerDir *q_ptr;
 
 	QDir mainDir;
+	StudentDir *studentDir;
 	int number;
 };
 

Modified: tux4kids-admin/trunk/libtux4kidsadmin/profileDir.h
===================================================================
--- tux4kids-admin/trunk/libtux4kidsadmin/profileDir.h	2009-08-15 10:58:42 UTC (rev 1437)
+++ tux4kids-admin/trunk/libtux4kidsadmin/profileDir.h	2009-08-15 20:21:26 UTC (rev 1438)
@@ -30,6 +30,8 @@
 private:
 	Q_DECLARE_PRIVATE(ProfileDir)
 	Q_DISABLE_COPY(ProfileDir)
+
+	friend class ComputerDir;
 };
 
 #endif // PROFILEDIR_H

Modified: tux4kids-admin/trunk/libtux4kidsadmin/schoolData.cpp
===================================================================
--- tux4kids-admin/trunk/libtux4kidsadmin/schoolData.cpp	2009-08-15 10:58:42 UTC (rev 1437)
+++ tux4kids-admin/trunk/libtux4kidsadmin/schoolData.cpp	2009-08-15 20:21:26 UTC (rev 1438)
@@ -91,7 +91,6 @@
 	for (int i = 1; i <= computerCount; ++i) {
 		ComputerDir *computerDir = new ComputerDir(computersDir.absolutePath(), i);
 		computers.append(computerDir);
-		studentComputers[computerDir] = 0;
 	}
 }
 
@@ -160,12 +159,20 @@
 	return d->attributes->value("computer_count", 0).toInt();
 }
 
-int SchoolData::setComputerCount(int computerCount)
+void SchoolData::setComputerCount(int computerCount)
 {
+	//TODO
 }
 
-int SchoolData::setStudentComputer(StudentDir *student, int computerNumber)
+void SchoolData::setStudentComputer(StudentDir *student, int computerNumber)
 {
-	student->d_func()->computerNumber = computerNumber;
+	Q_D(const SchoolData);
+	if (computerNumber <= 0) {
+		if (student->computerNumber() > 0) {
+			d->computers[student->computerNumber() - 1]->clear();
+		}
+	} else {
+		d->computers[computerNumber - 1]->setStudentDir(student);
+	}
 }
 

Modified: tux4kids-admin/trunk/libtux4kidsadmin/schoolData.h
===================================================================
--- tux4kids-admin/trunk/libtux4kidsadmin/schoolData.h	2009-08-15 10:58:42 UTC (rev 1437)
+++ tux4kids-admin/trunk/libtux4kidsadmin/schoolData.h	2009-08-15 20:21:26 UTC (rev 1438)
@@ -29,8 +29,8 @@
 	QList<StudentDir *> students() const;
 	SchoolDatabase *schoolDatabase();
 	int computerCount() const;
-	int setComputerCount(int computerCount);
-	int setStudentComputer(StudentDir *student, int computerNumber);
+	void setComputerCount(int computerCount);
+	void setStudentComputer(StudentDir *student, int computerNumber);
 
 protected:
 	SchoolDataPrivate * const d_ptr;

Modified: tux4kids-admin/trunk/libtux4kidsadmin/schoolData_p.h
===================================================================
--- tux4kids-admin/trunk/libtux4kidsadmin/schoolData_p.h	2009-08-15 10:58:42 UTC (rev 1437)
+++ tux4kids-admin/trunk/libtux4kidsadmin/schoolData_p.h	2009-08-15 20:21:26 UTC (rev 1438)
@@ -37,7 +37,6 @@
 	QList<StudentDir *> students;
 	QList<ProfileDir *> profiles;
 	QList<ComputerDir *> computers;
-	QHash<ComputerDir *, StudentDir *> studentComputers;
 	QSettings *attributes;
 
 	SchoolDatabase database;

Modified: tux4kids-admin/trunk/tux4kids-admin/src/studentTableDelegate.cpp
===================================================================
--- tux4kids-admin/trunk/tux4kids-admin/src/studentTableDelegate.cpp	2009-08-15 10:58:42 UTC (rev 1437)
+++ tux4kids-admin/trunk/tux4kids-admin/src/studentTableDelegate.cpp	2009-08-15 20:21:26 UTC (rev 1438)
@@ -20,24 +20,34 @@
 
 void StudentTableDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
 {
-	QString data = index.data(Qt::DisplayRole).toString();
+	int computerNum = index.data(Qt::UserRole).toInt();
 	QComboBox *comboBox = static_cast<QComboBox *>(editor);
 	if (comboBox != 0) {
 		const StudentTableModel *model = qobject_cast<const StudentTableModel *>( index.model());
 		if (model != 0) {
 			int computerCount = model->computerCount();
-			comboBox->addItem(data);
+			if (computerNum > 0) {
+				comboBox->addItem(tr("Computer %1").arg(computerNum), computerNum);
+			}
+			comboBox->addItem(tr("None"), -1);
 			for (int i = 1; i <= computerCount; ++i) {
-				comboBox->addItem(tr("Computer %1").arg(i), i);
+				if (i != computerNum) {
+					comboBox->addItem(tr("Computer %1").arg(i), i);
+				}
 			}
 		} else {
 			const StudentTableProxyModel *proxyModel = qobject_cast<const StudentTableProxyModel *>(index.model());
 			const StudentTableModel *model = qobject_cast<const StudentTableModel *> (proxyModel->sourceModel());
 			if (model != 0) {
 				int computerCount = model->computerCount();
-				comboBox->addItem(data);
+				if (computerNum > 0) {
+				comboBox->addItem(tr("Computer %1").arg(computerNum), computerNum);
+				}
+				comboBox->addItem(tr("None"), -1);
 				for (int i = 1; i <= computerCount; ++i) {
-					comboBox->addItem(tr("Computer %1").arg(i), i);
+					if (i != computerNum) {
+						comboBox->addItem(tr("Computer %1").arg(i), i);
+					}
 				}
 			}
 		}




More information about the Tux4kids-commits mailing list