On Fri, Aug 01, 2008 at 05:42:19PM +0200, Vadim Lebedev wrote:
> 
> Ralf Schlatterbeck wrote:
> >- Crash when clicking "Log on" when connect was recently pressed, this
> >  can be reproduced if you're fast enough while the client is still busy
> >  connecting:
> >  - go offline
> >  - in login dialog click "Connect"
> >  - in qutecom menu click "Log On" while the client is still connecting
> >    (you need to be quick before the connect finishes and the menu shows
> >    "Log Off")
> >  - crash
> >  -> Probably the menu should already display "Log Off" when the connect
> >     is in progress.
> >
> >  
>    Yes, probably Connect button should generate a signal causing
>    "Log On" to be disabled

I've fixed this one:

# HG changeset patch
# User Ralf Schlatterbeck <[EMAIL PROTECTED]>
# Date 1217922719 -7200
# Node ID cfa80376cf7bf9f0f646ccdc663d330dffbefef7
# Parent  4b7f91e915a741493622cf778f7fa8bf5728f64a
Fix crash when clicking "Log on" when connect was recently pressed
This fix disables the Toolbar "Log on" while the client is connecting.
The client re-enables the menu automatically when connected or when a
timeout is reached. I've added enabling the menu if the user presses
"Cancel" in the login dialog.  Fixes Kvats issue100.

diff -r 4b7f91e915a7 -r cfa80376cf7b 
wengophone/src/presentation/qt/QtToolBar.cpp
--- a/wengophone/src/presentation/qt/QtToolBar.cpp      Thu Jul 31 22:50:21 
2008 +0200
+++ b/wengophone/src/presentation/qt/QtToolBar.cpp      Tue Aug 05 09:51:59 
2008 +0200
@@ -636,6 +636,10 @@ void QtToolBar::userProfileIsInitialized
        updateActionsAccordingToUserStatus();
 }
 
+void QtToolBar::enableMenuBar() {
+       _ui->menuBar->setEnabled(true);
+}
+
 void QtToolBar::updateActionsAccordingToUserStatus() {
        // We need to use a boolean to keep trace of the user status because 
when
        // userProfileDeleted is called, the user profile is still alive, even 
if
@@ -645,7 +649,7 @@ void QtToolBar::updateActionsAccordingTo
        } else {
                _ui->actionLogOff->setText(tr("Log &On..."));
        }
-       _ui->menuBar->setEnabled(true);
+       _ui->menuBar->setEnabled(_userIsLogged);
        _ui->toolBar->setEnabled(_userIsLogged);
 
        // This list contains all actions which needs a logged user to work
diff -r 4b7f91e915a7 -r cfa80376cf7b wengophone/src/presentation/qt/QtToolBar.h
--- a/wengophone/src/presentation/qt/QtToolBar.h        Thu Jul 31 22:50:21 
2008 +0200
+++ b/wengophone/src/presentation/qt/QtToolBar.h        Tue Aug 05 09:51:59 
2008 +0200
@@ -124,7 +124,9 @@ public Q_SLOTS:
        void slotConfigChanged(QString key);
        
        void userProfileIsInitialized();
-               
+
+       void enableMenuBar();
+
        void updateMenuActions();
 
 private Q_SLOTS:
diff -r 4b7f91e915a7 -r cfa80376cf7b 
wengophone/src/presentation/qt/login/QtLoginDialog.cpp
--- a/wengophone/src/presentation/qt/login/QtLoginDialog.cpp    Thu Jul 31 
22:50:21 2008 +0200
+++ b/wengophone/src/presentation/qt/login/QtLoginDialog.cpp    Tue Aug 05 
09:51:59 2008 +0200
@@ -25,6 +25,7 @@
 #include "QtLogAccount.h"
 
 #include <presentation/qt/QtWengoPhone.h>
+#include <presentation/qt/QtToolBar.h>
 
 #include <control/profile/CUserProfileHandler.h>
 
@@ -50,6 +51,7 @@ QtLoginDialog::QtLoginDialog(QtWengoPhon
        _loginPage.push_back(new QtAddWengoAccount(this, _centralWidget, 
cUserProfileHandler));
        _loginPage.push_back(new QtAddSIPAccount(this, _centralWidget, 
cUserProfileHandler));
        _loginPage.push_back(new QtLogAccount(this, _centralWidget, 
cUserProfileHandler));
+    SAFE_CONNECT(this, SIGNAL(rejected()), SLOT(loginRejected()));
 
     _centralWidget->addWidget(_loginPage[AddAccount]);
     _centralWidget->addWidget(_loginPage[AddWengoAccount]);
@@ -81,6 +83,10 @@ ILogin* QtLoginDialog::currentPage() con
        return _loginPage[_centralWidget->currentIndex()];
 }
 
+void QtLoginDialog::loginRejected() {
+    _qtWengoPhone->getQtToolBar().enableMenuBar();
+}
+
 void QtLoginDialog::setInvalidAccount(const SipAccount & sipAccount) {
        if (sipAccount.getType() ==  SipAccount::SipAccountTypeWengo) {
                //wengo account
diff -r 4b7f91e915a7 -r cfa80376cf7b 
wengophone/src/presentation/qt/login/QtLoginDialog.h
--- a/wengophone/src/presentation/qt/login/QtLoginDialog.h      Thu Jul 31 
22:50:21 2008 +0200
+++ b/wengophone/src/presentation/qt/login/QtLoginDialog.h      Tue Aug 05 
09:51:59 2008 +0200
@@ -68,6 +68,11 @@ public:
 
 public Q_SLOTS:
        /**
+        * login cancelled -- enable toolbar menu.
+        */
+        void loginRejected();
+
+       /**
         * Init login entry and display a message on the login to say that the
         * login/password is invalid.
         */


-- 
Dr. Ralf Schlatterbeck                  Tel:   +43/2243/26465-16
Open Source Consulting                  Fax:   +43/2243/26465-23
Reichergasse 131                        www:   http://www.runtux.com
A-3411 Weidling                         email: [EMAIL PROTECTED]
osAlliance member                       email: [EMAIL PROTECTED]
_______________________________________________
QuteCom-dev mailing list
[email protected]
http://lists.qutecom.org/mailman/listinfo/qutecom-dev

Reply via email to