void NumberCycleDialog::accept() { // qDebug () << "Slot Ok hit"; // get the changed stuff from the gui elements updateCycleDataFromGUI(); // First remove the dropped cycles if ( mRemovedCycles.count() > 0 ) { QSqlQuery qDel; qDel.prepare( "DELETE FROM numberCycles WHERE name=:name" ); for ( QStringList::Iterator it = mRemovedCycles.begin(); it != mRemovedCycles.end(); ++it ) { // qDebug () << "about to drop the number cycle " << *it; if ( dropOfNumberCycleOk( *it ) ) { qDel.bindValue( ":name", *it ); qDel.exec(); } } } // update existing entries and insert new ones // CREATE TABLE numberCycles ( // id INTEGER PRIMARY KEY ASC autoincrement, // name VARCHAR(64) NOT NULL, // lastIdentNumber INT NOT NULL, // identTemplate VARCHAR(64) NOT NULL // ); QSqlQuery q; q.prepare( "SELECT id, name, lastIdentNumber, identTemplate FROM numberCycles WHERE name=:name" ); QMap<QString, NumberCycle>::Iterator it; for ( it = mNumberCycles.begin(); it != mNumberCycles.end(); ++it ) { QString cycleName = it.key(); NumberCycle cycle = it.value(); q.bindValue( ":name", cycleName ); // name changes can not happen by design q.exec(); if ( q.next() ) { // qDebug () << "Checking existing number cycle " << cycleName << " for update"; // there is an entry if ( q.value( 2 ).toInt() != cycle.counter() ) { bool doUpdate = true; if ( q.value( 2 ).toInt() > cycle.counter() ) { if ( q.value( 3 ).toString() == cycle.getTemplate() ) { // The number has become smaller but the template remains the same. // That has high potential to end up with duplicate doc numbers. QMessageBox msgBox; msgBox.setWindowTitle(i18n("Dangerous Counter Change")); msgBox.setText(i18n("The new counter is lower than the old one. " )); msgBox.setInformativeText(i18n("That has potential to create duplicate document numbers. Do you really want to decrease it?" )); msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No); msgBox.setDefaultButton( QMessageBox::Yes ); int re = msgBox.exec(); if( re != QMessageBox::Yes ) { doUpdate = false; } } } if ( doUpdate ) { updateField( q.value( 0 ).toInt(), "lastIdentNumber", QString::number( cycle.counter() ) ); } } if ( q.value( 3 ).toString() != cycle.getTemplate() ) { updateField( q.value( 0 ).toInt(), "identTemplate", cycle.getTemplate() ); } } else { // qDebug () << "This number cycle is new: " << cycleName; QSqlQuery qIns; qIns.prepare( "INSERT INTO numberCycles (name, lastIdentNumber, identTemplate) " "VALUES (:name, :number, :templ)" ); qIns.bindValue( ":name", cycleName ); qIns.bindValue( ":number", cycle.counter() ); qIns.bindValue( ":templ", cycle.getTemplate() ); qIns.exec(); } } QDialog::accept(); }
IResponse *GroupsService::index(IRequest *req) { int page; QSqlQuery query; if(!m_proxyConnection->session()->isLoggedIn()) req->response(IResponse::UNAUTHORIZED); QString user_id = m_proxyConnection->session()->value("logged").toString(); if ( req->hasParameter("page") ) { page= req->parameterValue("page").toInt(); query.prepare("SELECT * FROM groups ORDER BY name LIMIT :limit OFFSET :offset"); query.bindValue(":limit",PER_PAGE); query.bindValue(":offset", (page-1)* PER_PAGE); } else query.prepare("SELECT * FROM groups ORDER BY name"); if( query.exec()){ QVariantList groups; while(query.next()) { QVariantMap group; QString group_id = query.value(query.record().indexOf("id")).toString(); group.insert("id", query.value(query.record().indexOf("id"))); group.insert("name", query.value(query.record().indexOf("name"))); group.insert("description", query.value(query.record().indexOf("description"))); group.insert("has_password", query.value(query.record().indexOf("has_password"))); group.insert("has_approvement", query.value(query.record().indexOf("has_approvement"))); group.insert("date_created", query.value(query.record().indexOf("date_created"))); if(isAdmin(user_id.toUInt(), group_id.toUInt())) group.insert("admin","1"); else group.insert("admin","0"); //Check group membership QSqlQuery q_check; q_check.prepare("SELECT status FROM group_users WHERE user_id = :user_id AND group_id = :group_id"); q_check.bindValue(":user_id",user_id); q_check.bindValue(":group_id",group_id); q_check.exec(); if(!q_check.first()) group.insert("member","0"); else{ if(q_check.value(q_check.record().indexOf("status")).toString() == "1") group.insert("member","1"); else group.insert("member","awaiting"); } groups.append(group); } return req->response(QVariant(groups), IResponse::OK); } else return req->response(IResponse::INTERNAL_SERVER_ERROR); }
void BookmarksToolbar::refreshBookmarks() { QSqlQuery query; query.exec("SELECT id, title, url, icon FROM bookmarks WHERE folder='bookmarksToolbar' ORDER BY toolbar_position"); while (query.next()) { Bookmark bookmark; bookmark.id = query.value(0).toInt(); bookmark.title = query.value(1).toString(); bookmark.url = query.value(2).toUrl(); bookmark.icon = IconProvider::iconFromBase64(query.value(3).toByteArray()); bookmark.folder = "bookmarksToolbar"; QString title = bookmark.title; if (title.length() > 15) { title.truncate(13); title += ".."; } QVariant v; v.setValue<Bookmark>(bookmark); ToolButton* button = new ToolButton(this); button->setText(title); button->setData(v); button->setIcon(bookmark.icon); button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); button->setToolTip(bookmark.url.toEncoded()); button->setWhatsThis(bookmark.title); button->setAutoRaise(true); button->setContextMenuPolicy(Qt::CustomContextMenu); connect(button, SIGNAL(clicked()), this, SLOT(loadClickedBookmark())); connect(button, SIGNAL(middleMouseClicked()), this, SLOT(loadClickedBookmarkInNewTab())); connect(button, SIGNAL(controlClicked()), this, SLOT(loadClickedBookmarkInNewTab())); connect(button, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showBookmarkContextMenu(QPoint))); m_layout->addWidget(button); } query.exec("SELECT name FROM folders WHERE subfolder='yes'"); while (query.next()) { ToolButton* b = new ToolButton(this); b->setPopupMode(QToolButton::InstantPopup); b->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); b->setIcon(style()->standardIcon(QStyle::SP_DirIcon)); b->setText(query.value(0).toString()); QMenu* menu = new QMenu(query.value(0).toString()); b->setMenu(menu); connect(menu, SIGNAL(aboutToShow()), this, SLOT(aboutToShowFolderMenu())); m_layout->addWidget(b); } m_mostVis = new ToolButton(this); m_mostVis->setPopupMode(QToolButton::InstantPopup); m_mostVis->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); m_mostVis->setIcon(style()->standardIcon(QStyle::SP_DirIcon)); m_mostVis->setText(tr("Most visited")); m_mostVis->setToolTip(tr("Sites you visited the most")); m_menuMostVisited = new QMenu(); m_mostVis->setMenu(m_menuMostVisited); connect(m_menuMostVisited, SIGNAL(aboutToShow()), this, SLOT(refreshMostVisited())); m_layout->addWidget(m_mostVis); m_layout->addStretch(); m_mostVis->setVisible(m_bookmarksModel->isShowingMostVisited()); }
void editRoom::on_addButton_clicked() { QString roomno=ui->roomName->text(); QString nameStr= ui->catList->currentText(); QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE" ); db.setDatabaseName( "./innovativedb.sqlite" ); if( !db.open() ) { qDebug() << db.lastError(); qFatal( "MAYDAY!!!\n\nSOMETHING IS WRONG WITH YOUR DATABASE." ); } qDebug( "Database Connection Validated..." ); QSqlQuery qry; qry.prepare("CREATE TABLE IF NOT EXISTS roomcat (id INTEGET PRIMARY KEY, item VARCHAR(30), price INTEGER)"); if(!qry.exec()) qDebug() << qry.lastError(); else qDebug( "Table Created!" ); qry.prepare("SELECT id FROM roomcat WHERE item = :name"); qry.bindValue(":name",nameStr); if(!qry.exec()) { qDebug() << qry.lastError(); } else qDebug( "Table Selected!" ); int catid=0; while (qry.next()) { catid = qry.value(0).toInt(); } if(catid==0) { qFatal("MAYDAY!!! DATABASE ERROR!!!"); } qry.prepare("CREATE TABLE IF NOT EXISTS roomlist (id INTEGET PRIMARY KEY, roomno VARCHAR(5), cat INTEGER, occupied INTEGER)"); if(!qry.exec()) qDebug() << qry.lastError(); else qDebug( "Room Table Validated..." ); if(!qry.exec("SELECT id FROM roomlist")) { qDebug() << qry.lastError(); } else qDebug( "Table Selected!" ); int roomid=0; while (qry.next()) { int item = qry.value(0).toInt(); if(item>roomid) { roomid=item; } } roomid++; qry.prepare("INSERT INTO roomlist (id, roomno, cat, occupied) values (:id, :roomno, :roomcat, :occ)"); qry.bindValue(":id",roomid); qry.bindValue(":roomno",roomno); qry.bindValue(":roomcat",catid); qry.bindValue(":occ",0); if(!qry.exec()) qDebug() << qry.lastError(); else { qDebug( "Inserted to Room Table." ); ui->roomList->addItem(ui->roomName->text()); ui->roomName->clear(); } }
void LoginWindow::on_loginButton_clicked() { QMessageBox qm; // data validation if(ui->unameEdit->text().length() > 0 && ui->pwEdit->text().length() >= 6 && ui->unameEdit->text().contains('.')){ QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName(db_config::DB_HOSTNAME); db.setDatabaseName(db_config::DB_NAME); db.setUserName(db_config::DB_UNAME); db.setPassword(db_config::DB_PW); bool connected = db.open(); if(connected){ QSqlQuery query; query.exec("SELECT idUser, uPw FROM User WHERE uName LIKE '" + ui->unameEdit->text() + "';"); int found_acc_count = 0; while(query.next()){ found_acc_count++; if(query.value(0) != "" && query.value(1) != ""){ if(query.value(1).toString() == ui->pwEdit->text()){ this->hide(); MainWindow *mw = new MainWindow; mw->setWindowTitle("BusinessCount"); mw->show(); this->close(); }else{ qm.setText("The password you entered is wrong."); qm.exec(); } } } if(found_acc_count == 0){ qm.setText("There's no user with this username."); qm.exec(); } }else{ qm.setText("The database connection could not be established."); qm.exec(); } }else if(ui->pwEdit->text().toStdString().empty() && ui->unameEdit->text().toStdString().empty()){ qm.setText("You didn't enter a username nor a password."); qm.exec(); }else if(ui->unameEdit->text().length() < 3 || !ui->unameEdit->text().contains('.')){ qm.setText("The username you entered is not valid."); qm.exec(); }else if(ui->unameEdit->text() == ""){ qm.setText("You didn't enter a username."); qm.exec(); }else if(ui->pwEdit->text() == ""){ qm.setText("You didn't enter a password."); qm.exec(); }else if(ui->pwEdit->text().length() < 6){ qm.setText("The password you entered is too short."); qm.exec(); }else if(ui->unameEdit->text().length() < 3 && ui->pwEdit->text().length() < 6){ qm.setText("The username, as well as the password entered, are too short."); qm.exec(); }else if(ui->unameEdit->text().length() < 3){ qm.setText("You didn't enter a valid username."); qm.exec(); }else if(ui->pwEdit->text().length() < 6){ qm.setText("The password you entered is too short."); qm.exec(); } }
bool TestAssistance::extQuestionByType(QUESTIONTYPE type) { //clear buffer questionBuffer.clear(); //open database if (!m_objDatabase.open()) { packErrorInfo(m_objDatabase.lastError().text(), TA_ERROR_NOTCONNECTED); return false; } QSqlQuery query; QString sql("SELECT qtxt,qhard,qimage FROM questions " "WHERE qmajor=:major AND qcourse=:course " "AND qgrade=:grade AND qtype=:type AND qknowpoint in ("); //pack qknowpoint for(size_t i = 0; i != m_objPaperInfo.kpoint.size(); ++i){ sql += "'" + m_objPaperInfo.kpoint[i] + "'"; if(i < m_objPaperInfo.kpoint.size()-1) sql += ","; } sql += ") ORDER BY RANDOM() limit 100"; query.prepare(sql); query.bindValue(":major", m_objPaperInfo.major); query.bindValue(":course", m_objPaperInfo.strCourse); query.bindValue(":grade", m_objPaperInfo.nGrade); query.bindValue(":type", static_cast<int>(type)); if(query.exec()){ int maxNum = typeNum(type); int easy = floor(maxNum*m_objPaperInfo.fEasy); int normal = maxNum*m_objPaperInfo.fNormal; int hard = maxNum*m_objPaperInfo.fHard; //if sum is not equal to maxNum, set normal=normal+rest if(easy + normal + hard < maxNum) normal = maxNum - easy - hard; QUESTION q; int max = typeNum(type); while(query.next()){ if(questionBuffer.size() >= max) break; int t = query.value(1).toInt(); if(easy > 0 && t == TA_EASY){ q.txt = query.value(0).toString(); q.imgBytes = query.value(2).toByteArray(); questionBuffer.push_back(q); easy--;maxNum--; continue; } if(normal > 0 && t == TA_NORMAL){ q.txt = query.value(0).toString(); q.imgBytes = query.value(2).toByteArray(); questionBuffer.push_back(q); normal--;maxNum--; continue; } if(hard > 0 && t == TA_HARD){ q.txt = query.value(0).toString(); q.imgBytes = query.value(2).toByteArray(); questionBuffer.push_back(q); hard--;maxNum--; continue; } if(maxNum > 0){ q.txt = query.value(0).toString(); q.imgBytes = query.value(2).toByteArray(); questionBuffer.push_back(q); maxNum--; } } } else{ packErrorInfo(query.lastError().text(), TA_ERROR_SQLERROR); m_objDatabase.close(); return false; } m_objDatabase.close(); return true; }
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())); }
vector<mes> DataBase::getNewMessages(QString &id_game, QString &id_player, bool firstUpdate, QDateTime lUp){ QString lastUpdate; if(firstUpdate == true){ QSqlQuery t; t.prepare("SELECT start_time FROM games WHERE id = ?;"); t.addBindValue(id_game); t.exec(); t.next(); QString tmp = t.value(0).toString(); const char *ch = tmp.toStdString().c_str(); char *pchar = (char*)ch; while(*pchar){ if(*pchar == 'T'){ *pchar = ' '; } ++pchar; } QString rz(ch); lastUpdate = rz; }else lastUpdate = lUp.toString("yyyy-MM-dd hh:mm:ss"); cout << "Time: " << lastUpdate.toStdString() << endl; QSqlQuery query; query.prepare("SELECT text, time FROM message WHERE time > ? AND id_game = ?"); query.addBindValue(lastUpdate); query.addBindValue(id_game); vector<mes> rez; if(!query.exec()){ cout << query.lastError().text().toStdString() <<endl; }else{ while(query.next()){ struct mes m = { query.value(0).toString(), query.value(1).toDateTime(), false }; rez.push_back(m); } cout << 232 << endl; std::sort(rez.begin(), rez.end(), [](auto fst, auto snd)->bool{return fst.time < snd.time;}); } return rez; // QString lastUpdate; // QSqlQuery query; // query.prepare("SELECT text, time FROM message WHERE time > ? AND id_game = ? AND id_player = ?;"); // cout << "id_player: " << id_game.toStdString() << endl; // cout << "id_game: " << id_player.toStdString() << endl; // if(firstUpdate == true){ // QSqlQuery t; // t.prepare("SELECT start_time FROM games WHERE id = ?;"); // t.addBindValue(id_game); // t.exec(); // t.next(); // lastUpdate = t.value(0).toString(); // }else lastUpdate = lUp.toString("yyyy-MM-dd hh:mm:ss"); // cout << lastUpdate.toStdString() <<endl; // const char *ch = lastUpdate.toStdString().c_str(); // char *pchar = (char*)ch; // while(*pchar){ // if(*pchar == 'T'){ // *pchar = ' '; // } // ++pchar; // } // QString zalupa(ch); // query.addBindValue(zalupa); // query.addBindValue(id_game); // query.addBindValue(id_player); // if(!query.exec()){ // cout << query.lastError().text().toStdString() <<endl; // cout << "!!!!!" <<endl; // } // vector<mes> rez; // while(query.next()){ // struct mes m = { // query.value(0).toString(), // query.value(1).toDateTime(), // true // }; // rez.push_back(m); // } // cout << "202" << endl; // QString player_2; // query.prepare("SELECT player_2 FROM games WHERE player_1 = ?;"); // query.addBindValue(id_player); // if(!query.exec()){ // cout << query.lastError().text().toStdString() <<endl; // } // query.next(); // player_2 = query.value(0).toString(); // query.clear(); // query.prepare("SELECT text, time FROM message WHERE time > ? AND id_game = ? AND id_player = ?"); // query.addBindValue(lastUpdate); // query.addBindValue(id_game); // query.addBindValue(player_2); // cout << 217 << endl; // if(!query.exec()){ // cout << query.lastError().text().toStdString() <<endl; // } // cout << 222 << endl; // while(query.next()){ // struct mes m = { // query.value(0).toString(), // query.value(1).toDateTime(), // false // }; // rez.push_back(m); // } // cout << 232 << endl; // std::sort(rez.begin(), rez.end(), [](auto fst, auto snd)->bool{return fst.time < snd.time;}); // return rez; }
void ZealDocsetsRegistry::_runQuery(const QString& rawQuery, int queryNum) { if(queryNum != lastQuery) return; // some other queries pending - ignore this one QList<ZealSearchResult> results; ZealSearchQuery query = ZealSearchQuery(rawQuery); QString docsetPrefix = query.getDocsetFilter(); QString preparedQuery = query.getSanitizedQuery(); for(QString name : names()) { if(!docsetPrefix.isEmpty() && !name.toLower().contains(docsetPrefix)) { // Filter out this docset as the names don't match the docset prefix continue; } QString qstr; QSqlQuery q; QList<QList<QVariant> > found; bool withSubStrings = false; while(found.size() < 100) { auto curQuery = preparedQuery; QString notQuery; // don't return the same result twice QString parentQuery; if(withSubStrings) { // if less than 100 found starting with query, search all substrings curQuery = "%"+preparedQuery; // don't return 'starting with' results twice if(types[name] == ZDASH) { notQuery = QString(" and not (ztokenname like '%1%' escape '\\' or ztokenname like '%.%1%' escape '\\') ").arg(preparedQuery); } else { notQuery = QString(" and not t.name like '%1%' escape '\\' ").arg(preparedQuery); if(types[name] == ZEAL) { parentQuery = QString(" or t2.name like '%1%' escape '\\' ").arg(preparedQuery); } } } int cols = 3; if(types[name] == ZEAL) { qstr = QString("select t.name, t2.name, t.path from things t left join things t2 on t2.id=t.parent where " "(t.name like '%1%' escape '\\' %3) %2 order by lower(t.name) asc, t.path asc limit 100").arg(curQuery, notQuery, parentQuery); } else if(types[name] == DASH) { qstr = QString("select t.name, null, t.path from searchIndex t where t.name " "like '%1%' escape '\\' %2 order by lower(t.name) asc, t.path asc limit 100").arg(curQuery, notQuery); } else if(types[name] == ZDASH) { cols = 4; qstr = QString("select ztokenname, null, zpath, zanchor from ztoken " "join ztokenmetainformation on ztoken.zmetainformation = ztokenmetainformation.z_pk " "join zfilepath on ztokenmetainformation.zfile = zfilepath.z_pk where (ztokenname " // %.%1% for long Django docset values like django.utils.http // (Might be not appropriate for other docsets, but I don't have any on hand to test) "like '%1%' escape '\\' or ztokenname like '%.%1%' escape '\\' ) %2 order by lower(ztokenname) asc, zpath asc, " "zanchor asc limit 100").arg(curQuery, notQuery); } q = db(name).exec(qstr); while(q.next()) { QList<QVariant> values; for(int i = 0; i < cols; ++i) { values.append(q.value(i)); } found.append(values); } if(withSubStrings) break; withSubStrings = true; // try again searching for substrings } for(auto &row : found) { QString parentName; if(!row[1].isNull()) { parentName = row[1].toString(); } auto path = row[2].toString(); // FIXME: refactoring to use common code in ZealListModel and ZealDocsetsRegistry if(types[name] == DASH || types[name] == ZDASH) { path = QDir(QDir(QDir("Contents").filePath("Resources")).filePath("Documents")).filePath(path); } if(types[name] == ZDASH) { path += "#" + row[3].toString(); } auto itemName = row[0].toString(); if(itemName.indexOf('.') != -1 && itemName.indexOf('.') != 0 && row[1].isNull()) { auto splitted = itemName.split("."); itemName = splitted.at(splitted.size()-1); parentName = splitted.at(splitted.size()-2); } results.append(ZealSearchResult(itemName, parentName, path, name, preparedQuery)); } } qSort(results); if(queryNum != lastQuery) return; // some other queries pending - ignore this one queryResults = results; emit queryCompleted(); }
void Login::Login_Main() { QString user = ui->userName_LineEdit->text().trimmed(); QString passWd = ui->passWd_LineEdit->text().trimmed(); if(passWd.isEmpty()) { QMessageBox::information(this, tr("Please Input passWD"), tr("Please Input passWD before Loging"), QMessageBox::Ok); ui->passWd_LineEdit->setFocus(); return; } else { QSqlQuery query; query.exec(QString("select A_PW from administrator where A_ID = %1").arg(user)); if(query.next()) { //QString pass = query.value(0).toString().trimmed(); //qDebug() << pass; if(query.value(0).toString().trimmed() == passWd) { QDialog::accept(); } else { QMessageBox::warning(this, tr("passwd error"),tr("please Input corrected passwd"),QMessageBox::Ok); ui->passWd_LineEdit->clear(); ui->passWd_LineEdit->setFocus(); } } else { QMessageBox::information(this, tr("Login"),tr("No user named this"),QMessageBox::Ok); ui->passWd_LineEdit->clear(); ui->userName_LineEdit->setFocus(); } } /* QSqlQuery query; query.exec("select pwd from password"); query.next(); if (query.value(0).toString() == ui->pwdLineEdit->text()) { QDialog::accept(); } else { QMessageBox::warning(this, tr("密码错误"), tr("请输入正确的密码再登录!"), QMessageBox::Ok); ui->pwdLineEdit->clear(); ui->pwdLineEdit->setFocus(); } */ /* if(user == "admin" && passWd == "123") { accept(); } else { QMessageBox::warning(this, tr("Warning"), tr("user name or password err!"), QMessageBox::Yes); ui->userName_LineEdit->clear(); ui->passWd_LineEdit->clear(); //ui->userName_LineEdit->setFocus(); return; } return; */ }
GrafikSS::GrafikSS(QWidget *parent) : QMainWindow(parent), ui(new Ui::GrafikSS) { ui->setupUi(this); QString b01,b02,b03,b04,b05,b06; QString b1,b2,b3,b4,b5,b6; QSqlQuery queryQ; QString e1111 = (QString("SELECT \"Button1\", \"Button2\", \"Button3\", \"Button4\", \"Button5\"," " \"Button6\" FROM \"ResultTest\" where \"StudentId\" = '%1' AND \"Hand\" = '%2'").arg(qq).arg(0)); queryQ.exec(e1111); while (queryQ.next()) { b01=queryQ.value(0).toString(); b02=queryQ.value(1).toString(); b03=queryQ.value(2).toString(); b04=queryQ.value(3).toString(); b05=queryQ.value(4).toString(); b06=queryQ.value(5).toString(); } QSqlQuery queryQQ; QString e11111 = (QString("SELECT \"Button1\", \"Button2\", \"Button3\", \"Button4\", \"Button5\"," " \"Button6\" FROM \"ResultTest\" where \"StudentId\" = '%1' AND \"Hand\" = '%2'").arg(qq).arg(1)); queryQQ.exec(e11111); while (queryQQ.next()) { b1=queryQQ.value(0).toString(); b2=queryQQ.value(1).toString(); b3=queryQQ.value(2).toString(); b4=queryQQ.value(3).toString(); b5=queryQQ.value(4).toString(); b6=queryQQ.value(5).toString(); } ui->Qwt_widget->detachItems(QwtPlotItem::Rtti_PlotItem,true); ui->Qwt_widget->setTitle( "Сводный график результатов" ); ui->Qwt_widget->setCanvasBackground( Qt::white ); // Параметры осей координат ui->Qwt_widget->setAxisTitle(QwtPlot::yLeft, "Количество кликов"); ui->Qwt_widget->setAxisTitle(QwtPlot::xBottom, "Время, сек"); ui->Qwt_widget->insertLegend( new QwtLegend() ); ui->Qwt_widget->setAxisScale(QwtPlot::xBottom, 5, 30, 5); ui->Qwt_widget->setAxisScale(QwtPlot::yLeft, 0, 48, 8); QwtPlotGrid *grid = new QwtPlotGrid(); grid->setMajorPen(QPen( Qt::gray, 2 )); // цвет линий и толщина grid->attach( ui->Qwt_widget ); QwtPlotPicker *d_picker = new QwtPlotPicker( QwtPlot::xBottom, QwtPlot::yLeft, // ассоциация с осями QwtPlotPicker::CrossRubberBand, // стиль перпендикулярных линий QwtPicker::ActiveOnly, // включение/выключение ui->Qwt_widget->canvas() ); // ассоциация с полем // Цвет перпендикулярных линий d_picker->setRubberBandPen( QColor( Qt::red ) ); // цвет координат положения указателя d_picker->setTrackerPen( QColor( Qt::black ) ); // непосредственное включение вышеописанных функций d_picker->setStateMachine( new QwtPickerDragPointMachine() ); curve = new QwtPlotCurve(); curve2 = new QwtPlotCurve(); curve->setTitle("Не ведущая рука"); curve2->setTitle("Ведущая рука"); curve->setPen( Qt::blue, 6 ); // цвет и толщина кривой curve2->setPen( Qt::green, 6 ); // Маркеры кривой // #include <qwt_symbol.h> QwtSymbol *symbol = new QwtSymbol( QwtSymbol::Ellipse, QBrush( Qt::yellow ), QPen( Qt::red, 2 ), QSize( 8, 8 ) ); curve->setSymbol( symbol ); QwtSymbol *symbol2 = new QwtSymbol( QwtSymbol::Ellipse, QBrush( Qt::red ), QPen( Qt::yellow, 2 ), QSize( 8, 8 ) ); curve2->setSymbol( symbol2 ); // Добавить точки на ранее созданную кривую // Значения точек записываются в массив, затем считываются // из этого массива points << QPointF(5, b01.toInt())<<QPointF(10, b02.toInt())<<QPointF(15, b03.toInt())<<QPointF(20, b04.toInt())<<QPointF(25, b05.toInt())<<QPointF(30, b06.toInt()); points2 << QPointF(5, b1.toInt())<<QPointF(10, b2.toInt())<<QPointF(15, b3.toInt())<<QPointF(20, b4.toInt())<<QPointF(25, b5.toInt())<<QPointF(30, b6.toInt()); // for (int i = 0; i < 5; i++) { // points << QPointF( 1.0 * i, 1.0 * i); // произвольное заполнение // } curve->setSamples( points ); // ассоциировать набор точек с кривой curve2->setSamples( points2 ); curve->attach( ui->Qwt_widget ); // отобразить кривую на графике curve2->attach( ui->Qwt_widget ); points.clear(); points2.clear(); }
void AMExportController::continueAvailableDataSourceSearch() { if(searchScanIndex_ >= scanCount()) return; // We're done! if(usingScanURLs_) { const QUrl& url = scanURLsToExport_.at(searchScanIndex_++); // incrementing searchScanIndex_ here. AMDatabase* db = 0; QStringList path; QString tableName; int id = 0; bool idOkay = false; // parse the URL and make sure it's valid if(url.scheme() == "amd" && (db = AMDatabase::database(url.host())) && (path = url.path().split('/', QString::SkipEmptyParts)).count() == 2 && (id = path.at(1).toInt(&idOkay)) > 0 && idOkay == true && (tableName = path.at(0)).isEmpty() == false ) { // let's roll. Find all the raw data sources for this scan QSqlQuery q = db->select(tableName % "_rawDataSources", "id2,table2", "id1='" % QString::number(id) % "'"); // note: checked that this is indeed using the index. Can go faster? Dunno. q.exec(); while(q.next()) { // get name, description, rank for this data source QSqlQuery q2 = db->select( q.value(1).toString(), "name,description,rank", "id='" % q.value(0).toString() % "'"); q2.exec(); if(q2.next()) { addFoundAvailableDataSource(q2.value(0).toString(), q2.value(1).toString(), q2.value(2).toInt()); } } // Find all the analyzed data sources for this scan q = db->select(tableName % "_analyzedDataSources", "id2,table2", "id1='" % QString::number(id) % "'"); // note: checked that this is indeed using the index. Can go faster? Dunno. q.exec(); while(q.next()) { // get name, description, rank for this data source QSqlQuery q2 = db->select( q.value(1).toString(), "name,description,rank", "id='" % q.value(0).toString() % "'"); q2.exec(); if(q2.next()) { addFoundAvailableDataSource(q2.value(0).toString(), q2.value(1).toString(), q2.value(2).toInt()); } } } } else if(usingScanObjects_){ const AMScan *scan = scanObjectsToExport_.at(searchScanIndex_++); const AMRawDataSourceSet *rawSources = scan->rawDataSources(); const AMRawDataSource *rds; for(int x = 0; x < rawSources->count(); x++){ rds = rawSources->at(x); addFoundAvailableDataSource(rds->name(), rds->description(), rds->rank()); } const AMAnalyzedDataSourceSet *analyzedSources = scan->analyzedDataSources(); const AMAnalysisBlock *ads; for(int x = 0; x < analyzedSources->count(); x++){ ads = analyzedSources->at(x); addFoundAvailableDataSource(ads->name(), ads->description(), ads->rank()); } } // Schedule us to continue onto next scan. This 10ms timer might need to be adjusted for acceptable performance. QTimer::singleShot(10, this, SLOT(continueAvailableDataSourceSearch())); }
MemesCollection::MemesCollection(QWidget *parent) : QDialog(parent), ui(new Ui::MemesCollection) { ui->setupUi(this); QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("my.db"); db.open(); QSqlQuery *query = new QSqlQuery(db); query->exec("SELECT path, category_id FROM memes_collection"); while(query->next()){ QSqlRecord record = query->record(); MemeItem *meme = new MemeItem(record.value(0).toString(),record.value(1).toInt()); memeItems.push_back(meme); } QWidget *widget = new QWidget; scroll_all_catogories = new QScrollArea(this); scroll_all_catogories->setGeometry(this->x() + 10, this->y() + 10, this->width() - 20, this->height() - 20); scroll_all_catogories->setWidget(widget); scroll_all_catogories->setWidgetResizable(true); QWidget *widget1 = new QWidget; scroll_memes_and_animals = new QScrollArea; scroll_memes_and_animals->setMinimumHeight(240); scroll_memes_and_animals->setWidgetResizable(true); scroll_memes_and_animals->setWidget(widget1); QWidget *widget2 = new QWidget; scroll_memes_and_people = new QScrollArea; scroll_memes_and_people->setMinimumHeight(240); scroll_memes_and_people->setWidgetResizable(true); scroll_memes_and_people->setWidget(widget2); QWidget *widget3 = new QWidget; scroll_sad_memes = new QScrollArea; scroll_sad_memes->setMinimumHeight(240); scroll_sad_memes->setWidgetResizable(true); scroll_sad_memes->setWidget(widget3); QWidget *widget4 = new QWidget; scroll_strange_memes = new QScrollArea; scroll_strange_memes->setMinimumHeight(240); scroll_strange_memes->setWidgetResizable(true); scroll_strange_memes->setWidget(widget4); QWidget *widget5 = new QWidget; scroll_your_memes = new QScrollArea; scroll_your_memes->setMinimumHeight(240); scroll_your_memes->setWidgetResizable(true); scroll_your_memes->setWidget(widget5); QVBoxLayout *layout_v = new QVBoxLayout(widget); QHBoxLayout *layout_h_1 = new QHBoxLayout(widget1); QHBoxLayout *layout_h_2 = new QHBoxLayout(widget2); QHBoxLayout *layout_h_3 = new QHBoxLayout(widget3); QHBoxLayout *layout_h_4 = new QHBoxLayout(widget4); QHBoxLayout *layout_h_5 = new QHBoxLayout(widget5); QSignalMapper *signalMapper = new QSignalMapper(this); for (MemeItem *meme : memeItems){ QImage img; img.load(meme->path); img = img.scaled(198,198,Qt::KeepAspectRatio); QIcon icon(QPixmap::fromImage(img)); QPushButton *button = new QPushButton; button->setIcon(icon); button->setIconSize(QSize(198,198)); button->setMinimumHeight(200); button->setMinimumWidth(200); signalMapper->setMapping(button, meme->path); connect(button, SIGNAL(clicked()), signalMapper, SLOT(map())); connect(signalMapper, SIGNAL(mapped(QString)), this, SLOT(setChoosedItem(QString))); switch(meme->category){ case 1: button->setParent(scroll_memes_and_animals); layout_h_1->addWidget(button); break; case 2: button->setParent(scroll_memes_and_people); layout_h_2->addWidget(button); break; case 3: button->setParent(scroll_sad_memes); layout_h_3->addWidget(button); break; case 4: button->setParent(scroll_strange_memes); layout_h_4->addWidget(button); break; case 5: button->setParent(scroll_your_memes); layout_h_5->addWidget(button); break; default: break; } } scroll_memes_and_animals->widget()->setLayout(layout_h_1); scroll_memes_and_people->widget()->setLayout(layout_h_2); scroll_sad_memes->widget()->setLayout(layout_h_3); scroll_strange_memes->widget()->setLayout(layout_h_4); scroll_your_memes->widget()->setLayout(layout_h_5); QLabel *label_memes_and_animals = new QLabel(scroll_all_catogories); label_memes_and_animals->setText("MEMES AND ANIMALS"); label_memes_and_animals->setFont(QFont("Century Gothic", 16)); label_memes_and_animals->setAlignment(Qt::AlignCenter); layout_v->addWidget(label_memes_and_animals); layout_v->addWidget(scroll_memes_and_animals); QLabel *label_memes_and_people = new QLabel(scroll_all_catogories); label_memes_and_people->setText("MEMES AND PEOPLE"); label_memes_and_people->setFont(QFont("Century Gothic", 16)); label_memes_and_people->setAlignment(Qt::AlignCenter); layout_v->addWidget(label_memes_and_people); layout_v->addWidget(scroll_memes_and_people); QLabel *label_sad_memes = new QLabel(scroll_all_catogories); label_sad_memes->setText("SAD MEMES"); label_sad_memes->setFont(QFont("Century Gothic", 16)); label_sad_memes->setAlignment(Qt::AlignCenter); layout_v->addWidget(label_sad_memes); layout_v->addWidget(scroll_sad_memes); QLabel *label_strange_memes = new QLabel(scroll_all_catogories); label_strange_memes->setText("STRANGE MEMES"); label_strange_memes->setFont(QFont("Century Gothic", 16)); label_strange_memes->setAlignment(Qt::AlignCenter); layout_v->addWidget(label_strange_memes); layout_v->addWidget(scroll_strange_memes); QLabel *label_your_memes = new QLabel(scroll_all_catogories); label_your_memes->setText("YOUR MEMES"); label_your_memes->setFont(QFont("Century Gothic", 16)); label_your_memes->setAlignment(Qt::AlignCenter); layout_v->addWidget(label_your_memes); layout_v->addWidget(scroll_your_memes); scroll_all_catogories->widget()->setLayout(layout_v); db.close(); }
void QWSTreeWidget::createProjectDataset() { if (!m_pDatabaseAdapter || !m_treeModel) return; QSqlQuery sqlQuery = m_pDatabaseAdapter->sqlQuery(); QString sql; bool bRel; QList<QVariantMap> recordList; //Project sql = "select ProjectName from TblProject"; bRel = sqlQuery.exec(sql); QString strProjectName; if (bRel) { while (sqlQuery.next()) { QVariantMap m; QString name = sqlQuery.value(0).toString(); strProjectName = "TblProject#1"; m.insert(DEFAULT_ID_FIELD, strProjectName); m.insert(DEFAULT_TEXT_FIELD, QStringLiteral("工程:") + name); m.insert(DEFAULT_PID_FIELD, QVariant()); m.insert(DEFAULT_ICON_FIELD, ":/project.png"); m.insert(DEFAULT_TYPE_FIELD, TYPE_PROJECT); recordList.append(m); } } //UC sql = "select UCID, UCName from TblUC"; bRel = sqlQuery.exec(sql); QMap<int, QString> ucMap; if (bRel) { while (sqlQuery.next()) { QVariantMap m; QString ucName = sqlQuery.value(1).toString(); QString ucIDStr = "TblUC#" + sqlQuery.value(0).toString(); m.insert(DEFAULT_ID_FIELD, ucIDStr); m.insert(DEFAULT_TEXT_FIELD, ucName); m.insert(DEFAULT_PID_FIELD, strProjectName); m.insert(DEFAULT_ICON_FIELD, ":/uc.png"); m.insert(DEFAULT_TYPE_FIELD, TYPE_UC); recordList.append(m); ucMap.insert(sqlQuery.value(0).toInt(), ucIDStr); } } //PORT QMap<int, QString>::const_iterator it = ucMap.constBegin(); QMap<int, QString> portMap; while (it != ucMap.constEnd()) { sql = QString("select PortID from TblPort where UCID = %1").arg(it.key()); bRel = sqlQuery.exec(sql); if (bRel) { while (sqlQuery.next()) { QVariantMap m; QString portIDStr = "TblPort#" + sqlQuery.value(0).toString(); m.insert(DEFAULT_ID_FIELD, portIDStr); m.insert(DEFAULT_TEXT_FIELD, QStringLiteral("端口-P%1").arg(sqlQuery.value(0).toInt())); m.insert(DEFAULT_PID_FIELD, it.value()); m.insert(DEFAULT_ICON_FIELD, ":/port.png"); m.insert(DEFAULT_TYPE_FIELD, TYPE_PORT); recordList.append(m); portMap.insert(sqlQuery.value(0).toInt(), portIDStr); } } ++it; } //DEVICE it = portMap.constBegin(); while (it != portMap.constEnd()) { sql = QString("select DevID, Address, DevType, DevDsp from TblDevice where PortID = %1").arg(it.key()); bRel = sqlQuery.exec(sql); if (bRel) { while (sqlQuery.next()) { QVariantMap m; QString devID = "TblDevice#" + sqlQuery.value(0).toString(); QString devAdd = sqlQuery.value(1).toString(); QString devType = sqlQuery.value(2).toString(); QString devDsp = sqlQuery.value(3).toString(); m.insert(DEFAULT_ID_FIELD, devID); m.insert(DEFAULT_TEXT_FIELD, devAdd + " " + devType + " " + devDsp); m.insert(DEFAULT_PID_FIELD, it.value()); m.insert(DEFAULT_ICON_FIELD, ":/device.png"); m.insert(DEFAULT_TYPE_FIELD, TYPE_DEVICE); recordList.append(m); } } ++it; } //Protocol QVariantMap m; QString strProtocolName = "TblProtocol#1"; m.insert(DEFAULT_ID_FIELD, strProtocolName); m.insert(DEFAULT_TEXT_FIELD, QStringLiteral("协议管理")); m.insert(DEFAULT_PID_FIELD, strProjectName); m.insert(DEFAULT_ICON_FIELD, ":/protocol.png"); m.insert(DEFAULT_TYPE_FIELD, TYPE_PROTOCOL); recordList.append(m); m_treeModel->setDataSet(recordList); }
void RecitalTabs::recitalStateChanged(int state) { if(state && !breakComboBoxStateConnection) { //erledigt FinishRecitalDialog *dialog = new FinishRecitalDialog; dialog->exec(); if(dialog->result() == QDialog::Accepted) { if(dialog->getActivityAnswer()) { QSqlQuery query; query.prepare("SELECT pieceid FROM pieceatrecital WHERE recitalid=? AND ifexternalpiece=0"); // alle werke aus diesem Vorspiel suchen query.addBindValue(recitalId); query.exec(); if (query.lastError().isValid()) { qDebug() << "DB Error: 208 - " << query.lastError(); } else { while(query.next()) { QSqlQuery query2; query2.prepare("SELECT l.type, pal.pupilid FROM lesson l, piece p, pupilatlesson pal WHERE p.palid=pal.palid AND pal.lessonid=l.lessonid AND p.cpieceid=(SELECT cpieceid FROM piece WHERE pieceid=?)"); query2.addBindValue(query.value(0).toInt()); query2.exec(); if (query2.lastError().isValid()) { qDebug() << "DB Error: 209 - " << query2.lastError(); } else { while(query2.next()) { int activityType; if(query2.value(0).toInt() == 3) { //das ist ein Ensemble activityType = 1; } else { // das ist ein Unterricht Gruppe oder Einzel activityType = 0; } QSqlQuery query3; query3.prepare("SELECT desc, location, date FROM recital WHERE recitalid=?"); query3.addBindValue(recitalId); query3.exec(); if (query3.lastError().isValid()) { qDebug() << "DB Error: 210 - " << query3.lastError(); } else { query3.next(); QSqlQuery query4; query4.prepare("SELECT p.title , pc.composer FROM piece p, piececomposer pc WHERE p.piececomposerid=pc.piececomposerid AND p.pieceid=?"); query4.addBindValue(query.value(0).toInt()); query4.exec(); if (query4.lastError().isValid()) { qDebug() << "DB Error: 211 - " << query4.lastError(); } else { query4.next(); QSqlQuery query5; query5.prepare("INSERT INTO activity (pupilid, ifcontinous, desc, date, noncontinoustype) VALUES (?, 0, ?, ?, ?)"); query5.addBindValue(query2.value(1).toInt()); query5.addBindValue(query3.value(0).toString()+", "+query3.value(1).toString()+": "+query4.value(1).toString()+" - "+query4.value(0).toString()); query5.addBindValue(query3.value(2).toString()); query5.addBindValue(activityType); query5.exec(); if (query5.lastError().isValid()) { qDebug() << "DB Error: 231 - " << query5.lastError(); } } } } } } } } if(dialog->getPieceAnswer()) { QSqlQuery query; query.prepare("SELECT pieceid FROM pieceatrecital WHERE recitalid=? AND ifexternalpiece=0"); // alle werke aus diesem Vorspiel suchen query.addBindValue(recitalId); query.exec(); if (query.lastError().isValid()) { qDebug() << "DB Error: 213 - " << query.lastError(); } else { while(query.next()) { QSqlQuery query2; query2.prepare("UPDATE piece SET state = 4, stopdate = date('now') WHERE cpieceid=(SELECT cpieceid FROM piece WHERE pieceid=?)"); query2.addBindValue(query.value(0).toInt()); query2.exec(); if (query2.lastError().isValid()) { qDebug() << "DB Error: 214 - " << query2.lastError(); } } } } } } QSqlQuery query; query.prepare("UPDATE recital SET state = ? WHERE recitalid = ?"); query.addBindValue(state); query.addBindValue(recitalId); query.exec(); if (query.lastError().isValid()) { qDebug() << "DB Error: 212 - " << query.lastError(); } }
/** Applique les informations dans la base de donnee @return true si ok */ bool database::updateInfo(Informations &info) { if(!this->m_connected)return false; //Test si l enregistrement existe QString req = "SELECT COUNT(*) FROM TAB_INFORMATIONS WHERE ID=1;"; int count=0; QSqlQuery query; query.prepare(req); if(query.exec()){ query.next(); count = query.value(query.record().indexOf("COUNT(*)")).toInt(); } else{ QMessageBox::critical(this->m_parent, tr("Erreur"), query.lastError().text()); return false; } //Si pas d enregistrement on en creer un if(count<=0){ query.prepare("INSERT INTO TAB_INFORMATIONS(DBASE_VERSION, TAX, NAME,CA_TYPE)" "VALUES('1', '0', '', '1');"); if(!query.exec()) { QMessageBox::critical(this->m_parent, tr("Erreur"), query.lastError().text()); return false; } } // Construction de la requette // Si le charactere speciaux "\'" existe on l'adapte pour la requette QString f; req = "UPDATE TAB_INFORMATIONS SET "; req += "NAME='" + info.name.replace("\'","''") + "',"; req += "NUM='" + info.num.replace("\'","''") + "',"; req += "NUM_TAX='" + info.numTax.replace("\'","''") + "',"; req += "CAPITAL='" + info.capital.replace("\'","''") + "',"; req += "ADDRESS1='" + info.address1.replace("\'","''") + "',"; req += "ADDRESS2='" + info.address2.replace("\'","''") + "',"; req += "ADDRESS3='" + info.address3.replace("\'","''") + "',"; req += "ZIPCODE='" + info.zipCode.replace("\'","''") + "',"; req += "CITY='" + info.city.replace("\'","''") + "',"; req += "PHONENUMBER='" + info.phoneNumber.replace("\'","''") + "',"; req += "FAXNUMBER='" + info.faxNumber.replace("\'","''") + "',"; req += "EMAIL='" + info.email.replace("\'","''") + "',"; req += "WEBSITE='" + info.webSite.replace("\'","''") + "', "; req += "TAX='" + QString::number(info.tax) + "', "; req += "CA_TYPE='" + QString::number(info.ca_type) + "', "; req += "PRINT_LINE1='" + info.line1.replace("\'","''") + "', "; req += "PRINT_LINE2='" + info.line2.replace("\'","''") + "', "; req += "PRINT_LINE3='" + info.line3.replace("\'","''") + "', "; req += "PRINT_LINE4='" + info.line4.replace("\'","''") + "', "; req += "BORDER_RADIUS='" + QString::number(info.borderRadius) + "', "; req += "DRAW_LINE='" + QString::number(info.drawLine) + "', "; req += "MANAGE_STOCK='" + QString::number(info.manageStock) + "', "; req += "CURRENCY='" + info.currency.replace("\'","''") + "' "; req += "WHERE ID='1';"; query.prepare(req); if(!query.exec()) { QMessageBox::critical(this->m_parent, tr("Erreur"), query.lastError().text()); return false; } /* update cache */ m_isTax = info.tax; return true; }
QVariant QCDRTableModel::data(const QModelIndex & idx, int role) const { if (!idx.isValid()) return QVariant(); if (role == Qt::TextColorRole) { // расскрасим int typecall = data(index(idx.row(), QCDRSortFilterModel::COL_CALL_TYPE), Qt::UserRole).toInt(); switch (typecall) { case Qcallog::TYPE_LOCAL: return QBrush(QColor(90, 90, 90));; case Qcallog::TYPE_IN_LOCAL: return QBrush(QColor(50, 255, 50)); case Qcallog::TYPE_OUT_INTERNATIONAL: return QBrush(QColor(20, 20, 20));; case Qcallog::TYPE_OUT_NATIONAL: return QBrush(QColor(20, 20, 20));; case Qcallog::TYPE_OUT_LOCAL: return QBrush(QColor(100, 200, 100)); case Qcallog::TYPE_TRANZIT_INTERNATIONAL: return QBrush(QColor(255, 80, 80)); case Qcallog::TYPE_TRANZIT_NATIONAL: return QBrush(QColor(255, 10, 20)); case Qcallog::TYPE_TRANZIT_LOCAL: return QBrush(QColor(100, 100, 200)); default: return QBrush(QColor(0, 0, 0)); } } if (role == Qt::DisplayRole || role == Qt::UserRole) { if (idx.column() == QCDRSortFilterModel::COL_IN_TYPE || idx.column() == QCDRSortFilterModel::COL_OUT_TYPE) { QString strtype = QSqlTableModel::data(idx, Qt::DisplayRole).toString(); int module = QSqlTableModel::data(QSqlTableModel::index(idx.row(), idx.column() + 1), Qt::DisplayRole).toInt(); int pcm = QSqlTableModel::data(QSqlTableModel::index(idx.row(), idx.column() + 2), Qt::DisplayRole).toInt(); int ch = QSqlTableModel::data(QSqlTableModel::index(idx.row(), idx.column() + 3), Qt::DisplayRole).toInt(); QString str1 = QString("%1").arg(module, 3, 10, QLatin1Char('0')); QString str2 = QString("%1").arg(pcm, 3, 10, QLatin1Char('0')); QString str3 = QString("%1").arg(ch, 3, 10, QLatin1Char('0')); QString val = QString("%1%2%3%4").arg(strtype).arg(str1).arg(strtype == "A" ? "" : str2).arg(strtype == "A" ? "" : str3); if (strtype == "C") { // попытаемся найти имя этого канала по базе qint64 address = ((qint64)module << 32) | (pcm << 16) | ch; QSqlQuery query; if (query.exec(QString("select name from DirectionChannel, DirectionName where key = id and fr <= %1 and by >= %1").arg(address))) { if (query.next()) return query.value(0).toString(); } } return val; } } if (role == Qt::DisplayRole) { if (idx.column() == QCDRSortFilterModel::COL_DATE) return QDate::fromJulianDay(QSqlTableModel::data(idx, role).toLongLong()).toString("dd-MM-yyyy"); if (idx.column() == QCDRSortFilterModel::COL_TIME) return QTime(0, 0).addSecs(QSqlTableModel::data(idx, role).toLongLong()).toString("hh:mm:ss"); if (idx.column() == QCDRSortFilterModel::COL_TIME_SEIZ) return QTime(0, 0).addSecs(QSqlTableModel::data(idx, role).toLongLong()).toString("hh:mm:ss"); if (idx.column() == QCDRSortFilterModel::COL_TIME_TALK) return QTime(0, 0).addSecs(QSqlTableModel::data(idx, role).toLongLong()).toString("hh:mm:ss"); if (idx.column() == QCDRSortFilterModel::COL_CALL_TYPE) return Qcallog::getQStringTypeCalls(data(idx, Qt::UserRole).toInt()); if (idx.column() == QCDRSortFilterModel::COL_CRELEASE) return QCDRSortFilterModel::causeValue.value(QSqlTableModel::data(idx, role).toInt()).second; } if (role == Qt::UserRole) { // if (idx.column() == QCDRSortFilterModel::COL_CRELEASE) // return QSqlTableModel::data(idx, Qt::DisplayRole); if (idx.column() == QCDRSortFilterModel::COL_CALL_TYPE) { QString strTypeIn = QSqlTableModel::data(index(idx.row(), QCDRSortFilterModel::COL_IN_TYPE), Qt::DisplayRole).toString(); QString strTypeOut = QSqlTableModel::data(index(idx.row(), QCDRSortFilterModel::COL_OUT_TYPE), Qt::DisplayRole).toString(); QString strNumberIn = QSqlTableModel::data(index(idx.row(), QCDRSortFilterModel::COL_IN_NUMBER), Qt::DisplayRole).toString(); QString strNumberOut = QSqlTableModel::data(index(idx.row(), QCDRSortFilterModel::COL_OUT_NUMBER), Qt::DisplayRole).toString(); return Qcallog::getIntTypeCalls(QStringList() << strTypeIn << strTypeOut << strNumberIn << strNumberOut); } } return QSqlTableModel::data(idx, role); }
void MainWindow::fillStepSheet() { myStatusBar->showMessage(tr("Fill Step Window sheets..")); initStepSheet(); int componentNo =0; if( tabMain->currentRow() <0) return; int tabMainCurrentRow = tabMain->currentRow(); componentNo= tabMain->item(tabMainCurrentRow,2)->text().toInt(); QSqlQuery query = clsDbOp::getInst()->getStepSheet(componentNo,stepSelectMode); while(query.next()) { tabStep->setRowCount(tabStep->rowCount()+1); bool status = query.value("ResultStatus").toBool(); tabStep->setItem(tabStep->rowCount()-1,0, getTableWidgetItem(query.value("ComponentNo").toInt(),status)); tabStep->setItem(tabStep->rowCount()-1,1, getTableWidgetItem(query.value("mStepNumber").toInt(),status)); tabStep->setItem(tabStep->rowCount()-1,2, getTableWidgetItem(query.value("ResultStatus").toBool(),status)); QString strItem1 = clsUserFunction::getFunctionName( query.value("mTerm1").toInt()); QString strEqucct = clsUserFunction::getEqucct( query.value("mStepCCT").toInt()); tabStep->setItem(tabStep->rowCount()-1,3, getTableWidgetItem(strItem1+strEqucct,status)); double dblItem1 = query.value("mT1Result").toDouble(); QString strItem1Suffix = clsUserFunction::getSuffix(query.value("mTerm1").toInt()); doubleType dt; dt.setData(dblItem1); if(!strItem1Suffix.isEmpty()) tabStep->setItem(tabStep->rowCount()-1,4, getTableWidgetItem(dt.formateToString()+strItem1Suffix, status)); else tabStep->setItem(tabStep->rowCount()-1,4, getTableWidgetItem(dt.formateWithUnit("")+ strItem1Suffix, status)); tabStep->setItem(tabStep->rowCount()-1,5, getTableWidgetItem(query.value("T1Status").toBool(),status)); QString strItem2 = clsUserFunction::getFunctionName( query.value("mTerm2").toInt()); QString strItem2Suffix =clsUserFunction::getSuffix(query.value("mTerm2").toInt()); tabStep->setItem(tabStep->rowCount()-1,6, getTableWidgetItem(strItem2+strEqucct,status)); double dblItem2 = query.value("mT2Result").toDouble(); dt.setData(dblItem2); if(!strItem2Suffix.isEmpty()) tabStep->setItem(tabStep->rowCount()-1,7, getTableWidgetItem(dt.formateToString()+strItem2Suffix, status)); else tabStep->setItem(tabStep->rowCount()-1,7, getTableWidgetItem(dt.formateWithUnit("")+ strItem2Suffix, status)); tabStep->setItem(tabStep->rowCount()-1,8, getTableWidgetItem(query.value("T2Status").toBool(),status)); } myStatusBar->showMessage(tr("Done")); }
void MainWindow::onReleasePushButtonClicked() { ui->releasePushButton->setEnabled( false ); QString serial = ui->serialLineEdit->text().replace("-", ""); QMessageBox msgBox(ui->centralWidget); msgBox.setWindowTitle( tr("シリアル番号の入力")); DbConnect db; if ( ! db.isConnect ) { msgBox.setText( tr("サーバーに接続できません。<br>インターネット接続をお確かめください。") ); msgBox.exec(); return; } QHash<QString, QString> selectParams, updateParams; selectParams.insert(":SERIAL", serial); updateParams.insert(":SERIAL", serial); selectParams.insert(":ON", STORES_ON ); selectParams.insert(":OFF", STORES_OFF ); { QString sql; sql = " UPDATE stores "; sql += " SET "; sql += " on_off = :ON"; sql += " WHERE serial = :SERIAL "; sql += " AND on_off = :OFF "; db.queryPrepareExecute(sql, selectParams); } { QString sql; sql = " SELECT "; sql += " A.name "; sql += " ,A.on_off "; sql += " FROM stores A "; sql += " WHERE A.serial = :SERIAL "; QSqlQuery *query = db.queryPrepareExecute(sql, updateParams); while ( query->next()) { QString name = query->value(0).toString(); QString on_off = query->value(1).toString(); // qDebug() << name << on_off; if ( on_off == STORES_ON ) { msgBox.setStandardButtons(QMessageBox::Ok); msgBox.setText( tr("制限は解除されました。") ); ui->decorativeProgressBar->setMaximum( 100 ); } } if ( 0 == query->size() ) { msgBox.setStandardButtons(QMessageBox::Yes); msgBox.setText( tr("制限が解除できませんでした。\nシリアル番号をご確認ください。") ); ui->decorativeProgressBar->setMaximum( 50 ); } } ui->decorativeProgressBar->setVisible( true ); /* 飾りプログレスバー */ QEventLoop loop; for (int i = 0; i <= 100; i++ ) { QTimer::singleShot( 50, &loop, SLOT( quit() ) ); loop.exec(); ui->decorativeProgressBar->setValue(i); } msgBox.exec(); }
bool ProbIsDepend(unsigned int aProbId) { QSqlQuery query; query.exec("SELECT * FROM problem_depend WHERE prob2_id = " + QString::number(aProbId)); return query.next(); }
void editRoom::on_catList_currentIndexChanged() { ui->roomList->clear(); QString nameStr= ui->catList->currentText(); if(nameStr==" :: Select One :: ") { ui->roomList->clear(); ui->roomName->setEnabled(0); return; } ui->roomName->setEnabled(1); QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE" ); db.setDatabaseName( "./innovativedb.sqlite" ); if( !db.open() ) { qDebug() << db.lastError(); qFatal( "Failed to connect." ); } qDebug( "Connected!" ); QSqlQuery qry; qry.prepare("CREATE TABLE IF NOT EXISTS roomcat (id INTEGET PRIMARY KEY, item VARCHAR(30), price INTEGER)"); if(!qry.exec()) qDebug() << qry.lastError(); else qDebug( "Table Created!" ); qry.prepare("SELECT id FROM roomcat WHERE item = :name"); qry.bindValue(":name",nameStr); if(!qry.exec()) { qDebug() << qry.lastError(); } else qDebug( "Table Selected!" ); int i=0; while (qry.next()) { i = qry.value(0).toInt(); } if(i==0) { qFatal("MAYDAY!!! DATABASE ERROR!!!"); } qry.prepare("CREATE TABLE IF NOT EXISTS roomlist (id INTEGET PRIMARY KEY, roomno VARCHAR(5), cat INTEGER, occupied INTEGER)"); if(!qry.exec()) qDebug() << qry.lastError(); else qDebug( "Room Table Validated..." ); qry.prepare("SELECT roomno FROM roomlist WHERE cat = :item"); qry.bindValue(":item",i); if(!qry.exec()) qDebug() << qry.lastError(); else qDebug( "Room Table Validated..." ); while (qry.next()) { QString roomno = qry.value(0).toString(); ui->roomList->addItem(roomno); } }
// update the extent for this layer void QgsDb2Provider::updateStatistics() const { // get features to calculate the statistics QString statement; QSqlQuery query = QSqlQuery( mDatabase ); query.setForwardOnly( true ); statement = QString( "SELECT MIN(DB2GSE.ST_MINX(%1)), MIN(DB2GSE.ST_MINY(%1)), MAX(DB2GSE.ST_MAXX(%1)), MAX(DB2GSE.ST_MAXY(%1))" ).arg( mGeometryColName ); statement += QString( " FROM %1.%2" ).arg( mSchemaName, mTableName ); if ( !mSqlWhereClause.isEmpty() ) { statement += " WHERE (" + mSqlWhereClause + ")"; } QgsDebugMsg( statement ); if ( !query.exec( statement ) ) { QgsDebugMsg( query.lastError().text() ); } if ( !query.isActive() ) { return; } if ( query.next() ) { mExtent.setXMinimum( query.value( 0 ).toDouble() ); mExtent.setYMinimum( query.value( 1 ).toDouble() ); mExtent.setXMaximum( query.value( 2 ).toDouble() ); mExtent.setYMaximum( query.value( 3 ).toDouble() ); QgsDebugMsg( QString( "after setting; mExtent: %1" ).arg( mExtent.toString() ) ); } QgsDebugMsg( QString( "mSRId: %1" ).arg( mSRId ) ); QgsDb2GeometryColumns gc( mDatabase ); int rc = gc.open( mSchemaName, mTableName ); // returns SQLCODE if failure if ( rc == 0 ) { mEnvironment = gc.db2Environment(); if ( -1 == mSRId ) { QgsDb2LayerProperty layer; gc.populateLayerProperty( layer ); if ( !layer.srid.isEmpty() ) { mSRId = layer.srid.toInt(); mSrsName = layer.srsName; } mGeometryColType = layer.type; QgsDebugMsg( QString( "srs_id: %1; srs_name: %2; mGeometryColType: %3" ) .arg( mSRId ).arg( mSrsName, mGeometryColType ) ); return; } } else { QgsDebugMsg( "Couldn't get srid from geometry columns" ); } // Try to get the srid from the data if srid isn't already set QgsDebugMsg( QString( "mSRId: %1" ).arg( mSRId ) ); if ( -1 == mSRId ) { query.clear(); statement = QString( "SELECT DB2GSE.ST_SRID(%1) FROM %2.%3 FETCH FIRST ROW ONLY" ) .arg( mGeometryColName, mSchemaName, mTableName ); QgsDebugMsg( statement ); if ( !query.exec( statement ) || !query.isActive() ) { QgsDebugMsg( query.lastError().text() ); } if ( query.next() ) { mSRId = query.value( 0 ).toInt(); QgsDebugMsg( QString( "srid from data: %1" ).arg( mSRId ) ); return; } else { QgsDebugMsg( "Couldn't get srid from data" ); } } }
bool Servatrice::initServer() { serverName = settingsCache->value("server/name", "My Cockatrice server").toString(); serverId = settingsCache->value("server/id", 0).toInt(); clientIdRequired = settingsCache->value("server/requireclientid",0).toBool(); regServerOnly = settingsCache->value("authentication/regonly", 0).toBool(); const QString authenticationMethodStr = settingsCache->value("authentication/method").toString(); if (authenticationMethodStr == "sql") { qDebug() << "Authenticating method: sql"; authenticationMethod = AuthenticationSql; } else if(authenticationMethodStr == "password") { qDebug() << "Authenticating method: password"; authenticationMethod = AuthenticationPassword; } else { if (regServerOnly) { qDebug() << "Registration only server enabled but no authentication method defined: Error."; return false; } qDebug() << "Authenticating method: none"; authenticationMethod = AuthenticationNone; } qDebug() << "Store Replays: " << settingsCache->value("game/store_replays", true).toBool(); qDebug() << "Client ID Required: " << clientIdRequired; bool maxUserLimitEnabled = settingsCache->value("security/enable_max_user_limit", false).toBool(); qDebug() << "Maximum user limit enabled: " << maxUserLimitEnabled; if (maxUserLimitEnabled){ int maxUserLimit = settingsCache->value("security/max_users_total", 500).toInt(); qDebug() << "Maximum total user limit: " << maxUserLimit; int maxTcpUserLimit = settingsCache->value("security/max_users_tcp", 500).toInt(); qDebug() << "Maximum tcp user limit: " << maxTcpUserLimit; int maxWebsocketUserLimit = settingsCache->value("security/max_users_websocket", 500).toInt(); qDebug() << "Maximum websocket user limit: " << maxWebsocketUserLimit; } bool registrationEnabled = settingsCache->value("registration/enabled", false).toBool(); bool requireEmailForRegistration = settingsCache->value("registration/requireemail", true).toBool(); bool requireEmailActivation = settingsCache->value("registration/requireemailactivation", true).toBool(); qDebug() << "Accept registered users only: " << regServerOnly; qDebug() << "Registration enabled: " << registrationEnabled; if (registrationEnabled) { qDebug() << "Require email address to register: " << requireEmailForRegistration; qDebug() << "Require email activation via token: " << requireEmailActivation; } FeatureSet features; features.initalizeFeatureList(serverRequiredFeatureList); requiredFeatures = settingsCache->value("server/requiredfeatures","").toString(); QStringList listReqFeatures = requiredFeatures.split(",", QString::SkipEmptyParts); if (!listReqFeatures.isEmpty()) foreach(QString reqFeature, listReqFeatures) features.enableRequiredFeature(serverRequiredFeatureList,reqFeature); qDebug() << "Required client features: " << serverRequiredFeatureList; QString dbTypeStr = settingsCache->value("database/type").toString(); if (dbTypeStr == "mysql") databaseType = DatabaseMySql; else databaseType = DatabaseNone; servatriceDatabaseInterface = new Servatrice_DatabaseInterface(-1, this); setDatabaseInterface(servatriceDatabaseInterface); if (databaseType != DatabaseNone) { settingsCache->beginGroup("database"); dbPrefix = settingsCache->value("prefix").toString(); bool dbOpened = servatriceDatabaseInterface->initDatabase("QMYSQL", settingsCache->value("hostname").toString(), settingsCache->value("database").toString(), settingsCache->value("user").toString(), settingsCache->value("password").toString()); settingsCache->endGroup(); if (!dbOpened) { qDebug() << "Failed to open database"; return false; } updateServerList(); qDebug() << "Clearing previous sessions..."; servatriceDatabaseInterface->clearSessionTables(); } const QString roomMethod = settingsCache->value("rooms/method").toString(); if (roomMethod == "sql") { QSqlQuery *query = servatriceDatabaseInterface->prepareQuery("select id, name, descr, permissionlevel, auto_join, join_message, chat_history_size from {prefix}_rooms where id_server = :id_server order by id asc"); query->bindValue(":id_server", serverId); servatriceDatabaseInterface->execSqlQuery(query); while (query->next()) { QSqlQuery *query2 = servatriceDatabaseInterface->prepareQuery("select name from {prefix}_rooms_gametypes where id_room = :id_room AND id_server = :id_server"); query2->bindValue(":id_server", serverId); query2->bindValue(":id_room", query->value(0).toInt()); servatriceDatabaseInterface->execSqlQuery(query2); QStringList gameTypes; while (query2->next()) gameTypes.append(query2->value(0).toString()); addRoom(new Server_Room(query->value(0).toInt(), query->value(6).toInt(), query->value(1).toString(), query->value(2).toString(), query->value(3).toString().toLower(), query->value(4).toInt(), query->value(5).toString(), gameTypes, this )); } } else { int size = settingsCache->beginReadArray("rooms/roomlist"); for (int i = 0; i < size; ++i) { settingsCache->setArrayIndex(i); QStringList gameTypes; int size2 = settingsCache->beginReadArray("game_types"); for (int j = 0; j < size2; ++j) { settingsCache->setArrayIndex(j); gameTypes.append(settingsCache->value("name").toString()); } settingsCache->endArray(); Server_Room *newRoom = new Server_Room( i, settingsCache->value("chathistorysize").toInt(), settingsCache->value("name").toString(), settingsCache->value("description").toString(), settingsCache->value("permissionlevel").toString().toLower(), settingsCache->value("autojoin").toBool(), settingsCache->value("joinmessage").toString(), gameTypes, this ); addRoom(newRoom); } if(size==0) { // no room defined in config, add a dummy one Server_Room *newRoom = new Server_Room( 0, 100, "General room", "Play anything here.", "none", true, "", QStringList("Standard"), this ); addRoom(newRoom); } settingsCache->endArray(); } updateLoginMessage(); maxGameInactivityTime = settingsCache->value("game/max_game_inactivity_time", 120).toInt(); maxPlayerInactivityTime = settingsCache->value("server/max_player_inactivity_time", 15).toInt(); pingClockInterval = settingsCache->value("server/clientkeepalive", 1).toInt(); maxUsersPerAddress = settingsCache->value("security/max_users_per_address", 4).toInt(); messageCountingInterval = settingsCache->value("security/message_counting_interval", 10).toInt(); maxMessageCountPerInterval = settingsCache->value("security/max_message_count_per_interval", 15).toInt(); maxMessageSizePerInterval = settingsCache->value("security/max_message_size_per_interval", 1000).toInt(); maxGamesPerUser = settingsCache->value("security/max_games_per_user", 5).toInt(); commandCountingInterval = settingsCache->value("game/command_counting_interval", 10).toInt(); maxCommandCountPerInterval = settingsCache->value("game/max_command_count_per_interval", 20).toInt(); try { if (settingsCache->value("servernetwork/active", 0).toInt()) { qDebug() << "Connecting to ISL network."; const QString certFileName = settingsCache->value("servernetwork/ssl_cert").toString(); const QString keyFileName = settingsCache->value("servernetwork/ssl_key").toString(); qDebug() << "Loading certificate..."; QFile certFile(certFileName); if (!certFile.open(QIODevice::ReadOnly)) throw QString("Error opening certificate file: %1").arg(certFileName); QSslCertificate cert(&certFile); const QDateTime currentTime = QDateTime::currentDateTime(); if(currentTime < cert.effectiveDate() || currentTime > cert.expiryDate() || cert.isBlacklisted()) throw(QString("Invalid certificate.")); qDebug() << "Loading private key..."; QFile keyFile(keyFileName); if (!keyFile.open(QIODevice::ReadOnly)) throw QString("Error opening private key file: %1").arg(keyFileName); QSslKey key(&keyFile, QSsl::Rsa, QSsl::Pem, QSsl::PrivateKey); if (key.isNull()) throw QString("Invalid private key."); QMutableListIterator<ServerProperties> serverIterator(serverList); while (serverIterator.hasNext()) { const ServerProperties &prop = serverIterator.next(); if (prop.cert == cert) { serverIterator.remove(); continue; } QThread *thread = new QThread; thread->setObjectName("isl_" + QString::number(prop.id)); connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater())); IslInterface *interface = new IslInterface(prop.id, prop.hostname, prop.address.toString(), prop.controlPort, prop.cert, cert, key, this); interface->moveToThread(thread); connect(interface, SIGNAL(destroyed()), thread, SLOT(quit())); thread->start(); QMetaObject::invokeMethod(interface, "initClient", Qt::BlockingQueuedConnection); } const int networkPort = settingsCache->value("servernetwork/port", 14747).toInt(); qDebug() << "Starting ISL server on port" << networkPort; islServer = new Servatrice_IslServer(this, cert, key, this); if (islServer->listen(QHostAddress::Any, networkPort)) qDebug() << "ISL server listening."; else throw QString("islServer->listen()"); } } catch (QString error) { qDebug() << "ERROR --" << error; return false; } pingClock = new QTimer(this); connect(pingClock, SIGNAL(timeout()), this, SIGNAL(pingClockTimeout())); pingClock->start(pingClockInterval * 1000); int statusUpdateTime = settingsCache->value("server/statusupdate", 15000).toInt(); statusUpdateClock = new QTimer(this); connect(statusUpdateClock, SIGNAL(timeout()), this, SLOT(statusUpdate())); if (statusUpdateTime != 0) { qDebug() << "Starting status update clock, interval " << statusUpdateTime << " ms"; statusUpdateClock->start(statusUpdateTime); } // SOCKET SERVER const int numberPools = settingsCache->value("server/number_pools", 1).toInt(); if(numberPools > 0) { gameServer = new Servatrice_GameServer(this, numberPools, servatriceDatabaseInterface->getDatabase(), this); gameServer->setMaxPendingConnections(1000); const int gamePort = settingsCache->value("server/port", 4747).toInt(); qDebug() << "Starting server on port" << gamePort; if (gameServer->listen(QHostAddress::Any, gamePort)) qDebug() << "Server listening."; else { qDebug() << "gameServer->listen(): Error:" << gameServer->errorString(); return false; } } #if QT_VERSION > 0x050300 // WEBSOCKET SERVER const int wesocketNumberPools = settingsCache->value("server/websocket_number_pools", 1).toInt(); if(wesocketNumberPools > 0) { websocketGameServer = new Servatrice_WebsocketGameServer(this, wesocketNumberPools, servatriceDatabaseInterface->getDatabase(), this); websocketGameServer->setMaxPendingConnections(1000); const int websocketGamePort = settingsCache->value("server/websocket_port", 4748).toInt(); qDebug() << "Starting websocket server on port" << websocketGamePort; if (websocketGameServer->listen(QHostAddress::Any, websocketGamePort)) qDebug() << "Websocket server listening."; else { qDebug() << "websocketGameServer->listen(): Error:" << websocketGameServer->errorString(); return false; } } #endif return true; }
bool QgsDb2Provider::addFeatures( QgsFeatureList & flist ) { QgsDebugMsg( "mGeometryColType: " + mGeometryColType ); int writeCount = 0; bool copyOperation = false; if ( !mDatabase.isOpen() ) { QString errMsg; mDatabase = getDatabase( mConnInfo, errMsg ); if ( !errMsg.isEmpty() ) { QgsDebugMsg( "getDatabase failed: " + errMsg ); return false; } } if ( !mDatabase.transaction() ) { QgsDebugMsg( "transaction failed" ); return false; } QSqlQuery query = QSqlQuery( mDatabase ); query.setForwardOnly( true ); QSqlQuery queryFid = QSqlQuery( mDatabase ); queryFid.setForwardOnly( true ); QgsFeature it = flist.at( 0 ); QString statement; QString values; statement = QString( "INSERT INTO %1.%2 (" ).arg( mSchemaName, mTableName ); bool first = true; // Get the first geometry and its wkbType as when we are doing drag/drop, // the wkbType is not passed to the DB2 provider from QgsVectorLayerImport // Can't figure out how to resolved "unreferenced" wkbType compile message // Don't really do anything with it at this point #if 0 QgsGeometry *geom = it.geometry(); QgsWkbTypes::Type wkbType = geom->wkbType(); QgsDebugMsg( QString( "wkbType: %1" ).arg( wkbType ) ); QgsDebugMsg( QString( "mWkbType: %1" ).arg( mWkbType ) ); #endif QgsAttributes attrs = it.attributes(); QgsDebugMsg( QString( "attrs.count: %1" ).arg( attrs.count() ) ); QgsDebugMsg( QString( "fields.count: %1" ).arg( mAttributeFields.count() ) ); if ( mAttributeFields.count() == ( attrs.count() + 1 ) ) { copyOperation = true; // FID is first field but no attribute in attrs } else if ( mAttributeFields.count() != attrs.count() ) { QgsDebugMsg( "Count mismatch - failing" ); return false; } if ( attrs.count() != mAttributeFields.count() ) { QgsDebugMsg( "field counts don't match" ); // return false; } for ( int i = 0; i < mAttributeFields.count(); ++i ) { QgsField fld = mAttributeFields.at( i ); QgsDebugMsg( QString( "i: %1; got field: %2" ).arg( i ).arg( fld.name() ) ); if ( fld.name().isEmpty() ) continue; // invalid if ( mFidColName == fld.name() ) continue; // skip identity field // if ( mDefaultValues.contains( i ) && mDefaultValues[i] == attrs.at( i ) ) // continue; // skip fields having default values if ( !first ) { statement += ','; values += ','; } else first = false; statement += QString( "%1" ).arg( fld.name() ); values += QString( "?" ); } // append geometry column name if ( !mGeometryColName.isEmpty() ) { if ( !first ) { statement += ','; values += ','; } statement += QString( "%1" ).arg( mGeometryColName ); values += QString( "db2gse.%1(CAST (%2 AS BLOB(2M)),%3)" ) .arg( mGeometryColType, QString( "?" ), QString::number( mSRId ) ); } QgsDebugMsg( statement ); QgsDebugMsg( values ); statement += ") VALUES (" + values + ')'; QgsDebugMsg( statement ); QgsDebugMsg( "Prepare statement" ); // use prepared statement to prevent from sql injection if ( !query.prepare( statement ) ) { QString msg = query.lastError().text(); QgsDebugMsg( msg ); pushError( msg ); return false; } for ( QgsFeatureList::iterator it = flist.begin(); it != flist.end(); ++it ) { attrs = it->attributes(); int fieldIdx = 0; if ( copyOperation ) { fieldIdx = 1; // skip first (FID) field if copying from shapefile } int bindIdx = 0; for ( int i = 0; i < attrs.count(); i++ ) { QgsField fld = mAttributeFields.at( fieldIdx++ ); if ( fld.name().isEmpty() ) continue; // invalid if ( mFidColName == fld.name() ) continue; // skip identity field // if ( mDefaultValues.contains( i ) && mDefaultValues[i] == attrs.at( i ) ) // continue; // skip fields having default values QVariant::Type type = fld.type(); if ( attrs.at( i ).isNull() || !attrs.at( i ).isValid() ) { // binding null values if ( type == QVariant::Date || type == QVariant::DateTime ) query.bindValue( bindIdx, QVariant( QVariant::String ) ); else query.bindValue( bindIdx, QVariant( type ) ); } else if ( type == QVariant::Int ) { // binding an INTEGER value query.bindValue( bindIdx, attrs.at( i ).toInt() ); } else if ( type == QVariant::Double ) { // binding a DOUBLE value query.bindValue( bindIdx, attrs.at( i ).toDouble() ); } else if ( type == QVariant::String ) { // binding a TEXT value query.bindValue( bindIdx, attrs.at( i ).toString() ); } else if ( type == QVariant::Time ) { // binding a TIME value query.bindValue( bindIdx, attrs.at( i ).toTime().toString( Qt::ISODate ) ); } else if ( type == QVariant::Date ) { // binding a DATE value query.bindValue( bindIdx, attrs.at( i ).toDate().toString( Qt::ISODate ) ); } else if ( type == QVariant::DateTime ) { // binding a DATETIME value query.bindValue( bindIdx, attrs.at( i ).toDateTime().toString( Qt::ISODate ) ); } else { query.bindValue( bindIdx, attrs.at( i ) ); } #if 0 QgsDebugMsg( QString( "bound i: %1; name: %2; value: %3; bindIdx: %4" ). arg( i ).arg( fld.name() ).arg( attrs.at( i ).toString() ).arg( bindIdx ) ); #endif bindIdx++; } if ( !mGeometryColName.isEmpty() ) { QgsGeometry geom = it->geometry(); QByteArray bytea = QByteArray(( char* )geom.asWkb(), ( int ) geom.wkbSize() ); query.bindValue( bindIdx, bytea, QSql::In | QSql::Binary ); } QList<QVariant> list = query.boundValues().values(); // Show bound values #if 0 for ( int i = 0; i < list.size(); ++i ) { QgsDebugMsg( QString( "i: %1; value: %2; type: %3" ) .arg( i ).arg( list.at( i ).toString().toLatin1().data() ).arg( list.at( i ).typeName() ) ); } #endif if ( !query.exec() ) { QString msg = query.lastError().text(); QgsDebugMsg( msg ); if ( !mSkipFailures ) { pushError( msg ); return false; } } statement = QString( "select IDENTITY_VAL_LOCAL() AS IDENTITY " "FROM SYSIBM.SYSDUMMY1" ); // QgsDebugMsg( statement ); if ( !queryFid.exec( statement ) ) { QString msg = query.lastError().text(); QgsDebugMsg( msg ); if ( !mSkipFailures ) { pushError( msg ); return false; } } if ( !queryFid.next() ) { QString msg = query.lastError().text(); QgsDebugMsg( msg ); if ( !mSkipFailures ) { pushError( msg ); return false; } } it->setFeatureId( queryFid.value( 0 ).toLongLong() ); writeCount++; // QgsDebugMsg( QString( "count: %1; featureId: %2" ).arg( writeCount ).arg( queryFid.value( 0 ).toLongLong() ) ); } bool commitStatus = mDatabase.commit(); QgsDebugMsg( QString( "commitStatus: %1; write count: %2; featureId: %3" ) .arg( commitStatus ).arg( writeCount ).arg( queryFid.value( 0 ).toLongLong() ) ); if ( !commitStatus ) { pushError( "Commit of new features failed" ); return false; } return true; }
IResponse *GroupsService::getGroupUsers( IRequest *req) { QVariantMap error; if(!m_proxyConnection->session()->isLoggedIn()) req->response(IResponse::UNAUTHORIZED); QString curUserId = m_proxyConnection->session()->value("logged").toString(); bool missingValue = false; QString group_id = req->parameterValue("group_id"); if(group_id == ""){ error.insert("group_id","required"); missingValue = true; } if(missingValue) return req->response(QVariant(error), IResponse::BAD_REQUEST); QVariantList users; QSqlQuery query; if(this->isMember(curUserId.toUInt(), group_id.toUInt())){ //awaiting users query.prepare("SELECT * FROM users " "INNER JOIN group_users ON users.id = group_users.user_id " "WHERE group_users.status = 0 AND group_users.group_id = :group_id"); query.bindValue(":group_id", group_id); if(!query.exec()) return req->response(IResponse::INTERNAL_SERVER_ERROR); while(query.next()){ QVariantMap user; user.insert("id",query.value(query.record().indexOf("id"))); user.insert("first_name",query.value(query.record().indexOf("first_name"))); user.insert("first_name",query.value(query.record().indexOf("first_name"))); user.insert("last_name",query.value(query.record().indexOf("last_name"))); user.insert("gender",query.value(query.record().indexOf("gender"))); user.insert("isAdmin","0"); user.insert("status","awaiting"); users.append(user); } // approved members query.prepare("SELECT * FROM users " "INNER JOIN group_users ON users.id = group_users.user_id " "WHERE group_users.status = 1 AND group_users.group_id = :group_id"); query.bindValue(":group_id", group_id); if(!query.exec()) return req->response(IResponse::INTERNAL_SERVER_ERROR); while(query.next()){ QVariantMap user; user.insert("id",query.value(query.record().indexOf("id"))); user.insert("first_name",query.value(query.record().indexOf("first_name"))); user.insert("last_name",query.value(query.record().indexOf("last_name"))); user.insert("gender",query.value(query.record().indexOf("gender"))); if(this->isAdmin(query.value(query.record().indexOf("id")).toUInt(),group_id.toUInt())) user.insert("isAdmin","1"); else user.insert("isAdmin","0"); user.insert("status","member"); user.insert("member_since",query.value(query.record().indexOf("date_updated"))); users.append(user); } return req->response(QVariant(users),IResponse::OK); } return req->response(IResponse::FORBIDDEN); }
/** Load a manPage from /usr/share/man. Also load usage, examples and options */ void Man::loadPage() { tblOptions->clear(); tblOptions->setRowCount(0); QSqlQuery query; query.exec("SELECT PATH FROM TMAN_PAGE WHERE TITLE = '"+ cbbManPagelist->itemText(cbbManPagelist->currentIndex())+"'"); while (query.next()) { system("mkdir /tmp/man"); std::string cmdCopy = "cp " + query.value(0).toString().toStdString() + " /tmp/man/"; std::string name; std::string command; system(cmdCopy.c_str()); if (query.value(0).toString().toStdString().find(".bz2") != -1) { name = query.value(0).toString().toStdString().substr( query.value(0).toString().toStdString().find_last_of("/") +1, (query.value(0).toString().toStdString().size() - query.value(0).toString().toStdString().find_last_of("/") -1)); command = "bunzip2 -d /tmp/man/" + name; name = name.substr(0, name.find(".bz2")); } else { name = query.value(0).toString().toStdString().substr( query.value(0).toString().toStdString().find_last_of("/") +1, (query.value(0).toString().toStdString().size() - query.value(0).toString().toStdString().find_last_of("/") -1)); //unGz(name); command = "gunzip /tmp/man/" + name; name = name.substr(0, name.find(".gz")); } system(command.c_str()); rtfManPage->setHtml(ManParser::parseManPage(name).c_str()); } QSqlQuery query2; query2.exec("SELECT OPT_NAME,OPT_DES FROM TOPTION WHERE COMMAND = '"+ cbbManPagelist->itemText(cbbManPagelist->currentIndex())+"'"); int row = 1; tblOptions->setColumnCount(2); while (query2.next()) { tblOptions->setRowCount(row); QWidget* aWidget = new QWidget(tblOptions); //Dirty hack to fix a QT bug QLabel* aTableWidget = new QLabel(aWidget); aTableWidget->setText(query2.value(0).toString()); tblOptions->setCellWidget((row-1), 0, aWidget); aWidget->setToolTip(query2.value(0).toString()); QWidget* aWidget2 = new QWidget(tblOptions); //Dirty hack to fix a QT bug QLabel* aTableWidget2 = new QLabel(aWidget2); aTableWidget2->setText(query2.value(1).toString()); tblOptions->setCellWidget((row-1), 1, aWidget2); aWidget2->setToolTip(query2.value(1).toString()); tblOptions->setRowHeight(row-1, 25); row++; } QSqlQuery query3; query3.exec("SELECT USAGE,USAGE_DES FROM TUSAGE WHERE COMMAND = '"+ cbbManPagelist->itemText(cbbManPagelist->currentIndex())+"'"); int row2 = 1; tblUsage->setColumnCount(2); while (query3.next()) { tblUsage->setRowCount(row2); QWidget* aWidget = new QWidget(tblUsage); QLabel* aTableWidget = new QLabel(aWidget); aTableWidget->setObjectName(QString::fromUtf8("aTableLabel")); aTableWidget->setText(query3.value(0).toString().toStdString().c_str()); tblUsage->setCellWidget((row2-1), 0, aWidget); aWidget->setToolTip(query3.value(0).toString()); QWidget* aWidget2 = new QWidget(tblUsage); QLabel* aTableWidget2 = new QLabel(aWidget2); aTableWidget2->setText(query3.value(1).toString()); tblUsage->setCellWidget((row2-1), 1, aWidget2); aWidget2->setToolTip(query3.value(1).toString()); tblUsage->setRowHeight(row2-2, 25); row2++; } }
void SqlInterface::sqlInit(const QString &tableName, const QStringList &columnNames) { QString existsStatement = QLatin1String("SELECT name FROM sqlite_master WHERE name='") + tableName + QLatin1String("' AND type = 'table'"); createStatement = QLatin1String("CREATE TABLE ") + tableName + QLatin1String(" (Id INTEGER PRIMARY KEY, "); QString selectStatement = QLatin1String("SELECT Id, "); insertStatement = QLatin1String("INSERT INTO ") + tableName + QLatin1String(" (Id, "); updateStatement = QLatin1String("UPDATE ") + tableName + QLatin1String(" SET "); deleteStatement = QLatin1String("DELETE FROM ") + tableName + QLatin1String(" WHERE Id = ?"); sqlColumnCount = columnNames.size(); for (int i = 0; i < sqlColumnCount; ++i) { if (i > 0) { createStatement.append(QLatin1String(", ")); selectStatement.append(QLatin1String(", ")); insertStatement.append(QLatin1String(", ")); updateStatement.append(QLatin1String(" = ?, ")); } const QString &columnName = columnNames.at(i); createStatement.append(columnName); selectStatement.append(columnName); insertStatement.append(columnName); updateStatement.append(columnName); } createStatement.append(QLatin1Char(')')); selectStatement.append(QLatin1String(" FROM ")); selectStatement.append(tableName); insertStatement.append(QLatin1String(") VALUES (?")); updateStatement.append(QLatin1String(" = ? WHERE Id = ?")); for (int i = 0; i < sqlColumnCount; ++i) { insertStatement.append(QLatin1String(", ?")); } insertStatement.append(QLatin1Char(')')); if (!sqlHelper->exec(existsStatement).next()) { createTable = true; requestSubmission(); } else { // queries can only be prepared if the table exists insertQuery = sqlHelper->prepare(insertStatement); updateQuery = sqlHelper->prepare(updateStatement); deleteQuery = sqlHelper->prepare(deleteStatement); for (QSqlQuery query = sqlHelper->exec(selectStatement); query.next();) { qint64 fullKey = query.value(0).toLongLong(); SqlKey sqlKey(static_cast<int>(fullKey)); if (!sqlKey.isSqlKeyValid() || (sqlKey.sqlKey != fullKey)) { Log("SqlInterface::sqlInit: invalid key") << fullKey; continue; } if (!insertFromSqlQuery(sqlKey, query, 1)) { pendingStatements.insert(sqlKey, Remove); requestSubmission(); } } } }
/** Man constructor @param[in] parent The parent window */ Man::Man(QWidget* parent) : QDockWidget ( 0 ) { setObjectName("Man"); setObjectName(QString::fromUtf8("dockManual")); setGeometry(QRect(783, 24, 201, 629)); QSizePolicy sizePolicy5(QSizePolicy::Ignored, QSizePolicy::Ignored); sizePolicy5.setHorizontalStretch(0); sizePolicy5.setVerticalStretch(0); sizePolicy5.setHeightForWidth(sizePolicy().hasHeightForWidth()); setSizePolicy(sizePolicy5); setMinimumSize(QSize(200, 200)); setMaximumSize(QSize(16777215, 16777215)); setAllowedAreas(Qt::AllDockWidgetAreas); dockManualContents = new QWidget(this); dockManualContents->setObjectName(QString::fromUtf8("dockManualContents")); dockManualContents->setGeometry(QRect(2, 22, 197, 605)); verticalLayout = new QVBoxLayout(dockManualContents); verticalLayout->setObjectName(QString::fromUtf8("verticalLayout")); verticalLayout->setContentsMargins(0, 0, 0, 0); hlFindManPage = new QHBoxLayout(); hlFindManPage->setObjectName(QString::fromUtf8("hlFindManPage")); cbbManPagelist = new KComboBox(dockManualContents); cbbManPagelist->setObjectName(QString::fromUtf8("cbbManPagelist")); cbbManPagelist->setEditable(true); cbbManPagelist->setMaxVisibleItems(50); cbbManPagelist->setInsertPolicy(QComboBox::NoInsert); cbbManPagelist->setAutoCompletion(false); cbbManPagelist->setTrapReturnKey(false); hlFindManPage->addWidget(cbbManPagelist); btnFindManPage = new KPushButton(dockManualContents); btnFindManPage->setObjectName(QString::fromUtf8("btnFindManPage")); btnFindManPage->setMaximumSize(QSize(60, 16777215)); btnFindManPage->setSizeIncrement(QSize(0, 0)); hlFindManPage->addWidget(btnFindManPage); verticalLayout->addLayout(hlFindManPage); tbManInfo = new QToolBox(dockManualContents); tbManInfo->setObjectName(QString::fromUtf8("tbManInfo")); QSizePolicy sizePolicy6(QSizePolicy::Expanding, QSizePolicy::Expanding); sizePolicy6.setHorizontalStretch(0); sizePolicy6.setVerticalStretch(0); sizePolicy6.setHeightForWidth(tbManInfo->sizePolicy().hasHeightForWidth()); tbManInfo->setSizePolicy(sizePolicy6); tbManInfo->setBaseSize(QSize(240, 91)); tbManInfo->setStyleSheet(QString::fromUtf8("")); tbManInfo->setLineWidth(1); pageManual = new QWidget(); pageManual->setObjectName(QString::fromUtf8("pageManual")); pageManual->setGeometry(QRect(0, 0, 179, 469)); verticalLayout_2 = new QVBoxLayout(pageManual); verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2")); rtfManPage = new QTextBrowser(pageManual); rtfManPage->setObjectName(QString::fromUtf8("rtfManPage")); verticalLayout_2->addWidget(rtfManPage); tbManInfo->addItem(pageManual, "Manuel"); PageUsage = new QWidget(); PageUsage->setObjectName(QString::fromUtf8("PageUsage")); PageUsage->setGeometry(QRect(0, 0, 179, 469)); verticalLayout_4 = new QVBoxLayout(PageUsage); verticalLayout_4->setObjectName(QString::fromUtf8("verticalLayout_4")); tblUsage = new QTableWidget(PageUsage); if (tblUsage->columnCount() < 2) tblUsage->setColumnCount(2); QTableWidgetItem *__colItem = new QTableWidgetItem(); tblUsage->setHorizontalHeaderItem(0, __colItem); QTableWidgetItem *__colItem1 = new QTableWidgetItem(); tblUsage->setHorizontalHeaderItem(1, __colItem1); tblUsage->setObjectName(QString::fromUtf8("tblUsage")); tblUsage->setMidLineWidth(0); tblUsage->setEditTriggers(QAbstractItemView::NoEditTriggers); tblUsage->setSelectionMode(QAbstractItemView::NoSelection); tblUsage->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); tblUsage->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); verticalLayout_4->addWidget(tblUsage); tbManInfo->addItem(PageUsage, "Usage"); pageOptions = new QWidget(); pageOptions->setObjectName(QString::fromUtf8("pageOptions")); pageOptions->setGeometry(QRect(0, 0, 179, 469)); verticalLayout_3 = new QVBoxLayout(pageOptions); verticalLayout_3->setObjectName(QString::fromUtf8("verticalLayout_3")); tblOptions = new QTableWidget(pageOptions); if (tblOptions->columnCount() < 2) tblOptions->setColumnCount(2); QTableWidgetItem *__colItem2 = new QTableWidgetItem(); tblOptions->setHorizontalHeaderItem(0, __colItem2); QTableWidgetItem *__colItem3 = new QTableWidgetItem(); tblOptions->setHorizontalHeaderItem(1, __colItem3); tblOptions->setObjectName(QString::fromUtf8("tblOptions")); tblOptions->setEnabled(true); tblOptions->setDragEnabled(true); tblOptions->setDragDropMode(QAbstractItemView::DragOnly); tblOptions->setSelectionMode(QAbstractItemView::NoSelection); verticalLayout_3->addWidget(tblOptions); tbManInfo->addItem(pageOptions, "Options"); verticalLayout->addWidget(tbManInfo); tblUsage->verticalHeader()->hide(); tblOptions->verticalHeader()->hide(); setWidget(dockManualContents); tbManInfo->setCurrentIndex(0); translateUi(); QSqlQuery query; query.exec("SELECT TITLE FROM TMAN_PAGE"); while (query.next()) cbbManPagelist->addItem(query.value(0).toString()); cbbManPagelist->model()->sort(0); cbbManPagelist->setCurrentIndex(0); QObject::connect(cbbManPagelist, SIGNAL(currentIndexChanged(int)), this, SLOT(loadPage())); }
void FenPrincipale::nouvelUtilisateur() { // On récupère la liste des écoles, afin de proposer les choix dans une combobox sur la fenêtre d'enregistrement QSqlQuery listesQuery; listesQuery.exec("SELECT Nom FROM ecoleArchi"); QStringList listeEcole; while (listesQuery.next()) { listeEcole << listesQuery.value(0).toString(); } listesQuery.exec("SELECT Nom FROM entreprise"); QStringList listeEntreprises; while(listesQuery.next()) { listeEntreprises << listesQuery.value(0).toString(); } registerDialog dialog(listeEcole,listeEntreprises); bool errors = true; while (dialog.exec()==QDialog::Accepted && errors) { infoUser infos = dialog.getUserInfo(); QSqlQuery query; query.prepare("SELECT * FROM Users WHERE login=:login;"); query.bindValue(":login",infos.login); query.exec(); if (query.next()) { errors = true; QMessageBox::critical(this,"Erreur lors de l'enregistrement","Le nom d'utilisateur est déjà pris",QMessageBox::Ok); } else { //tout est correct, on entre l'utilisateur dans la base. //on commence par rajouter l'ecole et l'entreprise afin d'avoir les clés étrangères dans Etudiant int ecoleId = registerEcole(infos.EcoleArchi); int entrepriseId = registerEntreprise(infos.Entreprise); QSqlQuery registerQuery; registerQuery.prepare("INSERT INTO users(login, password, account) VALUES (:login, :password, \"user\")"); registerQuery.bindValue(":login",infos.login); registerQuery.bindValue(":password",infos.password); registerQuery.exec(); //on commence par trouver la clé user générée afin de la mettre en clé étrangère dans etudiants registerQuery.prepare("SELECT idUser FROM users WHERE login=:login"); registerQuery.bindValue(":login",infos.login); registerQuery.exec(); registerQuery.next(); int userId = registerQuery.value(0).toInt(); // On peut enfin ajouter l'étudiant : QString queryStr; queryStr = "INSERT INTO etudiants("; queryStr.append("idUser, Nom, Prenom, NumTel, mail1, mail2, Cursus, AnneeDiplomeINSA, AnneeDiplomeARCHI"); queryStr.append(", Type, idEcoleArchi, idEntreprise)"); queryStr.append(" VALUES ("); queryStr.append(":idUsers, :Nom, :Prenom, :NumTel, :mail1, :mail2, :Cursus, :AnneeDiplomeINSA, :AnneeDiplomeARCHI"); queryStr.append(", :Type, :idEcoleArchi, :idEntreprise)"); registerQuery.prepare(queryStr); registerQuery.bindValue(":idUsers",userId); registerQuery.bindValue(":Nom",infos.nom); registerQuery.bindValue(":Prenom",infos.prenom); registerQuery.bindValue(":NumTel",infos.numTel); registerQuery.bindValue(":mail1",infos.mail1); registerQuery.bindValue(":mail2",infos.mail2); registerQuery.bindValue(":Cursus",infos.cursus); registerQuery.bindValue(":AnneeDiplomeINSA",infos.anneeDiplomeINSA); registerQuery.bindValue(":AnneeDiplomeARCHI",infos.anneeDiplomeARCHI); registerQuery.bindValue(":Type",infos.type); registerQuery.bindValue(":idEcoleArchi",ecoleId); registerQuery.bindValue(":idEntreprise",entrepriseId); registerQuery.exec(); QMessageBox::information(this,"Enregistrement réussi","Vous êtes maintenant enregistré<br> vous pouvez désormais vous connecter avec votre login/mot de passe",QMessageBox::Ok); break; } } }
void DetailsInfo::setInfo(QString number) { if (!base->isOpen()) { QMessageBox::about(this, tr("error"), tr("void DetailsInfo::setInfo(QString number)")); return; } numberInfo = number;//备份显示的信息的主键 QSqlQuery query; //--------------------------------------------------------------------------------------------------------- bool ok = query.exec(tr("select 学号,姓名,性别,学校,系,专业,班级,教育等级,电话 " "from studentInfo " "where 学号 = '%1'").arg(numberInfo)); if (ok == false) { QMessageBox::about(this, tr("error"), tr("void DetailsInfo::setInfo(QString number)\n studentInfo is query error")); return; } if (query.next()) { //simple numberLe->setText(query.value(tr("学号")).toString()); nameLe->setText(query.value(tr("姓名")).toString()); sexLe->setText(query.value(tr("性别")).toString()); schoolNameLe->setText(query.value(tr("学校")).toString()); departmentNameLe->setText(query.value(tr("系")).toString()); majorNameLe->setText(query.value(tr("专业")).toString()); classNameLe->setText(query.value(tr("班级")).toString()); educationLe->setText(query.value(tr("教育等级")).toString()); phoneNumberLe->setText(query.value(tr("电话")).toString()); } query.clear(); //--------------------------------------------------------------------------------------------------------- ok = query.exec(tr("select 民族,籍贯,住址,出生日期,政治面貌,外语等级,QQ号码,电子邮箱,备注 " "from studentDetailsInfo " "where 学号 = '%1'").arg(numberInfo)); if (ok == false) { QMessageBox::about(this, tr("error"), tr("void DetailsInfo::setInfo(QString number)\n studentDetailsInfo is query error")); return; } if (query.next()) { //details nationLe->setText(query.value(tr("民族")).toString()); nationPlaceLe->setText(query.value(tr("籍贯")).toString()); addressLe->setText(query.value(tr("住址")).toString()); birthdayLe->setText(query.value(tr("出生日期")).toString()); politicalLe->setText(query.value(tr("政治面貌")).toString()); languageLevelLe->setText(query.value(tr("外语等级")).toString()); qqNumberLe->setText(query.value(tr("QQ号码")).toString()); emailLe->setText(query.value(tr("电子邮箱")).toString()); remarkTe->setText(query.value(tr("备注")).toString()); } query.clear(); //--------------------------------------------------------------------------------------------------------- ok = query.exec(tr("select 照片 " "from studentImage " "where 学号 = '%1'").arg(numberInfo)); if (ok == false) { QMessageBox::about(this, tr("error"), tr("void DetailsInfo::setInfo(QString number)\n studentImage is query error")); return; } if (query.next()) { //photo QPixmap pix; pix.loadFromData(query.value(tr("照片")).toByteArray()); photoLb->setPixmap(pix); } }