From 3f5a542c8c069624c12701539513b3d4d9804a2e Mon Sep 17 00:00:00 2001 From: Norbert Moutarde Date: Sat, 21 Dec 2013 14:53:00 +0100 Subject: [PATCH] added back() (to get back x times)and tweaked to use the back button on android phone. --- mainwindow.cpp | 96 +++++++++++++++++++++++++++++++------------------- mainwindow.h | 11 +++--- 2 files changed, 65 insertions(+), 42 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index 83a74d7..dd12000 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -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("<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("<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 : "<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 = "<boundValue(QString(":date")); qDebug()<<":txt = "<boundValue(QString(":txt")); q->exec(); QSqlError b=q->lastError(); if (b.isValid())qDebug()<<"q->lastError():"<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()="<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()="<text())+"';"); while (q->next()) { //QString key=QString("sql select keyword,label,action from ui where keyword like '"+q->value(0).toString()+"';"); qDebug()<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 : "<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 } + } diff --git a/mainwindow.h b/mainwindow.h index 4d444ce..2a5f24e 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -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 widget; + QList way; QSqlDatabase db; QSqlQuery *q; //QSqlRecord r; -- 2.45.1