]> git.nothing2do.fr Git - diary-mobile.git/commitdiff
mass(int, QString, QString) now replace for any column (corresponding to
authorNorbert Moutarde <norbert.moutarde@nothing2do.eu>
Thu, 12 Jun 2014 12:26:24 +0000 (14:26 +0200)
committerNorbert Moutarde <norbert.moutarde@nothing2do.eu>
Thu, 12 Jun 2014 12:26:24 +0000 (14:26 +0200)
changekey but on buttons filtered by keyword)

mainwindow.cpp
mainwindow.h

index c4bfd6d4f9bd3f282796889aaca66763371129dc..6d98856e464119d565d8ffb7a80c7faafe067d61 100644 (file)
@@ -225,11 +225,12 @@ void MainWindow::action(const QString &a){
         send(c);
     }
     else if(b[0]==QString("back")){
+        int ws=way.size(), d;
         if(way.size()>=2){
             way.removeLast();
             getButtons(way.takeLast());
+            }
         }
-    } 
     else if(b[0]==QString("setfile")){
         bool ok=0;
         QString d, e;
@@ -320,7 +321,7 @@ void MainWindow::action(const QString &a){
     else if(b[0]==QString("-hist")){
         flush();
         QString wi;
-        lastprint=QString("hist");
+        lastprint=QString("-hist");
         for(int i=0; i<way.size(); i++){
             wi=way[i];
             addWidget(wi, new CLabel(wi, conf->value(QString("button")).toString()));
@@ -329,8 +330,14 @@ void MainWindow::action(const QString &a){
         }
     }
     else if(b[0]==QString("rm")){
-        way.removeAt(b[1].toInt());
-    }
+        int d, ws=way.size();
+        if(b.size()>=2)d=b[1].toInt();
+        else return;
+        for (int e=ws-1; e>=d; e--){
+            way.removeAt(e);
+            }
+        getButtons(way.takeLast());
+        }
     else if(b[0]==QString("read")){
         if(bs==2){
             QFile a(b[1]);
@@ -340,6 +347,12 @@ void MainWindow::action(const QString &a){
             QMessageBox::warning(this, trUtf8("Error", "title of box if action(\"read\" has too much (or too \"less\") value"), trUtf8("Bad number of value", "text of box if action(\"read\") has too much (or too \"less\") value"));
         }
     }
+    else if(b[0]==QString("mass")){
+        if(bs==4){
+            int tmp=b[1].toInt();
+            mass(tmp, b[2], b[3]);
+        }
+    }
     else {
         getButtons(a);
 
@@ -349,7 +362,7 @@ void MainWindow::createMenuBar(){
     FileMenu=new QMenu(trUtf8("&File", "top menu"), this);
     FileMenu->addAction(trUtf8("&Start", "File|Start"), this, SLOT(start()),QKeySequence(trUtf8("Ctrl+S", "File|Start")));
     FileMenu->addAction(trUtf8("&Back", "File|Back"), this, SLOT(back()),QKeySequence(trUtf8("Ctrl+B", "File|Back")));
-    FileMenu->addAction(trUtf8("&View/Hide menu", "File|View/Hide"), this, SLOT(toggleMenu()), QKeySequence(trUtf8("Ctrl+T", "File|View menu")));
+    FileMenu->addAction(trUtf8("&View/Hide menu", "File|View/Hide menu"), this, SLOT(toggleMenu()), QKeySequence(trUtf8("Ctrl+T", "File|View menu")));
     FileMenu->addAction(trUtf8("sendRAW", "File|SendRAW"), this, SLOT(sendRAW()), QKeySequence(trUtf8("Ctrl+L", "File|Upload")));
     FileMenu->addAction(trUtf8("Reset RAW", "File|resetRAW"), this, SLOT(resetRAW()), QKeySequence(trUtf8("Ctrl+E", "File|Reset")));
     FileMenu->addAction(trUtf8("&Quit", "File|Quit"), this, SLOT(quit()),QKeySequence(trUtf8("Ctrl+Q", "File|Quit")));
@@ -409,7 +422,7 @@ void CLabel::mousePressEvent (QMouseEvent * event )
 void CLabel::mouseReleaseEvent( QMouseEvent * event )
 {
     switch(event->button()){
-        case Qt::LeftButton:setStyleSheet(m_style);emit released();break;
+        case Qt::LeftButton:setStyleSheet(m_style.replace(QString("border-style: inset"), QString("border-style: outset")));emit released();break;
 
     }
 }
@@ -417,7 +430,7 @@ void MainWindow::debug(int col){
     q->first();
     while(q->isValid()){
         int k=q->at();
-        qDebug()<<"n°"<<k+1<<"="<<get(k,col);
+        qDebug()<<"n°"<<k<<"="<<get(col);
         q->next();
     }
 }
@@ -431,9 +444,7 @@ void MainWindow::connectDB(){
     db.setConnectOptions(conf->value(QString("SQLsettings")).toString());//10sec,
     qDebug()<<"db.open() ? "<<db.open()<< ". database : "<<db.databaseName();
     q=new QSqlQuery(db);
-
-
-
+    qq=new QSqlQuery(db);
 }
 void MainWindow::firstrun(){
     qDebug()<<"firstrun()";
@@ -443,8 +454,8 @@ void MainWindow::firstrun(){
     conf->setValue(QString("servercert"), QVariant("a.pem"));
     conf->setValue(QString("database"), QVariant("db"));
     conf->setValue(QString("password"), QVariant("pass"));
-    conf->setValue(QString("rawfile"), QVariant("raw"));
-    conf->setValue(QString("buttonfile"), QVariant("ui.sql+"));
+    conf->setValue(QString("fileraw"), QVariant("raw"));
+    conf->setValue(QString("filebuttons"), QVariant("ui.sql+"));
     conf->setValue(QString("maxcolumn"), QVariant(2));
     conf->setValue(QString("maxline"), QVariant(4));
     conf->setValue(QString("SQLsettings"), QVariant("connect_timeout=10000"));
@@ -459,6 +470,7 @@ void MainWindow::firstrun(){
     conf->setValue(QString("db"), QVariant("/data/data/eu.nothing2do.diarymobile/files/db"));
     conf->setValue(QString("selectbuttons"), QVariant("select keyword,label,action from ui order by label;"));
     conf->setValue(QString("columnbuttons"), QVariant(3));
+    conf->setValue(QString("sqlbuttons"), QVariant("INSERT INTO ui (keyword,label,action) VALUES(?,?,?);"));
     conf->setValue(QString("selectraw"), QVariant("select date,texte from raw order by date;"));
     conf->setValue(QString("columnraw"), QVariant(2));
     conf->setValue(QString("menuback"), QVariant("-menuback"));
@@ -469,6 +481,7 @@ void MainWindow::firstrun(){
     conf->setValue(QString("updatebuttons"), QVariant("update ui set keyword=?, label=?, action=? where id=?;"));
     conf->setValue(QString("deletebutton"), QVariant("delete from ui where id=?"));
     conf->setValue(QString("testbuttons"), QVariant("select id,keyword from ui where label=? and action=?;"));
+    conf->setValue(QString("changekey"), QVariant("select keyword,label,action,id from ui where keyword like ?;"));
     conf->setValue(QString("volumdown"), QVariant("back"));
     conf->setValue(QString("volumup"), QVariant("begin"));
     conf->setValue(QString("askkeyword"), QVariant(0));
@@ -481,10 +494,13 @@ void MainWindow::firstrun(){
     conf->setValue(QString("always"), QVariant("+always"));
     qDebug()<<"firstrun() finished";
 }
-QString &MainWindow::get(int row, int column){
-    q->seek(row);
-    tmp=q->value(column).toString();
-    return tmp;
+QString MainWindow::get(int column){
+    //tmp=q->value(column).toString();
+    return q->value(column).toString();
+}
+QString MainWindow::get2(int column){
+    //tmp2=qq->value(column).toString();
+    return qq->value(column).toString();
 }
 int MainWindow::exec(const QList<QString> & a){
     qDebug()<<"exec("<<a[0]<<") size="<<a.size();
@@ -501,6 +517,21 @@ int MainWindow::exec(const QList<QString> & a){
     else if (q->isValid()) return 0;
     else return -1;
 }
+int MainWindow::exec2(const QList<QString> & a){
+    qDebug()<<"exec("<<a[0]<<") size="<<a.size();
+    qq->prepare(a[0]);
+    for (int j=1; j<a.size(); j++){
+        qq->bindValue(j-1, a[j]);
+        qDebug()<<"bind "<<j-1<<" and"<<a[j];
+    }
+    qDebug()<<"exec():"<<qq->exec();
+    QSqlError b=qq->lastError();
+    db.commit();
+    if (b.isValid())qDebug()<<"SQL error :"<<b.text();
+    if(q->isSelect())return qq->size();
+    else if (qq->isValid()) return 0;
+    else return -1;
+}
 void MainWindow::entry(const QString &a){
     QString label, time=QDateTime::currentDateTime().toString(QString("yyyy-MM-dd hh:mm:ss")), entry, context;
     bool ok=0;
@@ -623,7 +654,7 @@ void MainWindow::writeData(){
 void MainWindow::sendRAW(){
     //send(QString("raw"))
     exec(QList<QString> ({conf->value(QString("selectraw")).toString()}));
-    QFile a(conf->value(QString("rawfile")).toString());
+    QFile a(conf->value(QString("fileraw")).toString());
     a.open(QIODevice::WriteOnly|QIODevice::Text);
     QTextStream b(&a);
     int c=conf->value(QString("columnraw")).toInt()-1;
@@ -637,7 +668,7 @@ void MainWindow::sendRAW(){
     a.close();
     qDebug()<<"a.open()="<<a.open(QIODevice::ReadOnly | QIODevice::Text);
     //QUrl upload(conf->value(QString("uploadRAW")).toString());
-    QUrl upload(QString("ftp://")+conf->value(QString("userftp")).toString()+QString(":")+conf->value(QString("passftp")).toString()+QString("@")+conf->value(QString("hostftp")).toString()+QString("/")+conf->value(QString("rawfile")).toString());
+    QUrl upload(QString("ftp://")+conf->value(QString("userftp")).toString()+QString(":")+conf->value(QString("passftp")).toString()+QString("@")+conf->value(QString("hostftp")).toString()+QString("/")+conf->value(QString("fileraw")).toString());
     net=new QNetworkAccessManager(this);
     //a.open(QIODevice::ReadOnly | QIODevice::Text);
     rep=net->put(QNetworkRequest(upload), a.readAll());
@@ -651,7 +682,8 @@ void MainWindow::RAWsent(){
 void MainWindow::back(){
     if(!((video)&&(playlist))){
         getButtons(conf->value(QString("menuback")).toString());
-    }else{
+    }else if(label->text()==conf->value(QString("menuback")).toString())getButtons(way.takeLast());
+    else{
         getButtons(QString("+video"));
     }
 }
@@ -710,10 +742,11 @@ void MainWindow::readData(const QByteArray &in){
     q->exec("PRAGMA foreign_keys=OFF;");
     q->exec("BEGIN TRANSACTION;");// these 2 line is SQLite specific
     int a=in.count('\n');
-    QString d=in.split('\n').at(0);
+    /*QString d=in.split('\n').at(0);
     qDebug()<<"first line : "<<d;
-    conf->setValue(QString("firstline"), d);
-    for(int i=1; i<a; i++){
+    conf->setValue(QString("firstline"), d);*/
+    QString d=conf->value(QString("sqlbuttons")).toString();
+    for(int i=0; i<a; i++){
         q->prepare(d);
         int b=in.split('\n').at(i).count('$');
         //qDebug()<<i<<"th line, "<<b<<" delimiter";
@@ -768,13 +801,13 @@ void MainWindow::download(const QString & a, const QString & b){
 }
 void MainWindow::savButtons(){
     exec(QList<QString> ({conf->value(QString("selectbuttons")).toString()}));
-    QFile a(conf->value(QString("buttonfile")).toString());
+    QFile a(conf->value(QString("filebuttons")).toString());
     a.open(QIODevice::WriteOnly|QIODevice::Text);
     QTextStream b(&a);
     int c=conf->value(QString("columnbuttons")).toInt()-1;
     QString sep=conf->value(QString("sepbuttons")).toString();
     qDebug()<<"c="<<c;
-    b<<conf->value("firstline").toString()<<"\n";
+    //b<<conf->value("firstline").toString()<<"\n";
     while (q->next()) {
         for (int i=0; i<c; i++){
             b<<q->value(i).toString()<<sep;
@@ -783,7 +816,7 @@ void MainWindow::savButtons(){
     }
     a.close();
     //QUrl upload(conf->value(QString("uploadUi")).toString());
-    QUrl upload(QString("ftp://")+conf->value(QString("userftp")).toString()+QString(":")+conf->value(QString("passftp")).toString()+QString("@")+conf->value(QString("hostftp")).toString()+QString("/")+conf->value(QString("buttonfile")).toString());
+    QUrl upload(QString("ftp://")+conf->value(QString("userftp")).toString()+QString(":")+conf->value(QString("passftp")).toString()+QString("@")+conf->value(QString("hostftp")).toString()+QString("/")+conf->value(QString("filebuttons")).toString());
     net=new QNetworkAccessManager(this);
     a.open(QIODevice::ReadOnly | QIODevice::Text);
     rep=net->put(QNetworkRequest(upload), a.readAll());
@@ -914,7 +947,7 @@ void MainWindow::readData(){
 void MainWindow::send(const QString & a){
     QString t="select"+a;
     exec(QList<QString> ({conf->value(t).toString()}));
-    t=a+"file";
+    t="file"+a;
     QFile tmp(conf->value(t).toString());
     tmp.open(QIODevice::WriteOnly|QIODevice::Text);
     QTextStream b(&tmp);
@@ -926,7 +959,7 @@ void MainWindow::send(const QString & a){
         for (int i=0; i<c; i++){
             b<<q->value(i).toString()<<sep;
         }
-        b<<q->value(1).toString()<<"\n";
+        b<<q->value(c).toString()<<"\n";
     }
     tmp.close();
     qDebug()<<"a.open()="<<tmp.open(QIODevice::ReadOnly | QIODevice::Text);
@@ -944,3 +977,22 @@ void MainWindow::action(){
     QString cmd=QInputDialog::getText(this, trUtf8("action", "Title of box where ask for a custom action"), trUtf8("Enter your action", "Label of box where ask for custom action"), QLineEdit::Normal, QString(""), &ok);
     if(ok)action(cmd);
 }
+void MainWindow::mass(int c, const QString & a, const QString & b){
+    exec(QList<QString>({conf->value(QString("changekey")).toString(), a}));
+    QString key;
+
+    qDebug()<<"key="<<key;
+    while(q->next()){
+        key=get(c);
+        if(key.contains(a)){
+            key.replace(a,b);
+            QList<QString> tmp({conf->value(QString("updatebuttons")).toString()});
+            for(int t=0;t<4;t++){//4 is conf("changekey") column
+                if(t=c)tmp.append(key);
+                else tmp.append(get(t));
+            }
+            exec2(tmp);
+        }
+    }
+    getButtons(lastprint);
+}
index 45ddfab4d9136f284e0450e29aaa557c184bf237..840b02f03461a8bd5972282c8fb8686449272da4 100644 (file)
@@ -133,6 +133,7 @@ public:
     const CLabel* addWidget(const QString &, const CLabel *);
     void resizeEvent(QResizeEvent *);
     void send(const QString &);
+    void mass(int, const QString &, const  QString &);
 private slots:
     void tmpdown();
     void readData();
@@ -150,8 +151,10 @@ private slots:
     void debug(int);
     void connectDB();
     void firstrun();
-    QString &get(int, int);
+    QString get(int);
+    QString get2(int);
     int exec(const QList<QString> &);
+    int exec2(const QList<QString> &);
     void entry(const QString &);
     void entry();
     void createDB();
@@ -192,14 +195,14 @@ private:
     QGridLayout *grid;
     QLabel *label;
     QSettings *conf;
-    QString tmp, file, lastprint;//host, user, tmp, password, servercert,database;
+    QString tmp, tmp2, file, lastprint;//host, user, tmp, password, servercert,database;
     QMenu *FileMenu, *EditMenu, *HackMenu;
     //unsigned short int port;// j'ai lu les docs sur internet et 0<="unsigned short int"<65536
     QSignalMapper *signalmap;
     //QMap<const QString, const CLabel*> widget;
     QList<QString> way;
     QSqlDatabase db;
-    QSqlQuery *q;
+    QSqlQuery *q, *qq;
     QSqlRecord r;
     FileDownloader * m;
     QNetworkAccessManager *net;