Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

cfgdlg.cpp

Go to the documentation of this file.
00001 
00002 #include <qdir.h>
00003 #include <qregexp.h>
00004 #include <qpe/qpeapplication.h>
00005 #include <qpe/qcopenvelope_qws.h>
00006 #include <unistd.h>
00007 #include "cfgdlg.h"
00008 
00009 CfgDlg::CfgDlg(QWidget* parent, CfgFile* cf, QApplication* app, bool mod):
00010     QDialog(parent, "CfgDlg", mod), cfile(cf), application(app) {
00011 
00012     setCaption(tr("keyz configurator"));
00013 
00014     static QRegExp r("^common.*\\.xml$");
00015     static QRegExp r2("^zkb\\.xml$");
00016     QGridLayout* gl = new QGridLayout(this, 7, 5, 5, 5);
00017 
00018     QLabel* flabel = new QLabel("Available Keymaps", this);
00019     files = new QListBox(this);
00020     QPushButton* addButton = new QPushButton(">>", this); //add->setText("Add");
00021     connect(addButton, SIGNAL(clicked()), this, SLOT(add()));
00022     QLabel* klabel = new QLabel("Selected Keymaps", this);
00023     keymaps = new QListBox(this);
00024     connect(keymaps, SIGNAL(highlighted(const QString&)), this, SLOT(keymapHighlighted(const QString&)));
00025     QPushButton* delButton = new QPushButton("<<", this); //del->setText("Delete");
00026     connect(delButton, SIGNAL(clicked()), this, SLOT(del()));
00027     QPushButton* slabelButton = new QPushButton("Set Label", this); //apply->setText("Apply");
00028     connect(slabelButton, SIGNAL(clicked()), this, SLOT(setLabel()));
00029     QLabel* l = new QLabel("Label", this);
00030     label = new QLineEdit(this);
00031     QLabel* adlabel = new QLabel("Auto Repeat Delay (ms)", this);
00032     QLabel* aplabel = new QLabel("Auto Repeat Period (ms)", this);
00033     ad = new QSpinBox(50, 5000, 5, this);
00034     ap = new QSpinBox(0, 5000, 5, this);
00035 
00036 //  QLabel* adms = new QLabel("ms", this);
00037 //  QLabel* apms = new QLabel("ms", this);
00038 
00039 //  QCheckBox* enable = new QCheckBox("Enable", t);
00040 
00041     gl->setColStretch(0, 1);
00042     gl->setColStretch(1, 1);
00043     gl->setColStretch(3, 1);
00044     gl->setColStretch(4, 1);
00045     gl->setRowStretch(3, 1);
00046     gl->addMultiCellWidget(flabel, 0, 0, 0, 1);
00047     gl->addMultiCellWidget(klabel, 0, 0, 3, 4);
00048     gl->addMultiCellWidget(files, 1, 3, 0, 1);
00049     gl->addMultiCellWidget(keymaps, 1, 3, 3, 4);
00050     gl->addWidget(addButton, 1, 2);
00051     gl->addWidget(delButton, 2, 2);
00052 
00053     gl->addWidget(l, 4, 0);
00054     gl->addWidget(label, 4, 1);
00055     gl->addMultiCellWidget(slabelButton, 4, 4, 3, 4);
00056 
00057     gl->addMultiCellWidget(adlabel, 5, 5, 0, 2);
00058     gl->addMultiCellWidget(ad, 5, 5, 3, 4);
00059 //  gl->addWidget(adms, 5, 3);
00060 
00061     gl->addMultiCellWidget(aplabel, 6, 6, 0, 2);
00062     gl->addMultiCellWidget(ap, 6, 6, 3, 4);
00063 
00064 //  gl->addWidget(apms, 6, 3);
00065 
00066     QList<CfgEntry>& e = cfile->getEntries();
00067 
00068     for(uint i = 0; i < e.count(); i++) {
00069         CfgEntry* entry = e.at(i);
00070         keymaps->insertItem(entry->getFile());
00071         m.insert(entry->getFile(), entry->getLabel());
00072     }
00073 
00074     QDir dir(QPEApplication::qpeDir()+"share/zkb", "*.xml");
00075     QStringList flist = dir.entryList();
00076     QStringList::Iterator sit;
00077     for(sit = flist.begin(); sit != flist.end(); ++sit) {
00078         if (r.match(*sit)==-1 && r2.match(*sit)==-1&& m.find(*sit) == m.end()) {
00079             files->insertItem(*sit);
00080         }
00081     }
00082 
00083     ad->setValue(cfile->getAutorepeatDelay());
00084     ap->setValue(cfile->getAutorepeatPeriod());
00085 
00086 //  gl->addMultiCellWidget(enable, 7, 7, 0, 4);
00087 }
00088 
00089 CfgDlg::~CfgDlg() {
00090 }
00091 
00092 void CfgDlg::add() {
00093     if (!files->currentText().isEmpty()) {
00094         QString t = files->currentText();
00095         files->removeItem(files->currentItem());
00096         keymaps->insertItem(t);
00097         cfile->replaceEntry(t, "");
00098         m.replace(t, "");
00099     }
00100 }
00101 
00102 void CfgDlg::del() {
00103     if (!keymaps->currentText().isEmpty()) {
00104         QString t = keymaps->currentText();
00105         keymaps->removeItem(keymaps->currentItem());
00106         cfile->deleteEntry(t);
00107         files->insertItem(t);
00108         m.remove(files->currentText());
00109     }
00110 }
00111 
00112 void CfgDlg::setLabel() {
00113     if (!keymaps->currentText().isEmpty()) {
00114         cfile->replaceEntry(keymaps->currentText(),
00115             label->text());
00116         m.replace(keymaps->currentText(), label->text());
00117     }
00118 }
00119 
00120 void CfgDlg::keymapHighlighted(const QString&text) {
00121     label->setText(*m.find(text));
00122 }
00123 
00124 
00125 void CfgDlg::accept() {
00126     cfile->setAutorepeatDelay(ad->value());
00127     cfile->setAutorepeatPeriod(ap->value());
00128 
00129     CfgParser p;
00130         p.save(Global::applicationFileName("zkb", "zkb.xml" ), *cfile);
00131     QCopEnvelope("QPE/zkb", "reload()");
00132 
00133     QDialog::accept();
00134 }
00135 

Generated on Sat Nov 5 16:16:46 2005 for OPIE by  doxygen 1.4.2