summaryrefslogtreecommitdiff
authorjosef <josef>2002-10-06 14:45:20 (UTC)
committer josef <josef>2002-10-06 14:45:20 (UTC)
commit24393565a48df6bb65516c25c124280724af9a75 (patch) (side-by-side diff)
tree368ae33e55b6e11d895b2f0988b16eb381fa840c
parentfb0027ea0649aa5bf4c3880dc84df459425c0642 (diff)
downloadopie-24393565a48df6bb65516c25c124280724af9a75.zip
opie-24393565a48df6bb65516c25c124280724af9a75.tar.gz
opie-24393565a48df6bb65516c25c124280724af9a75.tar.bz2
- more factorization
- use QDialog::accept() instead of applyButtonPressed() - prepare plugin-specific load/save of data
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-console/configdialog.cpp31
-rw-r--r--noncore/apps/opie-console/profileeditordialog.cpp92
-rw-r--r--noncore/apps/opie-console/profileeditordialog.h11
3 files changed, 65 insertions, 69 deletions
diff --git a/noncore/apps/opie-console/configdialog.cpp b/noncore/apps/opie-console/configdialog.cpp
index d09cec3..23e94b1 100644
--- a/noncore/apps/opie-console/configdialog.cpp
+++ b/noncore/apps/opie-console/configdialog.cpp
@@ -43,72 +43,65 @@ ConfigDialog::ConfigDialog( const Profile::ValueList& lis, QWidget* parent )
ConfigDialog::~ConfigDialog() {
}
Profile::ValueList ConfigDialog::list()const {
/* iterate over the list */
Profile::ValueList lst;
QListViewItemIterator it(lstView);
for ( ; it.current(); ++it ) {
ConfigListItem* item = (ConfigListItem*)it.current();
lst.append( item->profile() );
}
return lst;
}
/* our slots */
void ConfigDialog::slotRemove() {
ConfigListItem* item = (ConfigListItem*)lstView->currentItem();
if (!item )
return;
lstView->takeItem( item );
delete item;
}
void ConfigDialog::slotEdit() {
- ProfileEditorDialog dlg(new MetaFactory());
+ Profile p;
+
+ // Load profile
+ // p = currentItem()->profile();
+
+ ProfileEditorDialog dlg(new MetaFactory(), p);
dlg.setCaption("Edit Connection Profile");
dlg.showMaximized();
int ret = dlg.exec();
if(ret == QDialog::Accepted)
{
// if(listView->current()) delete lstView->current(); ...
// use dlg.terminal()!
new ConfigListItem(lstView, Profile(dlg.prof_name(), dlg.prof_type(), Profile::White, Profile::Black, Profile::VT102));
}
}
void ConfigDialog::slotAdd() {
- qWarning("ConfigDialog::slotAdd");
-
ProfileEditorDialog dlg(new MetaFactory());
dlg.setCaption("New Connection");
dlg.showMaximized();
int ret = dlg.exec();
if(ret == QDialog::Accepted)
{
- // defaults
- int profile = Profile::VT102;
-
+ // TODO: Move into general profile save part
// assignments
- QString type = dlg.term_type();
- if(type == "VT102") profile = Profile::VT102;
-
- // new profile
- Profile p(dlg.prof_name(), dlg.prof_type(), Profile::White, Profile::Black, profile);
-
- // special settings
- p.writeEntry("Device", dlg.conn_device());
- p.writeEntry("Baud", dlg.conn_baud());
- p.writeEntry("Parity", dlg.conn_parity());
- p.writeEntry("DataBits", dlg.conn_databits());
- p.writeEntry("StopBits", dlg.conn_stopbits());
- p.writeEntry("Flow", dlg.conn_flow());
+ //QString type = dlg.term_type();
+ //if(type == "VT102") profile = Profile::VT102;
+
+ // get profile from editor
+ Profile p = dlg.profile();
new ConfigListItem(lstView, p);
}
}
diff --git a/noncore/apps/opie-console/profileeditordialog.cpp b/noncore/apps/opie-console/profileeditordialog.cpp
index 374844e..aee4051 100644
--- a/noncore/apps/opie-console/profileeditordialog.cpp
+++ b/noncore/apps/opie-console/profileeditordialog.cpp
@@ -44,60 +44,90 @@ static QWidget *factory_irda(QWidget *parent)
return device_frame;
}
static QWidget *factory_modem(QWidget *parent)
{
QFrame *device_frame = new QFrame(parent);
device_frame->setFrameStyle(QFrame::Panel | QFrame::Sunken);
QLabel *frame_device = new QLabel(QObject::tr("Device"), device_frame);
QLabel *frame_number = new QLabel(QObject::tr("Phone number"), device_frame);
QLineEdit *frame_device_line = new QLineEdit("/dev/ttyS0", device_frame);
QLineEdit *frame_number_line = new QLineEdit(device_frame);
QVBoxLayout *vbox_frame = new QVBoxLayout(device_frame, 2);
vbox_frame->add(frame_device);
vbox_frame->add(frame_device_line);
vbox_frame->add(frame_number);
vbox_frame->add(frame_number_line);
return device_frame;
}
+// Something like that must be called upon plugin_plugin->save()
+//void save_modem()
+//{
+// // special settings
+// p.writeEntry("Device", dlg.conn_device());
+// p.writeEntry("Baud", dlg.conn_baud());
+// p.writeEntry("Parity", dlg.conn_parity());
+// p.writeEntry("DataBits", dlg.conn_databits());
+// p.writeEntry("StopBits", dlg.conn_stopbits());
+// p.writeEntry("Flow", dlg.conn_flow());
+//}
+
ProfileEditorDialog::ProfileEditorDialog( MetaFactory* fact,
const Profile& prof )
: QTabDialog(0, 0, TRUE), m_fact( fact ), m_prof( prof )
{
-// initUI();
- /* now set the widgets */
+ initUI();
+ // Apply current profile
+ // plugin_plugin->load(profile);
+ // ... (reset profile name line edit etc.)
}
ProfileEditorDialog::ProfileEditorDialog( MetaFactory* fact )
: QTabDialog(0, 0, TRUE), m_fact( fact )
{
+ // Default profile
+ m_prof = Profile("serial", QString::null, Profile::Black, Profile::White, Profile::VT102);
+
+ initUI();
+
+ // Apply current profile
+ // plugin_plugin->load(profile);
+}
+
+Profile ProfileEditorDialog::profile() const
+{
+ return m_prof;
+}
+
+void ProfileEditorDialog::initUI()
+{
QWidget *tabterm, *tabconn, *tabprof;
tabprof = new QWidget(this);
tabterm = new QWidget(this);
tabconn = new QWidget(this);
// for the time being: fake factory
m_fact->addConfigWidgetFactory("serial", QObject::tr("Serial cable"), factory_serial);
m_fact->addConfigWidgetFactory("irda", QObject::tr("IrDA port"), factory_irda);
m_fact->addConfigWidgetFactory("modem", QObject::tr("Serial via modem"), factory_modem);
// profile tab
QLabel *name = new QLabel(QObject::tr("Profile name"), tabprof);
name_line = new QLineEdit(tabprof);
// connection tab, fixed part
QLabel *device = new QLabel(QObject::tr("Device"), tabconn);
device_box = new QComboBox(tabconn);
@@ -153,48 +183,50 @@ ProfileEditorDialog::ProfileEditorDialog( MetaFactory* fact )
QLabel *colour = new QLabel(QObject::tr("Colour scheme"), tabterm);
QLabel *size = new QLabel(QObject::tr("Font size"), tabterm);
QLabel *options = new QLabel(QObject::tr("Options"), tabterm);
QLabel *conversions = new QLabel(QObject::tr("Line-break conversions"), tabterm);
QComboBox *colour_box = new QComboBox(tabterm);
colour_box->insertItem(QObject::tr("black on white"));
colour_box->insertItem(QObject::tr("white on black"));
QButtonGroup *group_size = new QButtonGroup(tabterm);
group_size->hide();
QRadioButton *size_small = new QRadioButton(QObject::tr("small"), tabterm);
QRadioButton *size_medium = new QRadioButton(QObject::tr("medium"), tabterm);
QRadioButton *size_large = new QRadioButton(QObject::tr("large"), tabterm);
group_size->insert(size_small);
group_size->insert(size_medium);
group_size->insert(size_large);
QCheckBox *option_echo = new QCheckBox(QObject::tr("Local echo"), tabterm);
QCheckBox *option_wrap = new QCheckBox(QObject::tr("Line wrap"), tabterm);
QCheckBox *conv_inbound = new QCheckBox(QObject::tr("Inbound"), tabterm);
QCheckBox *conv_outbound = new QCheckBox(QObject::tr("Outbound"), tabterm);
+ size_small->setChecked(true);
+
// layouting
QVBoxLayout *vbox3 = new QVBoxLayout(tabprof, 2);
vbox3->add(name);
vbox3->add(name_line);
vbox3->addStretch(1);
QVBoxLayout *vbox = new QVBoxLayout(tabconn, 2);
vbox->add(device);
vbox->add(device_box);
vbox->add(plugin_base);
vbox->add(speed);
vbox->add(speed_box);
vbox->add(flow);
QHBoxLayout *hbox = new QHBoxLayout(vbox, 2);
hbox->add(flow_hw);
hbox->add(flow_sw);
//vbox->add(group_flow);
vbox->add(parity);
QHBoxLayout *hbox2 = new QHBoxLayout(vbox, 2);
hbox2->add(parity_odd);
hbox2->add(parity_even);
//vbox->add(group_parity);
@@ -204,122 +236,96 @@ ProfileEditorDialog::ProfileEditorDialog( MetaFactory* fact )
vbox2->add(size);
QHBoxLayout *hbox3 = new QHBoxLayout(vbox2, 2);
hbox3->add(size_small);
hbox3->add(size_medium);
hbox3->add(size_large);
//vbox2->add(group_size);
vbox2->add(colour);
vbox2->add(colour_box);
vbox2->add(conversions);
QHBoxLayout *hbox5 = new QHBoxLayout(vbox2, 2);
hbox5->add(conv_inbound);
hbox5->add(conv_outbound);
vbox2->add(options);
QHBoxLayout *hbox4 = new QHBoxLayout(vbox2, 2);
hbox4->add(option_wrap);
hbox4->add(option_echo);
addTab(tabprof, QObject::tr("Profile"));
addTab(tabconn, QObject::tr("Connection"));
addTab(tabterm, QObject::tr("Terminal"));
setOkButton(QObject::tr("OK"));
setCancelButton(QObject::tr("Cancel"));
- connect(this, SIGNAL(applyButtonPressed()), SLOT(slotOk()));
+ //connect(this, SIGNAL(applyButtonPressed()), SLOT(slotOk()));
connect(this, SIGNAL(defaultButtonPressed()), SLOT(slotOk()));
connect(this, SIGNAL(cancelButtonPressed()), SLOT(slotCancel()));
connect(device_box, SIGNAL(activated(int)), SLOT(slotDevice(int)));
}
ProfileEditorDialog::~ProfileEditorDialog() {
}
void ProfileEditorDialog::slotDevice(int id)
{
delete plugin_plugin;
plugin_plugin = m_fact->newConfigWidget(prof_type(), plugin_base);
plugin_layout->add(plugin_plugin);
+ // Reload profile associated to device, including e.g. conn_device()
+ // m_prof = plugin_plugin->profile()
+ // or, keeping the profile name: m_prof->reload(plugin_plugin->profile())
+
plugin_plugin->show();
+ // This would be: plugin_plugin->widget()->show();
}
-void ProfileEditorDialog::slotOk()
+void ProfileEditorDialog::accept()
{
if(prof_name().isEmpty())
{
QMessageBox::information(this,
QObject::tr("Invalid profile"),
QObject::tr("Please enter a profile name."));
return;
}
- accept();
+ // Save profile and plugin profile
+ //if(plugin_plugin) plugin_plugin->save();
+
+ QDialog::accept();
}
void ProfileEditorDialog::slotCancel()
{
reject();
}
QString ProfileEditorDialog::prof_name()
{
return name_line->text();
}
QString ProfileEditorDialog::prof_type()
{
- switch(device_box->currentItem())
- {
- case 0:
- return "serial";
- break;
- case 1:
- return "irda";
- break;
- case 2:
- return "modem";
- break;
- }
+ 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 QString::null;
}
QString ProfileEditorDialog::conn_device()
{
//return frame_device_line->text();
- return "serial";
-}
-
-int ProfileEditorDialog::conn_baud()
-{
- return speed_box->currentText().toInt();
-}
-
-int ProfileEditorDialog::conn_parity()
-{
- return 0;
-}
-
-int ProfileEditorDialog::conn_databits()
-{
- return 0;
-}
-
-int ProfileEditorDialog::conn_stopbits()
-{
- return 0;
-}
-
-int ProfileEditorDialog::conn_flow()
-{
- return 0;
+ return "/dev/ttyS0";
}
QString ProfileEditorDialog::term_type()
{
return terminal_box->currentText();
}
diff --git a/noncore/apps/opie-console/profileeditordialog.h b/noncore/apps/opie-console/profileeditordialog.h
index 00f3c99..8ebfba1 100644
--- a/noncore/apps/opie-console/profileeditordialog.h
+++ b/noncore/apps/opie-console/profileeditordialog.h
@@ -5,55 +5,52 @@
#include "profile.h"
class MetaFactory;
class EditBase;
class QTabWidget;
class QHBoxLayout;
class QLineEdit;
class QComboBox;
class QLabel;
class ProfileEditorDialog : public QTabDialog {
Q_OBJECT
public:
ProfileEditorDialog(MetaFactory* fact,
const Profile& prof );
ProfileEditorDialog(MetaFactory* fact );
~ProfileEditorDialog();
Profile profile()const;
QString prof_name();
QString prof_type();
QString conn_device();
- int conn_baud();
- int conn_parity();
- int conn_databits();
- int conn_stopbits();
- int conn_flow();
QString term_type();
public slots:
- void slotOk();
+ void accept();
+ //void slotOk();
void slotCancel();
void slotDevice(int id);
private:
- //void initUI();
+ void initUI();
+
MetaFactory* m_fact;
EditBase* m_base;
QTabWidget* m_tab;
QHBoxLayout* m_lay;
Profile m_prof;
//QLabel *frame_number;
QLineEdit *name_line;
//QLineEdit *frame_device_line, *frame_number_line;
QComboBox *terminal_box, *speed_box, *device_box;
QWidget *plugin_base, *plugin_plugin;
QHBoxLayout *plugin_layout;
};
#endif