From: <si...@us...> - 2010-07-15 13:14:02
|
Revision: 1205 http://qterm.svn.sourceforge.net/qterm/?rev=1205&view=rev Author: sidos Date: 2010-07-15 13:13:53 +0000 (Thu, 15 Jul 2010) Log Message: ----------- simplify qtermparam with a QVariantMap convert address book address.cfg to address.xml Modified Paths: -------------- trunk/qterm-qt4/src/CMakeLists.txt trunk/qterm-qt4/src/addrdialog.cpp trunk/qterm-qt4/src/main.cpp trunk/qterm-qt4/src/qtermframe.cpp trunk/qterm-qt4/src/qtermglobal.cpp trunk/qterm-qt4/src/qtermparam.cpp trunk/qterm-qt4/src/qtermscreen.cpp trunk/qterm-qt4/src/qtermwindow.cpp trunk/qterm-qt4/src/quickdialog.cpp Modified: trunk/qterm-qt4/src/CMakeLists.txt =================================================================== --- trunk/qterm-qt4/src/CMakeLists.txt 2010-07-10 18:30:51 UTC (rev 1204) +++ trunk/qterm-qt4/src/CMakeLists.txt 2010-07-15 13:13:53 UTC (rev 1205) @@ -226,6 +226,7 @@ ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTNETWORK_LIBRARY} + ${QT_QTXML_LIBRARY} ${optionalLibs}) if(WIN32 AND MINGW) target_link_libraries(qterm ${win32Libs}) Modified: trunk/qterm-qt4/src/addrdialog.cpp =================================================================== --- trunk/qterm-qt4/src/addrdialog.cpp 2010-07-10 18:30:51 UTC (rev 1204) +++ trunk/qterm-qt4/src/addrdialog.cpp 2010-07-15 13:13:53 UTC (rev 1205) @@ -147,7 +147,7 @@ updateData(true); if (nLastItem != -1) { Global::instance()->saveAddress(nLastItem, param); - ui.nameListWidget->item(nLastItem)->setText(param.m_strName); + ui.nameListWidget->item(nLastItem)->setText(param.m_mapParam["name"].toString()); ui.nameListWidget->setCurrentRow(item); return; } @@ -184,7 +184,7 @@ Global::instance()->saveAddress(index + 1, param); // insert it to the listbox - ui.nameListWidget->insertItem(index + 1, param.m_strName); + ui.nameListWidget->insertItem(index + 1, param.m_mapParam["name"].toString()); ui.nameListWidget->setItemSelected(ui.nameListWidget->item(index + 1), true); } void addrDialog::onDelete() @@ -225,7 +225,7 @@ if (!bPartial) { Global::instance()->saveAddress(ui.nameListWidget->currentRow(), param); if (ui.nameListWidget->count() != 0) - ui.nameListWidget->item(ui.nameListWidget->currentRow())->setText(param.m_strName); + ui.nameListWidget->item(ui.nameListWidget->currentRow())->setText(param.m_mapParam["name"].toString()); } else done(1); } @@ -368,173 +368,168 @@ bool addrDialog::isChanged() { - return(param.m_strName != ui.nameLineEdit->text() || - param.m_strAddr != ui.addrLineEdit->text() || - param.m_uPort != ui.portSpinBox->value() || - param.m_nHostType != ui.hostTypeComboBox->currentIndex() || - param.m_bAutoLogin != ui.autoLoginCheckBox->isChecked() || - param.m_strPreLogin != ui.preloginLineEdit->text() || - param.m_strUser != ui.userLineEdit->text() || - param.m_strPasswd != ui.passwdLineEdit->text() || - param.m_strPostLogin != ui.postloginLineEdit->text() || - param.m_BBSCode != ui.bbscodeComboBox->currentText() || - param.m_nDispCode != ui.displaycodeComboBox->currentIndex() || - param.m_bAutoFont != ui.autofontCheckBox->isChecked() || - param.m_bAlwaysHighlight != ui.highlightCheckBox->isChecked() || - param.m_bAnsiColor != ui.ansicolorCheckBox->isChecked() || - param.m_strASCIIFontName != strASCIIFontName || - param.m_strGeneralFontName != strGeneralFontName|| - param.m_nFontSize != nFontSize || - param.m_strSchemeFile != strSchemeFile || - param.m_strKeyboardProfile != strKeyboardProfile|| - param.m_strTerm != ui.termtypeLineEdit->text() || - param.m_nCol != ui.columnSpinBox->value() || - param.m_nRow != ui.rowSpinBox->value() || - param.m_nScrollLines != ui.scrollSpinBox->value() || - param.m_nCursorType != ui.cursorTypeComboBox->currentIndex() || - param.m_strEscape != ui.escapeLineEdit->text() || - param.m_nProxyType != ui.proxytypeComboBox->currentIndex() || - param.m_strProxyHost != ui.proxyaddrLineEdit->text() || - param.m_uProxyPort != ui.proxyportSpinBox->value() || - param.m_bAuth != ui.authCheckBox->isChecked() || - param.m_strProxyUser != ui.proxyuserLineEdit->text() || - param.m_strProxyPasswd != ui.proxypasswdLineEdit->text() || - param.m_nProtocolType != ui.protocolComboBox->currentIndex() || - param.m_nMaxIdle != ui.idletimeLineEdit->text().toInt() || - param.m_strAntiString != ui.antiLineEdit->text() || - param.m_strReplyKey != ui.replykeyLineEdit->text() || - param.m_strAutoReply != ui.replyLineEdit->text()) || - param.m_bAutoReply != ui.replyCheckBox->isChecked() || - param.m_bReconnect != ui.reconnectCheckBox->isChecked() || - param.m_nReconnectInterval != ui.reconnectLineEdit->text().toInt() || -// param.m_nRetry != ui.retryLineEdit->text().toInt() || - param.m_bLoadScript != ui.scriptCheckBox->isChecked() || - param.m_strScriptFile != ui.scriptLineEdit->text() || - param.m_nMenuType != ui.menuTypeComboBox->currentIndex() || - param.m_clrMenu != clrMenu; + return(param.m_mapParam["name"].toString() != ui.nameLineEdit->text() || + param.m_mapParam["addr"].toString() != ui.addrLineEdit->text() || + param.m_mapParam["port"].toInt() != ui.portSpinBox->value() || + param.m_mapParam["hosttype"].toInt() != ui.hostTypeComboBox->currentIndex() || + param.m_mapParam["autologin"].toBool() != ui.autoLoginCheckBox->isChecked() || + param.m_mapParam["prelogin"].toString() != ui.preloginLineEdit->text() || + param.m_mapParam["user"].toString() != ui.userLineEdit->text() || + param.m_mapParam["password"].toString() != ui.passwdLineEdit->text() || + param.m_mapParam["postlogin"].toString() != ui.postloginLineEdit->text() || + param.m_mapParam["bbscode"].toString() != ui.bbscodeComboBox->currentText() || + param.m_mapParam["displaycode"].toInt() != ui.displaycodeComboBox->currentIndex() || + param.m_mapParam["autofont"].toBool() != ui.autofontCheckBox->isChecked() || + param.m_mapParam["alwayshighlight"].toBool() != ui.highlightCheckBox->isChecked() || + param.m_mapParam["ansicolor"].toBool() != ui.ansicolorCheckBox->isChecked() || + param.m_mapParam["asciifont"].toString() != strASCIIFontName || + param.m_mapParam["generalfont"].toString() != strGeneralFontName|| + param.m_mapParam["fontsize"].toInt() != nFontSize || + param.m_mapParam["schemefile"].toString() != strSchemeFile || + param.m_mapParam["keyboardprofile"].toString() != strKeyboardProfile|| + param.m_mapParam["termtype"].toString() != ui.termtypeLineEdit->text() || + param.m_mapParam["column"].toInt() != ui.columnSpinBox->value() || + param.m_mapParam["row"].toInt() != ui.rowSpinBox->value() || + param.m_mapParam["scroll"].toInt() != ui.scrollSpinBox->value() || + param.m_mapParam["cursor"].toInt() != ui.cursorTypeComboBox->currentIndex() || + param.m_mapParam["escape"].toString() != ui.escapeLineEdit->text() || + param.m_mapParam["proxytype"].toInt() != ui.proxytypeComboBox->currentIndex() || + param.m_mapParam["proxyaddr"].toString() != ui.proxyaddrLineEdit->text() || + param.m_mapParam["proxyport"].toInt() != ui.proxyportSpinBox->value() || + param.m_mapParam["proxyauth"].toBool() != ui.authCheckBox->isChecked() || + param.m_mapParam["proxyuser"].toString() != ui.proxyuserLineEdit->text() || + param.m_mapParam["proxypassword"].toString() != ui.proxypasswdLineEdit->text() || + param.m_mapParam["protocol"].toInt() != ui.protocolComboBox->currentIndex() || + param.m_mapParam["maxidle"].toInt() != ui.idletimeLineEdit->text().toInt() || + param.m_mapParam["antiidlestring"].toString() != ui.antiLineEdit->text() || + param.m_mapParam["replykey"].toString() != ui.replykeyLineEdit->text() || + param.m_mapParam["autoreply"].toString() != ui.replyLineEdit->text()) || + param.m_mapParam["bautoreply"].toBool() != ui.replyCheckBox->isChecked() || + param.m_mapParam["reconnect"].toBool() != ui.reconnectCheckBox->isChecked() || + param.m_mapParam["interval"].toInt() != ui.reconnectLineEdit->text().toInt() || +// param.m_mapParam["retrytimes"].toInt() != ui.retryLineEdit->text().toInt() || + param.m_mapParam["loadscript"].toBool() != ui.scriptCheckBox->isChecked() || + param.m_mapParam["scriptfile"].toString() != ui.scriptLineEdit->text() || + param.m_mapParam["menutype"].toInt() != ui.menuTypeComboBox->currentIndex() || + param.m_mapParam["menucolor"] != clrMenu; } void addrDialog::updateData(bool save) { if (save) { // from display to param - param.m_strName = ui.nameLineEdit->text(); - param.m_strAddr = ui.addrLineEdit->text(); - param.m_uPort = ui.portSpinBox->value(); - param.m_nHostType = ui.hostTypeComboBox->currentIndex(); - param.m_bAutoLogin = ui.autoLoginCheckBox->isChecked(); - param.m_strPreLogin = ui.preloginLineEdit->text(); - param.m_strUser = ui.userLineEdit->text(); - param.m_strPasswd = ui.passwdLineEdit->text(); - param.m_strPostLogin = ui.postloginLineEdit->text(); - param.m_BBSCode = ui.bbscodeComboBox->currentText(); - param.m_nDispCode = ui.displaycodeComboBox->currentIndex(); - param.m_bAutoFont = ui.autofontCheckBox->isChecked(); - param.m_bAlwaysHighlight = ui.highlightCheckBox->isChecked(); - param.m_bAnsiColor = ui.ansicolorCheckBox->isChecked(); - param.m_strASCIIFontName = strASCIIFontName; - param.m_strGeneralFontName = strGeneralFontName; - param.m_nFontSize = nFontSize; - param.m_strSchemeFile = strSchemeFile; - param.m_strKeyboardProfile = strKeyboardProfile; - param.m_strTerm = ui.termtypeLineEdit->text(); - param.m_nCol = ui.columnSpinBox->value(); - param.m_nRow = ui.rowSpinBox->value(); - param.m_nScrollLines = ui.scrollSpinBox->value(); - param.m_nCursorType = ui.cursorTypeComboBox->currentIndex(); - param.m_strEscape = ui.escapeLineEdit->text(); - param.m_nProxyType = ui.proxytypeComboBox->currentIndex(); - param.m_strProxyHost = ui.proxyaddrLineEdit->text(); - param.m_uProxyPort = ui.proxyportSpinBox->value(); - param.m_bAuth = ui.authCheckBox->isChecked(); - param.m_strProxyUser = ui.proxyuserLineEdit->text(); - param.m_strProxyPasswd = ui.proxypasswdLineEdit->text(); - param.m_nProtocolType = ui.protocolComboBox->currentIndex(); - param.m_nMaxIdle = ui.idletimeLineEdit->text().toInt(); - param.m_strReplyKey = ui.replykeyLineEdit->text(); - if (param.m_strReplyKey.isNull()) + param.m_mapParam["name"] = ui.nameLineEdit->text(); + param.m_mapParam["addr"] = ui.addrLineEdit->text(); + param.m_mapParam["port"] = ui.portSpinBox->value(); + param.m_mapParam["hosttype"] = ui.hostTypeComboBox->currentIndex(); + param.m_mapParam["autologin"] = ui.autoLoginCheckBox->isChecked(); + param.m_mapParam["prelogin"] = ui.preloginLineEdit->text(); + param.m_mapParam["user"] = ui.userLineEdit->text(); + param.m_mapParam["password"] = ui.passwdLineEdit->text(); + param.m_mapParam["postlogin"] = ui.postloginLineEdit->text(); + param.m_mapParam["bbscode"] = ui.bbscodeComboBox->currentText(); + param.m_mapParam["displaycode"] = ui.displaycodeComboBox->currentIndex(); + param.m_mapParam["autofont"] = ui.autofontCheckBox->isChecked(); + param.m_mapParam["alwayshighlight"] = ui.highlightCheckBox->isChecked(); + param.m_mapParam["ansicolor"] = ui.ansicolorCheckBox->isChecked(); + param.m_mapParam["asciifont"] = strASCIIFontName; + param.m_mapParam["generalfont"] = strGeneralFontName; + param.m_mapParam["fontsize"] = nFontSize; + param.m_mapParam["schemefile"] = strSchemeFile; + param.m_mapParam["keyboardprofile"] = strKeyboardProfile; + param.m_mapParam["termtype"] = ui.termtypeLineEdit->text(); + param.m_mapParam["column"] = ui.columnSpinBox->value(); + param.m_mapParam["row"] = ui.rowSpinBox->value(); + param.m_mapParam["scroll"] = ui.scrollSpinBox->value(); + param.m_mapParam["cursor"] = ui.cursorTypeComboBox->currentIndex(); + param.m_mapParam["escape"] = ui.escapeLineEdit->text(); + param.m_mapParam["proxytype"] = ui.proxytypeComboBox->currentIndex(); + param.m_mapParam["proxyhost"] = ui.proxyaddrLineEdit->text(); + param.m_mapParam["proxyport"] = ui.proxyportSpinBox->value(); + param.m_mapParam["proxyauth"] = ui.authCheckBox->isChecked(); + param.m_mapParam["proxyuser"] = ui.proxyuserLineEdit->text(); + param.m_mapParam["proxypassword"] = ui.proxypasswdLineEdit->text(); + param.m_mapParam["protocol"] = ui.protocolComboBox->currentIndex(); + param.m_mapParam["maxidle"] = ui.idletimeLineEdit->text().toInt(); + param.m_mapParam["replykey"] = ui.replykeyLineEdit->text(); + if (param.m_mapParam["replykey"].toString().isNull()) qDebug("saving null"); - param.m_strAntiString = ui.antiLineEdit->text(); - param.m_bAutoReply = ui.replyCheckBox->isChecked(); - param.m_strAutoReply = ui.replyLineEdit->text(); - param.m_bReconnect = ui.reconnectCheckBox->isChecked(); - param.m_nReconnectInterval = ui.reconnectLineEdit->text().toInt(); -// param.m_nRetry = ui.retryLineEdit->text().toInt(); - param.m_bLoadScript = ui.scriptCheckBox->isChecked(); - param.m_strScriptFile = ui.scriptLineEdit->text(); - param.m_nMenuType = ui.menuTypeComboBox->currentIndex(); - param.m_clrMenu = clrMenu; + param.m_mapParam["antiidlestring"] = ui.antiLineEdit->text(); + param.m_mapParam["bautoreply"] = ui.replyCheckBox->isChecked(); + param.m_mapParam["autoreply"] = ui.replyLineEdit->text(); + param.m_mapParam["reconnect"] = ui.reconnectCheckBox->isChecked(); + param.m_mapParam["interval"] = ui.reconnectLineEdit->text().toInt(); +// param.m_mapParam["retrytimes"] = ui.retryLineEdit->text().toInt(); + param.m_mapParam["loadscript"] = ui.scriptCheckBox->isChecked(); + param.m_mapParam["scriptfile"] = ui.scriptLineEdit->text(); + param.m_mapParam["menutype"] = ui.menuTypeComboBox->currentIndex(); + param.m_mapParam["menucolor"] = clrMenu; } else { // from param to display disconnect(ui.protocolComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(onProtocol(int))); QString strTmp; - ui.nameLineEdit->setText(param.m_strName); - ui.addrLineEdit->setText(param.m_strAddr); - strTmp.setNum(param.m_uPort); - ui.portSpinBox->setValue(strTmp.toUInt()); - ui.hostTypeComboBox->setCurrentIndex(param.m_nHostType); - ui.autoLoginCheckBox->setChecked(param.m_bAutoLogin); - ui.preloginLineEdit->setEnabled(param.m_bAutoLogin); - ui.userLineEdit->setEnabled(param.m_bAutoLogin); - ui.passwdLineEdit->setEnabled(param.m_bAutoLogin); - ui.postloginLineEdit->setEnabled(param.m_bAutoLogin); - ui.preloginLineEdit->setText(param.m_strPreLogin); - ui.userLineEdit->setText(param.m_strUser); - ui.passwdLineEdit->setText(param.m_strPasswd); - ui.postloginLineEdit->setText(param.m_strPostLogin); - ui.bbscodeComboBox->setCurrentIndex(ui.bbscodeComboBox->findText(param.m_BBSCode)); - ui.displaycodeComboBox->setCurrentIndex(param.m_nDispCode); - ui.autofontCheckBox->setChecked(param.m_bAutoFont); - ui.highlightCheckBox->setChecked(param.m_bAlwaysHighlight); - ui.ansicolorCheckBox->setChecked(param.m_bAnsiColor); - strASCIIFontName = param.m_strASCIIFontName; + ui.nameLineEdit->setText(param.m_mapParam["name"].toString()); + ui.addrLineEdit->setText(param.m_mapParam["addr"].toString()); + ui.portSpinBox->setValue(param.m_mapParam["port"].toInt()); + ui.hostTypeComboBox->setCurrentIndex(param.m_mapParam["hosttype"].toInt()); + ui.autoLoginCheckBox->setChecked(param.m_mapParam["autologin"].toBool()); + ui.preloginLineEdit->setEnabled(param.m_mapParam["autologin"].toBool()); + ui.userLineEdit->setEnabled(param.m_mapParam["autologin"].toBool()); + ui.passwdLineEdit->setEnabled(param.m_mapParam["autologin"].toBool()); + ui.postloginLineEdit->setEnabled(param.m_mapParam["autologin"].toBool()); + ui.preloginLineEdit->setText(param.m_mapParam["prelogin"].toString()); + ui.userLineEdit->setText(param.m_mapParam["user"].toString()); + ui.passwdLineEdit->setText(param.m_mapParam["password"].toString()); + ui.postloginLineEdit->setText(param.m_mapParam["postlogin"].toString()); + ui.bbscodeComboBox->setCurrentIndex(ui.bbscodeComboBox->findText(param.m_mapParam["bbscode"].toString())); + ui.displaycodeComboBox->setCurrentIndex(param.m_mapParam["displaycode"].toInt()); + ui.autofontCheckBox->setChecked(param.m_mapParam["autofont"].toBool()); + ui.highlightCheckBox->setChecked(param.m_mapParam["alwayshighlight"].toBool()); + ui.ansicolorCheckBox->setChecked(param.m_mapParam["ansicolor"].toBool()); + strASCIIFontName = param.m_mapParam["asciifont"].toString(); ui.asciiFontComboBox->setCurrentFont(QFont(strASCIIFontName)); - strGeneralFontName = param.m_strGeneralFontName; + strGeneralFontName = param.m_mapParam["generalfont"].toString(); ui.generalFontComboBox->setCurrentFont(QFont(strGeneralFontName)); - nFontSize = param.m_nFontSize ; + nFontSize = param.m_mapParam["fontsize"].toInt(); ui.fontSizeSpinBox->setValue(nFontSize); - strSchemeFile = param.m_strSchemeFile; + strSchemeFile = param.m_mapParam["schemefile"].toString(); ui.schemeComboBox->setCurrentIndex(schemeFileList.indexOf(strSchemeFile)); - strKeyboardProfile = param.m_strKeyboardProfile; + strKeyboardProfile = param.m_mapParam["keyboardprofile"].toString(); ui.keytypeComboBox->setCurrentIndex(keyboardProfileList.indexOf(strKeyboardProfile)); - ui.termtypeLineEdit->setText(param.m_strTerm); - ui.columnSpinBox->setValue(param.m_nCol); - ui.rowSpinBox->setValue(param.m_nRow); - ui.scrollSpinBox->setValue(param.m_nScrollLines); - ui.cursorTypeComboBox->setCurrentIndex(param.m_nCursorType); - ui.escapeLineEdit->setText(param.m_strEscape); - ui.proxytypeComboBox->setCurrentIndex(param.m_nProxyType); - ui.proxyaddrLineEdit->setText(param.m_strProxyHost); - strTmp.setNum(param.m_uProxyPort); - ui.proxyportSpinBox->setValue(strTmp.toUInt()); - ui.authCheckBox->setChecked(param.m_bAuth); - ui.proxyuserLineEdit->setEnabled(param.m_bAuth); - ui.proxypasswdLineEdit->setEnabled(param.m_bAuth); - ui.proxyuserLineEdit->setText(param.m_strProxyUser); - ui.proxypasswdLineEdit->setText(param.m_strProxyPasswd); - ui.protocolComboBox->setCurrentIndex(param.m_nProtocolType); - strTmp.setNum(param.m_nMaxIdle); - ui.idletimeLineEdit->setText(strTmp); - ui.replykeyLineEdit->setText(param.m_strReplyKey); - ui.antiLineEdit->setText(param.m_strAntiString); - ui.replyCheckBox->setChecked(param.m_bAutoReply); - ui.replyLineEdit->setEnabled(param.m_bAutoReply); - ui.replyLineEdit->setText(param.m_strAutoReply); - ui.reconnectCheckBox->setChecked(param.m_bReconnect); - ui.reconnectLineEdit->setEnabled(param.m_bReconnect); -// ui.retryLineEdit->setEnabled(param.m_bReconnect); - strTmp.setNum(param.m_nReconnectInterval); - ui.reconnectLineEdit->setText(strTmp); - strTmp.setNum(param.m_nRetry); -// ui.retryLineEdit->setText(strTmp); - ui.scriptCheckBox->setChecked(param.m_bLoadScript); - ui.scriptLineEdit->setEnabled(param.m_bLoadScript); - ui.scriptPushButton->setEnabled(param.m_bLoadScript); - ui.scriptLineEdit->setText(param.m_strScriptFile); - ui.menuTypeComboBox->setCurrentIndex(param.m_nMenuType); + ui.termtypeLineEdit->setText(param.m_mapParam["termtype"].toString()); + ui.columnSpinBox->setValue(param.m_mapParam["column"].toInt()); + ui.rowSpinBox->setValue(param.m_mapParam["row"].toInt()); + ui.scrollSpinBox->setValue(param.m_mapParam["scroll"].toInt()); + ui.cursorTypeComboBox->setCurrentIndex(param.m_mapParam["cursor"].toInt()); + ui.escapeLineEdit->setText(param.m_mapParam["escape"].toString()); + ui.proxytypeComboBox->setCurrentIndex(param.m_mapParam["proxytype"].toInt()); + ui.proxyaddrLineEdit->setText(param.m_mapParam["proxyaddr"].toString()); + ui.proxyportSpinBox->setValue(param.m_mapParam["proxyport"].toInt()); + ui.authCheckBox->setChecked(param.m_mapParam["proxyauth"].toBool()); + ui.proxyuserLineEdit->setEnabled(param.m_mapParam["proxyauth"].toBool()); + ui.proxypasswdLineEdit->setEnabled(param.m_mapParam["proxyauth"].toBool()); + ui.proxyuserLineEdit->setText(param.m_mapParam["proxyuser"].toString()); + ui.proxypasswdLineEdit->setText(param.m_mapParam["proxypassword"].toString()); + ui.protocolComboBox->setCurrentIndex(param.m_mapParam["protocol"].toInt()); + ui.idletimeLineEdit->setText(param.m_mapParam["maxidle"].toString()); + ui.replykeyLineEdit->setText(param.m_mapParam["replykey"].toString()); + ui.antiLineEdit->setText(param.m_mapParam["antiidlestring"].toString()); + ui.replyCheckBox->setChecked(param.m_mapParam["bautoreply"].toBool()); + ui.replyLineEdit->setEnabled(param.m_mapParam["bautoreply"].toBool()); + ui.replyLineEdit->setText(param.m_mapParam["autoreply"].toString()); + ui.reconnectCheckBox->setChecked(param.m_mapParam["reconnect"].toBool()); + ui.reconnectLineEdit->setEnabled(param.m_mapParam["reconnect"].toBool()); +// ui.retryLineEdit->setEnabled(param.m_mapParam["reconnect"].toBool()); + ui.reconnectLineEdit->setText(param.m_mapParam["interval"].toString()); +// ui.retryLineEdit->setText(param.m_mapParam["retrytimes"].toString()); + ui.scriptCheckBox->setChecked(param.m_mapParam["loadscript"].toBool()); + ui.scriptLineEdit->setEnabled(param.m_mapParam["loadscript"].toBool()); + ui.scriptPushButton->setEnabled(param.m_mapParam["loadscript"].toBool()); + ui.scriptLineEdit->setText(param.m_mapParam["scriptfile"].toString()); + ui.menuTypeComboBox->setCurrentIndex(param.m_mapParam["menutype"].toInt()); //ui.menuGroup->setButton(param.m_nMenuType); //QRadioButton * rbMenu = qobject_cast<QRadioButton*>(bgMenu.button(param.m_nMenuType)); //rbMenu->setChecked(true); - clrMenu = param.m_clrMenu; + clrMenu = param.m_mapParam["menucolor"].toString(); connect(ui.protocolComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(onProtocol(int))); } } Modified: trunk/qterm-qt4/src/main.cpp =================================================================== --- trunk/qterm-qt4/src/main.cpp 2010-07-10 18:30:51 UTC (rev 1204) +++ trunk/qterm-qt4/src/main.cpp 2010-07-15 13:13:53 UTC (rev 1205) @@ -144,6 +144,7 @@ return -1; } + // Registrate the new codec UAOCodec hackCodec; Modified: trunk/qterm-qt4/src/qtermframe.cpp =================================================================== --- trunk/qterm-qt4/src/qtermframe.cpp 2010-07-10 18:30:51 UTC (rev 1204) +++ trunk/qterm-qt4/src/qtermframe.cpp 2010-07-15 13:13:53 UTC (rev 1205) @@ -306,7 +306,7 @@ void Frame::newWindow(const Param& param, int index) { Window * window = new Window(this, param, index, mdiArea, 0); - window->setWindowTitle(param.m_strName); + window->setWindowTitle(param.m_mapParam["name"].toString()); window->setWindowIcon(QIcon(":/pic/tabpad.png")); window->setAttribute(Qt::WA_DeleteOnClose); window->showMaximized(); Modified: trunk/qterm-qt4/src/qtermglobal.cpp =================================================================== --- trunk/qterm-qt4/src/qtermglobal.cpp 2010-07-10 18:30:51 UTC (rev 1204) +++ trunk/qterm-qt4/src/qtermglobal.cpp 2010-07-15 13:13:53 UTC (rev 1205) @@ -29,6 +29,9 @@ #include <QtGui/QDesktopServices> #include <QtGui/QFileDialog> #include <QtGui/QMessageBox> +#include <QtXml/QDomDocument> +#include <QtCore/QUuid> +#include <QtCore/QTextStream> #if defined(_OS_WIN32_) || defined(Q_OS_WIN32) #include <windows.h> @@ -59,7 +62,7 @@ } Global::Global() - : m_fileCfg("./qterm.cfg"), m_addrCfg("./address.cfg"), + : m_fileCfg("./qterm.cfg"), m_addrCfg("./address.cfg"), m_addrXml("./address.xml"), m_pathLib("./"), m_pathCfg("./"), m_windowState(), m_status(INIT_OK), m_style(), m_fullScreen(false), m_language(Global::English) @@ -128,6 +131,40 @@ } } +QMap<QString,QString> Global::getFavoriteSiteList() +{ + QMap<QString,QString> listSite; + // import xml address book + QDomDocument doc; + QFile file(m_addrXml); + if (file.open(QIODevice::ReadOnly)) { + if (doc.setContent(&file)) { + QDomElement favorite; + QDomNodeList nodeList = doc.elementsByTagName("folder"); + for (int i=0; i<nodeList.count(); i++) { + QDomElement node = nodeList.at(i).toElement(); + if (node.attribute("name") == "favorite") { + favorite = node; + break; + } + } + QStringList listUuid; + nodeList = favorite.elementsByTagName("addsite"); + for (int i=0; i<nodeList.count(); i++) { + QDomElement node = nodeList.at(i).toElement(); + listUuid << node.attribute("uuid"); + } + nodeList = doc.elementsByTagName("site"); + for (int i=0; i<nodeList.count(); i++) { + QDomElement node = nodeList.at(i).toElement(); + if (listUuid.contains(node.attribute("uuid"))) + listSite[node.attribute("uuid")] = node.attribute("name"); + } + } + } + file.close(); + return listSite; +} QStringList Global::loadNameList() { QStringList listName; @@ -159,94 +196,19 @@ strTmp = m_address->getItemValue("bbs list", "num").toString(); if (n >= strTmp.toInt()) return false; - param.m_strName = m_address->getItemValue(strSection, "name").toString(); - param.m_strAddr = m_address->getItemValue(strSection, "addr").toString(); - strTmp = m_address->getItemValue(strSection, "port").toString(); - param.m_uPort = strTmp.toUShort(); - strTmp = m_address->getItemValue(strSection, "hosttype").toString(); - param.m_nHostType = strTmp.toInt(); - strTmp = m_address->getItemValue(strSection, "autologin").toString(); - param.m_bAutoLogin = (strTmp != "0"); - param.m_strPreLogin = m_address->getItemValue(strSection, "prelogin").toString(); - param.m_strUser = m_address->getItemValue(strSection, "user").toString(); -#ifdef KWALLET_ENABLED - if (m_wallet != NULL) { - m_wallet->open(); - param.m_strPasswd = m_wallet->readPassword(param.m_strName, param.m_strUser); - } else -#endif // KWALLET_ENABLED - param.m_strPasswd = m_address->getItemValue(strSection, "password").toString(); - param.m_strPostLogin = m_address->getItemValue(strSection, "postlogin").toString(); - strTmp = m_address->getItemValue(strSection, "bbscode").toString(); - param.m_BBSCode = strTmp; - strTmp = m_address->getItemValue(strSection, "displaycode").toString(); - param.m_nDispCode = strTmp.toInt(); - strTmp = m_address->getItemValue(strSection, "autofont").toString(); - param.m_bAutoFont = (strTmp != "0"); - strTmp = m_address->getItemValue(strSection, "alwayshighlight").toString(); - param.m_bAlwaysHighlight = (strTmp != "0"); - strTmp = m_address->getItemValue(strSection, "ansicolor").toString(); - param.m_bAnsiColor = (strTmp != "0"); - param.m_strASCIIFontName = m_address->getItemValue(strSection, "asciifont").toString(); - param.m_strGeneralFontName = m_address->getItemValue(strSection, "generalfont").toString(); - strTmp = m_address->getItemValue(strSection, "fontsize").toString(); - param.m_nFontSize = strTmp.toInt(); - param.m_strSchemeFile = m_address->getItemValue(strSection, "schemefile").toString(); - param.m_strKeyboardProfile = m_address->getItemValue(strSection, "keyboardprofile").toString(); + foreach(QString key,param.m_mapParam.keys()) { + #ifdef KWALLET_ENABLED + if (key == "password" && m_wallet != NULL) { + m_wallet->open(); + param.m_mapParam["password"] = m_wallet->readPassword( + param.m_mapParam["name"], + param.m_mapParam["user"]); + } else + #endif // KWALLET_ENABLED + param.m_mapParam[key] = m_address->getItemValue(strSection,key); + } - param.m_strTerm = m_address->getItemValue(strSection, "termtype").toString(); - strTmp = m_address->getItemValue(strSection, "column").toString(); - param.m_nCol = strTmp.toInt(); - strTmp = m_address->getItemValue(strSection, "row").toString(); - param.m_nRow = strTmp.toInt(); - strTmp = m_address->getItemValue(strSection, "scroll").toString(); - param.m_nScrollLines = strTmp.toInt(); - strTmp = m_address->getItemValue(strSection, "cursor").toString(); - param.m_nCursorType = strTmp.toInt(); - param.m_strEscape = m_address->getItemValue(strSection, "escape").toString(); - - strTmp = m_address->getItemValue(strSection, "proxytype").toString(); - param.m_nProxyType = strTmp.toInt(); - strTmp = m_address->getItemValue(strSection, "proxyauth").toString(); - param.m_bAuth = (strTmp != "0"); - param.m_strProxyHost = m_address->getItemValue(strSection, "proxyaddr").toString(); - strTmp = m_address->getItemValue(strSection, "proxyport").toString(); - param.m_uProxyPort = strTmp.toInt(); - param.m_strProxyUser = m_address->getItemValue(strSection, "proxyuser").toString(); - param.m_strProxyPasswd = m_address->getItemValue(strSection, "proxypassword").toString(); - strTmp = m_address->getItemValue(strSection, "protocol").toString(); - param.m_nProtocolType = strTmp.toInt(); - - strTmp = m_address->getItemValue(strSection, "maxidle").toString(); - param.m_nMaxIdle = strTmp.toInt(); - param.m_strReplyKey = m_address->getItemValue(strSection, "replykey").toString(); - if (param.m_strReplyKey.isNull()) - qDebug("loading null\n"); - - param.m_strAntiString = m_address->getItemValue(strSection, "antiidlestring").toString(); - param.m_strAutoReply = m_address->getItemValue(strSection, "autoreply").toString(); - strTmp = m_address->getItemValue(strSection, "bautoreply").toString(); - param.m_bAutoReply = (strTmp != "0"); - - strTmp = m_address->getItemValue(strSection, "reconnect").toString(); - param.m_bReconnect = (strTmp != "0"); - strTmp = m_address->getItemValue(strSection, "interval").toString(); - param.m_nReconnectInterval = strTmp.toInt(); - strTmp = m_address->getItemValue(strSection, "retrytimes").toString(); - param.m_nRetry = strTmp.toInt(); - - strTmp = m_address->getItemValue(strSection, "loadscript").toString(); - param.m_bLoadScript = (strTmp != "0"); - param.m_strScriptFile = m_address->getItemValue(strSection, "scriptfile").toString(); - if (param.m_strScriptFile.isEmpty()) { - param.m_bLoadScript = false; - } - - strTmp = m_address->getItemValue(strSection, "menutype").toString(); - param.m_nMenuType = strTmp.toInt(); - param.m_clrMenu.setNamedColor(m_address->getItemValue(strSection, "menucolor").toString()); - return true; } @@ -258,79 +220,18 @@ else strSection.sprintf("bbs %d", n); - m_address->setItemValue(strSection, "name", param.m_strName); - m_address->setItemValue(strSection, "addr", param.m_strAddr); - strTmp.setNum(param.m_uPort); - m_address->setItemValue(strSection, "port", strTmp); - strTmp.setNum(param.m_nHostType); - m_address->setItemValue(strSection, "hosttype", strTmp); - m_address->setItemValue(strSection, "autologin", param.m_bAutoLogin ? "1" : "0"); - m_address->setItemValue(strSection, "prelogin", param.m_strPreLogin); - m_address->setItemValue(strSection, "user", param.m_strUser); - -#ifdef KWALLET_ENABLED - if (m_wallet != NULL) { + foreach(QString key,param.m_mapParam.keys()) { + #ifdef KWALLET_ENABLED + if (key == "password" && m_wallet != NULL) { m_wallet->open(); - m_wallet->writePassword(param.m_strName, param.m_strUser, param.m_strPasswd); + m_wallet->writePassword( + param.m_mapParam["name"], + param.m_mapParam["user"], + param.m_mapParam["password"]); } else -#endif // KWALLET_ENABLED - m_address->setItemValue(strSection, "password", param.m_strPasswd); - m_address->setItemValue(strSection, "postlogin", param.m_strPostLogin); - - strTmp=param.m_BBSCode; - m_address->setItemValue(strSection, "bbscode", strTmp); - strTmp.setNum(param.m_nDispCode); - m_address->setItemValue(strSection, "displaycode", strTmp); - m_address->setItemValue(strSection, "autofont", param.m_bAutoFont ? "1" : "0"); - m_address->setItemValue(strSection, "alwayshighlight", param.m_bAlwaysHighlight ? "1" : "0"); - m_address->setItemValue(strSection, "ansicolor", param.m_bAnsiColor ? "1" : "0"); - m_address->setItemValue(strSection, "asciifont", param.m_strASCIIFontName); - m_address->setItemValue(strSection, "generalfont", param.m_strGeneralFontName); - strTmp.setNum(param.m_nFontSize); - m_address->setItemValue(strSection, "fontsize", strTmp); - m_address->setItemValue(strSection, "schemefile", param.m_strSchemeFile); - m_address->setItemValue(strSection, "keyboardprofile", param.m_strKeyboardProfile); - - m_address->setItemValue(strSection, "termtype", param.m_strTerm); - strTmp.setNum(param.m_nCol); - m_address->setItemValue(strSection, "column", strTmp); - strTmp.setNum(param.m_nRow); - m_address->setItemValue(strSection, "row", strTmp); - strTmp.setNum(param.m_nScrollLines); - m_address->setItemValue(strSection, "scroll", strTmp); - strTmp.setNum(param.m_nCursorType); - m_address->setItemValue(strSection, "cursor", strTmp); - m_address->setItemValue(strSection, "escape", param.m_strEscape); - - strTmp.setNum(param.m_nProxyType); - m_address->setItemValue(strSection, "proxytype", strTmp); - m_address->setItemValue(strSection, "proxyauth", param.m_bAuth ? "1" : "0"); - m_address->setItemValue(strSection, "proxyaddr", param.m_strProxyHost); - strTmp.setNum(param.m_uProxyPort); - m_address->setItemValue(strSection, "proxyport", strTmp); - m_address->setItemValue(strSection, "proxyuser", param.m_strProxyUser); - m_address->setItemValue(strSection, "proxypassword", param.m_strProxyPasswd); - strTmp.setNum(param.m_nProtocolType); - m_address->setItemValue(strSection, "protocol", strTmp); - - strTmp.setNum(param.m_nMaxIdle); - m_address->setItemValue(strSection, "maxidle", strTmp); - m_address->setItemValue(strSection, "replykey", param.m_strReplyKey); - m_address->setItemValue(strSection, "antiidlestring", param.m_strAntiString); - m_address->setItemValue(strSection, "bautoreply", param.m_bAutoReply ? "1" : "0"); - m_address->setItemValue(strSection, "autoreply", param.m_strAutoReply); - m_address->setItemValue(strSection, "reconnect", param.m_bReconnect ? "1" : "0"); - strTmp.setNum(param.m_nReconnectInterval); - m_address->setItemValue(strSection, "interval", strTmp); - strTmp.setNum(param.m_nRetry); - m_address->setItemValue(strSection, "retrytimes", strTmp); - - m_address->setItemValue(strSection, "loadscript", param.m_bLoadScript ? "1" : "0"); - m_address->setItemValue(strSection, "scriptfile", param.m_strScriptFile); - - strTmp.setNum(param.m_nMenuType); - m_address->setItemValue(strSection, "menutype", strTmp); - m_address->setItemValue(strSection, "menucolor", param.m_clrMenu.name()); + #endif + m_address->setItemValue(strSection, key, param.m_mapParam[key]); + } m_address->save(); } @@ -355,6 +256,84 @@ m_address->deleteSection(strSection); } +bool Global::convertAddressBook2XML() +{ + QDir dir; + if (dir.exists(m_addrXml)) + return true; + else { + if (!dir.exists(m_addrCfg)) + return createLocalFile(m_addrXml, m_pathLib + "address.xml"); + } + // import xml address book + QDomDocument doc; + QFile file(m_addrXml); + if (!file.open(QIODevice::ReadOnly)) + return false; + if (!doc.setContent(&file)) { + file.close(); + return false; + } + file.close(); + + // Combine cfg address book + m_address = new Config(m_addrCfg); + int num = m_address->getItemValue("bbs list", "num").toInt(); + + //QDomProcessingInstruction instr = + // doc.createProcessingInstruction("xml","version=\"1.0\" encoding=\"UTF-8\""); + //doc.appendChild(instr); + + //QDomElement addresses = doc.createElement("addresses"); + //doc.appendChild(addresses); + + //QDomElement favorite = doc.createElement("folder"); + //favorite.setAttribute("name", "favorite"); + //addresses.appendChild(favorite); + + QDomElement addresses = doc.documentElement(); + + QDomElement favorite; + QDomNodeList nodeList = doc.elementsByTagName("folder"); + for (int i=0; i<nodeList.count(); i++) { + QDomElement node = nodeList.at(i).toElement(); + if (node.attribute("name") == "favorite") { + favorite = node; + break; + } + } + + for (int i = -1; i < num; i++) { + Param param; + loadAddress(i, param); + QDomElement site = doc.createElement("site"); + if (i==-1) + site.setAttribute("uuid", QUuid().toString()); + else + { + QString uuid = QUuid::createUuid().toString(); + site.setAttribute("uuid", uuid); + QDomElement addsite = doc.createElement("addsite"); + addsite.setAttribute("uuid", uuid); + favorite.appendChild(addsite); + } + foreach(QString key,param.m_mapParam.keys()) + site.setAttribute(key, param.m_mapParam[key].toString()); + + addresses.appendChild(site); + } + QFile ofile(m_addrXml); + if (!ofile.open(QIODevice::WriteOnly)) + return false; + QByteArray xml = doc.toByteArray(); + QTextStream stream(&ofile); + stream << xml; + ofile.close(); + + delete m_address; + return true; +} + void Global::loadPrefence() { QString strTmp; @@ -435,7 +414,7 @@ #if defined(_OS_WIN32_) || defined(Q_OS_WIN32) bool Global::iniWorkingDir(QString param) { - char ExeNamePath[MAX_PATH], _fileCfg[MAX_PATH], _addrCfg[MAX_PATH]; + char ExeNamePath[MAX_PATH], _fileCfg[MAX_PATH], _addrCfg[MAX_PATH], _addrXml[MAX_PATH]; size_t LastSlash = 0; if (0 == GetModuleFileNameA(NULL, ExeNamePath, MAX_PATH)) { @@ -458,6 +437,11 @@ strcpy(_addrCfg, ExeNamePath); strcat(_addrCfg, "address.cfg"); m_addrCfg = QString::fromLocal8Bit(_addrCfg); + strcpy(_addrXml, ExeNamePath); + strcat(_addrXml, "address.xml"); + m_addrXml = QString::fromLocal8Bit(_addrXml); + if (!convertAddressBook2XML()) + return false; QString pathScheme = m_pathCfg + "scheme"; if (!isPathExist(pathScheme)) @@ -525,10 +509,14 @@ m_fileCfg = m_pathCfg + "qterm.cfg"; if (!createLocalFile(m_fileCfg, m_pathLib + "qterm.cfg")) return false; - m_addrCfg = m_pathCfg + "address.cfg"; - if (!createLocalFile(m_addrCfg, m_pathLib + "address.cfg")) - return false; - + //m_addrCfg = m_pathCfg + "address.cfg"; + //if (!createLocalFile(m_addrCfg, m_pathLib + "address.cfg")) + // return false; + m_addrXml = m_pathCfg + "address.xml"; + //if (!createLocalFile(m_addrXml, m_pathLib + "address.xml")) + // return false; + if (!convertAddressBook2XML()) + return false; return true; } #endif Modified: trunk/qterm-qt4/src/qtermparam.cpp =================================================================== --- trunk/qterm-qt4/src/qtermparam.cpp 2010-07-10 18:30:51 UTC (rev 1204) +++ trunk/qterm-qt4/src/qtermparam.cpp 2010-07-15 13:13:53 UTC (rev 1205) @@ -13,108 +13,64 @@ { Param::Param() { - m_strName = "SMTH"; - m_strAddr = "smth.org"; - m_uPort = 23; - m_nHostType = 0; // 0--BBS 1--*NIX - m_bAutoLogin = false; - m_strPreLogin = ""; - m_strUser = ""; - m_strPasswd = ""; - m_strPostLogin = ""; -// Display - m_BBSCode = "GBK"; - m_nDispCode = 0; - m_bAutoFont = 1; - m_bAlwaysHighlight = 0; - m_bAnsiColor = 1; - m_strASCIIFontName = "Monospace"; - m_strGeneralFontName = "Monospace"; - m_nFontSize = 14; - m_strSchemeFile = ""; -// Terminal - m_strTerm = "vt102"; - m_strKeyboardProfile= ""; - m_nCol = 80; - m_nRow = 24; - m_nScrollLines = 240; - m_nCursorType = 0; // 0--Block 1--Underline 2--I Type - m_strEscape = "^[^[["; -// Connection - m_nProxyType = 0; // 0--None 1--Wingate 2--SOCKS4 3--SOCKS5 4--HTTP - m_strProxyHost = ""; - m_uProxyPort = 0; - m_bAuth = false; - m_strProxyUser = ""; - m_strProxyPasswd = ""; - m_nProtocolType = 0; // 0--Telnet 1--SSH1 2--SSH2 -// Misc - m_nMaxIdle = 180; - m_strReplyKey = "^Z"; - m_strAntiString = "^@"; - m_bAutoReply = false; - m_strAutoReply = "(QTerm) Sorry, I am not around"; - m_bReconnect = false; - m_nReconnectInterval = 3; - m_nRetry = 0; - m_bLoadScript = false; - m_strScriptFile = ""; -// Mouse - m_nMenuType=2; - m_clrMenu = QColor(0,65,132); + m_mapParam["name"] = "SMTH"; + m_mapParam["addr"] = "smth.org"; + m_mapParam["port"] = 23; + m_mapParam["hosttype"] = 0; // 0--BBS 1--*NIX + m_mapParam["autologin"] = false; + m_mapParam["prelogin"] = ""; + m_mapParam["user"] = ""; + m_mapParam["password"] = ""; + m_mapParam["postlogin"] = ""; + + m_mapParam["bbscode"] = "GBK"; + m_mapParam["displaycode"] = 0; + m_mapParam["autofont"] = true; + m_mapParam["alwayshighlight"] = false; + m_mapParam["ansicolor"] = true; + m_mapParam["asciifont"] = "Monospace"; + m_mapParam["generalfont"] = "Monospace"; + m_mapParam["fontsize"] = 14; + m_mapParam["schemefile"] = ""; + + m_mapParam["termtype"] = "vt102"; + m_mapParam["keytype"] = 0; + m_mapParam["keyboardprofile"] = ""; + m_mapParam["column"] = 80; + m_mapParam["row"] = 24; + m_mapParam["scroll"] = 240; + m_mapParam["cursor"] = 0; // 0--Block 1--Underline 2--I Type + m_mapParam["escape"] = "^[^[["; + + m_mapParam["protocol"] = 0; // 0--Telnet 1--SSH1 2--SSH2 + m_mapParam["sshuser"] = ""; + m_mapParam["sshpassword"] = ""; + m_mapParam["proxytype"] = 0; // 0--None 1--Wingate 2--SOCKS4 3--SOCKS5 4--HTTP + m_mapParam["proxyaddr"] = ""; + m_mapParam["proxyport"] = 0; + m_mapParam["proxyauth"] = false; + m_mapParam["proxyuser"] = ""; + m_mapParam["proxypassword"] = ""; + + m_mapParam["maxidle"] = 180; + m_mapParam["antiidlestring"] = "^@"; + m_mapParam["bautoreply"] = true; + m_mapParam["replykey"] = "^Z"; + m_mapParam["autoreply"] = "(QTerm) Sorry, I am not around"; + m_mapParam["reconnect"] = false; + m_mapParam["interval"] = 2; + m_mapParam["retrytimes"] = -1; + m_mapParam["loadscript"] = false; + m_mapParam["scriptfile"] = ""; + + m_mapParam["menutype"] = 2; + m_mapParam["menucolor"] = QColor(0,65,132); + } Param::Param( const Param & param ) { - m_strName = param.m_strName; - m_strAddr = param.m_strAddr; - m_uPort = param.m_uPort; - m_nHostType = param.m_nHostType; // 0--BBS 1--*NIX - m_bAutoLogin = param.m_bAutoLogin; - m_strPreLogin = param.m_strPreLogin; - m_strUser = param.m_strUser; - m_strPasswd = param.m_strPasswd; - m_strPostLogin = param.m_strPostLogin; -// Display - m_BBSCode = param.m_BBSCode; - m_nDispCode = param.m_nDispCode; - m_bAutoFont = param.m_bAutoFont; - m_bAlwaysHighlight = param.m_bAlwaysHighlight; - m_bAnsiColor = param.m_bAnsiColor; - m_strASCIIFontName = param.m_strASCIIFontName; - m_strGeneralFontName = param.m_strGeneralFontName; - m_nFontSize = param.m_nFontSize; - m_strSchemeFile = param.m_strSchemeFile; -// Terminal - m_strTerm = param.m_strTerm; - m_strKeyboardProfile = param.m_strKeyboardProfile; - m_nCol = param.m_nCol; - m_nRow = param.m_nRow; - m_nScrollLines = param.m_nScrollLines; - m_nCursorType = param.m_nCursorType; // 0--Block 1--Underline 2--I Type - m_strEscape = param.m_strEscape; // 0--ESC ESC 1--Ctrl+u -// Connection - m_nProxyType = param.m_nProxyType; // 0--None 1--Wingate 2--SOCKS4 3--SOCKS5 4--HTTP - m_strProxyHost = param.m_strProxyHost; - m_uProxyPort = param.m_uProxyPort; - m_bAuth = param.m_bAuth; - m_strProxyUser = param.m_strProxyUser; - m_strProxyPasswd = param.m_strProxyPasswd; - m_nProtocolType = param.m_nProtocolType; // 0--Telnet 1--SSH1 2--SSH2 -// Misc - m_nMaxIdle = param.m_nMaxIdle; - m_strReplyKey = param.m_strReplyKey; - m_strAntiString = param.m_strAntiString; - m_bAutoReply = param.m_bAutoReply; - m_strAutoReply = param.m_strAutoReply; - m_bReconnect = param.m_bReconnect; - m_nReconnectInterval = param.m_nReconnectInterval; - m_nRetry = param.m_nRetry; - m_bLoadScript = param.m_bLoadScript; - m_strScriptFile = param.m_strScriptFile; -// Mouse - m_nMenuType = param.m_nMenuType; - m_clrMenu = param.m_clrMenu; + m_mapParam = param.m_mapParam; } Param::~Param() @@ -123,56 +79,7 @@ Param& Param::operator=(const Param& param) { - m_strName = param.m_strName; - m_strAddr = param.m_strAddr; - m_uPort = param.m_uPort; - m_nHostType = param.m_nHostType; // 0--BBS 1--*NIX - m_bAutoLogin = param.m_bAutoLogin; - m_strPreLogin = param.m_strPreLogin; - m_strUser = param.m_strUser; - m_strPasswd = param.m_strPasswd; - m_strPostLogin = param.m_strPostLogin; -// Display - m_BBSCode = param.m_BBSCode; - m_nDispCode = param.m_nDispCode; - m_bAutoFont = param.m_bAutoFont; - m_bAlwaysHighlight = param.m_bAlwaysHighlight; - m_bAnsiColor = param.m_bAnsiColor; - m_strASCIIFontName = param.m_strASCIIFontName; - m_strGeneralFontName = param.m_strGeneralFontName; - m_nFontSize = param.m_nFontSize; - m_strSchemeFile = param.m_strSchemeFile; -// Terminal - m_strTerm = param.m_strTerm; - m_strKeyboardProfile = param.m_strKeyboardProfile; - m_nCol = param.m_nCol; - m_nRow = param.m_nRow; - m_nScrollLines = param.m_nScrollLines; - m_nCursorType = param.m_nCursorType; // 0--Block 1--Underline 2--I Type - m_strEscape = param.m_strEscape; // 0--ESC ESC 1--Ctrl+u -// Connection - m_nProxyType = param.m_nProxyType; // 0--None 1--Wingate 2--SOCKS4 3--SOCKS5 4--HTTP - m_strProxyHost = param.m_strProxyHost; - m_uProxyPort = param.m_uProxyPort; - m_bAuth = param.m_bAuth; - m_strProxyUser = param.m_strProxyUser; - m_strProxyPasswd = param.m_strProxyPasswd; - m_nProtocolType = param.m_nProtocolType; // 0--Telnet 1--SSH1 2--SSH2 -// Misc - m_nMaxIdle = param.m_nMaxIdle; - m_strReplyKey = param.m_strReplyKey; - m_strAntiString = param.m_strAntiString; - m_bAutoReply = param.m_bAutoReply; - m_strAutoReply = param.m_strAutoReply; - m_bReconnect = param.m_bReconnect; - m_nReconnectInterval = param.m_nReconnectInterval; - m_nRetry = param.m_nRetry; - m_bLoadScript = param.m_bLoadScript; - m_strScriptFile = param.m_strScriptFile; -// Mouse - m_nMenuType = param.m_nMenuType; - m_clrMenu = param.m_clrMenu; - + m_mapParam = param.m_mapParam; return *this; } Modified: trunk/qterm-qt4/src/qtermscreen.cpp =================================================================== --- trunk/qterm-qt4/src/qtermscreen.cpp 2010-07-10 18:30:51 UTC (rev 1204) +++ trunk/qterm-qt4/src/qtermscreen.cpp 2010-07-15 13:13:53 UTC (rev 1205) @@ -177,7 +177,7 @@ int linelength = m_pBuffer->at(m_pBuffer->caretY())->getLength(); int startx = m_pBuffer->caretX(); - switch (m_pParam->m_nCursorType) { + switch (m_pParam->m_mapParam["cursor"].toInt()) { case 0: // block if (startx < linelength) { drawLine(painter, m_pBuffer->caretY(), startx, startx, false); @@ -231,7 +231,7 @@ // } // m_pCanvas = new QPixmap(width(), height()); - if (m_pParam->m_bAutoFont) { + if (m_pParam->m_mapParam["autofont"].toBool()) { updateFont(); } else { int cx = m_rcClient.width() / m_nCharWidth; @@ -310,8 +310,10 @@ if (m_pGeneralFont != NULL) { delete m_pGeneralFont; } - m_pASCIIFont = new QFont(m_pParam->m_strASCIIFontName, qMax(8, m_pParam->m_nFontSize)); - m_pGeneralFont = new QFont(m_pParam->m_strGeneralFontName, qMax(8, m_pParam->m_nFontSize)); + m_pASCIIFont = new QFont(m_pParam->m_mapParam["asciifont"].toString(), + qMax(8, m_pParam->m_mapParam["fontsize"].toInt())); + m_pGeneralFont = new QFont(m_pParam->m_mapParam["generalfont"].toString(), + qMax(8, m_pParam->m_mapParam["fontsize"].toInt())); m_pASCIIFont->setWeight(QFont::Normal); m_pGeneralFont->setWeight(QFont::Normal); @@ -390,8 +392,8 @@ delete m_pASCIIFont; } m_pASCIIFont = new QFont(font); - m_pASCIIFont->setPixelSize(qMax(8,m_pParam->m_nFontSize)); - m_pGeneralFont->setPixelSize(qMax(8,m_pParam->m_nFontSize)); + m_pASCIIFont->setPixelSize(qMax(8,m_pParam->m_mapParam["fontsize"].toInt())); + m_pGeneralFont->setPixelSize(qMax(8,m_pParam->m_mapParam["fontsize"].toInt())); QResizeEvent* re = new QResizeEvent(size(), size()); resizeEvent(re); } @@ -402,8 +404,8 @@ delete m_pGeneralFont; } m_pGeneralFont = new QFont(font); - m_pASCIIFont->setPixelSize(qMax(8,m_pParam->m_nFontSize)); - m_pGeneralFont->setPixelSize(qMax(8,m_pParam->m_nFontSize)); + m_pASCIIFont->setPixelSize(qMax(8,m_pParam->m_mapParam["fontsize"].toInt())); + m_pGeneralFont->setPixelSize(qMax(8,m_pParam->m_mapParam["fontsize"].toInt())); m_pMessage->setFont(*m_pGeneralFont); QResizeEvent* re = new QResizeEvent(size(), size()); resizeEvent(re); @@ -411,9 +413,9 @@ void Screen::fontSizeChanged(int value) { - m_pParam->m_nFontSize = value; - m_pASCIIFont->setPixelSize(qMax(8,m_pParam->m_nFontSize)); - m_pGeneralFont->setPixelSize(qMax(8,m_pParam->m_nFontSize)); + m_pParam->m_mapParam["fontsize"] = value; + m_pASCIIFont->setPixelSize(qMax(8,value)); + m_pGeneralFont->setPixelSize(qMax(8,value)); QResizeEvent* re = new QResizeEvent(size(), size()); resizeEvent(re); } @@ -430,7 +432,7 @@ int Screen::fontSize() { - return m_pParam->m_nFontSize; + return m_pParam->m_mapParam["fontsize"].toInt(); } /* ------------------------------------------------------------------------ */ @@ -461,12 +463,12 @@ m_nPxmType = 0; - + QString strSchemeFile = m_pParam->m_mapParam["schemefile"].toString(); // if we have scheme defined - if (QFile::exists(m_pParam->m_strSchemeFile)) { + if (QFile::exists(strSchemeFile)) { -// printf("scheme %s loaded sucessfully\n", m_pParam->m_strSchemeFile); - Config *pConf = new Config(m_pParam->m_strSchemeFile); +// printf("scheme %s loaded sucessfully\n", strSchemeFile); + Config *pConf = new Config(strSchemeFile); m_color[0].setNamedColor(pConf->getItemValue("color", "color0").toString()); m_color[1].setNamedColor(pConf->getItemValue("color", "color1").toString()); @@ -495,7 +497,7 @@ return; } QStringList schemeList = schemeDialog::loadSchemeList(); - m_pParam->m_strSchemeFile = schemeList[index]; + m_pParam->m_mapParam["schemefile"] = schemeList[index]; setScheme(); QResizeEvent* re = new QResizeEvent(size(), size()); resizeEvent(re); @@ -866,7 +868,7 @@ for (int y = tlPoint.y(); y <= brPoint.y(); y++) { drawLine(painter, y); - //if( m_pBBS->isSelected(y)&&m_pParam->m_nMenuType==1 ) + //if( m_pBBS->isSelected(y)&&m_pParam->m_mapParam["menutype"].toInt()==1 ) //{ // QRect rcMenu = mapToRect(m_pBBS->getSelectRect()); // QPixmap pxm(rcMenu.width(), rcMenu.height()); @@ -918,7 +920,7 @@ if (complete == true && m_pBBS->isSelected(index)) { drawMenuSelect(painter, index); - if (m_pParam -> m_nMenuType == 1) { + if (m_pParam->m_mapParam["menutype"].toInt() == 1) { bReverse = true; } beginx = 0; @@ -959,7 +961,7 @@ //qDebug() << "startx: " << startx << " i: " << i << " string: " << strShow; // There should be only one. // TODO: Rewrite this when we want to do more than char to char convert - strShow = Global::instance()->convert(pTextLine->getText(startx, len), (Global::Conversion)m_pParam->m_nDispCode); + strShow = Global::instance()->convert(pTextLine->getText(startx, len), (Global::Conversion)m_pParam->m_mapParam["displaycode"].toInt()); if (strShow.isEmpty()) { qDebug("drawLine: empty string?"); @@ -1001,7 +1003,7 @@ char ea = GETATTR(attribute); // test bold mask or always highlighted - if (GETBOLD(ea) || m_pParam->m_bAlwaysHighlight) + if (GETBOLD(ea) || m_pParam->m_mapParam["alwayshighlight"].toBool()) cp = SETHIGHLIGHT(cp); // use 8-15 color // test dim mask if (GETDIM(ea)) { @@ -1042,11 +1044,11 @@ return; } - painter.setPen(m_color[m_pParam->m_bAnsiColor||GETFG(cp)==0?GETFG(cp):7]); + painter.setPen(m_color[m_pParam->m_mapParam["ansicolor"].toBool()||GETFG(cp)==0?GETFG(cp):7]); if (GETBG(cp) != 0 && !transparent) { painter.setBackgroundMode(Qt::OpaqueMode); - painter.setBackground(m_color[m_pParam->m_bAnsiColor||GETBG(cp)==7?GETBG(cp):0]); + painter.setBackground(m_color[m_pParam->m_mapParam["ansicolor"].toBool()||GETBG(cp)==7?GETBG(cp):0]); } else painter.setBackgroundMode(Qt::TransparentMode); @@ -1099,12 +1101,12 @@ if (m_pBBS->isSelected(index)) { rcMenu = mapToRect(m_pBBS->getSelectRect().intersected(QRect(0,index,m_pBuffer->columns(), 1))); - switch (m_pParam->m_nMenuType) { + switch (m_pParam->m_mapParam["menutype"].toInt()) { case 0: // underline painter.fillRect(rcMenu.x(), rcMenu.y() + 10*m_nCharHeight / 11, rcMenu.width(), m_nCharHeight / 11, m_color[7]); break; case 2: - painter.fillRect(rcMenu, QBrush(m_pParam->m_clrMenu)); + painter.fillRect(rcMenu, QBrush(m_pParam->m_mapParam["menucolor"].value<QColor>())); break; } } Modified: trunk/qterm-qt4/src/qtermwindow.cpp =================================================================== --- trunk/qterm-qt4/src/qtermwindow.cpp 2010-07-10 18:30:51 UTC (rev 1204) +++ trunk/qterm-qt4/src/qtermwindow.cpp 2010-07-15 13:13:53 UTC (rev 1205) @@ -260,26 +260,28 @@ #endif // SCRIPT_ENABLED //init the textline list - m_codec = QTextCodec::codecForName(param.m_BBSCode.toLatin1()); - m_pBuffer = new Buffer(m_param.m_nRow, m_param.m_nCol, m_param.m_nScrollLines); - if (param.m_nProtocolType == 0) - m_pTelnet = new Telnet(m_param.m_strTerm, - m_param.m_nRow, m_param.m_nCol, false); + QString strTerm = m_param.m_mapParam["termtype"].toString(); + int nColumn = m_param.m_mapParam["column"].toInt(); + int nRow = m_param.m_mapParam["row"].toInt(); + int nScroll = m_param.m_mapParam["scroll"].toInt(); + + m_codec = QTextCodec::codecForName(param.m_mapParam["bbscode"].toString().toLatin1()); + m_pBuffer = new Buffer(nRow, nColumn, nScroll); + if (param.m_mapParam["protocol"] == 0) + m_pTelnet = new Telnet(strTerm, nRow, nColumn, false); else { #ifndef SSH_ENABLED QMessageBox::warning(this, "QTerm", tr("SSH support is not compiled, QTerm can only use Telnet!")); - m_pTelnet = new Telnet(m_param.m_strTerm, - m_param.m_nRow, m_param.m_nCol, false); + m_pTelnet = new Telnet(strTerm, nRow, nColumn, false); #else - m_pTelnet = new Telnet(m_param.m_strTerm, - m_param.m_nRow, m_param.m_nCol, true); + m_pTelnet = new Telnet(strTerm, nRow, nColumn, true); #endif } connect(m_pBuffer, SIGNAL(windowSizeChanged(int, int)), m_pTelnet, SLOT(windowSizeChanged(int, int))); m_pZmDialog = new zmodemDialog(this); - m_pZmodem = new Zmodem(this, m_pTelnet, m_codec, param.m_nProtocolType); + m_pZmodem = new Zmodem(this, m_pTelnet, m_codec, param.m_mapParam["protocol"].toInt()); if (m_codec == 0) { qDebug("Fallback to GBK codec"); @@ -347,7 +349,7 @@ m_bColorCopy = false; m_bRectCopy = false; m_bAntiIdle = true; - m_bAutoReply = m_param.m_bAutoReply; + m_bAutoReply = m_param.m_mapParam["bautoreply"].toBool(); m_bBeep = !( #ifndef PHONON_ENABLED Global::instance()->m_pref.strPlayer.isEmpty() || @@ -357,7 +359,7 @@ m_bWordWrap = false; m_bAutoCopy = true; m_bMessage = false; - m_bReconnect = m_param.m_bReconnect; + m_bReconnect = m_param.m_mapParam["reconnect"].toBool(); m_pDAThread = 0; m_bConnected = false; @@ -366,7 +368,7 @@ m_bMouseX11 = false; m_bMouseClicked = false; #ifdef SSH_ENABLED - if (param.m_nProtocolType != 0) + if (param.m_mapParam["protocol"].toInt() != 0) m_bDoingLogin = true; else #endif @@ -387,7 +389,7 @@ initScript(); - loadKeyboardTranslator(param.m_strKeyboardProfile); + loadKeyboardTranslator(param.m_mapParam["keyboardprofile"].toString()); connectHost(); } @@ -452,7 +454,7 @@ m_bIdling = true; // system script can handle that #ifdef SCRIPT_ENABLED - if (m_scriptEngine != NULL && m_param.m_bLoadScript) { + if (m_scriptEngine != NULL && m_param.m_mapParam["loadscript"].toBool()) { QScriptValue func = m_scriptEngine->globalObject().property("QTerm").property("antiIdle"); if (func.isFunction()) { func.call(); @@ -470,7 +472,7 @@ #endif // the default function int length; - QByteArray cstr = parseString(m_param.m_strAntiString.toLocal8Bit(), &length); + QByteArray cstr = parseString(m_param.m_mapParam["antiidlestring"].toString().toLocal8Bit(), &length); m_pTelnet->write(cstr, length); } @@ -499,7 +501,7 @@ void Window::mouseDoubleClickEvent(QMouseEvent * me) { #ifdef SCRIPT_ENABLED - if (m_scriptEngine != NULL && m_param.m_bLoadScript) { + if (m_scriptEngine != NULL && m_param.m_mapParam["loadscript"].toBool()) { QScriptValue func = m_scriptEngine->globalObject().property("QTerm").property("onMouseEvent"); if (func.isFunction()) { func.call(QScriptValue(), QScriptValueList() << 3 << (int) me->button() << (int) me->buttons() << (int) me->modifiers() << me->x() << me->y()); @@ -535,7 +537,7 @@ } #ifdef SCRIPT_ENABLED - if (m_scriptEngine != NULL && m_param.m_bLoadScript) { + if (m_scriptEngine != NULL && m_param.m_mapParam["loadscript"].toBool()) { QScriptValue func = m_scriptEngine->globalObject().property("QTerm").property("onMouseEvent"); if (func.isFunction()) { func.call(QScriptValue(), QScriptValueList() << 0 << (int) me->button() << (int) me->buttons() << (int) me->modifiers() << me->x() << me->y()); @@ -607,7 +609,7 @@ } #ifdef SCRIPT_ENABLED - if (m_scriptEngine != NULL && m_param.m_bLoadScript) { + if (m_scriptEngine != NULL && m_param.m_mapParam["loadscript"].toBool()) { QScriptValue func = m_scriptEngine->globalObject().property("QTerm").property("onMouseEvent"); if (func.isFunction()) { func.call(QScriptValue(), QScriptValueList() << 2 << (int) me->button() << (int) me->buttons() << (int) me->modifiers() << me->x() << me->y()); @@ -681,7 +683,7 @@ #ifdef SCRIPT_ENABLED - if (m_scriptEngine != NULL && m_param.m_bLoadScript) { + if (m_scriptEngine != NULL && m_param.m_mapParam["loadscript"].toBool()) { QScriptValue func = m_scriptEngine->globalObject().property("QTerm").property("onMouseEvent"); if (func.isFunction()) { func.call(QScriptValue(), QScriptValueList() << 1 << (int) me->button() << (int) me->buttons() << (int) me->modifiers() << me->x() << me->y()); @@ -762,7 +764,7 @@ void Window::wheelEvent(QWheelEvent *we) { #ifdef SCRIPT_ENABLED - if (m_scriptEngine != NULL && m_param.m_bLoadScript) { + if (m... [truncated message content] |