added #27. changed directories (overloaded), added some checkings.

This commit is contained in:
liranbg 2014-10-08 07:14:50 +03:00
parent 5a287a25ef
commit 6d623b7800
34 changed files with 697 additions and 106 deletions

View file

@ -25,8 +25,9 @@ TRANSLATIONS = jce_en.ts \
FORMS += \ FORMS += \
main/mainscreen.ui \ main/mainscreen.ui \
src/jceData/Calendar/calendarDialog.ui \ src/jceData/Grades/graph/gradegraph.ui \
src/jceData/Grades/graph/gradegraph.ui src/jceData/Calendar/Exams/examDialog.ui \
src/jceData/Calendar/coursesSchedule/calendarDialog.ui
RESOURCES += \ RESOURCES += \
resources/connectionstatus.qrc resources/connectionstatus.qrc
@ -38,7 +39,6 @@ HEADERS += \
main/mainscreen.h \ main/mainscreen.h \
src/appDatabase/savedata.h \ src/appDatabase/savedata.h \
src/jceConnection/jcesslclient.h \ src/jceConnection/jcesslclient.h \
src/jceData/Calendar/calendarPage.h \
src/jceData/Grades/gradeCourse.h \ src/jceData/Grades/gradeCourse.h \
src/jceData/Grades/gradePage.h \ src/jceData/Grades/gradePage.h \
src/jceData/course.h \ src/jceData/course.h \
@ -46,15 +46,19 @@ HEADERS += \
src/jceSettings/jcelogin.h \ src/jceSettings/jcelogin.h \
src/jceSettings/jceLoginHtmlScripts.h \ src/jceSettings/jceLoginHtmlScripts.h \
src/jceSettings/user.h \ src/jceSettings/user.h \
src/jceData/Calendar/calendarCourse.h \
src/jceData/Calendar/calendarSchedule.h \
src/jceData/CSV/csv_exporter.h \ src/jceData/CSV/csv_exporter.h \
src/appDatabase/simplecrypt.h \ src/appDatabase/simplecrypt.h \
src/jceData/Calendar/calendarDialog.h \
src/appDatabase/jce_logger.h \ src/appDatabase/jce_logger.h \
src/jceData/Grades/graph/qcustomplot.h \ src/jceData/Grades/graph/qcustomplot.h \
src/jceData/Grades/graph/gradegraph.h \ src/jceData/Grades/graph/gradegraph.h \
src/jceData/Calendar/calendarExam.h src/jceData/Calendar/calendarPageCourse.h \
src/jceData/Calendar/Exams/examDialog.h \
src/jceData/Calendar/Exams/calendarExam.h \
src/jceData/Calendar/Exams/calendarExamCourse.h \
src/jceData/Calendar/coursesSchedule/calendarDialog.h \
src/jceData/Calendar/coursesSchedule/calendarPage.h \
src/jceData/Calendar/coursesSchedule/calendarPageCourse.h \
src/jceData/Calendar/coursesSchedule/calendarSchedule.h
SOURCES += \ SOURCES += \
main/CalendarTab/CalendarManager.cpp \ main/CalendarTab/CalendarManager.cpp \
@ -64,18 +68,20 @@ SOURCES += \
main/mainscreen.cpp \ main/mainscreen.cpp \
src/appDatabase/savedata.cpp \ src/appDatabase/savedata.cpp \
src/jceConnection/jcesslclient.cpp \ src/jceConnection/jcesslclient.cpp \
src/jceData/Calendar/calendarPage.cpp \
src/jceData/Grades/gradeCourse.cpp \ src/jceData/Grades/gradeCourse.cpp \
src/jceData/Grades/gradePage.cpp \ src/jceData/Grades/gradePage.cpp \
src/jceData/page.cpp \ src/jceData/page.cpp \
src/jceSettings/jcelogin.cpp \ src/jceSettings/jcelogin.cpp \
src/jceSettings/user.cpp \ src/jceSettings/user.cpp \
src/jceData/Calendar/calendarCourse.cpp \
src/jceData/Calendar/calendarSchedule.cpp \
src/jceData/CSV/csv_exporter.cpp \ src/jceData/CSV/csv_exporter.cpp \
src/appDatabase/simplecrypt.cpp \ src/appDatabase/simplecrypt.cpp \
src/jceData/Calendar/calendarDialog.cpp \
src/appDatabase/jce_logger.cpp \ src/appDatabase/jce_logger.cpp \
src/jceData/Grades/graph/qcustomplot.cpp \ src/jceData/Grades/graph/qcustomplot.cpp \
src/jceData/Grades/graph/gradegraph.cpp \ src/jceData/Grades/graph/gradegraph.cpp \
src/jceData/Calendar/calendarExam.cpp src/jceData/Calendar/Exams/examDialog.cpp \
src/jceData/Calendar/Exams/calendarExam.cpp \
src/jceData/Calendar/Exams/calendarExamCourse.cpp \
src/jceData/Calendar/coursesSchedule/calendarDialog.cpp \
src/jceData/Calendar/coursesSchedule/calendarPage.cpp \
src/jceData/Calendar/coursesSchedule/calendarPageCourse.cpp \
src/jceData/Calendar/coursesSchedule/calendarSchedule.cpp

View file

@ -1,15 +1,25 @@
#include "CalendarManager.h" #include "CalendarManager.h"
CalendarManager::CalendarManager(QGridLayout *ptr) CalendarManager::CalendarManager(QWidget *parent, QGridLayout *ptr) : QWidget(parent)
{ {
caliSchedPtr = new calendarSchedule(); caliSchedPtr = new calendarSchedule(this);
examSchePtr = new calendarExam();
ptr->addWidget(caliSchedPtr); ptr->addWidget(caliSchedPtr);
caliDialog = new CalendarDialog(); caliDialog = new CalendarDialog(this);
examDialogPtr = new examDialog(this,examSchePtr);
} }
void CalendarManager::setCalendar(QString html) void CalendarManager::setCalendar(QString html)
{ {
caliSchedPtr->setPage(html); caliSchedPtr->setPage(html);
}
void CalendarManager::setExamsSchedule(QString html)
{
examSchePtr->setPage(html);
examDialogPtr->initializingDataIntoTable();
examDialogPtr->show();
} }
void CalendarManager::exportCalendarCSV() //need to add fix to the null pointer bug void CalendarManager::exportCalendarCSV() //need to add fix to the null pointer bug
{ {

View file

@ -1,21 +1,25 @@
#ifndef CALENDARMANAGER_H #ifndef CALENDARMANAGER_H
#define CALENDARMANAGER_H #define CALENDARMANAGER_H
#include "./src/jceData/Calendar/calendarPage.h" #include "./src/jceData/Calendar/coursesSchedule/calendarPage.h"
#include "./src/jceData/Calendar/calendarSchedule.h" #include "./src/jceData/Calendar/coursesSchedule/calendarSchedule.h"
#include "./src/jceData/Calendar/coursesSchedule/calendarDialog.h"
#include "./src/jceData/CSV/csv_exporter.h" #include "./src/jceData/CSV/csv_exporter.h"
#include "./src/jceData/Calendar/calendarDialog.h"
#include "./src/jceData/Calendar/Exams/calendarExam.h"
#include "./src/jceData/Calendar/Exams/examDialog.h"
#include <QObject> #include <QObject>
#include <QWidget>
#include <QGridLayout> #include <QGridLayout>
#include <QMessageBox> #include <QMessageBox>
class CalendarManager : public QObject class CalendarManager : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
CalendarManager(QGridLayout *ptr); CalendarManager(QWidget *parent = 0, QGridLayout *ptr = 0);
~CalendarManager() ~CalendarManager()
{ {
delete caliSchedPtr; delete caliSchedPtr;
@ -23,9 +27,15 @@ public:
} }
void exportCalendarCSV(); void exportCalendarCSV();
void setCalendar(QString html); void setCalendar(QString html);
void setExamsSchedule(QString html);
void resetTable() { if (caliSchedPtr != NULL) caliSchedPtr->clearTableItems(); } void resetTable() { if (caliSchedPtr != NULL) caliSchedPtr->clearTableItems(); }
private: private:
calendarExam * examSchePtr;
examDialog * examDialogPtr;
calendarSchedule * caliSchedPtr; calendarSchedule * caliSchedPtr;
CalendarDialog * caliDialog; CalendarDialog * caliDialog;

View file

@ -146,6 +146,14 @@ int loginHandler::makeCalendarRequest(int year, int semester)
else else
return jceLogin::JCE_NOT_CONNECTED; return jceLogin::JCE_NOT_CONNECTED;
} }
int loginHandler::makeExamsScheduleRequest(int year, int semester)
{
if (isLoggedInFlag())
return jceLog->getExams(year,semester);
else
return jceLogin::JCE_NOT_CONNECTED;
}
void loginHandler::setIconConnectionStatus(jceLogin::jceStatus statusDescription) void loginHandler::setIconConnectionStatus(jceLogin::jceStatus statusDescription)
{ {
QPixmap iconPix; QPixmap iconPix;

View file

@ -37,6 +37,7 @@ public:
int makeGradeRequest(int fromYear, int toYear, int fromSemester, int toSemester); int makeGradeRequest(int fromYear, int toYear, int fromSemester, int toSemester);
int makeCalendarRequest(int year,int semester); int makeCalendarRequest(int year,int semester);
int makeExamsScheduleRequest(int year, int semester);
private slots: private slots:
void readyAfterConnectionLost(); void readyAfterConnectionLost();

View file

@ -31,7 +31,7 @@ MainScreen::MainScreen(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainSc
this->userLoginSetting = new user("",""); this->userLoginSetting = new user("","");
this->courseTableMgr = new coursesTableManager(ui->coursesTable,userLoginSetting); this->courseTableMgr = new coursesTableManager(ui->coursesTable,userLoginSetting);
this->loginHandel = new loginHandler(userLoginSetting,ui->statusBar,ui->loginButton,ui->progressBar); this->loginHandel = new loginHandler(userLoginSetting,ui->statusBar,ui->loginButton,ui->progressBar);
this->calendar = new CalendarManager(ui->calendarGridLayoutMain); this->calendar = new CalendarManager(this,ui->calendarGridLayoutMain);
this->data = new SaveData(); this->data = new SaveData();
//check login File //check login File
@ -247,6 +247,36 @@ void MainScreen::on_graphButton_clicked()
//EVENTS ON CALENDAR TAB //EVENTS ON CALENDAR TAB
void MainScreen::on_examsBtn_clicked()
{
ui->progressBar->setValue(0);
qDebug() << Q_FUNC_INFO << "in: " << ui->tabWidget->currentWidget()->objectName();
int status = 0;
QString page;
QApplication::setOverrideCursor(Qt::WaitCursor);
if (loginHandel->isLoggedInFlag())
{
ui->statusBar->showMessage(tr("Getting exams..."));
if ((status = loginHandel->makeExamsScheduleRequest(ui->spinBoxYear->value(),ui->spinBoxSemester->value())) == jceLogin::JCE_PAGE_PASSED)
{
ui->statusBar->showMessage(tr("Done."),1000);
page = loginHandel->getCurrentPageContect();
calendar->setExamsSchedule(page);
ui->progressBar->setValue(100);
qDebug() << Q_FUNC_INFO << "exams schedule is loaded";
ui->statusBar->showMessage(tr("Done"));
}
else if (status == jceLogin::JCE_NOT_CONNECTED)
{
qWarning() << Q_FUNC_INFO << "not connected";
QApplication::restoreOverrideCursor();
QMessageBox::critical(this,tr("Error"),tr("Not Connected"));
}
else
qCritical() << Q_FUNC_INFO << "exams request get ended with" << status;
}
QApplication::restoreOverrideCursor();
}
void MainScreen::on_getCalendarBtn_clicked() void MainScreen::on_getCalendarBtn_clicked()
{ {
ui->progressBar->setValue(0); ui->progressBar->setValue(0);
@ -404,3 +434,5 @@ void MainScreen::on_progressBar_valueChanged(int value)
else else
ui->progressBar->setVisible(true); ui->progressBar->setVisible(true);
} }

View file

@ -71,6 +71,8 @@ private slots:
void on_progressBar_valueChanged(int value); void on_progressBar_valueChanged(int value);
void on_examsBtn_clicked();
private: private:
void checkLocale(); void checkLocale();

View file

@ -64,7 +64,7 @@ background: qlineargradient(spread:pad, x1:0.496, y1:0, x2:0.508, y2:1, stop:0 r
<enum>QTabWidget::Rounded</enum> <enum>QTabWidget::Rounded</enum>
</property> </property>
<property name="currentIndex"> <property name="currentIndex">
<number>0</number> <number>2</number>
</property> </property>
<property name="documentMode"> <property name="documentMode">
<bool>false</bool> <bool>false</bool>
@ -606,6 +606,13 @@ font-size: 15px;
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QPushButton" name="examsBtn">
<property name="text">
<string>Show Exams</string>
</property>
</widget>
</item>
<item> <item>
<widget class="QPushButton" name="exportToCVSBtn"> <widget class="QPushButton" name="exportToCVSBtn">
<property name="text"> <property name="text">
@ -690,7 +697,7 @@ background: qlineargradient(x1: 0, y1: 0.5, x2: 1, y2: 0.5, stop: 0 green, stop:
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>1133</width> <width>1133</width>
<height>23</height> <height>22</height>
</rect> </rect>
</property> </property>
<widget class="QMenu" name="menuA_about"> <widget class="QMenu" name="menuA_about">

View file

@ -16,8 +16,8 @@
#include <QDebug> #include <QDebug>
#include <QMessageBox> #include <QMessageBox>
#include "../Calendar/calendarSchedule.h" #include "../Calendar/coursesSchedule/calendarSchedule.h"
#include "../Calendar/calendarDialog.h" #include "../Calendar/coursesSchedule/calendarDialog.h"
#define CSV_CALENDAR_HEADER "Subject,Start Date,Start Time,End Date,End Time,Description,Location" #define CSV_CALENDAR_HEADER "Subject,Start Date,Start Time,End Date,End Time,Description,Location"

View file

@ -0,0 +1,116 @@
#include "calendarExam.h"
calendarExam::calendarExam()
{
exams = NULL;
htmlDataHolderParsed = "";
}
/**
* @brief calendarExam::setPage - getting a html page and stripping it into a exams schedule in a list
* @param html - html page with tags
*/
void calendarExam::setPage(QString html)
{
examsCounter = 0;
if (exams == NULL)
exams = new QList<calendarExamCourse*>();
else
exams->clear();
this->htmlDataHolderParsed = getString(html);
examListInit(htmlDataHolderParsed);
}
/**
* @brief calendarExam::examListInit spliting the stripped html into lines, and using linetocourse function to make it an object
* @param linesTokinzedString - list of lines, each line has differen exam information
*/
void calendarExam::examListInit(QString &linesTokinzedString)
{
QString tempToken;
QStringList holder = linesTokinzedString.split("\n");
QStringList::iterator iterator;
for (iterator = holder.begin(); iterator != holder.end(); ++iterator)
{
tempToken = (*iterator);
if (!tempToken.isEmpty())
{
calendarExamCourse *cTemp = lineToCourse(tempToken);
if (cTemp != NULL)
this->exams->push_back(cTemp);
}
}
}
/**
* @brief calendarExam::lineToCourse getting line of exam with data and make it an object containing data (date, time, course name and etc)
* @param line
* @return
*/
calendarExamCourse *calendarExam::lineToCourse(QString line)
{
calendarExamCourse *tempC = NULL;
QString templinearray[EXAM_SCHEDULE_FIELDS];
//SERIAL, NAME, LECTURER, FIELD, TYPE, FIRST_DATE, FIRST_HOUR_BEGIN, SECOND_DATE, SECOND_HOUR_BEGIN
int serial;
QString name, lecturer, field, type, firstDate, firstHourbegin, secondDate, secondHourbegin;
QString tempToken;
int i = 0;
QStringList holder = line.split("\t");
QStringList::iterator iterator;
for (iterator = holder.begin(); iterator != holder.end(); ++iterator)
{
tempToken = (*iterator);
templinearray[i] = tempToken.trimmed();
i++;
if (i >= EXAM_SCHEDULE_FIELDS)
break;
}
if (templinearray[0] == "") //empty parsing
return NULL;
serial = templinearray[calendarExamCourse::ExamScheme::SERIAL].toInt();
name = templinearray[calendarExamCourse::ExamScheme::NAME];
lecturer = templinearray[calendarExamCourse::ExamScheme::LECTURER];
if (lecturer.isEmpty())
lecturer = LECTURER_DEFAULT_STRING;
field = templinearray[calendarExamCourse::ExamScheme::FIELD];
type = templinearray[calendarExamCourse::ExamScheme::TYPE];
firstDate = templinearray[calendarExamCourse::ExamScheme::FIRST_DATE];
if (firstDate.isEmpty())
return NULL; //can't set a default date to an exam. must be an error
firstHourbegin = templinearray[calendarExamCourse::ExamScheme::FIRST_HOUR_BEGIN];
if (firstHourbegin.isEmpty())
firstHourbegin = HOUR_DEFAULT_STRING;
secondDate = templinearray[calendarExamCourse::ExamScheme::SECOND_DATE];
if (secondDate.isEmpty())
{
secondDate = SECOND_DATE_DEFAULT_STRING;
secondHourbegin = HOUR_DEFAULT_STRING;
}
else
{
secondHourbegin = templinearray[calendarExamCourse::ExamScheme::SECOND_HOUR_BEGIN];
if (secondHourbegin.isEmpty())
secondHourbegin = HOUR_DEFAULT_STRING;
}
tempC = new calendarExamCourse(serial,name,lecturer,field,type,firstDate,firstHourbegin,secondDate,secondHourbegin);
examsCounter++;
return tempC;
}
int calendarExam::getExamsCounter() const
{
return examsCounter;
}

View file

@ -0,0 +1,34 @@
#ifndef CALENDAREXAM_H
#define CALENDAREXAM_H
#include "../../page.h"
#include "calendarExamCourse.h"
#include <QString>
#include <QStringList>
#include <QList>
class calendarExam : public Page
{
public:
calendarExam();
void setPage(QString html);
QList<calendarExamCourse*>* getExams() { return exams; }
int getExamsCounter() const;
private:
void examListInit(QString &linesTokinzedString);
calendarExamCourse * lineToCourse(QString line);
QString htmlDataHolderParsed;
QList<calendarExamCourse*> *exams;
int examsCounter; //not including madei b
};
#endif // CALENDAREXAM_H

View file

@ -0,0 +1,100 @@
#include "calendarExamCourse.h"
calendarExamCourse::calendarExamCourse(int serial, QString name, QString lecturer, QString field,
QString type, QString firstDate, QString firstHourbegin,
QString secondDate, QString secondHourbegin) : Course (serial,name,type)
{
this->lecturer = lecturer;
this->field = field;
setDate(firstDate,true);
setDate(secondDate,false);
setTime(firstHourbegin,true);
setTime(secondHourbegin,false);
}
/**
* @brief calendarExamCourse::setDate
* @param date
* @param isFirst if true > first. otherwise > second
*/
void calendarExamCourse::setDate(QString date, bool isFirst)
{
if (isFirst)
this->firstDate = QDate::fromString(date,"dd/MM/yyyy");
else
this->secondDate = QDate::fromString(date,"dd/MM/yyyy");
}
/**
* @brief calendarExamCourse::setTime
* @param time
* @param isFirst if true > first. otherwise > second
*/
void calendarExamCourse::setTime(QString time, bool isFirst)
{
// qDebug() << "time string is: " << time;
if (isFirst)
this->firstHourbegin = QTime::fromString(time,"hh:mm");
else
this->secondHourbegin = QTime::fromString(time,"hh:mm");
}
QTime calendarExamCourse::getSecondHourbegin() const
{
return secondHourbegin;
}
void calendarExamCourse::setSecondHourbegin(const QTime &value)
{
secondHourbegin = value;
}
QDate calendarExamCourse::getSecondDate() const
{
return secondDate;
}
void calendarExamCourse::setSecondDate(const QDate &value)
{
secondDate = value;
}
QTime calendarExamCourse::getFirstHourbegin() const
{
return firstHourbegin;
}
void calendarExamCourse::setFirstHourbegin(const QTime &value)
{
firstHourbegin = value;
}
QDate calendarExamCourse::getFirstDate() const
{
return firstDate;
}
void calendarExamCourse::setFirstDate(const QDate &value)
{
firstDate = value;
}
QString calendarExamCourse::getField() const
{
return field;
}
void calendarExamCourse::setField(const QString &value)
{
field = value;
}
QString calendarExamCourse::getLecturer() const
{
return lecturer;
}
void calendarExamCourse::setLecturer(const QString &value)
{
lecturer = value;
}

View file

@ -0,0 +1,70 @@
#ifndef CALENDAREXAMCOURSE_H
#define CALENDAREXAMCOURSE_H
#include "../../course.h"
#include <QTime>
#include <QString>
#include <QDate>
#define EXAM_SCHEDULE_FIELDS 9
#define LECTURER_DEFAULT_STRING "nullLecturer"
#define HOUR_DEFAULT_STRING "00:00"
#define SECOND_DATE_DEFAULT_STRING "nullSECOND_DATE"
class calendarExamCourse : public Course
{
public:
enum ExamScheme
{
SERIAL,
NAME,
LECTURER,
FIELD,
TYPE,
FIRST_DATE,
FIRST_HOUR_BEGIN,
SECOND_DATE,
SECOND_HOUR_BEGIN
};
calendarExamCourse(int serial, QString name, QString lecturer, QString field,
QString type, QString firstDate, QString firstHourbegin,
QString secondDate, QString secondHourbegin);
QString getLecturer() const;
void setLecturer(const QString &value);
QString getField() const;
void setField(const QString &value);
QDate getFirstDate() const;
void setFirstDate(const QDate &value);
QTime getFirstHourbegin() const;
void setFirstHourbegin(const QTime &value);
QDate getSecondDate() const;
void setSecondDate(const QDate &value);
QTime getSecondHourbegin() const;
void setSecondHourbegin(const QTime &value);
private:
void setDate(QString date, bool isFirst); //isFirst = true > first. otherwise > second
void setTime(QString time, bool isFirst); //isFirst = true > first. otherwise > second
QString lecturer;
QString field;
QDate firstDate;
QTime firstHourbegin;
QDate secondDate;
QTime secondHourbegin;
};
#endif // CALENDAREXAMCOURSE_H

View file

@ -0,0 +1,74 @@
#include "examDialog.h"
#include "ui_examDialog.h"
examDialog::examDialog(QWidget *parent, calendarExam *calSchedPtr) : QDialog(parent),
ui(new Ui::examDialog)
{
ui->setupUi(this);
exams = calSchedPtr;
QStringList headLine;
//SERIAL, NAME, LECTURER, FIELD, TYPE, FIRST_DATE, FIRST_HOUR_BEGIN, SECOND_DATE, SECOND_HOUR_BEGIN
headLine << tr("Serial") << tr("Course") << tr("Lecturer") << tr("Field") << tr("Type") << tr("First") << tr("Begin") << tr("Second") << tr("Begin");
ui->tableWidget->setColumnCount(EXAM_SCHEDULE_FIELDS);
ui->tableWidget->setHorizontalHeaderLabels(headLine);
ui->tableWidget->setLayoutDirection(Qt::LayoutDirection::RightToLeft);
this->setModal(true);
}
void examDialog::initializingDataIntoTable()
{
ui->tableWidget->setRowCount(exams->getExamsCounter());
int i=0,j=0;
QTableWidgetItem *lecturer,*name,*type;
QTableWidgetItem *serial;
QTableWidgetItem *field;
QDateEdit *firstDate;
QTimeEdit *firstHourbegin;
QDateEdit *secondDate;
QTimeEdit *secondHourbegin;
for (calendarExamCourse * tempExam: *exams->getExams())
{
j=0;
lecturer = new QTableWidgetItem();
lecturer->setData(Qt::EditRole, tempExam->getLecturer());
name = new QTableWidgetItem();
name->setData(Qt::EditRole, tempExam->getName());
type = new QTableWidgetItem();
type->setData(Qt::EditRole, tempExam->getType());
serial = new QTableWidgetItem();
serial->setData(Qt::EditRole, tempExam->getSerialNum());
field = new QTableWidgetItem();
field->setData(Qt::EditRole, tempExam->getField());
firstDate = new QDateEdit();
firstDate->setDate(tempExam->getFirstDate());
secondDate = new QDateEdit();
secondDate->setDate(tempExam->getSecondDate());
firstHourbegin = new QTimeEdit();
firstHourbegin->setTime(tempExam->getFirstHourbegin());
secondHourbegin = new QTimeEdit();
secondHourbegin->setTime(tempExam->getSecondHourbegin());
ui->tableWidget->setItem(i,j++,lecturer);
ui->tableWidget->setItem(i,j++,name);
ui->tableWidget->setItem(i,j++,type);
ui->tableWidget->setItem(i,j++,serial);
ui->tableWidget->setItem(i,j++,field);
ui->tableWidget->setCellWidget(i,j++,firstDate);
ui->tableWidget->setCellWidget(i,j++,firstHourbegin);
ui->tableWidget->setCellWidget(i,j++,secondDate);
ui->tableWidget->setCellWidget(i,j++,secondHourbegin);
i++;
}
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
ui->tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
}
examDialog::~examDialog()
{
delete ui;
}

View file

@ -0,0 +1,27 @@
#ifndef EXAMDIALOG_H
#define EXAMDIALOG_H
#include <QDialog>
#include <QDateEdit>
#include "calendarExam.h"
namespace Ui {
class examDialog;
}
class examDialog : public QDialog
{
Q_OBJECT
public:
explicit examDialog(QWidget *parent,calendarExam * calSchedPtr);
void initializingDataIntoTable();
~examDialog();
private:
Ui::examDialog *ui;
calendarExam * exams;
};
#endif // EXAMDIALOG_H

View file

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>examDialog</class>
<widget class="QDialog" name="examDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>810</width>
<height>257</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:14pt;&quot;&gt;Exams Schedule&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item>
<widget class="QTableWidget" name="tableWidget"/>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>examDialog</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>examDialog</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>

View file

@ -1,5 +0,0 @@
#include "calendarExam.h"
calendarExam::calendarExam()
{
}

View file

@ -1,12 +0,0 @@
#ifndef CALENDAREXAM_H
#define CALENDAREXAM_H
#include "../page.h"
class calendarExam : public Page
{
public:
calendarExam();
};
#endif // CALENDAREXAM_H

View file

@ -1,10 +1,9 @@
#include "calendarPage.h" #include "calendarPage.h"
QString CalendarPage::htmlToString() /**
{ * @brief CalendarPage::setPage getting the html and stripping it into a courses schedule in a list
return tempHtml; * @param html
} */
void CalendarPage::setPage(QString html) void CalendarPage::setPage(QString html)
{ {
@ -13,7 +12,10 @@ void CalendarPage::setPage(QString html)
calendarListInit(tempHtml); calendarListInit(tempHtml);
} }
/**
* @brief CalendarPage::calendarListInit - make an object from each line of course
* @param linesTokinzedString - string contain lines of coureses. each string contain single course information
*/
void CalendarPage::calendarListInit(QString &linesTokinzedString) void CalendarPage::calendarListInit(QString &linesTokinzedString)
{ {
std::list<QString> stringHolder; std::list<QString> stringHolder;
@ -36,6 +38,11 @@ void CalendarPage::calendarListInit(QString &linesTokinzedString)
} }
} }
/**
* @brief CalendarPage::lineToCourse
* @param line - line of course contain its data and information
* @return calendarcourse object with its information
*/
calendarCourse *CalendarPage::lineToCourse(QString line) calendarCourse *CalendarPage::lineToCourse(QString line)
{ {

View file

@ -1,8 +1,8 @@
#ifndef CALENDARPAGE_H #ifndef CALENDARPAGE_H
#define CALENDARPAGE_H #define CALENDARPAGE_H
#include "../page.h" #include "../../page.h"
#include "calendarCourse.h" #include "calendarPageCourse.h"
#include <list> #include <list>
#define ROOM_DEFAULT_STRING "nullRoom" #define ROOM_DEFAULT_STRING "nullRoom"
@ -12,16 +12,17 @@ class CalendarPage : public Page
{ {
public: public:
QString htmlToString();
std::list<calendarCourse*>* getCourses() { return courses; } std::list<calendarCourse*>* getCourses() { return courses; }
protected: protected:
virtual void setPage(QString html); virtual void setPage(QString html);
CalendarPage() { courses = NULL; } CalendarPage() { courses = NULL; }
private: private:
void calendarListInit(QString &linesTokinzedString); void calendarListInit(QString &linesTokinzedString);
calendarCourse * lineToCourse(QString line); calendarCourse * lineToCourse(QString line);

View file

@ -1,22 +1,21 @@
#include "calendarCourse.h" #include "calendarPageCourse.h"
calendarCourse::calendarCourse(int serial, QString name, QString type, QString lecturer, double points, calendarCourse::calendarCourse(int serial, QString name, QString type, QString lecturer, double points,
double semesterHours, QString dayAndHour, double semesterHours, QString dayAndHour,
QString room, calendarCourse::CourseCalendarType courseType) : Course(serial,name, type,points) QString room) : Course(serial,name, type)
{ {
this->points = points;
this->lecturer = lecturer; this->lecturer = lecturer;
this->semesterHours = semesterHours; this->semesterHours = semesterHours;
this->room = room; this->room = room;
setDayAndHour(dayAndHour,courseType); setDayAndHour(dayAndHour);
} }
/** /**
* @brief calendarCourse::setDayAndHour * @brief calendarCourse::setDayAndHour
* given a string of time and day - parsing it into day, hour it begins and hour it ends seperated * given a string of time and day - parsing it into day, hour it begins and hour it ends seperated
* @param parse - * @param parse -
*/ */
void calendarCourse::setDayAndHour(QString parse, calendarCourse::CourseCalendarType courseType) void calendarCourse::setDayAndHour(QString parse)
{
if (courseType == calendarCourse::CourseCalendarType::CoursesSchedule)
{ {
int ctr = 0; int ctr = 0;
QString temp = ""; QString temp = "";
@ -48,11 +47,6 @@ void calendarCourse::setDayAndHour(QString parse, calendarCourse::CourseCalendar
tok = strtok(NULL, " -"); tok = strtok(NULL, " -");
} }
} }
if (courseType == calendarCourse::CourseCalendarType::ExamSchedule)
{
}
}
QString calendarCourse::getLecturer() const QString calendarCourse::getLecturer() const
{ {
@ -108,26 +102,6 @@ void calendarCourse::setMinutesEnd(int value)
{ {
minutesEnd = value; minutesEnd = value;
} }
/**
* @brief calendarCourse::courseToString
* @return prints the course into string pattern
*/
QString calendarCourse::courseToString()
{
QString courseText = "";
courseText += " " + QString::number(this->getSerialNum());
courseText += " " + this->getName();
courseText += " " + this->getType();
courseText += " " + this->lecturer;
courseText += " " + QString::number(this->getPoints());
courseText += " " + QString::number(this->semesterHours);
courseText += " " + QString::number(this->day);
courseText += " " + QString::number(this->hourBegin) + ":" + QString::number(this->minutesBegin) + "-" + QString::number(this->hourEnd) + ":" + QString::number(this->minutesEnd);
courseText += " " + this->room;
courseText += "\n";
return courseText;
}
int calendarCourse::getDay() const int calendarCourse::getDay() const
{ {
return day; return day;
@ -171,3 +145,13 @@ void calendarCourse::setRoom(const QString &value)
double calendarCourse::getPoints() const
{
return points;
}
void calendarCourse::setPoints(double value)
{
points = value;
}

View file

@ -1,7 +1,7 @@
#ifndef CALENDARCOURSE_H #ifndef CALENDARCOURSE_H
#define CALENDARCOURSE_H #define CALENDARCOURSE_H
#include "../course.h" #include "../../course.h"
#include <QTime> #include <QTime>
#define CALENDAR_COURSE_FIELDS 8 #define CALENDAR_COURSE_FIELDS 8
@ -9,11 +9,6 @@
class calendarCourse : public Course class calendarCourse : public Course
{ {
public: public:
enum CourseCalendarType
{
ExamSchedule,
CoursesSchedule
};
enum CourseScheme enum CourseScheme
{ {
@ -26,9 +21,11 @@ public:
DAY_AND_HOURS, DAY_AND_HOURS,
ROOM ROOM
}; };
calendarCourse(int serial, QString name, QString type, QString lecturer, calendarCourse(int serial, QString name, QString type, QString lecturer,
double points, double semesterHours, QString dayAndHour, double points, double semesterHours, QString dayAndHour,
QString room, calendarCourse::CourseCalendarType courseType = calendarCourse::CourseCalendarType::CoursesSchedule); QString room);
~calendarCourse(){} ~calendarCourse(){}
int getDay() const; int getDay() const;
@ -39,6 +36,7 @@ public:
int getMinutesBegin() const; int getMinutesBegin() const;
int getHourEnd() const; int getHourEnd() const;
int getMinutesEnd() const; int getMinutesEnd() const;
double getPoints() const;
void setDay(const QString &value); void setDay(const QString &value);
void setLecturer(const QString &value); void setLecturer(const QString &value);
@ -48,14 +46,13 @@ public:
void setMinutesBegin(int value); void setMinutesBegin(int value);
void setHourEnd(int value); void setHourEnd(int value);
void setMinutesEnd(int value); void setMinutesEnd(int value);
void setPoints(double value);
QString courseToString();
private: private:
void setDayAndHour(QString parse, CourseCalendarType courseType); void setDayAndHour(QString parse);
double points;
QString lecturer; QString lecturer;
double semesterHours; double semesterHours;
int day; int day;

View file

@ -1,6 +1,6 @@
#include "calendarSchedule.h" #include "calendarSchedule.h"
calendarSchedule::calendarSchedule() calendarSchedule::calendarSchedule(QWidget *parent) : QTableWidget(parent)
{ {
QStringList days,hours; QStringList days,hours;
QTextStream hourString; QTextStream hourString;
@ -22,7 +22,7 @@ calendarSchedule::calendarSchedule()
days << QObject::tr("Sunday") << QObject::tr("Monday") << QObject::tr("Tuesday") << QObject::tr("Wednesday") << QObject::tr("Thursday") << QObject::tr("Friday"); days << QObject::tr("Sunday") << QObject::tr("Monday") << QObject::tr("Tuesday") << QObject::tr("Wednesday") << QObject::tr("Thursday") << QObject::tr("Friday");
setRowCount(endingHour - startingHour + 1); setRowCount(endingHour - startingHour + 1);
setColumnCount(6); setColumnCount(6); //number of days not including saturday ofcourse :)
setLayoutDirection(Qt::LayoutDirection::RightToLeft);\ setLayoutDirection(Qt::LayoutDirection::RightToLeft);\

View file

@ -16,7 +16,7 @@ class calendarSchedule : public QTableWidget, public CalendarPage
{ {
Q_OBJECT Q_OBJECT
public: public:
calendarSchedule(); calendarSchedule(QWidget *parent = 0);
~calendarSchedule() { clearTableItems(); } ~calendarSchedule() { clearTableItems(); }
void setPage(QString html); void setPage(QString html);
void clearTableItems(); void clearTableItems();

View file

@ -1,7 +1,8 @@
#include "gradeCourse.h" #include "gradeCourse.h"
gradeCourse::gradeCourse(int year, int semester, int courseNumInList, int serial, QString name, QString type, double points,double hours, double grade, QString additions) : Course(serial,name,type,points) gradeCourse::gradeCourse(int year, int semester, int courseNumInList, int serial, QString name, QString type, double points,double hours, double grade, QString additions) : Course(serial,name,type)
{ {
this->points = points;
this->hours = hours; this->hours = hours;
this->grade = grade; this->grade = grade;
this->additions = additions; this->additions = additions;
@ -56,4 +57,14 @@ void gradeCourse::setCourseNumInList(int value)
{ {
courseNumInList = value; courseNumInList = value;
} }
double gradeCourse::getPoints() const
{
return points;
}
void gradeCourse::setPoints(double value)
{
points = value;
}

View file

@ -41,18 +41,20 @@ public:
double getHours() const {return this->hours;} double getHours() const {return this->hours;}
double getGrade() const; double getGrade() const;
QString getAddidtions() const {return this->additions;} QString getAddidtions() const {return this->additions;}
int getCourseNumInList() const;
double getPoints() const;
void setHours(double hours); void setHours(double hours);
void setGrade(double grade); void setGrade(double grade);
void setAdditions(QString additions); void setAdditions(QString additions);
void setYear(int year); void setYear(int year);
void setSemester(int semester); void setSemester(int semester);
int getCourseNumInList() const;
void setCourseNumInList(int value); void setCourseNumInList(int value);
void setPoints(double value);
private: private:
double points;
double hours; double hours;
double grade; double grade;
QString additions; QString additions;

View file

@ -16,6 +16,7 @@ void gradegraph::showGraph(GradePage *gpPTR)
setVisualization(); setVisualization();
setGraphsData(); setGraphsData();
this->show(); this->show();
this->setModal(true); //makes it on top of application
} }

View file

@ -15,22 +15,19 @@ class Course {
public: public:
Course(int serial,QString name, QString type, double points) { Course(int serial,QString name, QString type) {
this->serialNum = serial; this->serialNum = serial;
this->name = name; this->name = name;
this->type = type; this->type = type;
this->points = points;
} }
virtual ~Course() { } virtual ~Course() { }
int getSerialNum() const {return this->serialNum;} int getSerialNum() const {return this->serialNum;}
virtual QString getName() const {return this->name;} virtual QString getName() const {return this->name;}
virtual QString getType() const {return this->type;} virtual QString getType() const {return this->type;}
virtual double getPoints() const {return this->points;}
virtual void setName(QString name) { this->name = name;} virtual void setName(QString name) { this->name = name;}
virtual void setType(QString type){ this->type = type;} virtual void setType(QString type){ this->type = type;}
virtual void setPoints(double points){ this->points = points;}
private: private:
@ -38,7 +35,6 @@ private:
int serialNum; int serialNum;
QString name; QString name;
QString type; QString type;
double points;
}; };

View file

@ -84,6 +84,17 @@ public:
parameters += "R1C2=" + QString::number(semester) + "&"; parameters += "R1C2=" + QString::number(semester) + "&";
return parameters; return parameters;
} }
const static QString getExamSchedule(const user &usr,int year, int semester)
{
QString parameters;
parameters = "PRGNAME=HADPASAT_TOCHNIT_BEHINOT&ARGUMENTS=TZ,UNIQ,R1C1,R1C2,R1C3&";
parameters += "TZ=" + usr.getUserID() + "&";
parameters += "UNIQ=" + usr.getHashedPassword() + "&";
parameters += "R1C1=" + QString::number(year) + "&";
parameters += "R1C2=" + QString::number(semester) + "&";
parameters += "R1C3=0";
return parameters;
}
}; };

View file

@ -199,6 +199,20 @@ int jceLogin::getCalendar(int year, int semester)
return true; return true;
} }
int jceLogin::getExams(int year, int semester)
{
if ((JceConnector->sendData(jceLoginHtmlScripts::makeRequest(jceLoginHtmlScripts::getExamSchedule(*jceA,year,semester)))))
{
if (!(JceConnector->recieveData(*recieverPage,false)))
return jceLogin::ERROR_ON_GETTING_PAGE;
else
return jceLogin::JCE_PAGE_PASSED;
}
else
return jceLogin::ERROR_ON_SEND_REQUEST;
return true;
}
/** /**
* @brief jceLogin::getGrades according to parameters, we make an HTML request and send it over socket to server * @brief jceLogin::getGrades according to parameters, we make an HTML request and send it over socket to server
* @param fromYear - from year * @param fromYear - from year

View file

@ -40,6 +40,7 @@ public:
bool checkConnection() const; bool checkConnection() const;
bool isLoginFlag() const; bool isLoginFlag() const;
int getExams(int year, int semester);
int getCalendar(int year, int semester); int getCalendar(int year, int semester);
int getGrades(int fromYear, int toYear, int fromSemester, int toSemester); int getGrades(int fromYear, int toYear, int fromSemester, int toSemester);