int main() { struct Ordered_container* people; struct Ordered_container* rooms; people = OC_create_container((OC_comp_fp_t)comparePeople); rooms = OC_create_container((OC_comp_fp_t)compareRooms); while (1) { char cmd1; char cmd2; printf("\nEnter command: "); scanf(" %c", &cmd1); scanf("%c", &cmd2); switch (cmd1) { case 'p': switch (cmd2) { case 'i': printIndividual(people); break; case 'r': printRoom(rooms); break; case 'm': printMeeting(rooms); break; case 's': printSchedule(rooms); break; case 'g': printGroup(people); break; default: printErrUnrecCmd(); break; } break; case 'a': switch (cmd2) { case 'i': addIndividual(people); break; case 'r': addRoom(rooms); break; case 'm': addMeeting(rooms); break; case 'p': addParticipant(rooms, people); break; default: printErrUnrecCmd(); break; } break; case 'r': switch (cmd2) { case 'm': rescheduleMeeting(rooms); break; default: printErrUnrecCmd(); break; } break; case 'd': switch (cmd2) { case 'i': deleteIndividual(people, rooms); break; case 'r': deleteRoom(rooms); break; case 'm': deleteMeeting(rooms); break; case 'p': deleteParticipant(rooms, people); break; case 's': deleteSchedule(rooms); break; case 'g': deleteGroup(rooms, people); break; case 'a': deleteAll(rooms, people); break; default: printErrUnrecCmd(); break; } break; case 's': break; case 'l': break; case 'q': switch (cmd2) { case 'q' : printf("All meetings deleted\n"); printf("All rooms deleted\n"); printf("All persons deleted\n"); printf("Done\n"); return 0; break; default: printErrUnrecCmd(); break; } break; default: printErrUnrecCmd(); break; } } return 0; }
DetailMeeting::DetailMeeting(int _meeting_id, QWidget *parent) : QDialog(parent) { global_settings = new QSettings("../Thunderlook/data/settings/settings.ini", QSettings::IniFormat); db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName(global_settings->value("SQL/addr_ip").toString()); db.setPort(QString(global_settings->value("SQL/port").toString()).toInt()); db.setDatabaseName("thunderlook"); db.setUserName("esgi"); db.setPassword("esgi"); if (!db.open()) { qDebug() << "Impossible de se connecter à la base de données." << endl; return; } meeting_id = _meeting_id; setWindowTitle("Détails de la réunion"); QSqlQuery *req = new QSqlQuery(); req->prepare("SELECT * FROM Meeting m WHERE id = :meeting_id"); req->bindValue(":meeting_id", meeting_id); req->exec(); QSqlRecord rec = req->record(); req->next(); lb_label = new QLabel(req->value(rec.indexOf("title")).toString()); // DATE BEGIN QStringList date_begin = req->value(rec.indexOf("date_begin")).toString().split(" ").at(0).split("/"); QStringList time_begin = req->value(rec.indexOf("date_begin")).toString().split(" ").at(1).split(":"); QDate date_begin_edit(date_begin.at(0).toInt(),date_begin.at(1).toInt(),date_begin.at(2).toInt()); QTime time_begin_edit(time_begin.at(0).toInt(),time_begin.at(1).toInt(),0); QDateTime date_time_begin(date_begin_edit,time_begin_edit); meeting_dt_begin = new QDateTimeEdit(date_time_begin); meeting_dt_begin->setDisplayFormat("dd/MM/yyyy hh:mm"); meeting_dt_begin->setMinimumTime(QTime(8,0,0,0)); meeting_dt_begin->setMaximumTime(QTime(19,45,0,0)); // DATE END QStringList date_end = req->value(rec.indexOf("date_end")).toString().split(" ").at(0).split("/"); QStringList time_end = req->value(rec.indexOf("date_end")).toString().split(" ").at(1).split(":"); QDate date_end_edit(date_end.at(0).toInt(),date_end.at(1).toInt(),date_end.at(2).toInt()); QTime time_end_edit(time_end.at(0).toInt(),time_end.at(1).toInt(),0); QDateTime date_time_end(date_end_edit,time_end_edit); meeting_dt_end = new QDateTimeEdit(date_time_end); meeting_dt_end->setDisplayFormat("dd/MM/yyyy hh:mm"); meeting_dt_end->setMinimumTime(QTime(8,0,0,0)); meeting_dt_end->setMaximumTime(QTime(19,45,0,0)); meeting_duration = new QTimeEdit(); meeting_duration->setDisplayFormat("hh:mm"); QTime time(0,0,0); meeting_duration->setTime(time.addSecs(req->value(rec.indexOf("duration")).toInt()*60)); btn_action = new QPushButton("Mettre à jour"); btn_cancel = new QPushButton("Annuler"); btn_del = new QPushButton("Supprimer cette réunion"); global_settings = new QSettings("../Thunderlook/data/settings/settings.ini", QSettings::IniFormat); QSqlQuery *reqOrganizer = new QSqlQuery(); reqOrganizer->prepare("SELECT Users.address FROM Meeting,Users WHERE Meeting.id = :meeting_id AND Users.id = Meeting.organizer"); reqOrganizer->bindValue(":meeting_id", meeting_id); reqOrganizer->exec(); QSqlRecord recOrganizer = reqOrganizer->record(); reqOrganizer->next(); // Enable Item if user is not organizer if(reqOrganizer->value(recOrganizer.indexOf("address")).toString() != global_settings->value("Send/smtp_user").toString()) { btn_del->setEnabled(false); btn_action->setEnabled(false); meeting_dt_end->setEnabled(false); meeting_dt_begin->setEnabled(false); meeting_duration->setEnabled(false); } cb_organizer = new QComboBox(); cb_organizer->setEnabled(false); QSqlQuery *reqUser = new QSqlQuery(); reqUser->prepare("SELECT * FROM Users WHERE id = :id_user"); reqUser->bindValue(":id_user", req->value(rec.indexOf("organizer")).toString()); QString organiz(req->value(rec.indexOf("organizer")).toString()); reqUser->exec(); QSqlRecord recUser = reqUser->record(); while(reqUser->next()) { cb_organizer->addItem(reqUser->value(recUser.indexOf("address")).toString()); } cb_users = new QComboBox(); model_users = new QStandardItemModel(); int i = 0; QSqlQuery *reqUsersMeeting = new QSqlQuery(); reqUsersMeeting->prepare("SELECT * FROM UsersMeeting usermeeting INNER JOIN Users user ON user.id = usermeeting.id_user WHERE usermeeting.id_meeting = :id_meeting and present != 0"); reqUsersMeeting->bindValue(":id_meeting", meeting_id); reqUsersMeeting->exec(); QSqlRecord recUserMeeting = reqUsersMeeting->record(); while(reqUsersMeeting->next()) { User user(reqUsersMeeting->value(recUserMeeting.indexOf("id_user")).toInt(),reqUsersMeeting->value(recUserMeeting.indexOf("address")).toString()); QStandardItem *item = new QStandardItem(); item->setText(user.address()); QVariant data; data.setValue(user); item->setData(data); model_users->setItem(i,item); i++; } cb_users->setModel(model_users); req->first(); cb_room = new QComboBox(); cb_room->setEnabled(false); QSqlQuery *reqRoom = new QSqlQuery(); reqRoom->prepare("SELECT * FROM Room WHERE id = :id_room"); reqRoom->bindValue(":id_room", req->value(rec.indexOf("room")).toString()); QString room(req->value(rec.indexOf("room")).toString()); reqRoom->exec(); QSqlRecord recRoom = reqRoom->record(); while(reqRoom->next()) { cb_room->addItem(reqRoom->value(recRoom.indexOf("name")).toString()); } id_room = req->value(rec.indexOf("id")).toInt(); QFormLayout *fl_data = new QFormLayout; fl_data->addRow("Libellé:", lb_label); fl_data->addRow("Début:", meeting_dt_begin); fl_data->addRow("Fin:", meeting_dt_end); fl_data->addRow("Durée:", meeting_duration); fl_data->addRow("Organisateur:", cb_organizer); fl_data->addRow("Invité(s):", cb_users); fl_data->addRow("Salle:", cb_room); QHBoxLayout *layout_buttons = new QHBoxLayout; layout_buttons->setAlignment(Qt::AlignRight); layout_buttons->addWidget(btn_del); layout_buttons->addWidget(btn_action); layout_buttons->addWidget(btn_cancel); QVBoxLayout *layout_main = new QVBoxLayout; layout_main->addLayout(fl_data); layout_main->addLayout(layout_buttons); setLayout(layout_main); connect(btn_del, SIGNAL(clicked()), this, SLOT(deleteMeeting())); connect(btn_cancel, SIGNAL(clicked()), this, SLOT(close())); connect(btn_action, SIGNAL(clicked()), this, SLOT(updateMeeting())); }