From 5c92a3f112f5a47af6873b5b65347e9406fb3bd7 Mon Sep 17 00:00:00 2001 From: Sagi Dayan Date: Tue, 9 Sep 2014 23:31:48 +0300 Subject: [PATCH] Export to CSV with Semester begin & end all bugs that i found fixed. now when user selects "export to csv" he will be prompt to input the begining and the end of the semester. the csv file will populate the whole semester! just one click and you are done. @liranbg (Liran) please check on Windows and OSX. linux is rocking! let me know if you need anything else. sagi --- main/CalendarTab/CalendarManager.cpp | 2 +- main/mainscreen.cpp | 2 +- main/mainscreen.cpp.autosave | 394 --------------------------- main/mainscreen.ui | 2 +- src/jceData/CSV/csv_exporter.cpp | 59 ++-- src/jceData/CSV/csv_exporter.h | 6 +- 6 files changed, 29 insertions(+), 436 deletions(-) delete mode 100644 main/mainscreen.cpp.autosave diff --git a/main/CalendarTab/CalendarManager.cpp b/main/CalendarTab/CalendarManager.cpp index cb7c4a2..2fc9933 100644 --- a/main/CalendarTab/CalendarManager.cpp +++ b/main/CalendarTab/CalendarManager.cpp @@ -11,7 +11,7 @@ void CalendarManager::setCalendar(std::string html) } void CalendarManager::exportCalendarCSV(CalendarDialog *calDialog) { - if(CSV_Exporter::exportCalendar(this->caliSchedPtr)) + if(CSV_Exporter::exportCalendar(this->caliSchedPtr, calDialog)) { QMessageBox msgBox; msgBox.setText("
Exported Successfuly!
HaazZaA!!"); diff --git a/main/mainscreen.cpp b/main/mainscreen.cpp index 01193ef..bf15bf2 100644 --- a/main/mainscreen.cpp +++ b/main/mainscreen.cpp @@ -346,7 +346,7 @@ void MainScreen::on_exportToCVSBtn_clicked() if(calDialog.ok()) this->calendar->exportCalendarCSV(&calDialog); else - showMSG("Somthig was not right with the dates you chose... try again"); + showMSG("Somthig was not right with the dates you have chosen... try again"); } } diff --git a/main/mainscreen.cpp.autosave b/main/mainscreen.cpp.autosave deleted file mode 100644 index bf15bf2..0000000 --- a/main/mainscreen.cpp.autosave +++ /dev/null @@ -1,394 +0,0 @@ -#include "mainscreen.h" -#include "ui_mainscreen.h" - - -MainScreen::MainScreen(QWidget *parent) :QMainWindow(parent), ui(new Ui::MainScreen) -{ - ui->setupUi(this); - - //this->setFixedSize(this->size()); //main not resizeable - - - //Login Tab - ui->pswdLineEdit->setEchoMode((QLineEdit::Password)); - - //Status Bar - ui->actionEnglish->setChecked(true); - ui->statusBar->setStyleSheet("QStatusBar::item { border: 0px solid black };"); - ButtomStatusLabel = new QLabel(this); - statusLabel = new QLabel(this); - ui->statusBar->setMaximumSize(this->geometry().width(),StatusIconHeight); - ui->statusBar->addPermanentWidget(ButtomStatusLabel,0); - ui->statusBar->addPermanentWidget(statusLabel,1); - setLabelConnectionStatus(jceLogin::jceStatus::JCE_NOT_CONNECTED); - - //Course, Setting, Calendar Tab - calendarSchedule * calendarSchedulePtr = new calendarSchedule(); - ui->calendarGridLayoutMain->addWidget(calendarSchedulePtr); - ui->CoursesTab->setDisabled(true); - ui->avgLCD->setPalette(QPalette(QPalette::WindowText,Qt::blue)); - - - - //Pointer allocating - - this->userLoginSetting = new user("",""); - this->courseTableMgr = new coursesTableManager(ui->coursesTable,userLoginSetting); - this->loginHandel = new loginHandler(userLoginSetting); - this->calendar = new CalendarManager(calendarSchedulePtr); - this->data = new SaveData(); - - //check login File - //SaveData::init(); --> No need. constructor dose everything. - if (data->isSaved()) - { - ui->usrnmLineEdit->setText(data->getUsername()); - ui->pswdLineEdit->setText(data->getPassword()); - ui->keepLogin->setChecked(true); - } - - //Local Check and ui setting. - if(data->getLocal() == "en") - { - ui->actionHebrew->setChecked(false); - ui->actionOS_Default->setChecked(false); - ui->actionEnglish->setChecked(true); - }else if(data->getLocal() == "he"){ - ui->actionHebrew->setChecked(true); - ui->actionOS_Default->setChecked(false); - ui->actionEnglish->setChecked(false); - }else{ - ui->actionHebrew->setChecked(false); - ui->actionOS_Default->setChecked(true); - ui->actionEnglish->setChecked(false); - } - -} - -MainScreen::~MainScreen() -{ - delete userLoginSetting; - delete loginHandel; - delete ui; - - //Delete save data - delete data; -} -void MainScreen::on_loginButton_clicked() -{ - if (loginHandel->isLoggedInFlag()) - uiSetDisconnectMode(); - - else - uiSetConnectMode(); - -} -void MainScreen::on_getCalendarBtn_clicked() -{ - int status = 0; - if (loginHandel->isLoggedInFlag()) - { - if ((status = loginHandel->makeCalendarRequest(ui->spinBoxYear->value(),ui->spinBoxSemester->value())) == jceLogin::JCE_GRADE_PAGE_PASSED) - { - //Use it for debug. add plain text and change the object name to 'plainTextEdit' so you will get the html request - //ui->plainTextEdit->setPlainText(loginHandel->getCurrentPageContect()); - calendar->resetTable(); - calendar->setCalendar(loginHandel->getCurrentPageContect().toStdString()); - } - - else if (status == jceLogin::JCE_NOT_CONNECTED) - { - QMessageBox::critical(this,tr("Error"),tr("Not Connected")); - } - } -} - -void MainScreen::on_ratesButton_clicked() -{ - std::string pageString; - int status = 0; - if (loginHandel->isLoggedInFlag()) - { - if ((status = loginHandel->makeGradeRequest(ui->spinBoxCoursesFromYear->value(),ui->spinBoxCoursesToYear->value(),ui->spinBoxCoursesFromSemester->value(),ui->spinBoxCoursesToSemester->value())) == jceLogin::JCE_GRADE_PAGE_PASSED) - { - pageString = loginHandel->getCurrentPageContect().toStdString(); - courseTableMgr->setCoursesList(pageString); - courseTableMgr->insertJceCoursesIntoTable(); - } - else if (status == jceLogin::JCE_NOT_CONNECTED) - { - QMessageBox::critical(this,tr("Error"),tr("Not Connected")); - } - } - - - -} -void MainScreen::on_checkBoxCoursesInfluence_toggled(bool checked) -{ - this->userLoginSetting->setInfluenceCourseOnly(checked); - this->courseTableMgr->influnceCourseChanged(checked); -} -void MainScreen::on_spinBoxCoursesFromYear_editingFinished() -{ - if (ui->spinBoxCoursesFromYear->value() > ui->spinBoxCoursesToYear->value()) - { - ui->spinBoxCoursesFromYear->setValue(ui->spinBoxCoursesToYear->value()); - ui->spinBoxCoursesFromYear->setFocus(); - } - -} -void MainScreen::on_spinBoxCoursesToYear_editingFinished() -{ - if (ui->spinBoxCoursesFromYear->value() > ui->spinBoxCoursesToYear->value()) - { - ui->spinBoxCoursesToYear->setValue(ui->spinBoxCoursesFromYear->value()); - ui->spinBoxCoursesToYear->setFocus(); - - } -} -void MainScreen::on_spinBoxCoursesFromSemester_editingFinished() -{ - if (ui->spinBoxCoursesFromYear->value() == ui->spinBoxCoursesToYear->value()) - { - if (ui->spinBoxCoursesFromSemester->value() > ui->spinBoxCoursesToSemester->value()) - { - ui->spinBoxCoursesFromSemester->setValue(ui->spinBoxCoursesToSemester->value()); - ui->spinBoxCoursesFromSemester->setFocus(); - } - } -} -void MainScreen::on_spinBoxCoursesToSemester_editingFinished() -{ - if (ui->spinBoxCoursesFromYear->value() == ui->spinBoxCoursesToYear->value()) - { - if (ui->spinBoxCoursesFromSemester->value() > ui->spinBoxCoursesToSemester->value()) - { - ui->spinBoxCoursesToSemester->setValue(ui->spinBoxCoursesFromSemester->value()); - ui->spinBoxCoursesToSemester->setFocus(); - } - } -} - -void MainScreen::on_coursesTable_itemChanged(QTableWidgetItem *item) -{ - if (this->courseTableMgr->changes(item->text(),item->row(),item->column())) - ui->avgLCD->display(courseTableMgr->getAvg()); - else - QMessageBox::critical(this,"Error","Missmatching data"); -} - -void MainScreen::on_usrnmLineEdit_editingFinished() -{ - ui->usrnmLineEdit->setText(ui->usrnmLineEdit->text().toLower()); -} -void MainScreen::uiSetDisconnectMode() -{ - setLabelConnectionStatus(jceLogin::jceStatus::JCE_NOT_CONNECTED); - ui->usrnmLineEdit->setText(""); - ui->pswdLineEdit->setText(""); - ui->usrnmLineEdit->setEnabled(true); - ui->pswdLineEdit->setEnabled(true); - - loginHandel->makeDisconnectionRequest(); - ui->loginButton->setText("&Login"); - ui->getCalendarBtn->setDisabled(true); - ui->exportToCVSBtn->setDisabled(true); - ui->ratesButton->setDisabled(true); - return; -} - -void MainScreen::uiSetConnectMode() //fix before distrbute -{ - string username; - string password; - if ((ui->usrnmLineEdit->text().isEmpty()) || (ui->pswdLineEdit->text().isEmpty())) - { - //add icon near to username and password to mark it - return; - } - setLabelConnectionStatus(jceLogin::jceStatus::JCE_START_VALIDATING_PROGRESS); - - username = ui->usrnmLineEdit->text().toStdString(); - password = ui->pswdLineEdit->text().toStdString(); - - ui->usrnmLineEdit->setDisabled(true); - ui->pswdLineEdit->setDisabled(true); - - userLoginSetting->setUsername(username); - userLoginSetting->setPassword(password); - - this->loginHandel->setPointers(statusLabel,ui->pswdLineEdit,ui->usrnmLineEdit); - if (loginHandel->makeConnection() == true) - { - setLabelConnectionStatus(jceLogin::jceStatus::JCE_YOU_ARE_IN); - ui->loginButton->setText("&Logout"); - ui->ratesButton->setEnabled(true); - ui->CoursesTab->setEnabled(true); - ui->exportToCVSBtn->setEnabled(true); - ui->getCalendarBtn->setEnabled(true); - - } - else - { - uiSetDisconnectMode(); - } -} -void MainScreen::setLabelConnectionStatus(jceLogin::jceStatus statusDescription) -{ - QPixmap iconPix; - switch (statusDescription) - { - - case jceLogin::jceStatus::JCE_START_VALIDATING_PROGRESS: - iconPix.load(":/icons/blueStatusIcon.png"); - statusLabel->setText(tr("Connecting")); - break; - case jceLogin::jceStatus::JCE_YOU_ARE_IN: - iconPix.load(":/icons/greenStatusIcon.png"); - statusLabel->setText(tr("Connected")); - break; - default: - iconPix.load(":/icons/redStatusIcon.png"); - statusLabel->setText(tr("Disconnected")); - break; - } - ButtomStatusLabel->setPixmap(iconPix); - - this->repaint(); -} - -void MainScreen::showMSG(QString msg) -{ - QMessageBox msgBox; - msgBox.setText(msg); - msgBox.exec(); -} -void MainScreen::on_actionCredits_triggered() -{ - QMessageBox::about(this, "About", tr("CREDITS-ROOL-UP1") + " v1.0

" - + tr("CREDITS-ROOL-UP2")+"
GNU LESSER GENERAL PUBLIC LICENSE V2
" - + tr("CREDITS-ROOL-UP3")+"
" - "jceAverageCalculator Repository" - "

"+tr("CREDITS-ROOL-UP4")+" Jce Connection

" - +tr("DevBy")+":" - ""); -} - -void MainScreen::on_clearTableButton_clicked() -{ - - courseTableMgr->clearTable(); - ui->avgLCD->display(courseTableMgr->getAvg()); -} - -void MainScreen::on_actionExit_triggered() -{ - exit(0); -} - - -void MainScreen::on_keepLogin_clicked() -{ - if (ui->keepLogin->isChecked()) - { - data->setUsername(ui->usrnmLineEdit->text()); - data->setPassword(ui->pswdLineEdit->text()); - } - else - data->reset(); -} - -void MainScreen::on_actionHow_To_triggered() -{ - QMessageBox::information(this,"How To", - "How To.." - "
    " - "
  • "+tr("HELP1")+"
  • " - "
  • "+tr("HELP2")+"
  • " - "
  • "+tr("HELP3")+"
  • " - "
  • "+tr("HELP4")+"
  • " - "
  • "+tr("HELP5")+"
  • " - "

    "+tr("HELP6")+ - "
"); - -} - -//void MainScreen::on_pushButton_2_clicked() -//{ -// if(CSV_Exporter::exportCalendar(this->calendar->getSch())) -// { -// QMessageBox msgBox; -// msgBox.setText("
Exported Successfuly!
HaazZaA!!"); -// msgBox.exec(); -// }else -// { -// QMessageBox msgBox; -// msgBox.setIcon(QMessageBox::Critical); -// msgBox.setText("
Something went wrong...
Maybe:
  • You Canceled
  • Unable to save the File - try again


" -// "
In case of a serious problem, please file a bug report.
thank you. OpenJCE teem"); -// msgBox.exec(); -// } -//} - -void MainScreen::on_exportToCVSBtn_clicked() -{ - if (loginHandel->isLoggedInFlag()) - { - CalendarDialog calDialog; - int buttonClicked = calDialog.exec(); - if(buttonClicked == 0) - return; -//calDialog.getStartDate(),calDialog.getEndDate() - if(calDialog.ok()) - this->calendar->exportCalendarCSV(&calDialog); - else - showMSG("Somthig was not right with the dates you have chosen... try again"); - } -} - -void MainScreen::on_actionHebrew_triggered() -{ - if (ui->actionEnglish->isChecked() || ui->actionOS_Default->isChecked()) - { - ui->actionEnglish->setChecked(false); - ui->actionOS_Default->setChecked(false); - qDebug() << "Changed Language to hebrew"; - data->setLocal("he"); - showMSG("ההגדרות שלך יכנסו לתוקף בהפעלה הבאה של התוכנית"); - } - else - ui->actionHebrew->setChecked(true); -} - -void MainScreen::on_actionEnglish_triggered() -{ - if (ui->actionHebrew->isChecked() || ui->actionOS_Default->isChecked()) - { - ui->actionHebrew->setChecked(false); - ui->actionOS_Default->setChecked(false); - qDebug() << "Changed Language to English"; - data->setLocal("en"); - showMSG("Your settings will take effect next time you start the program"); - } - else - ui->actionEnglish->setChecked(true); -} - - -void MainScreen::on_actionOS_Default_triggered() -{ - if (ui->actionHebrew->isChecked() || ui->actionEnglish->isChecked()) - { - ui->actionHebrew->setChecked(false); - ui->actionEnglish->setChecked(false); - qDebug() << "Changed Language to OS Default"; - data->setLocal("default"); - showMSG("Your settings will take effect next time you start the program"); - } - else - ui->actionOS_Default->setChecked(true); -} diff --git a/main/mainscreen.ui b/main/mainscreen.ui index 8200986..837858b 100644 --- a/main/mainscreen.ui +++ b/main/mainscreen.ui @@ -61,7 +61,7 @@ background: qlineargradient(spread:pad, x1:0.496, y1:0, x2:0.508, y2:1, stop:0 r QTabWidget::Rounded - 2 + 0 false diff --git a/src/jceData/CSV/csv_exporter.cpp b/src/jceData/CSV/csv_exporter.cpp index 7b942e6..3844eca 100644 --- a/src/jceData/CSV/csv_exporter.cpp +++ b/src/jceData/CSV/csv_exporter.cpp @@ -5,7 +5,7 @@ CSV_Exporter::CSV_Exporter() } -bool CSV_Exporter::exportCalendar(calendarSchedule *calSched) +bool CSV_Exporter::exportCalendar(calendarSchedule *calSched, CalendarDialog *cal) { qDebug() << "Getting path for csv file from user..."; QString filePath = getFileFath(); @@ -39,22 +39,29 @@ bool CSV_Exporter::exportCalendar(calendarSchedule *calSched) QString name = QString(coursePtr->getName().c_str()); QString room = QString(coursePtr->getRoom().c_str()); - QString line = makeLine(name, day, startH, startM, endH, endM, lecturer, room, type); + QDate currentDate = cal->getStartDate(); + + currentDate = currentDate.addDays(day-1); + + for(;currentDate <= cal->getEndDate(); currentDate = currentDate.addDays(7)) + { + QString line = makeLine(name, ¤tDate, startH, startM, endH, endM, lecturer, room, type); #ifdef Q_OS_LINUX || Q_OS_UNIX - if(line != NULL) - out << line << char(0x0A); + if(line != NULL) + out << line << char(0x0A); #endif #ifdef Q_OS_OSX - if(line != NULL) - out << line << char(0x0A); + if(line != NULL) + out << line << char(0x0A); #endif #ifdef Q_OS_WIN - if(line != NULL) - out << line << char(0x0D) << char(0x0A); + if(line != NULL) + out << line << char(0x0D) << char(0x0A); #endif + } } - +here: out.flush(); @@ -74,10 +81,9 @@ QString CSV_Exporter::getFileFath() return fileName; } -QString CSV_Exporter::makeLine(QString name, int day, int startH, int startM, int endH, int endM, QString lecturer, QString room, QString type) +QString CSV_Exporter::makeLine(QString name, QDate *date, int startH, int startM, int endH, int endM, QString lecturer, QString room, QString type) { //Creating a CSV text line for Google Calendar/iCal/Outlook - // First day for semester 10/26/2014 QString CSV_line = ""; QString subject = "\""; @@ -86,30 +92,9 @@ QString CSV_Exporter::makeLine(QString name, int day, int startH, int startM, in subject.append(type); subject.append("\""); - QString date; - switch (day) { - case 1: - date = "10/26/2014"; - break; - case 2: - date = "10/27/2014"; - break; - case 3: - date = "10/28/2014"; - break; - case 4: - date = "10/29/2014"; - break; - case 5: - date = "10/30/2014"; - break; - case 6: - date = "10/31/2014"; - break; - default: - return NULL; - break; - } + + QString dateStr = date->toString("MM/dd/yyyy"); + QString start; start.append(QString::number(startH)); @@ -135,13 +120,13 @@ QString CSV_Exporter::makeLine(QString name, int day, int startH, int startM, in CSV_line.append(subject); CSV_line.append(","); - CSV_line.append(date); + CSV_line.append(dateStr); CSV_line.append(","); CSV_line.append(start); CSV_line.append(","); - CSV_line.append(date); + CSV_line.append(dateStr); CSV_line.append(","); CSV_line.append(end); diff --git a/src/jceData/CSV/csv_exporter.h b/src/jceData/CSV/csv_exporter.h index 4377921..4cea49b 100644 --- a/src/jceData/CSV/csv_exporter.h +++ b/src/jceData/CSV/csv_exporter.h @@ -8,6 +8,8 @@ #include #include "../Calendar/calendarSchedule.h" +#include "../Calendar/calendardialog.h" + #define CSV_CALENDAR_HEADER "Subject,Start Date,Start Time,End Date,End Time,Description,Location" @@ -15,12 +17,12 @@ class CSV_Exporter { public: CSV_Exporter(); - static bool exportCalendar(calendarSchedule* calSched); + static bool exportCalendar(calendarSchedule* calSched, CalendarDialog *cal); private: static QString getFileFath(); - static QString makeLine(QString name,int day,int startH,int startM,int endH,int endM,QString lecturer,QString room,QString type); + static QString makeLine(QString name,QDate *date,int startH,int startM,int endH,int endM,QString lecturer,QString room,QString type); }; #endif // CSV_EXPORTER_H