package RemoteControl; use strict; use warnings; use Qt4; use Ui_RemoteControlClass; use Qt4::isa qw( Qt4::MainWindow ); use Qt4::slots on_launchButton_clicked => [], on_actionQuit_triggered => [], on_indexButton_clicked => [], on_identifierButton_clicked => [], on_urlButton_clicked => [], on_syncContentsButton_clicked => [], on_contentsCheckBox_toggled => ['bool'], on_indexCheckBox_toggled => ['bool'], on_bookmarksCheckBox_toggled => ['bool'], helpViewerClosed => [], sendCommand => ['const QString &']; sub NEW { my ($class, $parent, $flags) = @_; $class->SUPER::NEW($parent, $flags); this->{ui} = Ui_RemoteControlClass->setupUi(this); this->connect(this->{ui}->indexLineEdit, SIGNAL 'returnPressed()', this, SLOT 'on_indexButton_clicked()'); this->connect(this->{ui}->identifierLineEdit, SIGNAL 'returnPressed()', this, SLOT 'on_identifierButton_clicked()'); this->connect(this->{ui}->urlLineEdit, SIGNAL 'returnPressed()', this, SLOT 'on_urlButton_clicked()'); my $rc = 'qthelp://com.trolltech.qt.' . 451 . '/qdoc/index.html'; #<< (QT_VERSION >> 16) << ((QT_VERSION >> 8) & 0xFF) #<< (QT_VERSION & 0xFF) this->{ui}->startUrlLineEdit->setText($rc); this->{process} = Qt4::Process(this); this->connect(this->{process}, SIGNAL 'finished(int, QProcess::ExitStatus)', this, SLOT 'helpViewerClosed()'); } sub ON_DESTROY { if (this->{process}->state() == Qt4::Process::Running()) { this->{process}->terminate(); this->{process}->waitForFinished(3000); } } sub on_actionQuit_triggered() { this->close(); } sub on_launchButton_clicked { if (this->{process}->state() == Qt4::Process::Running()) { return; } #my $app = Qt4::LibraryInfo::location(Qt4::LibraryInfo::BinariesPath()) #my $app = '/opt/qt-4.6.0/bin' #. chr Qt4::Dir::separator()->toLatin1(); #$app .= 'assistant'; my $app = '/usr/bin/perl'; this->{ui}->contentsCheckBox->setChecked(1); this->{ui}->indexCheckBox->setChecked(1); this->{ui}->bookmarksCheckBox->setChecked(1); my @args; push @args, '-d', './echoer'; this->{process}->start($app, \@args); if (!this->{process}->waitForStarted()) { Qt4::MessageBox::critical(this, this->tr('Remote Control'), sprintf this->tr('Could not start Qt Assistant from %s.'), $app); return; } if (this->{ui}->startUrlLineEdit->text()) { this->sendCommand('SetSource ' . this->{ui}->startUrlLineEdit->text()); } this->{ui}->launchButton->setEnabled(0); this->{ui}->startUrlLineEdit->setEnabled(0); this->{ui}->actionGroupBox->setEnabled(1); } sub sendCommand { my ($cmd) = @_; if (this->{process}->state() != Qt4::Process::Running()) { return; } this->{process}->write($cmd . "\0"); print this->{process}->readAllStandardOutput()->data() . "\n"; } sub on_indexButton_clicked { this->sendCommand('ActivateKeyword ' . this->{ui}->indexLineEdit->text()); } sub on_identifierButton_clicked { this->sendCommand('ActivateIdentifier ' . this->{ui}->identifierLineEdit->text()); } sub on_urlButton_clicked { this->sendCommand('SetSource ' . this->{ui}->urlLineEdit->text()); } sub on_syncContentsButton_clicked { this->sendCommand('SyncContents'); } sub on_contentsCheckBox_toggled { my ($checked) = @_; this->sendCommand($checked ? 'Show Contents' : 'Hide Contents'); } sub on_indexCheckBox_toggled { my ($checked) = @_; this->sendCommand($checked ? 'Show Index' : 'Hide Index'); } sub on_bookmarksCheckBox_toggled { my ($checked) = @_; this->sendCommand($checked ? 'Show Bookmarks' : 'Hide Bookmarks'); } sub helpViewerClosed { this->{ui}->launchButton->setEnabled(1); this->{ui}->startUrlLineEdit->setEnabled(1); this->{ui}->actionGroupBox->setEnabled(0); } 1;