author | paule <paule> | 2007-01-28 04:04:14 (UTC) |
---|---|---|
committer | paule <paule> | 2007-01-28 04:04:14 (UTC) |
commit | ec2309cb69365847762db542c41951629cd06cbe (patch) (side-by-side diff) | |
tree | 2f0101c1f0d6268207dbd15eb21f40c812a4fff5 /noncore/tools/remote/buttondialog.cpp | |
parent | 3cd37427b5c5f26f62cff583fbde914467ddafe3 (diff) | |
download | opie-ec2309cb69365847762db542c41951629cd06cbe.zip opie-ec2309cb69365847762db542c41951629cd06cbe.tar.gz opie-ec2309cb69365847762db542c41951629cd06cbe.tar.bz2 |
Refactored out all communication with LIRC into new LircHandler class
Diffstat (limited to 'noncore/tools/remote/buttondialog.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/tools/remote/buttondialog.cpp | 216 |
1 files changed, 9 insertions, 207 deletions
diff --git a/noncore/tools/remote/buttondialog.cpp b/noncore/tools/remote/buttondialog.cpp index 580f101..56738d1 100644 --- a/noncore/tools/remote/buttondialog.cpp +++ b/noncore/tools/remote/buttondialog.cpp @@ -34,4 +34,6 @@ ButtonDialog::ButtonDialog(QString buttonName, QWidget *parent, const char*name, layout->addLayout(hlayout3); layout->addSpacing(5); + + lh = new LircHandler(); remote = new QComboBox(false, this, "remote"); @@ -43,5 +45,5 @@ ButtonDialog::ButtonDialog(QString buttonName, QWidget *parent, const char*name, hlayout1->addSpacing(5); remote->insertItem("Remote "); - remote->insertStringList(getRemotes()); + remote->insertStringList(lh->getRemotes()); connect(remote, SIGNAL(activated(const QString&)), this, SLOT(remoteSelected(const QString&)) ); @@ -66,7 +68,12 @@ ButtonDialog::ButtonDialog(QString buttonName, QWidget *parent, const char*name, } +ButtonDialog::~ButtonDialog() +{ + delete lh; +} + void ButtonDialog::remoteSelected(const QString &string) { - button->insertStringList(getButtons(string.latin1()) ); + button->insertStringList(lh->getButtons(string.latin1()) ); list="SEND_ONCE"; list+=string; @@ -87,207 +94,2 @@ QString ButtonDialog::getLabel() return label->text(); } - -QStringList ButtonDialog::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("ButtonDialog::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("ButtonDialog::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("ButtonDialog::GetRemotes"); - return NULL; - } - - ::close(fd); - return list; -} - -QStringList ButtonDialog::getButtons(const char *remoteName) -{ - QString write_buffer = "LIST "; - const char *readbuffer; - int i, j, numlines; - QStringList list; - QString string; - - write_buffer += remoteName; - write_buffer += '\n'; - - 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("ButtonDialog::GetButtons"); - 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("ButtonDialog::GetButtons"); - return NULL; - } - - write(fd, write_buffer.latin1(), strlen(write_buffer) ); - - for(i=0; i<5; i++) - { - readbuffer = readPacket(); - } - - numlines = atoi(readbuffer); - - for(i=0; i<numlines; i++) - { - list+=readPacket(); - for(j=0; j<list[i].length(); j++) - { - if(list[i][j] == ' ') - break; - } - list[i].remove(0, j+1); - } - - if(strcasecmp(readPacket(), "END") != 0) - { - QMessageBox *mb = new QMessageBox("Error!", - "bad packet", - QMessageBox::NoIcon, - QMessageBox::Ok, - QMessageBox::NoButton, - QMessageBox::NoButton); - mb->exec(); - perror("ButtonDialog::GetButtons"); - 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 *ButtonDialog::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); -} |