]> git.nothing2do.fr Git - diary-mobile.git/commitdiff
added back() (to get back x times)and tweaked to use the back button on
authorNorbert Moutarde <norbert.moutarde@nothing2do.eu>
Sat, 21 Dec 2013 13:53:00 +0000 (14:53 +0100)
committerNorbert Moutarde <norbert.moutarde@nothing2do.eu>
Sat, 21 Dec 2013 13:54:00 +0000 (14:54 +0100)
android phone.

mainwindow.cpp
mainwindow.h

index 83a74d70d23d83015f6469ac2da060112bb75faa..dd120004ccbb4a23970ebbcb10f79df2a4a55ea9 100644 (file)
@@ -18,22 +18,13 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
 {
     qDebug()<<"begin of MainWindows";
     conf=new QSettings(QString("FwF"), QString("diary-mobile"), this);
-    if (conf->allKeys().size()==0){
-        first=1;
+    if(conf->allKeys().size()==0){
+        qDebug()<<"first";
         firstrun();
-    }
+        conf->setValue(QString("first"), 1);
+    };
     screen=new QWidget(this);
-    grid=new QGridLayout();
-    texte=new QLineEdit();
-    vbox=new QVBoxLayout(screen);
-    hbox=new QHBoxLayout();
-    ok=new CLabel("ok");
-    ok->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
-    connect(ok, SIGNAL(released()), this, SLOT(entry()));
-    hbox->addWidget(texte);
-    hbox->addWidget(ok);
-    vbox->addLayout(hbox);
-    vbox->addLayout(grid);
+    grid=new QGridLayout(screen);
     signalmap=new QSignalMapper(this);
     connect(signalmap, SIGNAL(mapped(const QString &)),
                  this, SLOT(action(const QString &)));
@@ -41,13 +32,18 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
     setCentralWidget(screen);
     createMenuBar();
     connectDB();
-    //createDB();
+    if(conf->value(QString("first")).toInt()==1){
+        qDebug()<<"second";
+        createDB();
+        conf->setValue(QString("first"), 2);
+    };
     statusBar()->addPermanentWidget(label);
     menuBar()->show();
     start();
 }
 void MainWindow::start(){
     flush();
+    way.clear();
     getButtons(QString("begin"));
 }
 MainWindow::~MainWindow()
@@ -124,7 +120,6 @@ void MainWindow::quit(){
 }
 CLabel* MainWindow::addWidget(const QString &key, CLabel * a){
     qDebug()<<"addWidget("<<key<<")";
-    //widget.insert(key, a);
     int maxc=conf->value(QString("maxcolumn")).toInt();
     grid->addWidget(a, grid->count()/maxc, grid->count()%maxc, 1, 1, Qt::AlignVCenter | Qt::AlignHCenter);
     //QObject::connect(a, SIGNAL(pressed()), signalmap, SLOT(map()));
@@ -135,7 +130,7 @@ CLabel* MainWindow::addWidget(const QString &key, CLabel * a){
 }
 void MainWindow::action(const QString & a){
     qDebug()<<"action("<<a<<")";
-    label->setText(a);
+
     flush();
     if (a.split(QString(" "))[0]==QString("set")){
         conf->setValue(QString(a.split(QString(" "))[1]), a.split(QString(" "))[2]);
@@ -145,15 +140,17 @@ void MainWindow::action(const QString & a){
         exec(a.mid(4));
         start();
     }
-    else if(a.split(QString(" "))[0]==QString("edit")){
-
+    else if(a=="new"){
+        entry();
+        start();
     }
     else getButtons(a);
 }
 void MainWindow::createMenuBar(){
+
     FileMenu=new QMenu(QString("&File"), this);
     FileMenu->addAction(trUtf8("&Start..."), this, SLOT(start()),QKeySequence(trUtf8("Ctrl+S", "Start")));
-    FileMenu->addAction(trUtf8("&Connect"), this, SLOT(connectDB()),QKeySequence(trUtf8("Ctrl+C", "Connect")));
+    FileMenu->addAction(trUtf8("&Back"), this, SLOT(back()),QKeySequence(trUtf8("Ctrl+B", "Back")));
     FileMenu->addAction(trUtf8("&Quit..."), this, SLOT(quit()),QKeySequence(trUtf8("Ctrl+Q", "Quit")));
     menuBar()->addMenu(FileMenu);
     EditMenu=new QMenu(QString("&Edit"));
@@ -161,12 +158,14 @@ void MainWindow::createMenuBar(){
     EditMenu->addAction(trUtf8("C&reate database"), this, SLOT(createDB()), QKeySequence(trUtf8("Ctrl+R", "Edit|Database")));
     EditMenu->addAction(trUtf8("A&dd buttons"), this, SLOT(addButtonDB()), QKeySequence(trUtf8("Ctrl+D", "Add buttons")));
     EditMenu->addAction(trUtf8("&Edit buttons"), this, SLOT(editButtonDB()), QKeySequence(trUtf8("Ctrl+E", "Edit|&Edit button")));
+    EditMenu->addAction(trUtf8("&View menu"), this, SLOT(toggleMenu()), QKeySequence(trUtf8("Ctrl+T", "Edit|View menu")));
     menuBar()->addMenu(EditMenu);
     HelpMenu=new QMenu(QString("&Help"));
     HelpMenu->addAction(tr("About Qt"), qApp, SLOT(aboutQt()), QKeySequence(tr("ctrl+H", "About Qt")));
     menuBar()->addMenu(HelpMenu);
 
-    menuBar()->show();
+
+    //menuBar()->show();
 }
 void MainWindow::toggleMenu(){
     if (menuBar()->isVisible()){
@@ -234,6 +233,7 @@ void MainWindow::connectDB(){
 
 }
 void MainWindow::firstrun(){
+    qDebug()<<"firstrun()";
     conf->setValue(QString("host"), QVariant("127.0.0.1"));
     conf->setValue(QString("port"),QVariant(5432));
     conf->setValue(QString("user"), QVariant("user"));
@@ -277,7 +277,11 @@ int MainWindow::alias(const QString & a){
 }
 void MainWindow::entry(){
     QDateTime v;
-    QString a=v.currentDateTime().toString(QString("yyyy-MM-dd hh:mm:ss"))+" "+texte->text();
+    QString time=v.currentDateTime().toString(QString("yyyy-MM-dd hh:mm:ss")), entry="";
+    entry=QInputDialog::getText(this, QString("nouvelle entrée"), QString(time), QLineEdit::Normal, QString(""));
+    if(entry=="")
+        getButtons(way.last());
+    QString a=time+" "+entry;
     QFile fichier(conf->value(QString("file")).toString());
     fichier.open(QIODevice::Append | QIODevice::Text);
     QTextStream flux(&fichier);
@@ -285,26 +289,23 @@ void MainWindow::entry(){
     fichier.close();
     qDebug()<<"content added into file : "<<a;
     q->prepare("INSERT INTO raw (date, texte) VALUES (:date, :txt);");
-    q->bindValue(":date", v.currentDateTime().toString(QString("yyyy-MM-dd hh:mm:ss")));
-    q->bindValue(":txt", texte->text());
+    q->bindValue(":date", time);
+    q->bindValue(":txt", entry);
     qDebug()<<":date = "<<q->boundValue(QString(":date"));
     qDebug()<<":txt = "<<q->boundValue(QString(":txt"));
     q->exec();
     QSqlError b=q->lastError();
     if (b.isValid())qDebug()<<"q->lastError():"<<b.text();
-    texte->clear();
 }
 void MainWindow::createDB(){
+    qDebug()<<"createDB()";
     exec(QString("create table ui(keyword text, label text, action text);"));
     exec(QString("create table raw(date timestamp, texte text);"));
-    exec(QString("INSERT INTO 'ui' (keyword, label, action) VALUES('begin','fille','fille');"));
-    exec(QString("INSERT INTO 'ui' (keyword, label, action) VALUES('fille','aurelie','f-aurelie');"));
-    exec(QString("INSERT INTO 'ui' (keyword, label, action) VALUES('f-aurelie','discours','f-a-discours');"));
-    exec(QString("INSERT INTO 'ui' (keyword, label, action) VALUES('f-a-discours','discours un peu plus long que la moyenne pour voir se qui va se passer','begin');"));
+    exec(QString("insert into ui (keyword, label, action) values ('begin', 'new', 'new')"));
 }
 void MainWindow::addButtonDB(){
     qDebug()<<"addButtonDB()";
-    QString cmd="insert into ui (keyword, label, action) values ('", cur=label->text();
+    QString cmd="insert into ui (keyword, label, action) values ('", cur=way.last();
     QString view=QInputDialog::getText(this, QString("label"), QString("Entrez le label"));
     if (view=="")view="default";
     QString key=QInputDialog::getText(this, QString("keyword"), QString("Entrez le nom de la page"), QLineEdit::Normal, cur);
@@ -312,12 +313,14 @@ void MainWindow::addButtonDB(){
     QString action=QInputDialog::getText(this, QString("action"), QString("Entrez l'action"), QLineEdit::Normal, cur+"_"+view);
 
     QString a=cmd+key+"', '"+view+"', '"+action+"');";
-    exec(a);
-    flush();
-    getButtons(label->text());
+    qDebug()<<"exec()="<<exec(a);
+    /*flush();
+    getButtons(way.last());*/
 }
 void MainWindow::getButtons(const QString &a){
-    QString tmp="select label,action from ui where keyword like '%"+a+"%';";
+    QString tmp="select label,action from ui where keyword like '%"+a+"%';", b=QString::number(way.size());
+    label->setText(b);
+    way.append(a);
     exec(tmp);
     int labCol = 0;//r.indexOf("label");
     int actCol = 1;//r.indexOf("action");
@@ -327,14 +330,35 @@ void MainWindow::getButtons(const QString &a){
 }
 void MainWindow::editButtonDB(){
     flush();
-    exec(QString("select label from ui where keyword like '"+label->text())+"';");
+    qDebug()<<"exec()="<<exec(QString("select label from ui where keyword like '"+label->text())+"';");
     while (q->next()) {
         //QString key=QString("sql select keyword,label,action from ui where keyword like '"+q->value(0).toString()+"';");
         qDebug()<<q->value(0).toString();
         addWidget(QString("sql select keyword,label,action from ui where keyword like '"+q->value(0).toString()+"';"), new CLabel(q->value(0).toString()));
     }
-    flush();
+    /*flush();
     while (q->next()){
 
+    }*/
+}
+int MainWindow::updateUi(){
+    return system("wget --no-check-certificate https://github.com/Nothing2Do/diary-mobile-android/raw/master/ui.sql");
+
+}
+void MainWindow::back(){
+    int a=QInputDialog::getInt(this, QString("Retour"), QString("Où voulez-vous revenir ?"), way.size()-2, 0, way.size()-2);
+    qDebug()<<"retour : "<<a;
+    flush();
+    getButtons(way[a]);
+}
+void MainWindow::keyReleaseEvent(QKeyEvent *event)
+{
+    static bool accepted=true;
+    if (event->key()==Qt::Key_Back)
+    {
+        back();
+        event->setAccepted(accepted); // dont't close my Top Level Widget !
+        accepted=false;// close the app next time when the user press back button
     }
+
 }
index 4d444ce5219d296b53f85763f091cd0bf95a7a09..2a5f24ea05f769aec3611fc61448e988dea467da 100644 (file)
@@ -47,7 +47,7 @@ public:
         ScreenOrientationLockLandscape,
         ScreenOrientationAuto
     };
-
+    void keyReleaseEvent(QKeyEvent *event);
     explicit MainWindow(QWidget *parent = 0);
     virtual ~MainWindow();
 
@@ -58,6 +58,7 @@ public:
     CLabel* addWidget(const QString &, CLabel *);
     //void remWidget(const QString &);
 private slots:
+    void back();
     void start();
     void quit();
     void lsconfig();
@@ -79,6 +80,7 @@ private slots:
     void addButtonDB();
     void editButtonDB();
     void getButtons(const QString &);
+    int updateUi();
 public slots:
 
 signals:
@@ -87,17 +89,14 @@ private:
     bool first;
     QWidget *screen;
     QGridLayout *grid;
-    QVBoxLayout * vbox;
-    QHBoxLayout * hbox;
-    QLineEdit *texte;
-    CLabel *ok;
     QLabel *label;
     QSettings *conf;
-    QString host, user, tmp, password, servercert, database, file;
+    QString tmp;//host, user, tmp, password, servercert,database, file;
     QMenu *FileMenu, *EditMenu, *HelpMenu;
     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;
     //QSqlRecord r;