SVN commit 851433 by nienhueser:

Extend the auto connect at startup option to a global initial account status 
setting.
Patch by Cyrill Helg, thanks!
CCMAIL: [email protected]


 M  +51 -26    kopete/config/behavior/behaviorconfig_general.ui  
 M  +15 -3     kopete/kopeteapplication.cpp  
 M  +9 -2      libkopete/kopeteaccountmanager.cpp  
 M  +10 -3     libkopete/kopetebehaviorsettings.kcfg  
 M  +26 -0     libkopete/kopeteonlinestatusmanager.cpp  
 M  +7 -0      libkopete/kopeteonlinestatusmanager.h  


--- 
trunk/KDE/kdenetwork/kopete/kopete/config/behavior/behaviorconfig_general.ui 
#851432:851433
@@ -134,33 +134,57 @@
     </widget>
    </item>
    <item>
-    <widget class="QGroupBox" name="groupBox_3" >
-     <property name="title" >
-      <string>Miscellaneous</string>
-     </property>
-     <layout class="QVBoxLayout" >
-      <property name="spacing" >
-       <number>6</number>
-      </property>
-      <property name="margin" >
-       <number>9</number>
-      </property>
-      <item>
-       <widget class="QCheckBox" name="kcfg_autoConnect" >
-        <property name="toolTip" >
-         <string>Connect on startup and when a network is available</string>
-        </property>
-        <property name="whatsThis" >
-         <string>When starting Kopete, and whenever your computer is online, 
all your accounts will be connected automatically. You can exclude accounts 
individually in their properties.</string>
-        </property>
-        <property name="text" >
-         <string>Connect automatically</string>
-        </property>
-       </widget>
-      </item>
-     </layout>
-    </widget>
+         <widget class="QGroupBox" name="initialStatusGroup" >
+         <property name="title" >
+                 <string>Initial status</string>
+         </property>
+         <layout class="QVBoxLayout" >
+               <property name="spacing" >
+                 <number>6</number>
+               </property>
+               <property name="margin" >
+                 <number>9</number>
+               </property>
+               <item>
+                 <widget class="QComboBox" name="kcfg_initialStatus" >
+                       <property name="toolTip" >
+                         <string>Set the initial status</string>
+                       </property>
+                       <property name="whatsThis" >
+                         <string>When starting Kopete, and whenever your 
computer is online, all your accounts will go into the status selected here. 
You can exclude accounts individually in their properties.</string>
+                       </property>
+                       <item>
+                         <property name="text" >
+                               <string>Offline</string>
+                         </property>
+                       </item>
+                       <item>
+                         <property name="text" >
+                               <string>Online</string>
+                         </property>
+                       </item>
+                       <item>
+                         <property name="text" >
+                               <string>Away</string>
+                         </property>
+                       </item>
+                       <item>
+                         <property name="text" >
+                               <string>Busy</string>
+                         </property>
+                         </item>
+                       <item>
+                       <property name="text" >
+                         <string>Invisible</string>
+                       </property>
+                 </item>
+                </widget>
+               </item>
+         </layout>
+       </widget>
    </item>
+
+
    <item>
     <spacer>
      <property name="orientation" >
@@ -186,6 +210,7 @@
   <tabstop>kcfg_startDocked</tabstop>
   <tabstop>kcfg_useMessageQueue</tabstop>
   <tabstop>kcfg_autoConnect</tabstop>
+  <tabstop>kcfg_initialStatus</tabstop>
  </tabstops>
  <resources/>
  <connections/>
--- trunk/KDE/kdenetwork/kopete/kopete/kopeteapplication.cpp #851432:851433
@@ -210,17 +210,26 @@
        }
 }
 
+
 void KopeteApplication::slotAllPluginsLoaded()
 {
        KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
 
        //FIXME: this should probably ask for the identities to connect instead 
of all accounts
        // --noconnect not specified?
-       if ( args->isSet( "connect" )  && 
Kopete::BehaviorSettings::self()->autoConnect() &&
+
+       Kopete::OnlineStatusManager::Category initStatus = 
Kopete::OnlineStatusManager::self()->initialStatus();
+
+       if ( args->isSet( "connect" )  &&  initStatus != 
Kopete::OnlineStatusManager::Offline &&
                        ( Solid::Networking::status() == 
Solid::Networking::Unknown ||
-                         Solid::Networking::status() == 
Solid::Networking::Connected ) )
-               Kopete::AccountManager::self()->setOnlineStatus( 
Kopete::OnlineStatusManager::Online, QString(), 
Kopete::AccountManager::ConnectIfOffline );
+                         Solid::Networking::status() == 
Solid::Networking::Connected ) ){
 
+               Kopete::AccountManager::self()->setOnlineStatus( initStatus, 
QString(), Kopete::AccountManager::ConnectIfOffline );
+
+        }
+
+       kDebug(14000)<< "initial status set in config: " << initStatus;
+
        QStringList connectArgs = args->getOptionList( "autoconnect" );
 
        // toConnect will contain all the protocols to connect to
@@ -267,6 +276,8 @@
        handleURLArgs();
 }
 
+
+
 int KopeteApplication::newInstance()
 {
 //     kDebug(14000) ;
@@ -293,6 +304,7 @@
        } // END args->count() > 0
 }
 
+
 void KopeteApplication::quitKopete()
 {
        kDebug( 14000 ) ;
--- trunk/KDE/kdenetwork/kopete/libkopete/kopeteaccountmanager.cpp 
#851432:851433
@@ -43,6 +43,7 @@
 #include "kopetegroup.h"
 #include "kopetestatusmanager.h"
 
+
 namespace Kopete {
 
 static int compareAccountsByPriority( Account *a, Account *b )
@@ -420,10 +421,16 @@
 
 void AccountManager::networkConnected()
 {
-       if ( Kopete::BehaviorSettings::self()->autoConnect() )
-               setOnlineStatus( Kopete::OnlineStatusManager::Online, 
QString(), ConnectIfOffline );
+       Kopete::OnlineStatusManager::Category initStatus = 
Kopete::OnlineStatusManager::self()->initialStatus();
+       //we check for network availability here too
+       if ( Solid::Networking::status() == Solid::Networking::Unknown ||
+                         Solid::Networking::status() == 
Solid::Networking::Connected ){
+
+               Kopete::AccountManager::self()->setOnlineStatus( initStatus, 
QString(), Kopete::AccountManager::ConnectIfOffline );
+       }
 }
 
+
 void AccountManager::networkDisconnected()
 {
        setOnlineStatus( Kopete::OnlineStatusManager::Offline );
--- trunk/KDE/kdenetwork/kopete/libkopete/kopetebehaviorsettings.kcfg 
#851432:851433
@@ -36,9 +36,16 @@
                        <label>Reconnect on disconnect.</label>
                        <default>true</default>
                </entry>
-               <entry key="autoConnect" type="Bool">
-                       <label>Auto connect on Kopete load.</label>
-                       <default>false</default>
+               <entry key="initialStatus" type="Enum">
+                       <label>Initial Status</label>
+                       <choices>
+                               <choice name="Offline" />
+                               <choice name="Online" />
+                               <choice name="Away" />
+                               <choice name="Busy" />
+                               <choice name="Invisible" />
+                       </choices>
+                       <default>Offline</default>
                </entry>
                <!-- Event Behavior -->
                <entry key="raiseMessageWindow" type="Bool">
--- trunk/KDE/kdenetwork/kopete/libkopete/kopeteonlinestatusmanager.cpp 
#851432:851433
@@ -19,6 +19,7 @@
 #include "kopeteonlinestatusmanager.h"
 
 #include "kopeteprotocol.h"
+#include "kopetebehaviorsettings.h"
 
 #include <kiconloader.h>
 #include <kiconeffect.h>
@@ -126,6 +127,31 @@
        return OnlineStatus();
 }
 
+OnlineStatusManager::Category OnlineStatusManager::initialStatus() const
+{
+    Kopete::OnlineStatusManager::Category statusValue;
+               switch( Kopete::BehaviorSettings::self()->initialStatus() )
+               {
+                 case Kopete::BehaviorSettings::EnumInitialStatus::Offline:
+                       statusValue = Kopete::OnlineStatusManager::Offline;
+                 break;
+                 case Kopete::BehaviorSettings::EnumInitialStatus::Online:
+                       statusValue = Kopete::OnlineStatusManager::Online;
+                 break;
+                 case Kopete::BehaviorSettings::EnumInitialStatus::Away:
+                       statusValue = Kopete::OnlineStatusManager::Away;
+                 break;
+                 case Kopete::BehaviorSettings::EnumInitialStatus::Busy:
+                       statusValue = Kopete::OnlineStatusManager::Busy;
+                 break;
+                 case Kopete::BehaviorSettings::EnumInitialStatus::Invisible:
+                       statusValue = Kopete::OnlineStatusManager::Invisible;
+                 break;
+               }
+
+    return statusValue;
+}
+
 QString OnlineStatusManager::fingerprint( const OnlineStatus &statusFor, const 
QString& icon, int size, QColor color, bool idle)
 {
        // create a 'fingerprint' to use as a hash key
--- trunk/KDE/kdenetwork/kopete/libkopete/kopeteonlinestatusmanager.h 
#851432:851433
@@ -120,6 +120,13 @@
         */
        static KIcon pixmapForCategory( Categories category );
 
+       /**
+        * This returns status from config as 
Kopete::OnlineStatusManager::Category
+        *
+        * @return the desired initial status
+        */
+       Kopete::OnlineStatusManager::Category initialStatus() const;
+
 private:
        friend class OnlineStatus;
        friend class OnlineStatusIconEngine;
_______________________________________________
kopete-devel mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/kopete-devel

Reply via email to