No subject


Fri Jan 7 03:57:03 CET 2011


"This patch adds the ability to adjust the priority of a jabber resource when
going to an "away" state. This can be used to "redirect" messages to a
different resource (e.g an IM client on a mobile device) base on the presence
state of kopete."

See http://reviewboard.kde.org/r/4274/

Patch from Ralf Haferkamp, thanks!

FEATURE: 97998
GUI:
CCMAIL: rhafer at suse.de


 M  +7 -1      jabberaccount.cpp  
 M  +56 -0     ui/dlgjabbereditaccountwidget.ui  
 M  +28 -0     ui/jabbereditaccountwidget.cpp  
 M  +1 -0      ui/jabbereditaccountwidget.h  


--- trunk/KDE/kdenetwork/kopete/protocols/jabber/jabberaccount.cpp #1145737:1145738
@@ -1069,7 +1069,13 @@
 	}
 
 	// make sure the status gets the correct priority
-	newStatus.setPriority ( configGroup()->readEntry ( "Priority", 5 ) );
+	int newPriority = configGroup()->readEntry ( "Priority", 5 );
+	if ( newStatus.isAway() && configGroup()->hasKey( "AwayPriority" ))
+	{
+		newPriority = configGroup()->readEntry( "AwayPriority", 0 );
+	}
+	newStatus.setPriority ( newPriority );
+	kDebug(JABBER_DEBUG_GLOBAL) << "New priority: " << newPriority;
 
 	XMPP::Jid jid ( myself()->contactId () );
 	XMPP::Resource newResource ( resource (), newStatus );
--- trunk/KDE/kdenetwork/kopete/protocols/jabber/ui/dlgjabbereditaccountwidget.ui #1145737:1145738
@@ -467,6 +467,8 @@
          <property name="title" >
           <string>Location Settings</string>
          </property>
+         <layout class="QVBoxLayout" name="verticalLayout_5">
+          <item>
          <layout class="QHBoxLayout" >
           <property name="spacing" >
            <number>6</number>
@@ -587,9 +589,63 @@
            </widget>
           </item>
          </layout>
+          </item>
+          <item>
+           <layout class="QHBoxLayout" name="horizontalLayout_4">
+            <property name="spacing">
+             <number>6</number>
+            </property>
+            <property name="margin" >
+             <number>9</number>
+            </property>
+            <item>
+             <widget class="QCheckBox" name="cbAdjustPriority">
+              <property name="text">
+               <string>When absent, adjust priority to:</string>
+              </property>
         </widget>
        </item>
        <item>
+             <spacer name="horizontalSpacer">
+              <property name="orientation">
+               <enum>Qt::Horizontal</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>40</width>
+                <height>20</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item>
+             <widget class="QSpinBox" name="mAwayPriority">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="minimumSize">
+               <size>
+                <width>100</width>
+                <height>0</height>
+               </size>
+              </property>
+              <property name="minimum">
+               <number>-127</number>
+              </property>
+              <property name="maximum">
+               <number>128</number>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
         <widget class="QCheckBox" name="mergeMessages">
          <property name="text">
          <string>Merge all messages from all resources to one window/tab</string>
--- trunk/KDE/kdenetwork/kopete/protocols/jabber/ui/jabbereditaccountwidget.cpp #1145737:1145738
@@ -68,6 +68,8 @@
 	
 	connect (privacyListsButton, SIGNAL ( clicked() ), this, SLOT ( slotPrivacyListsClicked() ) );
 	
+	connect (cbAdjustPriority, SIGNAL (toggled (bool)), this, SLOT ( awayPriorityToggled (bool)));
+	
 #ifdef JINGLE_SUPPORT
 	checkAudioDevices();
 #else
@@ -197,6 +199,17 @@
 		mServer->setText(mID->text().section('@', 1));
 	}
 
+	if ( account()->configGroup()->hasKey("AwayPriority") )
+	{
+		cbAdjustPriority->setChecked(true);
+		mAwayPriority->setValue( account()->configGroup()->readEntry("AwayPriority",0));
+	}
+	else
+	{
+		cbAdjustPriority->setChecked(false);
+		mAwayPriority->setEnabled(false);
+	}
+
 	cbAllowPlainTextPassword->setChecked (account()->configGroup()->readEntry("AllowPlainTextPassword", true));
 
 	KConfigGroup config = KGlobal::config()->group("Jabber");
@@ -288,6 +301,16 @@
 	account()->configGroup()->writeEntry("Server", mServer->text().trimmed ());
 	account()->configGroup()->writeEntry("Resource", mResource->text ());
 	account()->configGroup()->writeEntry("Priority", QString::number (mPriority->value ()));
+
+	if ( cbAdjustPriority->isChecked() )
+	{
+		account()->configGroup()->writeEntry("AwayPriority", QString::number( mAwayPriority->value ()));
+	}
+	else
+	{
+		account()->configGroup()->deleteEntry("AwayPriority");
+	}
+
 	account()->configGroup()->writeEntry("Port", QString::number (mPort->value ()));
 
 #ifdef JINGLE_SUPPORT
@@ -373,6 +396,11 @@
 
 }
 
+void JabberEditAccountWidget::awayPriorityToggled(bool enabled)
+{
+	mAwayPriority->setEnabled(enabled);
+}
+
 void JabberEditAccountWidget::deleteClicked ()
 {
 
--- trunk/KDE/kdenetwork/kopete/protocols/jabber/ui/jabbereditaccountwidget.h #1145737:1145738
@@ -52,6 +52,7 @@
 	void slotChangePasswordFinished ();
 	void deleteClicked ();
 	void sslToggled (bool);
+	void awayPriorityToggled (bool);
 	void updateServerField ();
 	void slotPrivacyListsClicked ();
 



More information about the kde-doc-english mailing list