mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-26 23:58:17 +00:00
- sends buddy lookup request with 1 character
- work in progress for setupwizard. git-svn-id: svn+ssh://svn.savannah.nongnu.org/linphone/trunk@480 3f6dc0c8-ddfe-455d-9043-3cd528dc4637
This commit is contained in:
parent
e38e7495cd
commit
db4ce923c5
6 changed files with 72 additions and 10 deletions
|
|
@ -2324,8 +2324,9 @@ void linphone_core_set_mtu(LinphoneCore *lc, int mtu){
|
|||
}else ms_set_mtu(0);//use mediastreamer2 default value
|
||||
}
|
||||
|
||||
void linphone_core_set_waiting_callback(LinphoneCore *lc, LinphoneWaitingCallback cb){
|
||||
void linphone_core_set_waiting_callback(LinphoneCore *lc, LinphoneWaitingCallback cb, void *user_context){
|
||||
lc->wait_cb=cb;
|
||||
lc->wait_ctx=user_context;
|
||||
}
|
||||
|
||||
void linphone_core_start_waiting(LinphoneCore *lc, const char *purpose){
|
||||
|
|
|
|||
|
|
@ -336,10 +336,11 @@ typedef struct _LinphoneAccountCreator{
|
|||
bool_t succeeded;
|
||||
}LinphoneAccountCreator;
|
||||
|
||||
LinphoneAccountCreator *linphone_account_creator_new(struct _LinphoneCore *core, const char *type);
|
||||
void linphone_account_creator_set_username(LinphoneAccountCreator *obj, const char *username);
|
||||
void linphone_account_creator_set_password(LinphoneAccountCreator *obj, const char *password);
|
||||
void linphone_account_creator_set_domain(LinphoneAccountCreator *obj, const char *domain);
|
||||
int linphone_account_creator_test(LinphoneAccountCreator *obj);
|
||||
int linphone_account_creator_test_existence(LinphoneAccountCreator *obj);
|
||||
LinphoneProxyConfig * linphone_account_creator_validate(LinphoneAccountCreator *obj);
|
||||
void linphone_account_creator_destroy(LinphoneAccountCreator *obj);
|
||||
|
||||
|
|
@ -781,8 +782,7 @@ The method returns 0 if an already running linphone was found*/
|
|||
int linphone_core_wake_up_possible_already_running_instance(const char *config_file);
|
||||
|
||||
/*set a callback for some blocking operations, it takes you informed of the progress of the operation*/
|
||||
void linphone_core_set_waiting_callback(LinphoneCore *lc, LinphoneWaitingCallback cb);
|
||||
|
||||
void linphone_core_set_waiting_callback(LinphoneCore *lc, LinphoneWaitingCallback cb, void *user_context);
|
||||
|
||||
/*returns the list of registered SipSetup (linphonecore plugins) */
|
||||
const MSList * linphone_core_get_sip_setups(LinphoneCore *lc);
|
||||
|
|
|
|||
|
|
@ -634,6 +634,27 @@ SipSetupContext *linphone_proxy_config_get_sip_setup_context(LinphoneProxyConfig
|
|||
return cfg->ssctx;
|
||||
}
|
||||
|
||||
LinphoneAccountCreator *linphone_account_creator_new(struct _LinphoneCore *core, const char *type){
|
||||
LinphoneAccountCreator *obj;
|
||||
LinphoneProxyConfig *cfg;
|
||||
SipSetup *ss=sip_setup_lookup(type);
|
||||
SipSetupContext *ssctx;
|
||||
if (!ss){
|
||||
return NULL;
|
||||
}
|
||||
if (!(sip_setup_get_capabilities(ss) & SIP_SETUP_CAP_ACCOUNT_MANAGER)){
|
||||
ms_error("%s cannot manage accounts.");
|
||||
return NULL;
|
||||
}
|
||||
obj=ms_new0(LinphoneAccountCreator,1);
|
||||
cfg=linphone_proxy_config_new();
|
||||
ssctx=sip_setup_context_new(ss,cfg);
|
||||
obj->lc=core;
|
||||
obj->ssctx=ssctx;
|
||||
cfg->lc=core;
|
||||
return obj;
|
||||
}
|
||||
|
||||
void linphone_account_creator_set_username(LinphoneAccountCreator *obj, const char *username){
|
||||
set_string(&obj->username,username);
|
||||
}
|
||||
|
|
@ -646,7 +667,7 @@ void linphone_account_creator_set_domain(LinphoneAccountCreator *obj, const char
|
|||
set_string(&obj->domain,domain);
|
||||
}
|
||||
|
||||
int linphone_account_creator_test(LinphoneAccountCreator *obj){
|
||||
int linphone_account_creator_test_existence(LinphoneAccountCreator *obj){
|
||||
SipSetupContext *ssctx=obj->ssctx;
|
||||
char *uri=ms_strdup_printf("%s@%s",obj->username,obj->domain);
|
||||
int err=sip_setup_context_account_exists(ssctx,uri);
|
||||
|
|
|
|||
|
|
@ -146,7 +146,7 @@ static gboolean keyword_typing_finished(GtkWidget *w){
|
|||
g_source_remove(tid);
|
||||
}
|
||||
keyword=gtk_entry_get_text(GTK_ENTRY(linphone_gtk_get_widget(w,"keyword")));
|
||||
if (strlen(keyword)>=4){
|
||||
if (strlen(keyword)>=1){
|
||||
guint tid2;
|
||||
ctx=(SipSetupContext*)g_object_get_data(G_OBJECT(w),"SipSetupContext");
|
||||
sip_setup_context_lookup_buddy(ctx,keyword);
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ const char *linphone_gtk_get_config_file(){
|
|||
static void linphone_gtk_init_liblinphone(const char *file){
|
||||
linphone_core_set_user_agent("Linphone", LINPHONE_VERSION);
|
||||
the_core=linphone_core_new(&vtable,file,NULL);
|
||||
linphone_core_set_waiting_callback(the_core,linphone_gtk_wait);
|
||||
linphone_core_set_waiting_callback(the_core,linphone_gtk_wait,NULL);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
*/
|
||||
|
||||
#include "linphone.h"
|
||||
LinphoneAccountCreator *linphone_gtk_assistant_get_creator(GtkWidget*w);
|
||||
|
||||
static GtkWidget *create_intro(){
|
||||
GtkWidget *vbox=gtk_vbox_new(FALSE,2);
|
||||
|
|
@ -76,14 +77,34 @@ static GtkWidget *create_username_checking_page(){
|
|||
return vbox;
|
||||
}
|
||||
|
||||
static void *progress_bar_update(LinphoneCore *lc, void *ctx, LinphoneWaitingState ws, const char *purpose, float progress){
|
||||
GtkWidget *pb=(GtkWidget*)ctx;
|
||||
if (ws==LinphoneWaitingProgress) gtk_progress_bar_pulse(GTK_PROGRESS_BAR(pb));
|
||||
else if (ws==LinphoneWaitingFinished) gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(pb),1);
|
||||
return ctx;
|
||||
}
|
||||
|
||||
static void check_username(GtkWidget *page){
|
||||
GtkWidget *progress=g_object_get_data(G_OBJECT(page),"progress");
|
||||
GtkWidget *label=g_object_get_data(G_OBJECT(page),"label");
|
||||
const char *username=g_object_get_data(G_OBJECT(page),"username");
|
||||
gchar *text=g_strdup_printf(_("Checking if '%s' is available..."),username);
|
||||
LinphoneAccountCreator *c=linphone_gtk_assistant_get_creator(gtk_widget_get_toplevel(page));
|
||||
int res;
|
||||
gtk_label_set_text(GTK_LABEL(label),text);
|
||||
g_free(text);
|
||||
gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress),_("Please wait..."));
|
||||
linphone_core_set_waiting_callback(linphone_gtk_get_core(),progress_bar_update,progress);
|
||||
res=linphone_account_creator_test_existence(c);
|
||||
if (res==1){
|
||||
gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress),_("Sorry this username already exists. Please try a new one."));
|
||||
}else if (res==0){
|
||||
gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress),_("Ok !"));
|
||||
gtk_assistant_set_page_complete(GTK_ASSISTANT(gtk_widget_get_toplevel(page)),page,TRUE);
|
||||
}else if (res==-1){
|
||||
gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress),_("Communication problem, please try again later."));
|
||||
}
|
||||
linphone_core_set_waiting_callback(linphone_gtk_get_core(),linphone_gtk_wait,NULL);
|
||||
}
|
||||
|
||||
static GtkWidget *create_finish_page(){
|
||||
|
|
@ -107,9 +128,8 @@ static int linphone_gtk_assistant_forward(int curpage, gpointer data){
|
|||
g_error("Not implemented yet...");
|
||||
}
|
||||
}else if (curpage==2){
|
||||
GtkWidget *next=gtk_assistant_get_nth_page(GTK_ASSISTANT(w),curpage+1);
|
||||
g_object_set_data(G_OBJECT(next),"username",
|
||||
g_strdup(gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box),"username")))));
|
||||
LinphoneAccountCreator *c=linphone_gtk_assistant_get_creator(w);
|
||||
linphone_account_creator_set_username(c,gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box),"username"))));
|
||||
}
|
||||
return curpage+1;
|
||||
}
|
||||
|
|
@ -125,6 +145,24 @@ static void linphone_gtk_assistant_prepare(GtkWidget *assistant, GtkWidget *page
|
|||
}
|
||||
}
|
||||
|
||||
static LinphoneAccountCreator * linphone_gtk_assistant_init(GtkWidget *w){
|
||||
const MSList *elem;
|
||||
LinphoneCore *lc=linphone_gtk_get_core();
|
||||
for(elem=linphone_core_get_sip_setups(lc);elem!=NULL;elem=elem->next){
|
||||
SipSetup *ss=(SipSetup*)elem->data;
|
||||
if (sip_setup_get_capabilities(ss) & SIP_SETUP_CAP_ACCOUNT_MANAGER){
|
||||
LinphoneAccountCreator *creator=linphone_account_creator_new(lc,ss->name);
|
||||
g_object_set_data(G_OBJECT(w),"creator",creator);
|
||||
return creator;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
LinphoneAccountCreator *linphone_gtk_assistant_get_creator(GtkWidget*w){
|
||||
return (LinphoneAccountCreator*)g_object_get_data(G_OBJECT(w),"creator");
|
||||
}
|
||||
|
||||
GtkWidget * linphone_gtk_create_assistant(void){
|
||||
GtkWidget *w=gtk_assistant_new();
|
||||
GtkWidget *p1=create_intro();
|
||||
|
|
@ -132,6 +170,8 @@ GtkWidget * linphone_gtk_create_assistant(void){
|
|||
GtkWidget *p3=create_username_chooser();
|
||||
GtkWidget *checking=create_username_checking_page();
|
||||
GtkWidget *end=create_finish_page();
|
||||
|
||||
linphone_gtk_assistant_init(w);
|
||||
gtk_assistant_append_page(GTK_ASSISTANT(w),p1);
|
||||
gtk_assistant_set_page_type(GTK_ASSISTANT(w),p1,GTK_ASSISTANT_PAGE_INTRO);
|
||||
gtk_assistant_set_page_title(GTK_ASSISTANT(w),p1,_("Welcome to the account setup assistant"));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue