author | ar <ar> | 2004-02-21 19:09:12 (UTC) |
---|---|---|
committer | ar <ar> | 2004-02-21 19:09:12 (UTC) |
commit | c7e563cbb26c20807e66dd4284d1ce9cbf8e1419 (patch) (side-by-side diff) | |
tree | e55119af88abe930c1ce492f30efb72c929a730c /noncore/tools/remote | |
parent | 536f271b1e6a1d1886e96a28524a3503c4c38c4e (diff) | |
download | opie-c7e563cbb26c20807e66dd4284d1ce9cbf8e1419.zip opie-c7e563cbb26c20807e66dd4284d1ce9cbf8e1419.tar.gz opie-c7e563cbb26c20807e66dd4284d1ce9cbf8e1419.tar.bz2 |
improve support for BigScreen
-rw-r--r-- | noncore/tools/remote/learntab.cpp | 311 | ||||
-rw-r--r-- | noncore/tools/remote/remote.cpp | 102 |
2 files changed, 210 insertions, 203 deletions
diff --git a/noncore/tools/remote/learntab.cpp b/noncore/tools/remote/learntab.cpp index 7582161..335a3e9 100644 --- a/noncore/tools/remote/learntab.cpp +++ b/noncore/tools/remote/learntab.cpp @@ -1,191 +1,192 @@ /* Opie-Remote. emulates remote controlls on an iPaq (and maybe a Zaurus) in Opie. Copyright (C) 2002 Thomas Stephens - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #include "learntab.h" +/* OPIE */ +#include <qpe/qpeapplication.h> + LearnTab::LearnTab(QWidget *parent, const char *name):QWidget(parent,name) { - QVBoxLayout *layout = new QVBoxLayout(this); - QHBoxLayout *bottomLayout = new QHBoxLayout(this); - - layout->insertSpacing(0,5); - remotesBox = new QListBox(this, "remotesBox"); - layout->insertWidget(0, remotesBox, 1); - remotesBox->insertStringList(getRemotes()); - - layout->insertSpacing(-1,5); - layout->insertLayout(-1, bottomLayout); - layout->insertSpacing(-1,5); - - QPushButton *add = new QPushButton("Add", this, "add"); - bottomLayout->insertSpacing(-1, 5); - bottomLayout->insertWidget(-1, add); - bottomLayout->insertSpacing(-1, 5); - QPushButton *edit = new QPushButton("Edit", this, "edit"); - bottomLayout->insertWidget(-1, edit); - bottomLayout->insertSpacing(-1, 5); - QPushButton *del = new QPushButton("Delete", this, "delete"); - bottomLayout->insertWidget(-1, del); - bottomLayout->insertSpacing(-1, 5); - - connect(add, SIGNAL(clicked()), this, SLOT(add()) ); - connect(edit, SIGNAL(clicked()), this, SLOT(edit()) ); - connect(del, SIGNAL(clicked()), this, SLOT(del()) ); + QVBoxLayout *layout = new QVBoxLayout(this); + QHBoxLayout *bottomLayout = new QHBoxLayout(this); + + layout->insertSpacing(0,5); + remotesBox = new QListBox(this, "remotesBox"); + layout->insertWidget(0, remotesBox, 1); + remotesBox->insertStringList(getRemotes()); + + layout->insertSpacing(-1,5); + layout->insertLayout(-1, bottomLayout); + layout->insertSpacing(-1,5); + + QPushButton *add = new QPushButton("Add", this, "add"); + bottomLayout->insertSpacing(-1, 5); + bottomLayout->insertWidget(-1, add); + bottomLayout->insertSpacing(-1, 5); + QPushButton *edit = new QPushButton("Edit", this, "edit"); + bottomLayout->insertWidget(-1, edit); + bottomLayout->insertSpacing(-1, 5); + QPushButton *del = new QPushButton("Delete", this, "delete"); + bottomLayout->insertWidget(-1, del); + bottomLayout->insertSpacing(-1, 5); + + connect(add, SIGNAL(clicked()), this, SLOT(add()) ); + connect(edit, SIGNAL(clicked()), this, SLOT(edit()) ); + connect(del, SIGNAL(clicked()), this, SLOT(del()) ); } void LearnTab::add() { - printf("LearnTab::add: add pressed\n"); - RecordDialog *dialog = new RecordDialog(this); - dialog->showMaximized(); + printf("LearnTab::add: add pressed\n"); + RecordDialog *dialog = new RecordDialog(this); + QPEApplication::showDialog( dialog ); } void LearnTab::edit() -{ -} +{} void LearnTab::del() -{ -} +{} QStringList LearnTab::getRemotes() { - const char write_buffer[] = "LIST\n"; - const char *readbuffer; - int i, numlines; - QStringList list; - - addr.sun_family=AF_UNIX; - strcpy(addr.sun_path,"/dev/lircd"); - - fd = socket(AF_UNIX, SOCK_STREAM, 0); - if(fd == -1) - { - QMessageBox *mb = new QMessageBox("Error!", - "couldnt connect to socket", - QMessageBox::NoIcon, - QMessageBox::Ok, - QMessageBox::NoButton, - QMessageBox::NoButton); - mb->exec(); - perror("LearnTab::GetRemotes"); - return NULL; - } - - if(::connect(fd,(struct sockaddr *) &addr, sizeof(addr) ) == -1) - { - QMessageBox *mb = new QMessageBox("Error!", - "couldnt connect to socket", - QMessageBox::NoIcon, - QMessageBox::Ok, - QMessageBox::NoButton, - QMessageBox::NoButton); - mb->exec(); - perror("LearnTab::GetRemotes"); - return NULL; - } - - write(fd, write_buffer, strlen(write_buffer)); - - for(i=0; i<5; i++) - { - printf("%d\n", i); - readbuffer = readPacket(); - printf("%s", readbuffer); - printf("%d\n", i); - } - - numlines = atoi(readbuffer); - - for(i=0; i<numlines; i++) - { - list+=readPacket(); - } - - if(strcasecmp(readPacket(), "END") != 0) - { - QMessageBox *mb = new QMessageBox("Error!", - "bad packet", - QMessageBox::NoIcon, - QMessageBox::Ok, - QMessageBox::NoButton, - QMessageBox::NoButton); - mb->exec(); - perror("LearnTab::GetRemotes"); - return NULL; - } - - ::close(fd); - return list; + const char write_buffer[] = "LIST\n"; + const char *readbuffer; + int i, numlines; + QStringList list; + + addr.sun_family=AF_UNIX; + strcpy(addr.sun_path,"/dev/lircd"); + + fd = socket(AF_UNIX, SOCK_STREAM, 0); + if(fd == -1) + { + QMessageBox *mb = new QMessageBox("Error!", + "couldnt connect to socket", + QMessageBox::NoIcon, + QMessageBox::Ok, + QMessageBox::NoButton, + QMessageBox::NoButton); + mb->exec(); + perror("LearnTab::GetRemotes"); + return NULL; + } + + if(::connect(fd,(struct sockaddr *) &addr, sizeof(addr) ) == -1) + { + QMessageBox *mb = new QMessageBox("Error!", + "couldnt connect to socket", + QMessageBox::NoIcon, + QMessageBox::Ok, + QMessageBox::NoButton, + QMessageBox::NoButton); + mb->exec(); + perror("LearnTab::GetRemotes"); + return NULL; + } + + write(fd, write_buffer, strlen(write_buffer)); + + for(i=0; i<5; i++) + { + printf("%d\n", i); + readbuffer = readPacket(); + printf("%s", readbuffer); + printf("%d\n", i); + } + + numlines = atoi(readbuffer); + + for(i=0; i<numlines; i++) + { + list+=readPacket(); + } + + if(strcasecmp(readPacket(), "END") != 0) + { + QMessageBox *mb = new QMessageBox("Error!", + "bad packet", + QMessageBox::NoIcon, + QMessageBox::Ok, + QMessageBox::NoButton, + QMessageBox::NoButton); + mb->exec(); + perror("LearnTab::GetRemotes"); + return NULL; + } + + ::close(fd); + return list; } //this function was ripped for rc.c in xrc, it is available here: http://www.lirc.org/software.html const char *LearnTab::readPacket() { - static char buffer[PACKET_SIZE+1]=""; - char *end; - static int ptr=0,end_len=0; - ssize_t ret; - timeout = 0; - - if(ptr>0) - { - memmove(buffer,buffer+ptr,strlen(buffer+ptr)+1); - ptr=strlen(buffer); - end=strchr(buffer,'\n'); - } - else - { - end=NULL; - } - alarm(TIMEOUT); - while(end==NULL) - { - if(PACKET_SIZE<=ptr) - { - fprintf(stderr,"bad packet\n"); - ptr=0; - return(NULL); - } - ret=read(fd,buffer+ptr,PACKET_SIZE-ptr); - - if(ret<=0 || timeout) - { - if(timeout) - { - fprintf(stderr,"timeout\n"); - } - else - { - alarm(0); - } - ptr=0; - return(NULL); - } - buffer[ptr+ret]=0; - ptr=strlen(buffer); - end=strchr(buffer,'\n'); - } - alarm(0);timeout=0; - - end[0]=0; - ptr=strlen(buffer)+1; -//# ifdef DEBUG -// printf("buffer: -%s-\n",buffer); -//# endif - return(buffer); + static char buffer[PACKET_SIZE+1]=""; + char *end; + static int ptr=0,end_len=0; + ssize_t ret; + timeout = 0; + + if(ptr>0) + { + memmove(buffer,buffer+ptr,strlen(buffer+ptr)+1); + ptr=strlen(buffer); + end=strchr(buffer,'\n'); + } + else + { + end=NULL; + } + alarm(TIMEOUT); + while(end==NULL) + { + if(PACKET_SIZE<=ptr) + { + fprintf(stderr,"bad packet\n"); + ptr=0; + return(NULL); + } + ret=read(fd,buffer+ptr,PACKET_SIZE-ptr); + + if(ret<=0 || timeout) + { + if(timeout) + { + fprintf(stderr,"timeout\n"); + } + else + { + alarm(0); + } + ptr=0; + return(NULL); + } + buffer[ptr+ret]=0; + ptr=strlen(buffer); + end=strchr(buffer,'\n'); + } + alarm(0);timeout=0; + + end[0]=0; + ptr=strlen(buffer)+1; + //# ifdef DEBUG + // printf("buffer: -%s-\n",buffer); + //# endif + return(buffer); } diff --git a/noncore/tools/remote/remote.cpp b/noncore/tools/remote/remote.cpp index 7972def..638629f 100644 --- a/noncore/tools/remote/remote.cpp +++ b/noncore/tools/remote/remote.cpp @@ -1,28 +1,35 @@ /* Opie-Remote. emulates remote controlls on an iPaq (and maybe a Zaurus) in Opie. Copyright (C) 2002 Thomas Stephens - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "mainview.h" + +/* OPIE */ #include <qpe/qpeapplication.h> #include <qpe/resource.h> #include <qpe/config.h> + +/* QT */ #include <qpushbutton.h> #include <qtabwidget.h> #include <qlayout.h> #include <qmessagebox.h> #include <qpaintdevice.h> #include <qobject.h> + +/* STD */ #include <sys/socket.h> #include <sys/types.h> #include <sys/un.h> @@ -30,16 +37,15 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #include <stdio.h> #include <signal.h> -#include "mainview.h" /*void reconnect(int &fd) { // struct sockaddr_un addr; - + addr.sun_family=AF_UNIX; strcpy(addr.sun_path,"/dev/lircd"); fd = socket(AF_UNIX, SOCK_STREAM, 0); - + if(connect(fd,(struct sockaddr *) &addr, sizeof(addr) ) == -1) { QMessageBox *mb = new QMessageBox("error", @@ -55,46 +61,46 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA int main( int argc, char **argv ) { - QPEApplication a( argc, argv ); - MainView w; - - int fd; -// struct sockaddr_un addr; -// char read_buffer[BUFFERSIZE+1]; -// char write_buffer[] = "LIST\n"; - -// addr.sun_family=AF_UNIX; -// strcpy(addr.sun_path,"/dev/lircd"); -// fd = socket(AF_UNIX, SOCK_STREAM, 0); - -// printf("fd1: %d\n", fd); -/* - if(connect(fd,(struct sockaddr *) &addr, sizeof(addr) ) == -1) - { - QMessageBox *mb = new QMessageBox("error", - "couldnt connect to socket", - QMessageBox::NoIcon, - QMessageBox::Ok, - QMessageBox::NoButton, - QMessageBox::NoButton); - mb->exec(); - } -*/ - -// printf("%d\n", write(fd, write_buffer, sizeof(write_buffer) ) ); - -// printf("%d\n", read(fd, read_buffer, BUFFERSIZE ) ); - -// QMessageBox *mbtest = new QMessageBox("lirc test", -// *new QString((const char *) read_buffer), -// QMessageBox::NoIcon, -// QMessageBox::Ok, -// QMessageBox::NoButton, -// QMessageBox::NoButton); -// mbtest->exec(); - - a.setMainWidget( &w ); - w.setIRSocket(fd); - w.showMaximized(); - return a.exec(); + QPEApplication a( argc, argv ); + MainView w; + + int fd; + // struct sockaddr_un addr; + // char read_buffer[BUFFERSIZE+1]; + // char write_buffer[] = "LIST\n"; + + // addr.sun_family=AF_UNIX; + // strcpy(addr.sun_path,"/dev/lircd"); + // fd = socket(AF_UNIX, SOCK_STREAM, 0); + + // printf("fd1: %d\n", fd); + /* + if(connect(fd,(struct sockaddr *) &addr, sizeof(addr) ) == -1) + { + QMessageBox *mb = new QMessageBox("error", + "couldnt connect to socket", + QMessageBox::NoIcon, + QMessageBox::Ok, + QMessageBox::NoButton, + QMessageBox::NoButton); + mb->exec(); + } + */ + + // printf("%d\n", write(fd, write_buffer, sizeof(write_buffer) ) ); + + // printf("%d\n", read(fd, read_buffer, BUFFERSIZE ) ); + + // QMessageBox *mbtest = new QMessageBox("lirc test", + // *new QString((const char *) read_buffer), + // QMessageBox::NoIcon, + // QMessageBox::Ok, + // QMessageBox::NoButton, + // QMessageBox::NoButton); + // mbtest->exec(); + + a.setMainWidget( &w ); + w.setIRSocket(fd); + QPEApplication::showWidget( &w ); + return a.exec(); } |