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 @@ -28,26 +28,28 @@ ButtonDialog::ButtonDialog(QString buttonName, QWidget *parent, const char*name, layout->addSpacing(5); layout->addLayout(hlayout1); layout->addSpacing(5); layout->addLayout(hlayout2); layout->addSpacing(5); layout->addLayout(hlayout3); layout->addSpacing(5); + + lh = new LircHandler(); remote = new QComboBox(false, this, "remote"); QLabel *remoteLabel = new QLabel(remote, "Remote: ", this, "remoteLabel"); hlayout1->addSpacing(5); hlayout1->addWidget(remoteLabel); hlayout1->addSpacing(5); hlayout1->addWidget(remote); hlayout1->addSpacing(5); remote->insertItem("Remote "); - remote->insertStringList(getRemotes()); + remote->insertStringList(lh->getRemotes()); connect(remote, SIGNAL(activated(const QString&)), this, SLOT(remoteSelected(const QString&)) ); button = new QComboBox(false, this, "button"); QLabel *buttonLabel = new QLabel(remote, "Button: ", this, "buttonLabel"); hlayout2->addSpacing(5); hlayout2->addWidget(buttonLabel); hlayout2->addSpacing(5); hlayout2->addWidget(button); @@ -60,19 +62,24 @@ ButtonDialog::ButtonDialog(QString buttonName, QWidget *parent, const char*name, QLabel *labelLabel = new QLabel(label, "Label: ", this, "labelLabel"); hlayout3->addSpacing(5); hlayout3->addWidget(labelLabel); hlayout3->addSpacing(5); hlayout3->addWidget(label); hlayout3->addSpacing(5); } +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; } void ButtonDialog::buttonSelected(const QString &string) { list+=string; } @@ -81,213 +88,8 @@ QStringList ButtonDialog::getList() { return list; } 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); -} |