summaryrefslogtreecommitdiff
authorzecke <zecke>2002-10-21 21:43:43 (UTC)
committer zecke <zecke>2002-10-21 21:43:43 (UTC)
commit21d29dbf8a9c1a12c7c23f96b80307e87ffaa50a (patch) (side-by-side diff)
tree98586789ecce5eea1f1d3eb1e5a2184412f90a06
parente2f94235dae5ec84a5e888e4114ce0bdd91db7e7 (diff)
downloadopie-21d29dbf8a9c1a12c7c23f96b80307e87ffaa50a.zip
opie-21d29dbf8a9c1a12c7c23f96b80307e87ffaa50a.tar.gz
opie-21d29dbf8a9c1a12c7c23f96b80307e87ffaa50a.tar.bz2
add a quirk mode into main. if you -DFSCKED_DISTRIBUTION
opie-console will take care of some magic... Add a No Configuration Widget instead of a big fat gray thing above my beloved OTabWidget Fix some compiler warning
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-console/file_layer.h6
-rw-r--r--noncore/apps/opie-console/main.cpp102
-rw-r--r--noncore/apps/opie-console/profiledialogwidget.cpp21
-rw-r--r--noncore/apps/opie-console/profiledialogwidget.h9
-rw-r--r--noncore/apps/opie-console/profileeditordialog.cpp29
-rw-r--r--noncore/apps/opie-console/serialconfigwidget.cpp4
6 files changed, 147 insertions, 24 deletions
diff --git a/noncore/apps/opie-console/file_layer.h b/noncore/apps/opie-console/file_layer.h
index edb30e1..caa7478 100644
--- a/noncore/apps/opie-console/file_layer.h
+++ b/noncore/apps/opie-console/file_layer.h
@@ -1,94 +1,94 @@
#ifndef OPIE_FILE_LAYER_H
#define OPIE_FILE_LAYER_H
#include <qmap.h>
#include "io_layer.h"
class QFile;
/**
* this is the layer for sending files
*/
class FileTransferLayer : public QObject {
Q_OBJECT
public:
enum Errors{
NotSupported,
StartError,
NoError,
Unknown,
Undefined,
Incomplete
};
enum Features {
Append = 0,
Twostop = 1,
Escape = 2,
Rename = 4,
FullPath = 8,
SendIfNewer = 16,
SendIfLonger = 32,
Resume = 64
};
enum Mode {
Ascii = 0,
Binary
};
enum BlockSize {
Block_1k,
Block_4k,
Block_8k
};
/**
*the io layer to be used
*/
FileTransferLayer( IOLayer* );
virtual ~FileTransferLayer();
public slots:
- virtual void sendFile( const QString& file,
- Mode mode, BlockSize blk,
- Features feat ) {};
+ virtual void sendFile( const QString&,
+ Mode, BlockSize,
+ Features ) {};
/**
* send a file over the layer
*/
virtual void sendFile( const QString& file ) = 0;
virtual void sendFile( const QFile& ) = 0;
virtual void cancel() = 0;
signals:
/**
* sent the file
*/
void sent();
/**
* an error occured
*/
void error( int, const QString& );
/*
* @param file The file to send
* @param progress the progress made from 0-100
* @param speed Speed in bps
* @param hours The hours it take to finish
* @param minutes The minutes it takes to finish
* @param send The seconds...
*
*/
void progress( const QString& file, int progress, int speed, int hours, int minutes, int seconds );
protected:
IOLayer* layer();
private:
IOLayer* m_layer;
};
#endif
diff --git a/noncore/apps/opie-console/main.cpp b/noncore/apps/opie-console/main.cpp
index 350bb3e..78a91a2 100644
--- a/noncore/apps/opie-console/main.cpp
+++ b/noncore/apps/opie-console/main.cpp
@@ -1,13 +1,113 @@
+#include <sys/types.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <signal.h>
+
+#include <qfile.h>
+
#include <qpe/qpeapplication.h>
#include "mainwindow.h"
+//#define FSCKED_DISTRIBUTION 1
+#ifdef FSCKED_DISTRIBUTION
+/*
+ * The Zaurus rom
+ */
+class FixIt {
+public:
+ FixIt();
+ ~FixIt();
+ void fixIt();
+ /* no real interested in implementing it */
+ void breakIt() {
+
+ };
+ char* m_file;
+};
+
+FixIt::FixIt() {
+ /* the new inittab */
+ m_file = "#\n# /etc/inittab
+#
+
+# 0 - halt (Do NOT set initdefault to this)
+# 1 - Single user mode
+# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
+# 3 - Full multiuser mode
+# 4 - JavaVM(Intent) developer mode
+# 5 - JavaVM(Intent)
+# 6 - reboot (Do NOT set initdefault to this)
+#
+id:5:initdefault:
+
+# Specify things to do when starting
+si::sysinit:/etc/rc.d/rc.sysinit
+
+l0:0:wait:/root/etc/rc.d/rc 0
+l1:1:wait:/etc/rc.d/rc 1
+l2:2:wait:/etc/rc.d/rc 2
+l3:3:wait:/etc/rc.d/rc 3
+l4:4:wait:/etc/rc.d/rc 4
+l5:5:wait:/etc/rc.d/rc 5
+l6:6:wait:/root/etc/rc.d/rc 6
+
+# Specify things to do before rebooting
+um::ctrlaltdel:/bin/umount -a -r > /dev/null 2>&1
+sw::ctrlaltdel:/sbin/swapoff -a > /dev/null 2>&1
+
+# Specify program to run on ttyS0
+s0:24:respawn:/sbin/getty 9600 ttyS0
+#pd:5:respawn:/etc/sync/serialctl
+
+# Specify program to run on tty1
+1:2:respawn:/sbin/getty 9600 tty1
+ln:345:respawn:survive -l 6 /sbin/launch
+#qt:5:respawn:/sbin/qt
+
+# collie sp.
+sy::respawn:/sbin/shsync\n";
+
+
+}
+FixIt::~FixIt() {
+}
+/*
+ * the retail Zaurus is broken in many ways
+ * one is that pppd is listening on our port...
+ * we've to stop it from that and then do kill(SIGHUP,1);
+ */
+void FixIt::fixIt() {
+ ::rename("/etc/inittab", QPEApplication::qpeDir() + "/etc/inittab" );
+ QFile file( "/etc/inittab" );
+ if ( file.open(IO_WriteOnly | IO_Raw ) ) {
+ file.writeBlock(m_file,strlen(m_file) );
+ }
+ file.close();
+ ::kill( SIGHUP, 1 );
+}
+#endif
+
+
int main(int argc, char **argv) {
QPEApplication app( argc, argv );
+#ifdef FSCKED_DISTRIBUTION
+ qWarning("fscked");
+ FixIt it;
+ it.fixIt();
+#endif
+
MainWindow mw;
mw.setCaption(QObject::tr("Opie console") );
app.showMainWidget( &mw );
- return app.exec();
+ int ap = app.exec();
+
+#ifdef FSCKED_DISTRIBUTION
+ /* should add a signal handler too */
+ it.breakIt();
+#endif
+ return ap;
}
diff --git a/noncore/apps/opie-console/profiledialogwidget.cpp b/noncore/apps/opie-console/profiledialogwidget.cpp
index caad998..c356535 100644
--- a/noncore/apps/opie-console/profiledialogwidget.cpp
+++ b/noncore/apps/opie-console/profiledialogwidget.cpp
@@ -1,43 +1,62 @@
+#include <qlayout.h>
+#include <qlabel.h>
+
#include "profiledialogwidget.h"
ProfileDialogWidget::ProfileDialogWidget( const QString&, QWidget* parent,
const char* name )
: QWidget( parent, name ) {
}
ProfileDialogWidget::~ProfileDialogWidget() {
}
ProfileDialogTerminalWidget::ProfileDialogTerminalWidget( const QString& na,
QWidget* parent,
const char* name )
: ProfileDialogWidget( na, parent, name )
{
}
ProfileDialogTerminalWidget::~ProfileDialogTerminalWidget() {
}
ProfileDialogWidget::Type ProfileDialogTerminalWidget::type()const {
return Terminal;
}
ProfileDialogConnectionWidget::ProfileDialogConnectionWidget( const QString& na,
QWidget* parent,
const char* name )
: ProfileDialogWidget(na, parent, name )
{
}
ProfileDialogConnectionWidget::~ProfileDialogConnectionWidget() {
}
ProfileDialogWidget::Type ProfileDialogConnectionWidget::type()const {
return Connection;
}
ProfileDialogKeyWidget::ProfileDialogKeyWidget( const QString &na,
QWidget *parent,
const char *name)
- : ProfileDialogWidget(na, parent, name )
+ : ProfileDialogWidget(na, parent, name )
{
}
ProfileDialogKeyWidget::~ProfileDialogKeyWidget() {
}
ProfileDialogWidget::Type ProfileDialogKeyWidget::type() const{
return Keyboard;
}
+
+NoOptions::NoOptions( const QString& name, QWidget* parent, const char* na )
+ : ProfileDialogWidget( name, parent, na ) {
+ QHBoxLayout* lay = new QHBoxLayout(this);
+ QLabel* lbl = new QLabel( this );
+ lbl->setText( tr("This Plugin does not support any configurations") );
+ lbl->setTextFormat( RichText );
+
+ lay->addWidget( lbl );
+}
+void NoOptions::load( const Profile& ) {
+
+}
+void NoOptions::save( Profile& ) {
+
+}
diff --git a/noncore/apps/opie-console/profiledialogwidget.h b/noncore/apps/opie-console/profiledialogwidget.h
index 9d2d5ec..68f2162 100644
--- a/noncore/apps/opie-console/profiledialogwidget.h
+++ b/noncore/apps/opie-console/profiledialogwidget.h
@@ -1,59 +1,68 @@
#ifndef OPIE_PROFILE_DIALOG_WIDGET_H
#define OPIE_PROFILE_DIALOG_WIDGET_H
#include <qwidget.h>
#include "profile.h"
class ProfileDialogWidget : public QWidget {
Q_OBJECT
public:
enum Type {
Connection,
Terminal,
Keyboard
};
ProfileDialogWidget( const QString& name, QWidget* parent, const char* name = 0l);
~ProfileDialogWidget();
/*
* load data from a Profile into
* the DialogWidget
*/
virtual void load( const Profile& ) = 0;
/*
* save data into a profile
* from the DialogWidget
*/
virtual void save( Profile& ) = 0;
virtual Type type()const = 0;
};
class ProfileDialogTerminalWidget : public ProfileDialogWidget {
Q_OBJECT
public:
ProfileDialogTerminalWidget( const QString& name, QWidget* widget,
const char* name =0l);
~ProfileDialogTerminalWidget();
Type type()const;
};
class ProfileDialogConnectionWidget : public ProfileDialogWidget {
Q_OBJECT
public:
ProfileDialogConnectionWidget( const QString& name, QWidget* parent,
const char* name =0l);
~ProfileDialogConnectionWidget();
Type type() const;
};
class ProfileDialogKeyWidget : public ProfileDialogWidget {
Q_OBJECT
public:
ProfileDialogKeyWidget( const QString &name, QWidget* parent,
const char *name =0l);
~ProfileDialogKeyWidget();
Type type() const;
};
+class NoOptions : public ProfileDialogWidget {
+ Q_OBJECT
+ public:
+ NoOptions( const QString& name, QWidget* parent, const char* na );
+ ~NoOptions() {}
+ void load( const Profile& );
+ void save( Profile& );
+ Type type()const{ return Connection; };
+};
#endif
diff --git a/noncore/apps/opie-console/profileeditordialog.cpp b/noncore/apps/opie-console/profileeditordialog.cpp
index 2dfc0fd..413e80b 100644
--- a/noncore/apps/opie-console/profileeditordialog.cpp
+++ b/noncore/apps/opie-console/profileeditordialog.cpp
@@ -1,222 +1,215 @@
#include <qlayout.h>
#include <qlineedit.h>
#include <qlabel.h>
#include <qmessagebox.h>
#include <qstringlist.h>
#include <qcombobox.h>
#include <qcheckbox.h>
//#include "profileeditorplugins.h"
#include "metafactory.h"
#include "profileeditordialog.h"
namespace {
void setCurrent( const QString& str, QComboBox* bo ) {
- for (uint i = 0; i < bo->count(); i++ ) {
+ for (int i = 0; i < bo->count(); i++ ) {
if ( bo->text(i) == str ) {
bo->setCurrentItem( i );
}
}
- }
-
-
+ };
}
ProfileEditorDialog::ProfileEditorDialog( MetaFactory* fact,
const Profile& prof )
: QDialog(0, 0, TRUE), m_fact( fact ), m_prof( prof )
{
initUI();
// Apply current profile
// plugin_plugin->load(profile);
// ... (reset profile name line edit etc.)
}
ProfileEditorDialog::ProfileEditorDialog( MetaFactory* fact )
: QDialog(0, 0, TRUE), m_fact( fact )
{
// Default profile
m_prof = Profile("New Profile", "serial", "default", Profile::Black, Profile::White, Profile::VT102);
initUI();
// Apply current profile
// plugin_plugin->load(profile);
}
Profile ProfileEditorDialog::profile() const
{
- return m_prof;
+ return m_prof;
}
void ProfileEditorDialog::initUI()
{
m_con = m_term = m_key = 0l;
QVBoxLayout *mainLayout = new QVBoxLayout( this );
tabWidget = new OTabWidget( this );
tabWidget->setTabStyle(OTabWidget::TextTab);
mainLayout->add(tabWidget);
/* base tabs */
tabprof = new QWidget(this);
m_tabTerm = new QWidget(this);
m_tabCon = new QWidget(this);
m_tabKey = new QWidget(this);
/* base layout for tabs */
m_layCon = new QHBoxLayout( m_tabCon , 2 );
m_layTerm = new QHBoxLayout( m_tabTerm, 2 );
m_layKey = new QHBoxLayout( m_tabKey, 2 );
// profile tab
QLabel *name = new QLabel(QObject::tr("Profile name"), tabprof);
m_name = new QLineEdit(tabprof);
QLabel *con = new QLabel(tr("Connection"), tabprof );
QLabel *term = new QLabel(tr("Terminal"), tabprof );
m_conCmb = new QComboBox( tabprof );
m_termCmb = new QComboBox( tabprof );
m_autoConnect = new QCheckBox(tr("Auto connect after load"), tabprof);
// layouting
QVBoxLayout *vbox3 = new QVBoxLayout(tabprof, 2);
vbox3->add(name);
vbox3->add(m_name);
vbox3->add(con );
vbox3->add(m_conCmb );
vbox3->add(term );
vbox3->add(m_termCmb );
vbox3->add(m_autoConnect);
vbox3->addStretch(1);
m_showconntab = 0;
tabWidget->addTab(tabprof, "", QObject::tr("Profile"));
//tabWidget->addTab(m_tabCon, "", QObject::tr("Connection"));
tabWidget->addTab(m_tabTerm, "", QObject::tr("Terminal"));
tabWidget->addTab(m_tabKey, "", QObject::tr("Special Keys"));
tabWidget->setCurrentTab( tabprof );
// fill the comboboxes
QStringList list = m_fact->connectionWidgets();
QStringList::Iterator it;
for (it =list.begin(); it != list.end(); ++it ) {
m_conCmb->insertItem( (*it) );
}
list = m_fact->terminalWidgets();
for (it =list.begin(); it != list.end(); ++it ) {
m_termCmb->insertItem( (*it) );
}
// load profile values
m_name->setText(m_prof.name());
slotConActivated( m_fact->external(m_prof.ioLayerName() ) );
slotTermActivated( m_fact->external(m_prof.terminalName() ) );
slotKeyActivated( "Default Keyboard" );
setCurrent( m_fact->external(m_prof.ioLayerName() ), m_conCmb );
setCurrent( m_fact->external(m_prof.terminalName() ), m_termCmb );
m_autoConnect->setChecked(m_prof.autoConnect());
// signal and slots
connect(m_conCmb, SIGNAL(activated(const QString& ) ),
this, SLOT(slotConActivated(const QString&) ) );
connect(m_termCmb, SIGNAL(activated(const QString& ) ),
this, SLOT(slotTermActivated(const QString& ) ) );
}
ProfileEditorDialog::~ProfileEditorDialog() {
}
void ProfileEditorDialog::accept()
{
if(profName().isEmpty())
{
QMessageBox::information(this,
QObject::tr("Invalid profile"),
QObject::tr("Please enter a profile name."));
return;
}
// Save profile and plugin profile
//if(plugin_plugin) plugin_plugin->save();
// Save general values
m_prof.setName(profName());
m_prof.setIOLayer( m_fact->internal(m_conCmb ->currentText() ) );
m_prof.setTerminalName( m_fact->internal(m_termCmb->currentText() ) );
m_prof.setAutoConnect( m_autoConnect->isChecked() );
if (m_con )
m_con->save( m_prof );
if (m_term )
m_term->save( m_prof );
if (m_key)
m_key->save( m_prof );
QDialog::accept();
}
QString ProfileEditorDialog::profName()const
{
return m_name->text();
}
QCString ProfileEditorDialog::profType()const
{
/*QStringList w = m_fact->configWidgets();
for(QStringList::Iterator it = w.begin(); it != w.end(); it++)
if(device_box->currentText() == m_fact->name((*it))) return (*it);
*/
return QCString();
}
/*
* we need to switch the widget
*/
void ProfileEditorDialog::slotConActivated( const QString& str ) {
delete m_con;
m_con = m_fact->newConnectionPlugin( str, m_tabCon );
- if ( m_con ) {
- m_con->load( m_prof );
- m_layCon->addWidget( m_con );
-
- if(!m_showconntab)
- {
- tabWidget->addTab( m_tabCon, "", QObject::tr("Connection") );
- tabWidget->setCurrentTab( tabprof );
- m_showconntab = 1;
- }
- } else {
- tabWidget->removePage( m_tabCon );
- m_showconntab = 0;
+ if ( !m_con ) {
+ m_con = new NoOptions( str, m_tabCon, "name");
}
+ m_con->load( m_prof );
+ m_layCon->addWidget( m_con );
+
+ tabWidget->addTab( m_tabCon, "", QObject::tr("Connection") );
+ tabWidget->setCurrentTab( tabprof );
+
}
/*
* we need to switch the widget
*/
void ProfileEditorDialog::slotTermActivated( const QString& str ) {
delete m_term;
m_term = m_fact->newTerminalPlugin( str, m_tabTerm );
if (m_term) {
m_term->load(m_prof );
m_layTerm->addWidget( m_term );
}
}
void ProfileEditorDialog::slotKeyActivated(const QString &str) {
delete m_key;
m_key = m_fact->newKeyboardPlugin( str, m_tabKey );
if (m_key) {
m_key->load(m_prof);
m_layKey->addWidget(m_key);
}
}
diff --git a/noncore/apps/opie-console/serialconfigwidget.cpp b/noncore/apps/opie-console/serialconfigwidget.cpp
index 1e97a24..bd0312a 100644
--- a/noncore/apps/opie-console/serialconfigwidget.cpp
+++ b/noncore/apps/opie-console/serialconfigwidget.cpp
@@ -1,147 +1,149 @@
#include <qlabel.h>
#include <qlayout.h>
#include <qcombobox.h>
#include "iolayerbase.h"
#include "serialconfigwidget.h"
namespace {
void setCurrent( const QString& str, QComboBox* bo ) {
uint b = bo->count();
for (uint i = 0; i < bo->count(); i++ ) {
if ( bo->text(i) == str ) {
bo->setCurrentItem( i );
return;
}
}
bo->insertItem( str );
bo->setCurrentItem( b );
}
}
SerialConfigWidget::SerialConfigWidget( const QString& name,
QWidget* parent,
const char* na )
: ProfileDialogConnectionWidget( name, parent, na ) {
m_lay = new QVBoxLayout(this );
m_device = new QLabel(tr("Device"), this );
m_deviceCmb = new QComboBox(this );
m_deviceCmb->setEditable( TRUE );
m_base = new IOLayerBase(this, "base");
m_lay->addWidget( m_device );
m_lay->addWidget( m_deviceCmb );
m_lay->addWidget( m_base );
m_deviceCmb->insertItem( "/dev/ttyS0" );
m_deviceCmb->insertItem( "/dev/ttyS1" );
m_deviceCmb->insertItem( "/dev/ttySA0");
m_deviceCmb->insertItem( "/dev/ttySA1");
}
SerialConfigWidget::~SerialConfigWidget() {
}
void SerialConfigWidget::load( const Profile& prof ) {
int rad_flow = prof.readNumEntry("Flow");
int rad_parity = prof.readNumEntry("Parity");
int speed = prof.readNumEntry("Speed");
if (rad_flow == 1) {
m_base->setFlow( IOLayerBase::Hardware );
} else if (rad_flow == 2) {
m_base->setFlow( IOLayerBase::Software );
} else {
m_base->setFlow( IOLayerBase::None );
}
if (rad_parity == 1) {
m_base->setParity( IOLayerBase::Even );
} else if ( rad_parity == 2 ) {
m_base->setParity( IOLayerBase::Odd );
} else {
m_base->setParity( IOLayerBase::NonePar );
}
switch( speed ) {
case 115200:
m_base->setSpeed(IOLayerBase::Baud_115200 );
break;
case 57600:
m_base->setSpeed( IOLayerBase::Baud_57600 );
break;
case 38400:
m_base->setSpeed(IOLayerBase::Baud_38400 );
break;
case 19200:
m_base->setSpeed( IOLayerBase::Baud_19200 );
break;
case 9600:
default:
m_base->setSpeed(IOLayerBase::Baud_9600 );
break;
}
if ( prof.readEntry("Device").isEmpty() ) return;
setCurrent( prof.readEntry("Device"), m_deviceCmb );
}
/*
* save speed,
* flow,
* parity
*/
void SerialConfigWidget::save( Profile& prof ) {
- int flow, parity, speed;
+ int flow, parity, speed ;
+ flow = parity = speed = 0;
prof.writeEntry("Device", m_deviceCmb->currentText() );
switch( m_base->flow() ) {
case IOLayerBase::None:
flow = 0;
break;
case IOLayerBase::Software:
flow = 2;
break;
case IOLayerBase::Hardware:
flow = 1;
break;
}
switch( m_base->parity() ) {
case IOLayerBase::Odd:
parity = 2;
break;
case IOLayerBase::Even:
parity = 1;
break;
case IOLayerBase::NonePar:
parity = 0;
break;
}
switch( m_base->speed() ) {
case IOLayerBase::Baud_115200:
speed = 115200;
break;
case IOLayerBase::Baud_57600:
speed = 57600;
break;
case IOLayerBase::Baud_38400:
speed = 38400;
break;
case IOLayerBase::Baud_19200:
speed = 19200;
break;
+ default:
case IOLayerBase::Baud_9600:
speed = 9600;
break;
}
prof.writeEntry("Flow", flow);
prof.writeEntry("Parity", parity);
prof.writeEntry("Speed", speed);
}