summaryrefslogtreecommitdiff
path: root/src/ui/quickdialog.cpp
diff options
context:
space:
mode:
authoriroul <iroul@iroul-VirtualBox.(none)>2014-04-04 07:35:14 -0700
committeriroul <iroul@iroul-VirtualBox.(none)>2014-04-04 07:35:14 -0700
commitafd34f2893a06a3aecf17e8e83b1df6ed2ae91a2 (patch)
tree851102abc55d91a1b76e63e9e89f9a7733da95b5 /src/ui/quickdialog.cpp
parentc4b028ad53f7b362a864de24828d7cc39ff67b0a (diff)
downloadfqterm-afd34f2893a06a3aecf17e8e83b1df6ed2ae91a2.tar.xz
move to my github.
Diffstat (limited to 'src/ui/quickdialog.cpp')
-rw-r--r--src/ui/quickdialog.cpp258
1 files changed, 258 insertions, 0 deletions
diff --git a/src/ui/quickdialog.cpp b/src/ui/quickdialog.cpp
new file mode 100644
index 0000000..1ac3888
--- /dev/null
+++ b/src/ui/quickdialog.cpp
@@ -0,0 +1,258 @@
+/***************************************************************************
+ * fqterm, a terminal emulator for both BBS and *nix. *
+ * Copyright (C) 2008 fqterm development group. *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. *
+ ***************************************************************************/
+
+#include <stdio.h>
+
+#include <QCloseEvent>
+#include <QComboBox>
+#include <QPixmap>
+#include <QImage>
+#include <QPixmap>
+#include <QMessageBox>
+
+#include "fqterm_trace.h"
+#include "fqterm_path.h"
+#include "fqterm_config.h"
+#include "fqterm_param.h"
+#include "addrdialog.h"
+#include "quickdialog.h"
+
+namespace FQTerm {
+
+//extern QString fileCfg;
+//extern QString addrCfg;
+
+extern void saveAddress(FQTermConfig *, int, const FQTermParam &);
+
+const int quickDialog::ports[3] = {23, 22, 22};
+
+quickDialog::quickDialog(FQTermConfig * config, QWidget *parent, Qt::WFlags fl)
+ : QDialog(parent, fl),
+ config_(config) {
+ ui_.setupUi(this);
+
+ ui_.addPushButton->setIcon(QPixmap(getPath(RESOURCE) + "pic/address_book.png"));
+
+ ui_.addPushButton->setToolTip(tr("Add To AddressBook"));
+
+ ui_.connectPushButton->setDefault(true);
+
+ connectSlots();
+
+ loadHistory();
+
+// adjustSize();
+// setFixedSize(size());
+
+}
+
+quickDialog::~quickDialog() {
+}
+
+void quickDialog::closeEvent(QCloseEvent*) {
+ config_->save(getPath(USER_CONFIG) + "fqterm.cfg");
+ reject();
+}
+
+void quickDialog::loadHistory() {
+ QString defaultIndex = config_->getItemValue("global", "quickdefaultindex");
+ if (defaultIndex.isEmpty()) {
+ config_->setItemValue("global", "quick default index", "0");
+ defaultIndex = "0";
+ }
+ QString strTmp = config_->getItemValue("quick list", "num");
+ QString strSection;
+ for (int i = 0; i < strTmp.toInt(); i++) {
+ strSection = QString("quick %1").arg(i);
+ ui_.historyComboBox->addItem(config_->getItemValue(strSection.toLatin1(), "addr"));
+ }
+
+ int index = defaultIndex.toInt();
+ if (strTmp.toInt() > index) {
+ ui_.historyComboBox->setCurrentIndex(index);
+ listChanged(index);
+ }
+}
+
+void quickDialog::connectSlots() {
+ FQ_VERIFY(connect(ui_.historyComboBox, SIGNAL(activated(int)), this, SLOT(listChanged(int))));
+ FQ_VERIFY(connect(ui_.protocolComboBox, SIGNAL(activated(int)), this, SLOT(onSelectProtocol(int))));
+ FQ_VERIFY(connect(ui_.addPushButton, SIGNAL(clicked()), this, SLOT(onAdd())));
+ FQ_VERIFY(connect(ui_.deletePushButton, SIGNAL(clicked()), this, SLOT(onDelete())));
+ FQ_VERIFY(connect(ui_.advPushButton, SIGNAL(clicked()), this, SLOT(onAdvance())));
+ FQ_VERIFY(connect(ui_.connectPushButton, SIGNAL(clicked()), this, SLOT(onConnect())));
+ FQ_VERIFY(connect(ui_.closePushButton, SIGNAL(clicked()), this, SLOT(onClose())));
+}
+
+void quickDialog::listChanged(int index) {
+ QString strTmp = config_->getItemValue("quick list", "num");
+ if (strTmp == "0") {
+ return ;
+ }
+ loadParam(index);
+ setUIFromParam();
+}
+
+void quickDialog::onAdd() {
+ setParamFromUI();
+
+ FQTermConfig *pAddrConf = new FQTermConfig(getPath(USER_CONFIG) + "address.cfg");
+ QString strTmp;
+ strTmp = pAddrConf->getItemValue("bbs list", "num");
+ int num = strTmp.toInt();
+ strTmp.setNum(num + 1);
+ pAddrConf->setItemValue("bbs list", "num", strTmp);
+ saveAddress(pAddrConf, num, param_);
+ pAddrConf->save(getPath(USER_CONFIG) + "address.cfg");
+}
+
+void quickDialog::onDelete() {
+ int index = ui_.historyComboBox->currentIndex();
+
+ QString strTmp = config_->getItemValue("quick list", "num");
+ int num = strTmp.toInt();
+
+ if (num != 0 && index != -1) {
+ QString strSection = QString("quick %1").arg(index);
+ if (!config_->deleteSection(strSection.toLatin1())) {
+ return ;
+ }
+ ui_.historyComboBox->removeItem(index);
+
+ for (int i = index + 1; i < num; i++) {
+ strTmp = QString("quick %1").arg(i);
+ strSection = QString("quick %1").arg(i - 1);
+ config_->renameSection(strTmp.toLatin1(), strSection.toLatin1());
+ }
+
+ strTmp = config_->getItemValue("quick list", "num");
+ strTmp.setNum(qMax(0, strTmp.toInt() - 1));
+ config_->setItemValue("quick list", "num", strTmp.toLatin1());
+
+ // update
+ if (num > 1) {
+ ui_.historyComboBox->setCurrentIndex(qMin(index, num - 2));
+ listChanged(qMin(index, num - 2));
+ }
+ }
+}
+
+void quickDialog::onAdvance() {
+ setParamFromUI();
+
+ addrDialog set(this, param_, addrDialog::APPLY);
+
+ if (set.exec() == 1) {
+ param_ = set.param();
+ setUIFromParam();
+ }
+}
+
+void quickDialog::onConnect() {
+ if (ui_.historyComboBox->currentText().isEmpty() || ui_.portEdit->text().isEmpty()) {
+ QMessageBox mb("FQTerm", "address or port cant be blank", QMessageBox::Warning,
+ QMessageBox::Ok | QMessageBox::Default, 0, 0);
+ mb.exec();
+ return ;
+ }
+
+ setParamFromUI();
+ FQTermParam newParam = param_;
+ loadParam(ui_.historyComboBox->currentIndex());
+
+ QString strTmp = config_->getItemValue("quick list", "num");
+ if (strTmp.isEmpty() || strTmp == "-1") {
+ strTmp = "0";
+ }
+ int num = strTmp.toInt();
+ if (ui_.historyComboBox->currentIndex() == -1 ||
+ newParam.hostAddress_ != param_.hostAddress_ ||
+ newParam.protocolType_ != param_.protocolType_ ||
+ newParam.port_ != param_.port_) {
+ //changed. add new info
+ param_ = newParam;
+ saveParam(num);
+ ui_.historyComboBox->addItem(param_.hostAddress_);
+ ui_.historyComboBox->setCurrentIndex(num);
+ config_->setItemValue("quick list", "num", QString("%1").arg(num + 1));
+ } else {
+ param_ = newParam;
+ }
+
+ config_->setItemValue("global", "quickdefaultindex",
+ QString("%1").arg(ui_.historyComboBox->currentIndex()));
+ done(1);
+}
+
+void quickDialog::onClose() {
+ done(0);
+}
+
+void quickDialog::onSelectProtocol(int index)
+{
+ ui_.portCheck->setChecked(false);
+ ui_.portEdit->setText(QString("%1").arg(ports[index]));
+}
+
+void quickDialog::setUIFromParam()
+{
+ ui_.historyComboBox->setItemText(ui_.historyComboBox->currentIndex(), param_.hostAddress_);
+ ui_.protocolComboBox->setCurrentIndex(param_.protocolType_);
+ ui_.portEdit->setText(QString("%1").arg(param_.port_));
+ if (param_.port_ != ports[param_.protocolType_]) {
+ ui_.portCheck->setChecked(true);
+ }
+ else {
+ ui_.portCheck->setChecked(false);
+ }
+}
+
+void quickDialog::setParamFromUI()
+{
+ param_.name_ = ui_.historyComboBox->currentText();
+ param_.hostAddress_ = ui_.historyComboBox->currentText();
+ param_.protocolType_ = ui_.protocolComboBox->currentIndex();
+ bool ok;
+ param_.port_ = ui_.portEdit->text().toInt(&ok);
+ if (!ok) {
+ param_.port_ = ports[param_.protocolType_];
+ }
+}
+
+void quickDialog::loadParam(int index)
+{
+ param_ = FQTermParam();
+ QString strSection = QString("quick %1").arg(index);
+ param_.name_ = config_->getItemValue(strSection, "addr");
+ param_.hostAddress_ = param_.name_;
+ param_.protocolType_ = config_->getItemValue(strSection, "protocol").toInt();
+ param_.port_ = config_->getItemValue(strSection, "port").toInt();
+}
+
+void quickDialog::saveParam(int index)
+{
+ QString strSection = QString("quick %1").arg(index);
+ config_->setItemValue(strSection, "addr", param_.hostAddress_);
+ config_->setItemValue(strSection, "protocol", QString("%1").arg(param_.protocolType_));
+ config_->setItemValue(strSection, "port", QString("%1").arg(param_.port_));
+}
+} // namespace FQTerm
+
+#include "quickdialog.moc"