Пример #1
0
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();
}
Пример #2
0
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);
}
Пример #3
0
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();
    }

}
Пример #5
0
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();
    }
}
Пример #6
0
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;
}
Пример #7
0
DetailMeeting::DetailMeeting(int _meeting_id, QWidget *parent) : QDialog(parent)
{
    global_settings = new QSettings("../Thunderlook/data/settings/settings.ini", QSettings::IniFormat);

    db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName(global_settings->value("SQL/addr_ip").toString());
    db.setPort(QString(global_settings->value("SQL/port").toString()).toInt());
    db.setDatabaseName("thunderlook");
    db.setUserName("esgi");
    db.setPassword("esgi");

    if (!db.open())
    {
        qDebug() << "Impossible de se connecter à la base de données." << endl;
        return;
    }

    meeting_id = _meeting_id;

    setWindowTitle("Détails de la réunion");

    QSqlQuery *req = new QSqlQuery();
    req->prepare("SELECT * FROM Meeting m WHERE id = :meeting_id");
    req->bindValue(":meeting_id", meeting_id);
    req->exec();
    QSqlRecord rec = req->record();
    req->next();

    lb_label = new QLabel(req->value(rec.indexOf("title")).toString());

    // DATE BEGIN
    QStringList date_begin = req->value(rec.indexOf("date_begin")).toString().split(" ").at(0).split("/");
    QStringList time_begin = req->value(rec.indexOf("date_begin")).toString().split(" ").at(1).split(":");

    QDate date_begin_edit(date_begin.at(0).toInt(),date_begin.at(1).toInt(),date_begin.at(2).toInt());
    QTime time_begin_edit(time_begin.at(0).toInt(),time_begin.at(1).toInt(),0);

    QDateTime date_time_begin(date_begin_edit,time_begin_edit);

    meeting_dt_begin = new QDateTimeEdit(date_time_begin);
    meeting_dt_begin->setDisplayFormat("dd/MM/yyyy hh:mm");
    meeting_dt_begin->setMinimumTime(QTime(8,0,0,0));
    meeting_dt_begin->setMaximumTime(QTime(19,45,0,0));

    // DATE END
    QStringList date_end = req->value(rec.indexOf("date_end")).toString().split(" ").at(0).split("/");
    QStringList time_end = req->value(rec.indexOf("date_end")).toString().split(" ").at(1).split(":");

    QDate date_end_edit(date_end.at(0).toInt(),date_end.at(1).toInt(),date_end.at(2).toInt());
    QTime time_end_edit(time_end.at(0).toInt(),time_end.at(1).toInt(),0);

    QDateTime date_time_end(date_end_edit,time_end_edit);

    meeting_dt_end = new QDateTimeEdit(date_time_end);
    meeting_dt_end->setDisplayFormat("dd/MM/yyyy hh:mm");
    meeting_dt_end->setMinimumTime(QTime(8,0,0,0));
    meeting_dt_end->setMaximumTime(QTime(19,45,0,0));

    meeting_duration = new QTimeEdit();
    meeting_duration->setDisplayFormat("hh:mm");

    QTime time(0,0,0);
    meeting_duration->setTime(time.addSecs(req->value(rec.indexOf("duration")).toInt()*60));

    btn_action = new QPushButton("Mettre à jour");
    btn_cancel = new QPushButton("Annuler");
    btn_del = new QPushButton("Supprimer cette réunion");

    global_settings = new QSettings("../Thunderlook/data/settings/settings.ini", QSettings::IniFormat);

    QSqlQuery *reqOrganizer = new QSqlQuery();
    reqOrganizer->prepare("SELECT Users.address FROM Meeting,Users WHERE Meeting.id = :meeting_id AND Users.id = Meeting.organizer");
    reqOrganizer->bindValue(":meeting_id", meeting_id);
    reqOrganizer->exec();
    QSqlRecord recOrganizer = reqOrganizer->record();
    reqOrganizer->next();

    // Enable Item if user is not organizer
    if(reqOrganizer->value(recOrganizer.indexOf("address")).toString() != global_settings->value("Send/smtp_user").toString())
    {
        btn_del->setEnabled(false);
        btn_action->setEnabled(false);
        meeting_dt_end->setEnabled(false);
        meeting_dt_begin->setEnabled(false);
        meeting_duration->setEnabled(false);
    }

    cb_organizer = new QComboBox();
    cb_organizer->setEnabled(false);

    QSqlQuery *reqUser = new QSqlQuery();

    reqUser->prepare("SELECT * FROM Users WHERE id = :id_user");
    reqUser->bindValue(":id_user", req->value(rec.indexOf("organizer")).toString());
    QString organiz(req->value(rec.indexOf("organizer")).toString());
    reqUser->exec();
    QSqlRecord recUser = reqUser->record();
    while(reqUser->next())
    {
        cb_organizer->addItem(reqUser->value(recUser.indexOf("address")).toString());
    }

    cb_users = new QComboBox();

    model_users = new QStandardItemModel();
    int i = 0;

    QSqlQuery *reqUsersMeeting = new QSqlQuery();
    reqUsersMeeting->prepare("SELECT * FROM UsersMeeting usermeeting INNER JOIN Users user ON user.id = usermeeting.id_user WHERE usermeeting.id_meeting = :id_meeting and present != 0");
    reqUsersMeeting->bindValue(":id_meeting", meeting_id);
    reqUsersMeeting->exec();
    QSqlRecord recUserMeeting = reqUsersMeeting->record();
    while(reqUsersMeeting->next())
    {
        User user(reqUsersMeeting->value(recUserMeeting.indexOf("id_user")).toInt(),reqUsersMeeting->value(recUserMeeting.indexOf("address")).toString());

        QStandardItem *item = new QStandardItem();
        item->setText(user.address());

        QVariant data;
        data.setValue(user);
        item->setData(data);

        model_users->setItem(i,item);
        i++;
    }

    cb_users->setModel(model_users);

    req->first();

    cb_room = new QComboBox();
    cb_room->setEnabled(false);

    QSqlQuery *reqRoom = new QSqlQuery();

    reqRoom->prepare("SELECT * FROM Room WHERE id = :id_room");
    reqRoom->bindValue(":id_room", req->value(rec.indexOf("room")).toString());
    QString room(req->value(rec.indexOf("room")).toString());
    reqRoom->exec();
    QSqlRecord recRoom = reqRoom->record();
    while(reqRoom->next())
    {
        cb_room->addItem(reqRoom->value(recRoom.indexOf("name")).toString());
    }

    id_room = req->value(rec.indexOf("id")).toInt();

    QFormLayout *fl_data = new QFormLayout;
    fl_data->addRow("Libellé:", lb_label);
    fl_data->addRow("Début:", meeting_dt_begin);
    fl_data->addRow("Fin:", meeting_dt_end);
    fl_data->addRow("Durée:", meeting_duration);
    fl_data->addRow("Organisateur:", cb_organizer);
    fl_data->addRow("Invité(s):", cb_users);
    fl_data->addRow("Salle:", cb_room);

    QHBoxLayout *layout_buttons = new QHBoxLayout;
    layout_buttons->setAlignment(Qt::AlignRight);
    layout_buttons->addWidget(btn_del);
    layout_buttons->addWidget(btn_action);
    layout_buttons->addWidget(btn_cancel);

    QVBoxLayout *layout_main = new QVBoxLayout;
    layout_main->addLayout(fl_data);
    layout_main->addLayout(layout_buttons);

    setLayout(layout_main);

    connect(btn_del, SIGNAL(clicked()), this, SLOT(deleteMeeting()));
    connect(btn_cancel, SIGNAL(clicked()), this, SLOT(close()));
    connect(btn_action, SIGNAL(clicked()), this, SLOT(updateMeeting()));
}
Пример #8
0
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;
}
Пример #9
0
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();
}
Пример #10
0
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;
    */
}
Пример #11
0
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();
}
Пример #12
0
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()));
}
Пример #13
0
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();
}
Пример #14
0
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);
}
Пример #15
0
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();
    }

}
Пример #16
0
/**
	  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;
}
Пример #17
0
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);
}
Пример #18
0
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"));

}
Пример #19
0
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();
}
Пример #20
0
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);
    }
}
Пример #22
0
// 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" );
    }
  }
}
Пример #23
0
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;
}
Пример #24
0
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;
}
Пример #25
0
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);

}
Пример #26
0
/**
  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++;
    }
  }
Пример #27
0
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();
			}
		}
	}
}
Пример #28
0
/**
  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()));
  }
Пример #29
0
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;
	}
    }
}
Пример #30
0
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);
    }
}