[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