}
void MainWindow::start(){
way=conf->value(QString("start")).toStringList();
- if(!way.isEmpty())getButtons(way.takeLast());
+ if(!way.isEmpty())get(QString("buttons"), way.takeLast());
}
MainWindow::~MainWindow()
{
qDebug()<<"action("<<a<<")";
QStringList b=a.split(QString(" "));
QString c=a;
+ bool ok;
c.remove(0,4);
- int bs=b.size();
- int part=a.count(conf->value(QString("sepcmd")).toString());
+ int bs=b.size(), part=a.count(conf->value(QString("sepcmd")).toString());
if(part){
for(int d=0; d<=part; d++){
action(a.split(conf->value(QString("sepcmd")).toString())[d]);
send(c);
}
else if(b[0]==QString("back")){
- int ws=way.size(), d;
- if(way.size()>=2){
- way.removeLast();
- getButtons(way.takeLast());
+ if(way.size()>1){
+ int e;
+ if(bs>1)e=b[2].toInt(&ok);
+ else e=1;
+ for(int bcl=0;bcl<e;bcl++){
+ way.removeLast();
}
+ get(QString("buttons"), way.takeLast());
}
+ }
else if(b[0]==QString("setfile")){
bool ok=0;
QString d, e;
QMessageBox::critical(this, trUtf8("Error","title if action(\"edit\") has too much value"), trUtf8("Too much value in button's action", "text if action(\"edit\") has too much value"));
return;
}
- editButtonDB(e);
+ editDB(QString("buttons"),e);
}
else if(b[0]==QString("but")){
}
}
else if(b[0]==QString("rm")){
- 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());
+ int d;
+ if(b.size()>=2){
+ d=b[1].toInt();
+ way.removeAt(d);
}
+ }
else if(b[0]==QString("read")){
if(bs==2){
QFile a(b[1]);
a.open(QIODevice::ReadOnly);
- readData(a.readAll());
+ read(QString("buttons"),a.readAll());
}else{
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 {
- getButtons(a);
+ get(QString("buttons"),a);
}
}
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")));
menuBar()->addMenu(FileMenu);
- EditMenu=new QMenu(trUtf8("&Buttons", "top menu"));
- EditMenu->addAction(trUtf8("&Download", "Buttons|Downlad"), this, SLOT(downloadData()),QKeySequence(trUtf8("Ctrl+W", "Buttons|Downlad")));
- EditMenu->addAction(trUtf8("A&dd", "Buttons|Add"), this, SLOT(addButtonDB()), QKeySequence(trUtf8("Ctrl+D", "Buttons|Add")));
- EditMenu->addAction(trUtf8("Sa&v", "Buttons|Sav"), this, SLOT(savButtons()), QKeySequence(trUtf8("Ctrl+V", "Buttons|Save")));
- EditMenu->addAction(trUtf8("Reset", "Buttons|Reset"), this, SLOT(resetUi()), QKeySequence(trUtf8("Ctrl+Z", "Buttons|Reset")));
- EditMenu->addAction(trUtf8("&Edit", "Buttons|Edit"), this, SLOT(chooseButtonDB()), QKeySequence(trUtf8("Ctrl+E", "Buttons|&Edit")));
+ EditMenu=new QMenu(trUtf8("&Data", "top menu"));
+ EditMenu->addAction(trUtf8("&Download", "Data|Downlad"), this, SLOT(downloadData()),QKeySequence(trUtf8("Ctrl+W", "Data|Downlad")));
+ EditMenu->addAction(trUtf8("A&dd", "Data|Add"), this, SLOT(addDataDB()), QKeySequence(trUtf8("Ctrl+D", "Data|Add")));
+ EditMenu->addAction(trUtf8("Sa&v", "Data|Sav"), this, SLOT(savData()), QKeySequence(trUtf8("Ctrl+V", "Data|Save")));
+ EditMenu->addAction(trUtf8("Reset", "Data|Reset"), this, SLOT(reset()), QKeySequence(trUtf8("Ctrl+Z", "Data|Reset")));
+ EditMenu->addAction(trUtf8("&Edit", "Data|Edit"), this, SLOT(chooseDB()), QKeySequence(trUtf8("Ctrl+E", "Data|&Edit")));
menuBar()->addMenu(EditMenu);
HackMenu=new QMenu(trUtf8("&Hack", "top menu"));
HackMenu->addAction(trUtf8("New entry", "Hack|Entry"), this, SLOT(entry()));
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("maxline"), QVariant(3));
conf->setValue(QString("SQLsettings"), QVariant("connect_timeout=10000"));
conf->setValue(QString("button"), QVariant("background-color: red;border-style: outset;border-width: 7px;border-radius: 10px;border-color: beige;font: bold 15px;padding: 6px;"));
+ conf->setValue(QString("buttonbefore"), QVariant("border-style: outset"));
+ conf->setValue(QString("buttonafter"), QVariant("border-style: inset"));
conf->setValue(QString("menu"), QVariant(0));
conf->setValue(QString("download"), QVariant("http://www.nothing2do.eu/ui.sql+"));
conf->setValue(QString("userftp"), QVariant("<user>"));
conf->setValue(QString("sepcmd"), QVariant("!@!"));
conf->setValue(QString("sepchc"), QVariant("!#!"));
conf->setValue(QString("sepraw"), QVariant(" "));
- conf->setValue(QString("sepbuttons"), QVariant("$"));
+ conf->setValue(QString("sepcolbuttons"), QVariant("$"));
conf->setValue(QString("sqlval"), QVariant("?"));
conf->setValue(QString("always"), QVariant("+always"));
qDebug()<<"firstrun() finished";
}
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){
context.append(way.last());
if(a=="")label=context+" : ";
else label=context+", "+a+" : ";
- entry=QInputDialog::getText(this, trUtf8("New entry"), label, QLineEdit::Normal, "", &ok);
+ entry=QInputDialog::getMultiLineText(this, trUtf8("New entry"), label, "", &ok);
if(!ok)return;
QString c;
if(a=="")c=context+" : "+entry;
exec(QList<QString>({"create table ui(id INTEGER PRIMARY KEY AUTOINCREMENT, keyword text, label text, action text);"}));
exec(QList<QString>({"create table raw(id INTEGER PRIMARY KEY AUTOINCREMENT, date timestamp, texte text);"}));
}
-void MainWindow::addButtonDB(){
- qDebug()<<"addButtonDB()";
+void MainWindow::addDB(const QString & tmp){
+ qDebug()<<"addDB()";
bool ok=0;
QString cur=label->text();
- QString a, b, c=QInputDialog::getText(this, trUtf8("label", "Title of box where ask for new button's label"), trUtf8("Enter his label", "his/her/?they? I've forget my school lesson"),QLineEdit::Normal, QString(""), &ok);
+ QString a, b, c=QInputDialog::getMultiLineText(this, trUtf8("label", "Title of box where ask for new button's label"), trUtf8("Enter his label", "his/her/?they? I've forget my school lesson"), QString(""), &ok);
if ((c=="")||(ok==0))return;
- b=QInputDialog::getText(this, trUtf8("keyword", "Title of box where ask for new button's keyword"), trUtf8("Enter they keyword (no limit !)"), QLineEdit::Normal, cur, &ok);
+ b=QInputDialog::getMultiLineText(this, trUtf8("keyword", "Title of box where ask for new button's keyword"), trUtf8("Enter they keyword (no limit !)"), cur, &ok);
if ((b=="")||(ok==0))return;
- a=QInputDialog::getText(this, trUtf8("action", "Title of box where ask for new button's action"), trUtf8("Enter his action"), QLineEdit::Normal, c, &ok);
+ a=QInputDialog::getMultiLineText(this, trUtf8("action", "Title of box where ask for new button's action"), trUtf8("Enter his action"), c, &ok);
if ((a=="")||(ok==0))return;
- insertButton(b, c, a);
+ insert(tmp, b, c, a);
return;
}
-void MainWindow::getButtons(const QString &b){
+void MainWindow::get(const QString & d, const QString &b){
QString a=b;lastprint=b;
if((b[0]!='-')&&(b[0]!='+'))way.append(a);
else a.remove(0, 1);
qDebug()<<"end getButtons : "<<i<<" button(s) way.size()"<<way.size();
}
-void MainWindow::chooseButtonDB(){
- QString a;
+void MainWindow::chooseDB(){
+ QString b;
bool ok=1;
- if(conf->value("askkeyword").toBool())a=QInputDialog::getText(this, trUtf8("chooseButtonDB"), trUtf8("Enter the keyword : "), QLineEdit::Normal, label->text(), &ok);
- else a=label->text();
- if(ok)chooseButtonDB(a);
+ if(conf->value("askkeyword").toBool())b=QInputDialog::getText(this, trUtf8("chooseDB"), trUtf8("Enter the keyword : "), QLineEdit::Normal, label->text(), &ok);
+ else b=label->text();
+ if(ok)chooseDB(QString("buttons"), b);
}
-void MainWindow::chooseButtonDB(const QString & a){
+void MainWindow::chooseDB(const QString & b){
flush();
- QString b="%"+a+"%";
- qDebug()<<"exec()="<<exec(QList<QString>({conf->value(QString("choosebuttons")).toString(), b}));
+ QString c="%"+b+"%", a="buttons";
+ qDebug()<<"exec()="<<exec(QList<QString>({conf->value(QString("choose"+a)).toString(), c}));
while (q->next()) {
const QString action="edit "+q->value(0).toString();
addWidget(action, new CLabel(q->value(1).toString(), conf->value(QString("button")).toString()));
}
}
-void MainWindow::editButtonDB(const QString & a){
+void MainWindow::chooseDB(const QString & a,const QString & b){
+ flush();
+ QString c="%"+b+"%";
+ qDebug()<<"exec()="<<exec(QList<QString>({conf->value(QString("choose"+a)).toString(), c}));
+ while (q->next()) {
+ const QString action="edit "+q->value(0).toString();
+ addWidget(action, new CLabel(q->value(1).toString(), conf->value(QString("button")).toString()));
+ }
+}
+void MainWindow::editDB(const QString & a, const QString & b){
qDebug()<<"a="<<a;
- exec(QList<QString>({conf->value(QString("editbuttons")).toString(), a}));
+ exec(QList<QString>({conf->value(QString("edit")+a).toString(), b}));
if(q->isSelect())q->first();
bool ok;
QString keyword=q->value(1).toString();
QString label=q->value(2).toString();
QString action=q->value(3).toString();
- const QString tmpkeyword=QInputDialog::getText(this, trUtf8("keyword", "Title of box where ask for button's keyword"), trUtf8("new keyword", "question to get new button's keyword"), QLineEdit::Normal, keyword, &ok);
+ const QString tmpkeyword=QInputDialog::getMultiLineText(this, trUtf8("keyword", "Title of box where ask for button's keyword"), trUtf8("new keyword", "question to get new button's keyword"), keyword, &ok);
if(!ok)return;
- const QString tmplabel=QInputDialog::getText(this, trUtf8("label", "Title of box where ask for button's label"), trUtf8("new label", "question to get new button's label"), QLineEdit::Normal, label, &ok);
+ const QString tmplabel=QInputDialog::getMultiLineText(this, trUtf8("label", "Title of box where ask for button's label"), trUtf8("new label", "question to get new button's label"), label, &ok);
if(!ok)return;
- const QString tmpaction=QInputDialog::getText(this, trUtf8("action", "Title of box where ask for button's action"), trUtf8("new action", "question to get new button's action"), QLineEdit::Normal, action, &ok);
+ const QString tmpaction=QInputDialog::getMultiLineText(this, trUtf8("action", "Title of box where ask for button's action"), trUtf8("new action", "question to get new button's action"), action, &ok);
if(!ok)return;
if((tmpkeyword=="")||(tmplabel=="")||(tmpaction=="")){
//exec(QList<QString>({conf->value(QString("deletebuttons")).toString(), a}));
- removeButton(keyword, label, action);
+ remove(b, keyword, label, action);
return;
}
- exec(QList<QString>({conf->value(QString("updatebuttons")).toString(), tmpkeyword, tmplabel, tmpaction, a}));
+ exec(QList<QString>({conf->value(QString("update")+a).toString(), tmpkeyword, tmplabel, tmpaction, b}));
}
void MainWindow::downloadData(){
connect(m, SIGNAL(downloaded()), SLOT(writeData()));
}
void MainWindow::writeData(){
- readData(m->downloadedData());
+ read(QString("buttons"), m->downloadedData());
m->deleteLater();
conf->setValue(QString("lastdownload"), QDateTime::currentDateTime().toString(Qt::ISODate));
}
}
void MainWindow::back(){
if(!((video)&&(playlist))){
- getButtons(conf->value(QString("menuback")).toString());
- }else if(label->text()==conf->value(QString("menuback")).toString())getButtons(way.takeLast());
+ get(QString("buttons"),conf->value(QString("menuback")).toString());
+ }else if(label->text()==conf->value(QString("menuback")).toString())get(QString("buttons"),way.takeLast());
else{
- getButtons(QString("+video"));
+ get(QString("buttons"), QString("+video"));
}
}
void MainWindow::keyReleaseEvent(QKeyEvent *event)
{
return m_DownloadedData;
}
-void MainWindow::readData(const QByteArray &in){
- qDebug()<<"readButtons";
+void MainWindow::read(const QString &a, const QByteArray &in){
+ qDebug()<<"read : "<<a;
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);
- qDebug()<<"first line : "<<d;
- conf->setValue(QString("firstline"), d);*/
- QString d=conf->value(QString("sqlbuttons")).toString();
- for(int i=0; i<a; i++){
+ int b=in.count('\n');
+ QString d=conf->value(QString("sql")+a).toString(), sep=conf->value(QString("sepcol")+a).toString();
+ qDebug()<<"sql"<<a<<" = "<<d<<" sep="<<sep<<" b(hm line)="<<b;
+ for(int i=0; i<b; i++){
q->prepare(d);
- int b=in.split('\n').at(i).count('$');
- //qDebug()<<i<<"th line, "<<b<<" delimiter";
- for(int j=0; j<b+1; j++){
- q->bindValue(j, QString(in.split('\n').at(i).split('$').at(j)));
- //qDebug()<<"bind "<<j<<" and "<< QString(in.split('\n').at(i).split('$').at(j));
+ int c=QString(in.split('\n').at(i)).count(sep);
+ qDebug()<<i<<"th line, "<<c<<" delimiter";
+ for(int j=0; j<=c; j++){
+ QString tmp=QString(QString(in.split('\n').at(i)).split(sep).at(j));
+ q->bindValue(j, tmp);
+ qDebug()<<"bind "<<j<<" and "<< tmp;
}
qDebug()<<"q->exec() : "<<q->exec()<<" lastError()="<<q->lastError();
texte=texte+conf->value(QString("uploadDB")).toString();
qDebug()<<"texte : "<<texte;
- QMessageBox::information(this, trUtf8("uploadDB", "pop-up title when data has been sent"), texte);
-}
-void MainWindow::resetUi(){
- exec(QList<QString>({"delete from ui;"}));
-
+ QMessageBox::information(this, trUtf8("upload", "pop-up title when data has been sent"), texte);
}
void MainWindow::downloadDB(){
qDebug()<<"restoreDB() : "<<conf->value(QString("restore")).toString();
file=b;
connect(m, SIGNAL(downloaded()), this, SLOT(writeFile()));
}
-void MainWindow::savButtons(){
- exec(QList<QString> ({conf->value(QString("selectbuttons")).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";
+void MainWindow::sav(const QString & a){
+ exec(QList<QString> ({conf->value(QString("select")+a).toString()}));
+ QString tmp="file"+a;
+ QFile b(conf->value(tmp).toString());
+ b.open(QIODevice::WriteOnly|QIODevice::Text);
+ QTextStream c(&b);
+ int d=conf->value(QString("column")+a).toInt()-1;
+ QString sep=conf->value(QString("sep")+a).toString();
+ qDebug()<<"d="<<d;
while (q->next()) {
- for (int i=0; i<c; i++){
- b<<q->value(i).toString()<<sep;
+ for (int i=0; i<d; i++){
+ c<<q->value(i).toString()<<sep;
}
- b<<q->value(2).toString()<<"\n";
+ c<<q->value(d).toString()<<"\n";
}
- 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("filebuttons")).toString());
+ b.close();
+ 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("file")+a).toString());
net=new QNetworkAccessManager(this);
- a.open(QIODevice::ReadOnly | QIODevice::Text);
- rep=net->put(QNetworkRequest(upload), a.readAll());
+ b.open(QIODevice::ReadOnly | QIODevice::Text);
+ rep=net->put(QNetworkRequest(upload), b.readAll());
qDebug()<<"net->put : "<<rep<< " upload : "<<upload.url();
connect(rep, SIGNAL(finished()), this, SLOT(Uisent()));
}
qDebug()<<"Uisent";
QMessageBox::information(this, trUtf8("Uisent", "pop-up title when buttons has been sent"), trUtf8("savbuttons finish", "pop-up text when buttons has been sent"));
}
-void MainWindow::resetRAW(){
- exec(QList<QString>({"delete from raw;"}));
+void MainWindow::reset(const QString & a){
+ exec(QList<QString>({"delete from "+a+";"}));
}
-void MainWindow::getButtons(){
- const QString a=QInputDialog::getText(this, trUtf8("getButtons", "title to ask keyword fot getbuttons"), trUtf8("Enter the keyword : ", "ask keyword to get buttons"));
- getButtons(a);
+void MainWindow::get(const QString & a){
+ const QString b=QInputDialog::getText(this, trUtf8("getButtons", "title to ask keyword fot getbuttons"), trUtf8("Enter the keyword : ", "ask keyword to get buttons"));
+ get(a, b);
}
-void MainWindow::insertButton(const QString & keyword, const QString & label, const QString & action){
+void MainWindow::insert(const QString & a, const QString & keyword, const QString & label, const QString & action){
QList<QString> tmp;
- tmp.append(conf->value(QString("testbuttons")).toString());
+ tmp.append(conf->value(QString("test")+a).toString());
tmp.append(label);
tmp.append(action);
exec(tmp);
count++;
key=q->value(1).toString()+" "+key;
}
- if(count==0)exec(QList<QString>({conf->value(QString("addbuttons")).toString(), label, key, action}));
- else{exec(QList<QString>({conf->value(QString("updatebuttons")).toString(), key, label, action, id}));
+ if(count==0)exec(QList<QString>({conf->value(QString("add")+a).toString(), label, key, action}));
+ else{exec(QList<QString>({conf->value(QString("update")+a).toString(), key, label, action, id}));
}
}
-void MainWindow::removeButton(const QString & keyword, const QString & label, const QString & action){
+void MainWindow::remove(const QString & a, const QString & keyword, const QString & label, const QString & action){
qDebug()<<"keyword="<<keyword<<" label="<<label<<" action="<<action;
QList<QString> tmp;
- tmp.append(conf->value(QString("testbuttons")).toString());
+ tmp.append(conf->value(QString("test")+a).toString());
tmp.append(label);
tmp.append(action);
exec(tmp);
key=key+" "+cur;
}
qDebug()<<"key="<<key<<" keyword="<<keyword;
- if(key==QString(" ").repeated(key.size()))exec(QList<QString>({conf->value(QString("deletebutton")).toString(), id}));
+ if(key==QString(" ").repeated(key.size()))exec(QList<QString>({conf->value(QString("delete")+a).toString(), id}));
else{
key.replace(keyword, QString(""));
exec(QList<QString>({conf->value(QString("updatebuttons")).toString(), key, label, action, id}));
connect(m, SIGNAL(downloaded()), this, SLOT(readData()));
}
void MainWindow::readData(){
- readData(m->downloadedData());
+ read(QString("buttons"), m->downloadedData());
m->disconnect(m, SIGNAL(downloaded()),this, SLOT(readData()));
}
void MainWindow::send(const QString & a){
b<<q->value(c).toString()<<"\n";
}
tmp.close();
- qDebug()<<"a.open()="<<tmp.open(QIODevice::ReadOnly | QIODevice::Text);
- //QUrl upload(conf->value(QString("uploadRAW")).toString());
- t=a+"file";
+ t="file"+a;
QUrl upload(QString("ftp://")+conf->value(QString("userftp")).toString()+QString(":")+conf->value(QString("passftp")).toString()+QString("@")+conf->value(QString("hostftp")).toString()+QString("/")+conf->value(t).toString());
net=new QNetworkAccessManager(this);
- //a.open(QIODevice::ReadOnly | QIODevice::Text);
+ tmp.open(QIODevice::ReadOnly | QIODevice::Text);
rep=net->put(QNetworkRequest(upload), tmp.readAll());
qDebug()<<"net->put : "<<rep<< " upload : "<<upload.url();
connect(rep, SIGNAL(finished()), this, SLOT(RAWsent()));
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);
+ if(t==c)tmp.append(key);
else tmp.append(get(t));
}
exec2(tmp);
}
}
- getButtons(lastprint);
+ get(QString("buttons"), lastprint);
+}
+void MainWindow::addDataDB(){
+ addDB(QString("buttons"));
+}
+void MainWindow::savData(){
+ sav(QString("buttons"));
+}
+void MainWindow::reset(){
+ reset(QString("ui"));
}