From: <si...@us...> - 2010-07-29 14:30:29
|
Revision: 1208 http://qterm.svn.sourceforge.net/qterm/?rev=1208&view=rev Author: sidos Date: 2010-07-29 14:30:19 +0000 (Thu, 29 Jul 2010) Log Message: ----------- XML-ize address book Modified Paths: -------------- trunk/qterm-qt4/src/addrdialog.cpp trunk/qterm-qt4/src/addrdialog.h trunk/qterm-qt4/src/dommodel.cpp trunk/qterm-qt4/src/dommodel.h trunk/qterm-qt4/src/qtermframe.cpp trunk/qterm-qt4/src/qtermframe.h trunk/qterm-qt4/src/qtermglobal.cpp trunk/qterm-qt4/src/qtermwindow.cpp trunk/qterm-qt4/src/qtermwindow.h trunk/qterm-qt4/src/quickdialog.cpp Modified: trunk/qterm-qt4/src/addrdialog.cpp =================================================================== --- trunk/qterm-qt4/src/addrdialog.cpp 2010-07-22 06:19:17 UTC (rev 1207) +++ trunk/qterm-qt4/src/addrdialog.cpp 2010-07-29 14:30:19 UTC (rev 1208) @@ -76,7 +76,7 @@ QMap<QString, QString> listFavorite = Global::instance()->loadFavoriteList(doc); if (listFavorite.count() > 0) { - Global::instance()->loadAddress(doc, listFavorite.keys().at(0), param); + //Global::instance()->loadAddress(doc, listFavorite.keys().at(0), param); ui.nameTreeView->setCurrentIndex(domModel->index(0,0,domModel->index(0,0))); } else // the default Global::instance()->loadAddress(doc, QUuid().toString(), param); @@ -93,6 +93,11 @@ { } +QString addrDialog :: uuid() +{ + return domModel->data(lastIndex, Qt::UserRole).toString(); +} + void addrDialog::updateSchemeList() { ui.schemeComboBox->clear(); @@ -145,23 +150,25 @@ QMenu menu; QAction *actionFolder=0, *actionFavorite=0, *actionRemove=0, *actionSite; - if (type != DomModel::Favorite) { - actionFolder = menu.addAction("New Folder"); - if (type != DomModel::Unknown) { - actionSite = menu.addAction("New Site"); - actionRemove = menu.addAction("Remove"); - } + + actionFolder = menu.addAction(tr("New Folder")); + actionSite = menu.addAction(tr("New Site")); + + if (type != DomModel::Unknown) { + actionRemove = menu.addAction(tr("Remove")); } - if (type == DomModel::Site && parentType != DomModel::Favorite) { - actionFavorite = menu.addAction("Add to favorite"); + if (type == DomModel::Site ) { + actionFavorite = menu.addAction(tr("Add Favorite")); } - - QAction *actionActive = menu.exec(mapToGlobal(point)); + if (type == DomModel::Favorite) { + actionFavorite = menu.addAction(tr("Clear Favorite")); + } + QAction *actionActive = menu.exec(mapToGlobal(point),actionFolder); if (actionActive != 0) { if (actionActive == actionFolder) domModel->addFolder(index); else if (actionActive == actionFavorite) - domModel->addFavorite(index); + domModel->toggleFavorite(index); else if (actionActive == actionSite) domModel->addSite(index); else if (actionActive == actionRemove) @@ -171,6 +178,9 @@ void addrDialog::onNamechange(const QModelIndex & index) { + if (domModel->type(index) == DomModel::Folder) + return; + if (isChanged()) { QMessageBox mb("QTerm", tr("Setting changed, do you want to save?"), @@ -208,11 +218,14 @@ void addrDialog::onClose() { if (!bPartial) - Global::instance()->addrCfg()->save(); + Global::instance()->saveAddressXml(domModel->document()); done(0); } void addrDialog::onConnect(const QModelIndex & index) { + if (domModel->type(index) == DomModel::Folder) + return; + if (isChanged()) { QMessageBox mb("QTerm", tr("Setting changed, do you want to save?"), @@ -224,7 +237,7 @@ onApply(); } if (!bPartial) - Global::instance()->addrCfg()->save(); + Global::instance()->saveAddressXml(domModel->document()); done(1); } Modified: trunk/qterm-qt4/src/addrdialog.h =================================================================== --- trunk/qterm-qt4/src/addrdialog.h 2010-07-22 06:19:17 UTC (rev 1207) +++ trunk/qterm-qt4/src/addrdialog.h 2010-07-29 14:30:19 UTC (rev 1208) @@ -27,6 +27,7 @@ Param param; void updateData(bool save); + QString uuid(); protected slots: void onNamechange(const QModelIndex & index); Modified: trunk/qterm-qt4/src/dommodel.cpp =================================================================== --- trunk/qterm-qt4/src/dommodel.cpp 2010-07-22 06:19:17 UTC (rev 1207) +++ trunk/qterm-qt4/src/dommodel.cpp 2010-07-29 14:30:19 UTC (rev 1208) @@ -170,13 +170,13 @@ return item->name(); break; case Qt::DecorationRole: - if (item->isFolder()) { - if (item->name() == "favorite") + switch (type(index)) { + case Folder: + return QVariant(QIcon(":/pic/folder.png")); + case Favorite: return QVariant(QIcon(":/pic/folder_favorite.png")); - else - return QVariant(QIcon(":/pic/folder.png")); - } else if (item->isSiteReference()) { - return QVariant(QIcon(":/pic/tabpad.png")); + case Site: + return QVariant(QIcon(":/pic/tabpad.png")); } default: return QVariant(); @@ -189,14 +189,13 @@ DomItem *item = static_cast<DomItem*>(index.internalPointer()); ItemType itemType = type(index); + defaultFlags |= Qt::ItemIsDragEnabled; if (itemType == Folder) - return Qt::ItemIsDropEnabled | Qt::ItemIsEditable | Qt::ItemIsDragEnabled | defaultFlags; - else if (itemType == Favorite) // Favorite is special thus not editable + return Qt::ItemIsDropEnabled | Qt::ItemIsEditable | defaultFlags; + else if (itemType == Site) return defaultFlags; - else if (itemType == Site) - return Qt::ItemIsDragEnabled | defaultFlags; else - return defaultFlags | Qt::ItemIsDragEnabled | Qt::ItemIsDragEnabled; + return Qt::ItemIsDropEnabled | defaultFlags; } QVariant DomModel::headerData(int section, Qt::Orientation orientation, @@ -247,14 +246,22 @@ return Unknown; DomItem *item = static_cast<DomItem*>(index.internalPointer()); - if (item->isFolder()) { - if (item->name() == "favorite") - return Favorite; - else - return Folder; - } else - return Site; - + if (item->isFolder()) + return Folder; + else if (item->isSiteReference()) { + QString uuid = data(index, Qt::UserRole).toString(); + // get favor attributes + QDomNodeList siteList = domDocument.elementsByTagName("site"); + for (int i=0; i<siteList.count(); i++) { + QDomElement element = siteList.item(i).toElement(); + if (element.attribute("uuid") == uuid) + if (element.attribute("favor") == "1") + return Favorite; + else + return Site; + } + } + return Unknown; } int DomModel::rowCount(const QModelIndex &parent) const @@ -434,17 +441,21 @@ insertRow(row, parentIndex, item); } -void DomModel::addFavorite(const QModelIndex &index) +void DomModel::toggleFavorite(const QModelIndex &index) { QString uuid = data(index, Qt::UserRole).toString(); if (QUuid(uuid).isNull()) return; - // Create favorite element - QDomElement favorite = domDocument.createElement("addsite"); - favorite.setAttribute("uuid", uuid); - // Create and insert - DomItem *item = new DomItem(favorite, 0); - insertRow(-1, DomModel::index(0,0,QModelIndex()), item); + // toggle favor attributes + QDomNodeList siteList = domDocument.elementsByTagName("site"); + for (int i=0; i<siteList.count(); i++) { + QDomElement element = siteList.item(i).toElement(); + if (element.attribute("uuid") == uuid) + if (element.attribute("favor") == "1") + element.setAttribute("favor", 0); + else + element.setAttribute("favor", 1); + } } void DomModel::addSite(const QModelIndex &index) @@ -463,7 +474,6 @@ QDomElement newSite = site.cloneNode().toElement(); newSite.setAttribute("uuid", newUuid); QDomElement root = domDocument.documentElement(); - QMessageBox::information(0,root.nodeName(),QString::number(root.childNodes().count())); root.appendChild(newSite); break; } @@ -487,13 +497,14 @@ void DomModel::removeItem(const QModelIndex &index) { - if (type(index) == Folder) - for (int n=0; n<rowCount(index); n++) { + if (type(index) == Folder) { + // recursively remove all children + for (int n=0; n<rowCount(index); n++) removeItem(index.child(n,0)); - } - else if (type(index.parent()) == Favorite) { + // remove folder itself, should be empty now removeRows(index.row(), 1, index.parent()); - } else { + } + else { QString uuid = data(index, Qt::UserRole).toString(); QDomNodeList nodeList; // remove the actual site @@ -504,7 +515,6 @@ domDocument.removeChild(node); } } - // and its reference in favorite // and its reference in folder removeRows(index.row(), 1, index.parent()); } Modified: trunk/qterm-qt4/src/dommodel.h =================================================================== --- trunk/qterm-qt4/src/dommodel.h 2010-07-22 06:19:17 UTC (rev 1207) +++ trunk/qterm-qt4/src/dommodel.h 2010-07-29 14:30:19 UTC (rev 1208) @@ -73,7 +73,7 @@ void addSite(const QModelIndex &position); void addFolder(const QModelIndex &position); - void addFavorite(const QModelIndex &position); + void toggleFavorite(const QModelIndex &position); void removeItem(const QModelIndex &index); QDomDocument document() { return domDocument; } Modified: trunk/qterm-qt4/src/qtermframe.cpp =================================================================== --- trunk/qterm-qt4/src/qtermframe.cpp 2010-07-22 06:19:17 UTC (rev 1207) +++ trunk/qterm-qt4/src/qtermframe.cpp 2010-07-29 14:30:19 UTC (rev 1208) @@ -74,6 +74,7 @@ #include <QtGui/QPrintDialog> #include <QtGui/QPainter> #include <QtDebug> +#include <QUuid> namespace QTerm { @@ -238,7 +239,7 @@ addrDialog addr(this, false); if (addr.exec() == 1) { - newWindow(addr.param);//, addr.ui.nameListWidget->currentRow()); + newWindow(addr.param, addr.uuid()); } } @@ -247,7 +248,7 @@ { quickDialog quick(this); - Global::instance()->loadAddress(-2, quick.param); + Global::instance()->loadAddress(Global::instance()->addrXml(), QUuid().toString(), quick.param); if (quick.exec() == 1) { newWindow(quick.param); @@ -263,7 +264,7 @@ for (int i = 0; i < int(windows.count()); ++i) { if ((qobject_cast<Window *>(windows.at(i)))->isConnected()) { titleList << windows.at(i)->windowTitle(); - sites << qobject_cast<Window *>(windows.at(i))->index(); + sites << qobject_cast<Window *>(windows.at(i))->uuid(); } } if ((!titleList.isEmpty())&&(Global::instance()->m_pref.bWarn)) { @@ -288,7 +289,7 @@ for (int i = 0; i < int(windows.count()); ++i) { if ((qobject_cast<Window *>(windows.at(i)))->isConnected()) { titleList << windows.at(i)->windowTitle(); - sites << qobject_cast<Window *>(windows.at(i))->index(); + sites << qobject_cast<Window *>(windows.at(i))->uuid(); } } @@ -303,9 +304,9 @@ } //create a new display window -void Frame::newWindow(const Param& param, int index) +void Frame::newWindow(const Param& param, const QString& uuid) { - Window * window = new Window(this, param, index, mdiArea, 0); + Window * window = new Window(this, param, uuid, mdiArea, 0); window->setWindowTitle(param.m_mapParam["name"].toString()); window->setWindowIcon(QIcon(":/pic/tabpad.png")); window->setAttribute(Qt::WA_DeleteOnClose); @@ -397,27 +398,32 @@ { connectMenu->clear(); - connectMenu->addAction(tr("Quick Login"), this, SLOT(quickLogin())); + connectMenu->addAction(actionQuick_Login); connectMenu->addSeparator(); - QStringList listName = Global::instance()->loadNameList(); - QSignalMapper * connectMapper = new QSignalMapper(this); + QMap<QString,QString> listSite = Global::instance()->loadFavoriteList( + Global::instance()->addrXml()); + QMapIterator<QString,QString> i(listSite); - for (int i = 0; i < listName.count(); i++) { - QAction * idAction = new QAction(listName[i], connectMenu); + QSignalMapper * connectMapper = new QSignalMapper(this); + + while (i.hasNext()) { + i.next(); + QAction * idAction = new QAction(i.value(), connectMenu); connectMenu->addAction(idAction); connect(idAction, SIGNAL(triggered()), connectMapper, SLOT(map())); - connectMapper->setMapping(idAction, i); - } - connect(connectMapper, SIGNAL(mapped(int)), this, SLOT(connectMenuActivated(int))); + connectMapper->setMapping(idAction, i.key()); + } + connect(connectMapper, SIGNAL(mapped(QString)), this, SLOT(connectMenuActivated(QString))); } -void Frame::connectMenuActivated(int id) +void Frame::connectMenuActivated(const QString& uuid) { Param param; - // FIXME: don't know the relation with id and param setted by setItemParameter - if (Global::instance()->loadAddress(id, param)) - newWindow(param, id); + if (Global::instance()->loadAddress( + Global::instance()->addrXml(), + uuid, param)) + newWindow(param, uuid); } /********************************************************* @@ -542,7 +548,7 @@ { if (mdiArea->activeSubWindow() == NULL) { Param param; - Global::instance()->loadAddress(-1, param); + Global::instance()->loadAddress(Global::instance()->addrXml(), QUuid().toString(), param); newWindow(param); } else if (!qobject_cast<Window *>(mdiArea->activeSubWindow())->isConnected()) @@ -683,16 +689,14 @@ void Frame::on_actionDefault_Session_Setting_triggered() { addrDialog set(this, true); - - if (Global::instance()->addrCfg()->hasSection("default")) - Global::instance()->loadAddress(-1, set.param); - + // load default + Global::instance()->loadAddress(Global::instance()->addrXml(),QUuid().toString(), set.param); set.updateData(false); - if (set.exec() == 1) { - Global::instance()->saveAddress(-1, set.param); - Global::instance()->addrCfg()->save(); - } + QDomDocument doc = Global::instance()->addrXml(); + Global::instance()->saveAddress(doc, QUuid().toString(), set.param); + Global::instance()->saveAddressXml(doc); + } } void Frame::on_actionPreference_triggered() @@ -759,32 +763,33 @@ int i = 0; QShortcut * shortcut = NULL; + // FIXME: map number to favorite site list // shortcuts to addressbook entries - QSignalMapper * addrMapper = new QSignalMapper(this); - for (i = 0; i < 9; i++) { - shortcut = new QShortcut(Qt::CTRL + Qt::ALT + 0x30 + 1 + i, this); - shortcut->setObjectName(QString("Open addressbook enetry %1").arg(i+1)); - connect(shortcut, SIGNAL(activated()), addrMapper, SLOT(map())); - addrMapper->setMapping(shortcut, i); - } - connect(addrMapper, SIGNAL(mapped(int)), this, SLOT(connectMenuActivated(int))); + //QSignalMapper * addrMapper = new QSignalMapper(this); + //for (i = 0; i < 9; i++) { + // shortcut = new QShortcut(Qt::CTRL + Qt::ALT + 0x30 + 1 + i, this); + // shortcut->setObjectName(QString(tr("Open addressbook enetry %1")).arg(i+1)); + // connect(shortcut, SIGNAL(activated()), addrMapper, SLOT(map())); + // addrMapper->setMapping(shortcut, i); + //} + //connect(addrMapper, SIGNAL(mapped(int)), this, SLOT(connectMenuActivated(int))); // shortcuts to swtch windows QSignalMapper * windowMapper = new QSignalMapper(this); for (i = 0; i < 9; i++) { shortcut = new QShortcut(Qt::ALT + 0x30 + 1 + i, this); - shortcut->setObjectName(QString("Switch to window %1").arg(i+1)); + shortcut->setObjectName(QString(tr("Switch to window %1")).arg(i+1)); connect(shortcut, SIGNAL(activated()), windowMapper, SLOT(map())); windowMapper->setMapping(shortcut, i); } shortcut = new QShortcut(Qt::ALT + Qt::Key_Left, this); - shortcut->setObjectName("Previous window"); + shortcut->setObjectName(tr("Previous window")); connect(shortcut, SIGNAL(activated()), windowMapper, SLOT(map())); windowMapper->setMapping(shortcut, 200); shortcut = new QShortcut(Qt::ALT + Qt::Key_Right, this); - shortcut->setObjectName("Next window"); + shortcut->setObjectName(tr("Next window")); connect(shortcut, SIGNAL(activated()), windowMapper, SLOT(map())); windowMapper->setMapping(shortcut, 201); @@ -1090,11 +1095,11 @@ { QList<QVariant> sites = Global::instance()->loadSession(); if (sites.empty()) { - connectMenuActivated(0); + connectMenuActivated(""); } else { for (int i = 0; i < sites.size(); i++) { - int index = sites.at(i).toInt(); - connectMenuActivated(index); + QString uuid = sites.at(i).toString(); + connectMenuActivated(uuid); } } } @@ -1112,7 +1117,7 @@ { // These are actions which are enabled without any subwindow listBasicActions - << "actionNew_Console" + << "actionNew_Console" << "actionConnect" << "actionQuick_Login" << "actionAddressBook" << "actionQuit" << "actionNew_ANSI" << "actionOpen_ANSI" << "actionFont" << "actionStatusbar" << "actionMenubar" << "actionFullscreen" Modified: trunk/qterm-qt4/src/qtermframe.h =================================================================== --- trunk/qterm-qt4/src/qtermframe.h 2010-07-22 06:19:17 UTC (rev 1207) +++ trunk/qterm-qt4/src/qtermframe.h 2010-07-29 14:30:19 UTC (rev 1208) @@ -93,7 +93,7 @@ void windowsMenuAboutToShow(); void windowsMenuActivated(); void connectMenuAboutToShow(); - void connectMenuActivated(int); + void connectMenuActivated(const QString &uuid); void windowActivated(QMdiSubWindow*); void windowClosed(QObject*); @@ -119,7 +119,7 @@ StatusBar *m_pStatusBar; //function - void newWindow(const Param& param, int index = -1); + void newWindow(const Param& param, const QString& uuid=""); void closeEvent(QCloseEvent *); void keyPressEvent(QKeyEvent *); void mouseReleaseEvent(QMouseEvent *); Modified: trunk/qterm-qt4/src/qtermglobal.cpp =================================================================== --- trunk/qterm-qt4/src/qtermglobal.cpp 2010-07-22 06:19:17 UTC (rev 1207) +++ trunk/qterm-qt4/src/qtermglobal.cpp 2010-07-29 14:30:19 UTC (rev 1208) @@ -149,25 +149,10 @@ { QMap<QString,QString> listSite; // import xml address book - QDomElement favorite; - QDomNodeList nodeList = doc.elementsByTagName("folder"); + QDomNodeList nodeList = doc.elementsByTagName("site"); 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"))) + if (node.attribute("favor") == "1") listSite[node.attribute("uuid")] = node.attribute("name"); } @@ -191,6 +176,8 @@ bool Global::loadAddress(QDomDocument doc, QString uuid, Param& param) { + if (uuid.isEmpty()) + uuid = QUuid().toString(); QDomNodeList nodeList = doc.elementsByTagName("site"); for (int i=0; i<nodeList.count(); i++) { QDomElement node = nodeList.at(i).toElement(); @@ -278,7 +265,7 @@ foreach (QString key, param.m_mapParam.keys()) site.setAttribute(key, param.m_mapParam[key].toString()); - doc.appendChild(site); + doc.documentElement().appendChild(site); result = true; } @@ -317,20 +304,6 @@ doc.removeChild(node); } } - // and its reference in favorite - QDomElement favorite; - 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; - } - nodeList = favorite.elementsByTagName("addsite"); - for (int i=0; i<nodeList.count(); i++) { - QDomElement node = nodeList.at(i).toElement(); - if (node.attribute("uuid") == uuid) - favorite.removeChild(node); - } } bool Global::convertAddressBook2XML() @@ -364,21 +337,10 @@ //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; - } - } + QDomElement imported = doc.createElement("folder"); + imported.setAttribute("name", tr("imported sites")); for (int i = -1; i < num; i++) { Param param; @@ -392,7 +354,7 @@ site.setAttribute("uuid", uuid); QDomElement addsite = doc.createElement("addsite"); addsite.setAttribute("uuid", uuid); - favorite.appendChild(addsite); + imported.appendChild(addsite); } foreach(QString key,param.m_mapParam.keys()) site.setAttribute(key, param.m_mapParam[key].toString()); Modified: trunk/qterm-qt4/src/qtermwindow.cpp =================================================================== --- trunk/qterm-qt4/src/qtermwindow.cpp 2010-07-22 06:19:17 UTC (rev 1207) +++ trunk/qterm-qt4/src/qtermwindow.cpp 2010-07-29 14:30:19 UTC (rev 1208) @@ -238,14 +238,14 @@ }; //constructor -Window::Window(Frame * frame, Param param, int addr, QWidget * parent, const char * name, Qt::WFlags wflags) +Window::Window(Frame * frame, Param param, const QString &uuid, QWidget * parent, const char * name, Qt::WFlags wflags) : WindowBase(parent, wflags), m_strMessage(), location() { groupActions(); m_pFrame = frame; m_param = param; - m_nAddrIndex = addr; + m_strUuid = uuid; m_hostInfo = NULL; m_translator = NULL; QString pathLib = Global::instance()->pathLib(); @@ -1257,7 +1257,9 @@ if (set.exec() == 1) { m_param = set.param; - Global::instance()->saveAddress(m_nAddrIndex, m_param); + QDomDocument doc = Global::instance()->addrXml(); + Global::instance()->saveAddress(doc,m_strUuid, m_param); + Global::instance()->saveAddressXml(doc); } else { m_param = backup; } @@ -1825,7 +1827,8 @@ void Window :: groupActions() { - listActions << "actionSave" << "actionSave_As" + listActions << "actionDisconnect" + << "actionSave" << "actionSave_As" << "actionPrint" << "actionPrint_Preview" << "actionCopy" << "actionPaste" << "actionAuto_Copy" << "actionCopy_w_Color" Modified: trunk/qterm-qt4/src/qtermwindow.h =================================================================== --- trunk/qterm-qt4/src/qtermwindow.h 2010-07-22 06:19:17 UTC (rev 1207) +++ trunk/qterm-qt4/src/qtermwindow.h 2010-07-29 14:30:19 UTC (rev 1208) @@ -75,7 +75,7 @@ { Q_OBJECT public: - Window(Frame * frame, Param param, int addr = -1, QWidget* parent = 0, + Window(Frame * frame, Param param, const QString& uuid, QWidget* parent = 0, const char* name = 0, Qt::WFlags wflags = Qt::Window); ~Window(); @@ -84,8 +84,8 @@ return m_bConnected; } - int index() { - return m_nAddrIndex; + QString uuid() { + return m_strUuid; } @@ -222,7 +222,7 @@ QTimer * m_updateTimer; // address setting - int m_nAddrIndex; + QString m_strUuid; bool m_bDoingLogin; bool m_bCheckIP; Modified: trunk/qterm-qt4/src/quickdialog.cpp =================================================================== --- trunk/qterm-qt4/src/quickdialog.cpp 2010-07-22 06:19:17 UTC (rev 1207) +++ trunk/qterm-qt4/src/quickdialog.cpp 2010-07-29 14:30:19 UTC (rev 1208) @@ -16,6 +16,7 @@ #include <QComboBox> #include <QPixmap> #include <QMessageBox> +#include <QUuid> namespace QTerm { @@ -102,19 +103,21 @@ } void quickDialog::addAddr() { - QString strTmp; - strTmp = Global::instance()->addrCfg()->getItemValue("bbs list", "num").toString(); - int num = strTmp.toInt(); - - strTmp.setNum(num + 1); - Global::instance()->addrCfg()->setItemValue("bbs list", "num", strTmp); - + // Update param param.m_mapParam["name"] = ui.addrLineEdit->text(); param.m_mapParam["addr"] = ui.addrLineEdit->text(); param.m_mapParam["port"] = ui.portSpinBox->value(); param.m_mapParam["protocol"] = ui.protocolComboBox->currentIndex(); - - Global::instance()->saveAddress(num, param); + // Create new site and reference in top level + QDomDocument doc = Global::instance()->addrXml(); + QString uuid = QUuid::createUuid().toString(); + Global::instance()->saveAddress(doc,uuid,param); + // Create site reference + QDomElement newSiteRef = doc.createElement("addsite"); + newSiteRef.setAttribute("uuid", uuid); + doc.documentElement().insertBefore(newSiteRef,QDomNode()); + // Save + Global::instance()->saveAddressXml(doc); } void quickDialog::deleteAddr() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |