- The settings in the settings window are only loaded once.

- Saving the settings without changing the network settings doesn't shutdown the connections

git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@2786 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
thunder2 2010-04-25 23:28:10 +00:00
parent 78644a2441
commit 38e06135a4
2 changed files with 26 additions and 20 deletions

View File

@ -2603,24 +2603,27 @@ bool p3ConnectMgr::setLocalAddress(std::string id, struct sockaddr_in addr)
if (id == AuthSSL::getAuthSSL()->OwnId()) if (id == AuthSSL::getAuthSSL()->OwnId())
{ {
if (ownState.currentlocaladdr.sin_addr.s_addr != addr.sin_addr.s_addr ||
ownState.currentlocaladdr.sin_port != addr.sin_port) {
{ {
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/ RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
ownState.currentlocaladdr = addr; ownState.currentlocaladdr = addr;
//avoid 0 for port and address //avoid 0 for port and address
if (ownState.currentlocaladdr.sin_addr.s_addr == 0) { if (ownState.currentlocaladdr.sin_addr.s_addr == 0) {
ownState.currentlocaladdr.sin_addr.s_addr = 1; ownState.currentlocaladdr.sin_addr.s_addr = 1;
} }
if (addr.sin_port == 0) { if (addr.sin_port == 0) {
ownState.currentlocaladdr.sin_port = 1; ownState.currentlocaladdr.sin_port = 1;
} }
} }
IndicateConfigChanged(); /**** INDICATE MSG CONFIG CHANGED! *****/ IndicateConfigChanged(); /**** INDICATE MSG CONFIG CHANGED! *****/
if ((ownState.netMode & RS_NET_MODE_ACTUAL) == RS_NET_MODE_EXT || if ((ownState.netMode & RS_NET_MODE_ACTUAL) == RS_NET_MODE_EXT ||
(ownState.netMode & RS_NET_MODE_ACTUAL) == RS_NET_MODE_UDP) { (ownState.netMode & RS_NET_MODE_ACTUAL) == RS_NET_MODE_UDP) {
netReset(); netReset();
} }
return true; }
} return true;
}
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/ RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
/* check if it is a friend */ /* check if it is a friend */

View File

@ -84,7 +84,7 @@ RSettingsWin::closeEvent (QCloseEvent * event)
if (update_local) { if (update_local) {
if (_instance->stackedWidget->currentIndex() == Directories) { if (_instance->stackedWidget->currentIndex() == Directories) {
ConfigPage *Page = (ConfigPage*) _instance->stackedWidget->currentWidget(); ConfigPage *Page = dynamic_cast<ConfigPage *> (_instance->stackedWidget->currentWidget());
if (Page) { if (Page) {
Page->load(); Page->load();
} }
@ -110,6 +110,8 @@ RSettingsWin::initStackedWidget()
stackedWidget->addWidget(new SoundPage() ); stackedWidget->addWidget(new SoundPage() );
#endif #endif
loadSettings(); /* load saved settings */
setNewPage(General); setNewPage(General);
} }
@ -163,7 +165,6 @@ RSettingsWin::setNewPage(int page)
} }
pageName->setText(text); pageName->setText(text);
loadSettings(); /* load saved settings */
stackedWidget->setCurrentIndex(page); stackedWidget->setCurrentIndex(page);
listWidget->setCurrentRow(page); listWidget->setCurrentRow(page);
} }
@ -171,12 +172,14 @@ RSettingsWin::setNewPage(int page)
void void
RSettingsWin::loadSettings() RSettingsWin::loadSettings()
{ {
/* Call each config page's load() method to load its data */ /* Call each config page's load() method to load its data */
int i, count = stackedWidget->count(); int i, count = stackedWidget->count();
for (i = 0; i < count; i++) { for (i = 0; i < count; i++) {
ConfigPage *page = (ConfigPage *) stackedWidget->widget(i); ConfigPage *page = dynamic_cast<ConfigPage *> (stackedWidget->widget(i));
page->load(); if (page) {
} page->load();
}
}
} }
/** Saves changes made to settings. */ /** Saves changes made to settings. */
@ -191,7 +194,7 @@ RSettingsWin::saveChanges()
{ {
ConfigPage *page = dynamic_cast<ConfigPage *>(stackedWidget->widget(i)); ConfigPage *page = dynamic_cast<ConfigPage *>(stackedWidget->widget(i));
if(!page->save(errmsg)) if(page && !page->save(errmsg))
{ {
/* Display the offending page */ /* Display the offending page */
stackedWidget->setCurrentWidget(page); stackedWidget->setCurrentWidget(page);