<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -528,14 +528,28 @@ void AccountModifyDlg::save()
 
 	acc.proxyID = pc-&gt;currentItem();
 
-	if(pa &amp;&amp; pa-&gt;isActive()) {
-		QMessageBox::information(this, tr(&quot;Warning&quot;), tr(&quot;This account is currently active, so certain changes may not take effect until the next login.&quot;));
-	}
-
-	if (pa)
+	if (pa) {
 		pa-&gt;setUserAccount(acc);
-	else 
+
+		if (pa-&gt;isActive()) {
+			QMessageBox messageBox(QMessageBox::Information, tr(&quot;Warning&quot;),
+			                       tr(&quot;This account is currently active, so certain changes may not take effect until the next login.&quot;),
+			                       QMessageBox::NoButton, this);
+			QPushButton* cancel = messageBox.addButton(tr(&quot;Reconnect &amp;Later&quot;), QMessageBox::RejectRole);
+			QPushButton* reconnect = messageBox.addButton(tr(&quot;Reconnect &amp;Now&quot;), QMessageBox::AcceptRole);
+			messageBox.setDefaultButton(reconnect);
+			messageBox.exec();
+			Q_UNUSED(cancel);
+			if (messageBox.clickedButton() == reconnect) {
+				XMPP::Status status = pa-&gt;status();
+				pa-&gt;setStatus(XMPP::Status::Offline);
+				pa-&gt;setStatus(status);
+			}
+		}
+	}
+	else {
 		psi-&gt;contactList()-&gt;createAccount(acc);
+	}
 
 	accept();
 }</diff>
      <filename>src/accountmodifydlg.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -699,8 +699,15 @@ void PsiCon::changeProfile()
 {
 	ActiveProfiles::instance()-&gt;unsetThisProfile();
 	if(d-&gt;contactList-&gt;haveActiveAccounts()) {
-		QMessageBox::information(0, CAP(tr(&quot;Error&quot;)), tr(&quot;Please disconnect before changing the profile.&quot;));
-		return;
+		QMessageBox messageBox(QMessageBox::Information, CAP(tr(&quot;Error&quot;)), tr(&quot;Please disconnect before changing the profile.&quot;));
+		QPushButton* cancel = messageBox.addButton(QMessageBox::Cancel);
+		QPushButton* disconnect = messageBox.addButton(tr(&quot;&amp;Disconnect&quot;), QMessageBox::AcceptRole);
+		messageBox.setDefaultButton(disconnect);
+		messageBox.exec();
+		if (messageBox.clickedButton() == cancel)
+			return;
+
+		setStatusFromDialog(XMPP::Status::Offline, false);
 	}
 
 	quit(QuitProfile);</diff>
      <filename>src/psicon.cpp</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>4721ec6b8537dcb6d5e20c87ab65ddc851a2d915</id>
    </parent>
  </parents>
  <author>
    <name>Michail Pishchagin</name>
    <email>mblsha@users.sourceforge.net</email>
  </author>
  <url>http://github.com/mblsha/psi/commit/e60bd8f3260108f80560aff4728ad2994542e5d4</url>
  <id>e60bd8f3260108f80560aff4728ad2994542e5d4</id>
  <committed-date>2009-10-16T12:55:18-07:00</committed-date>
  <authored-date>2009-10-16T12:55:18-07:00</authored-date>
  <message>Improved PsiCon::changeProfile() and AccountModifyDlg::save() messageboxes.</message>
  <tree>66107519a4a1acae0400ed6a2ecf799d6b471896</tree>
  <committer>
    <name>Michail Pishchagin</name>
    <email>mblsha@users.sourceforge.net</email>
  </committer>
</commit>
