r3542 - in trunk/minisip: minisip/gui/gtkgui share

mikma at minisip.org mikma at minisip.org
Sat Dec 1 19:19:18 CET 2007


Author: mikma
Date: 2007-12-01 19:19:18 +0100 (Sat, 01 Dec 2007)
New Revision: 3542

Modified:
   trunk/minisip/minisip/gui/gtkgui/MainWindow.cxx
   trunk/minisip/minisip/gui/gtkgui/MainWindow.h
   trunk/minisip/share/minisip.glade
Log:
Add account selection to the main window, making it easier to select
SIP account for outgoing calls/IM:s.


Modified: trunk/minisip/minisip/gui/gtkgui/MainWindow.cxx
===================================================================
--- trunk/minisip/minisip/gui/gtkgui/MainWindow.cxx	2007-11-30 11:31:29 UTC (rev 3541)
+++ trunk/minisip/minisip/gui/gtkgui/MainWindow.cxx	2007-12-01 18:19:18 UTC (rev 3542)
@@ -274,6 +274,8 @@
 	certificateDialog = new CertificateDialog( refXml );
 	settingsDialog = new SettingsDialog( refXml, transportList );
 	
+	refXml->get_widget( "accountList", accountListView );
+	refXml->get_widget( "accountLabel", accountLabel );
 	refXml->get_widget( "callUriEntry", uriEntry );
 
 	refXml->get_widget( "prefMenu", prefMenu );
@@ -304,6 +306,7 @@
 
 	dispatcher.connect( SLOT( *this, &MainWindow::gotCommand ) );
 
+	accountListView->signal_changed().connect( SLOT( *this, &MainWindow::accountListSelect ) );
 	uriEntry->signal_activate().connect( SLOT( *this, &MainWindow::inviteClick ) );
 
 #if not defined WIN32 && not defined HILDON_SUPPORT
@@ -327,6 +330,8 @@
 	statusWindow->set_shadow_type( Gtk::SHADOW_NONE );
 	statusWindow->set_policy( Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC );
 
+	accountListInit();
+
 	//mainTabWidget->append_page( *statusWidget, "Accounts" );
 
 	logDispatcher.connect( SLOT( *this, &MainWindow::gotLogEntry ) );
@@ -589,6 +594,7 @@
 	accountsList->loadFromConfig( config );
 	settingsDialog->setAccounts( accountsList );
 	settingsDialog->setConfig( config );
+	accountListUpdate();
 
 	const Glib::RefPtr<PhoneBookModel> modelPtr( phoneBookModel );
 
@@ -779,6 +785,38 @@
 	invite();
 }
 
+void MainWindow::accountListInit() {
+	accountListView->set_model( accountsList );
+	Gtk::CellRendererText* crt;
+	crt = new Gtk::CellRendererText();
+	accountListView->pack_end( *manage(crt), true );
+	accountListView->add_attribute( crt->property_text(), accountsList->getColumns()->name );
+	accountListUpdate();
+}
+
+void MainWindow::accountListUpdate() {
+	Gtk::TreeModel::iterator iter;
+	for( iter = accountsList->children().begin();
+	     iter != accountsList->children().end(); iter ++ ){
+		if( config->defaultIdentity ==
+		    (*iter)[accountsList->getColumns()->identity] ){
+			accountListView->set_active( iter );
+			break;
+		}
+	}
+}
+
+void MainWindow::accountListSelect() {
+	Gtk::TreeModel::iterator iter = accountListView->get_active();
+
+	accountsList->setDefaultAccount( iter );
+
+	config->defaultIdentity =
+		(*iter)[accountsList->getColumns()->identity];
+
+	accountLabel->set_label( (*iter)[accountsList->getColumns()->name] );
+}
+
 void MainWindow::inviteClick() {
 	invite( uriEntry->get_text() );
 }

Modified: trunk/minisip/minisip/gui/gtkgui/MainWindow.h
===================================================================
--- trunk/minisip/minisip/gui/gtkgui/MainWindow.h	2007-11-30 11:31:29 UTC (rev 3541)
+++ trunk/minisip/minisip/gui/gtkgui/MainWindow.h	2007-12-01 18:19:18 UTC (rev 3542)
@@ -130,6 +130,10 @@
 		void registerIcons();
 		void hideSlot();
 		void phoneTreeClicked( GdkEventButton * event );
+
+		void accountListInit();
+		void accountListUpdate();
+		void accountListSelect();
 		
 		void inviteClick();
 		void invite(  std::string uri="" );
@@ -183,6 +187,8 @@
 		Gtk::MenuItem * phoneAddAddressMenu;
 		Gtk::MenuItem * phoneRemoveMenu;
 		Gtk::MenuItem * phoneEditMenu;
+		Gtk::ComboBox * accountListView;
+		Gtk::Label * accountLabel;
 		Gtk::Entry * uriEntry;
 		PhoneBookModel * phoneBookModel;
 		PhoneBookTree * phoneBookTree;

Modified: trunk/minisip/share/minisip.glade
===================================================================
--- trunk/minisip/share/minisip.glade	2007-11-30 11:31:29 UTC (rev 3541)
+++ trunk/minisip/share/minisip.glade	2007-12-01 18:19:18 UTC (rev 3542)
@@ -2463,12 +2463,87 @@
 		      </child>
 		    </widget>
 		    <packing>
-		      <property name="padding">6</property>
+		      <property name="padding">4</property>
 		      <property name="expand">False</property>
 		      <property name="fill">False</property>
 		      <property name="pack_type">GTK_PACK_END</property>
 		    </packing>
 		  </child>
+
+		  <child>
+		    <widget class="GtkExpander" id="expander1">
+		      <property name="visible">True</property>
+		      <property name="can_focus">True</property>
+		      <property name="expanded">False</property>
+		      <property name="spacing">0</property>
+
+		      <child>
+			<widget class="GtkComboBox" id="accountList">
+			  <property name="visible">True</property>
+			  <property name="add_tearoffs">False</property>
+			  <property name="focus_on_click">True</property>
+			</widget>
+		      </child>
+
+		      <child>
+			<widget class="GtkHBox" id="hbox76">
+			  <property name="visible">True</property>
+			  <property name="homogeneous">False</property>
+			  <property name="spacing">6</property>
+
+			  <child>
+			    <widget class="GtkLabel" id="label205">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes">Account:</property>
+			      <property name="use_underline">False</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0.5</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+
+			  <child>
+			    <widget class="GtkLabel" id="accountLabel">
+			      <property name="visible">True</property>
+			      <property name="label" translatable="yes"></property>
+			      <property name="use_underline">False</property>
+			      <property name="use_markup">False</property>
+			      <property name="justify">GTK_JUSTIFY_LEFT</property>
+			      <property name="wrap">False</property>
+			      <property name="selectable">False</property>
+			      <property name="xalign">0.5</property>
+			      <property name="yalign">0.5</property>
+			      <property name="xpad">0</property>
+			      <property name="ypad">0</property>
+			    </widget>
+			    <packing>
+			      <property name="padding">0</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
+			    </packing>
+			  </child>
+			</widget>
+			<packing>
+			  <property name="type">label_item</property>
+			</packing>
+		      </child>
+		    </widget>
+		    <packing>
+		      <property name="padding">4</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
 		</widget>
 		<packing>
 		  <property name="padding">0</property>



More information about the Minisip-devel mailing list