コード例 #1
0
ファイル: loginpanel.c プロジェクト: jayivy/gtkqq
/*
 * Callback of login_btn button
 */
static void login_btn_cb(GtkButton *btn, gpointer data)
{
    QQLoginPanel *panel = QQ_LOGINPANEL(data);
    GtkWidget *win = panel -> container;
    qq_mainwindow_show_splashpanel(win);
		

    panel -> uin = qq_loginpanel_get_uin(panel);
    panel -> passwd = qq_loginpanel_get_passwd(panel);
    panel -> status = qq_loginpanel_get_status(panel);
	panel -> rempw = qq_loginpanel_get_rempw(panel);

    g_debug("Start login... qqnum: %s, status: %s (%s, %d)", panel -> uin
            , panel -> status, __FILE__, __LINE__);

    // run the login state machine
    g_debug("Run login state machine...(%s, %d)", __FILE__, __LINE__);
    state = LOGIN_SM_CHECKVC;
    run_login_state_machine(panel);

    g_object_set(cfg, "qqnum", panel -> uin, NULL);
    g_object_set(cfg, "passwd", panel -> passwd, NULL);
    g_object_set(cfg, "status", panel -> status, NULL);
	g_object_set(cfg, "rempw", panel -> rempw, NULL);

    qq_buddy_set(info -> me, "qqnumber", panel -> uin);
    qq_buddy_set(info -> me, "uin", panel -> uin);
    qq_buddy_set(info -> me, "status", panel -> status);

    //clear the error message.
    gtk_label_set_text(GTK_LABEL(panel -> err_label), "");
    gqq_config_save_last_login_user(cfg);
}
コード例 #2
0
ファイル: qqlogin.c プロジェクト: wanderxjtu/gtkqq
gint qq_login(QQInfo *info, const gchar *qqnum, const gchar *passwd
		        , const gchar *status, GError **err)
{
	if(info == NULL){
		g_warning("info == NULL. (%s, %d)", __FILE__, __LINE__);
        create_error_msg(err, PARAMETER_ERR, "info == NULL");
		return PARAMETER_ERR;
	}
	if(qqnum == NULL || passwd == NULL || strlen(qqnum) == 0){
		g_warning("qqnumber or passwd == NULL.(%s, %d)"
				, __FILE__, __LINE__);
        create_error_msg(err, PARAMETER_ERR, "qqnum or passwd  == NULL");
		return PARAMETER_ERR;
	}

    //
    // The user's uin and qq number are the same.
    //
    qq_buddy_set(info -> me, "qqnumber", qqnum);
    qq_buddy_set(info -> me, "uin", qqnum);

	if(status != NULL){
        qq_buddy_set(info -> me, "status", status);
	}else{
        qq_buddy_set(info -> me, "status", "online");
	}

    return do_login(info, qqnum, passwd, status, err);
}
コード例 #3
0
ファイル: qqtypes.c プロジェクト: 4179e1/gtkqq
//
// QQBuddy
//
QQBuddy* qq_buddy_new()
{
    QQBuddy *bd = g_slice_new0(QQBuddy);
    bd -> vip_info = -1;
    bd -> client_type = -1;
#define NEW_STR(x) bd -> x = g_string_new("")
    NEW_STR(uin);
    NEW_STR(qqnumber);
    NEW_STR(status);
    NEW_STR(nick);
    NEW_STR(markname);
    NEW_STR(country);
    NEW_STR(city);
    NEW_STR(province);
    NEW_STR(gender);
    NEW_STR(face);
    NEW_STR(flag);
    NEW_STR(phone);
    NEW_STR(mobile);
    NEW_STR(email);
    NEW_STR(college);
    NEW_STR(occupation);
    NEW_STR(personal);
    NEW_STR(homepage);
    NEW_STR(lnick);
#undef NEW_STR
    
    qq_buddy_set(bd, "status", "offline");
    return bd;
}
コード例 #4
0
ファイル: loginpanel.c プロジェクト: jayivy/gtkqq
//
// Get buddy qq number thread func
//
static gpointer get_buddy_qqnumber_thread_func(gpointer data)
{
    ThreadFuncPar *par = data;
    gint t_num = par -> t_num;
    gint id = par -> id;
    QQInfo *info = par -> info;
    g_slice_free(ThreadFuncPar, par);
    gint i;
    gchar num[100];
    QQBuddy *bdy;

    for(i = id; i < info -> buddies -> len; i += t_num){
        bdy = g_ptr_array_index(info -> buddies, i);
        qq_get_qq_number(info, bdy -> uin -> str, num, NULL);
        qq_buddy_set(bdy, "qqnumber", num);
    }
    return NULL;
}
コード例 #5
0
ファイル: dao.c プロジェクト: wanderxjtu/gtkqq
gint db_get_buddy(sqlite3 *db, const gchar *owner, QQBuddy *bdy, gint *cnt)
{
    if(db == NULL || owner == NULL || bdy == NULL){
        return SQLITE_ERROR;
    }
    GString *sql = g_string_sized_new(500);
    g_string_append(sql, "select "
                        "vip_info, nick, markname,"
                        "country, province, city, gender,"
                        "face, flag,"
                        "blood, shengxiao, constel, phone, mobile, email,"
                        "occupation, college, homepage, personal, lnick, "
                        "birthday_y, birthday_m, birthday_d "
                        "from buddies where owner=");
    g_string_append_printf(sql, "'%s' and qqnumber='%s';"
                                    , owner, bdy -> qqnumber -> str);

    sqlite3_stmt *stmt = NULL;
    if(sqlite3_prepare_v2(db, sql -> str, 500, &stmt, NULL) != SQLITE_OK){
        g_warning("prepare sql error. SQL(%s) (%s, %d)", sql -> str
                                                    , __FILE__, __LINE__);
        g_string_free(sql, TRUE);
        return SQLITE_ERROR;
    }
    g_string_free(sql, TRUE);

    gint retcode = SQLITE_OK;
    gint idx, y, m, d;
    gint num = 0;
    while(TRUE){
        retcode = sqlite3_step(stmt);
        switch(retcode)
        {
        case SQLITE_ROW:
            bdy = qq_buddy_new();
            idx = -1;
            qq_buddy_set(bdy, "vip_info", sqlite3_column_int(stmt, ++idx));
            qq_buddy_set(bdy, "nick", (const gchar *)sqlite3_column_text(stmt, ++idx));
            qq_buddy_set(bdy, "markname", (const gchar *)sqlite3_column_text(stmt, ++idx));
            qq_buddy_set(bdy, "country", (const gchar *)sqlite3_column_text(stmt, ++idx));
            qq_buddy_set(bdy, "province", (const gchar *)sqlite3_column_text(stmt, ++idx));
            qq_buddy_set(bdy, "city", (const gchar *)sqlite3_column_text(stmt, ++idx));
            qq_buddy_set(bdy, "gender", (const gchar *)sqlite3_column_text(stmt, ++idx));
            qq_buddy_set(bdy, "face", (const gchar *)sqlite3_column_text(stmt, ++idx));
            qq_buddy_set(bdy, "flag", (const gchar *)sqlite3_column_text(stmt, ++idx));
            qq_buddy_set(bdy, "blood", sqlite3_column_int(stmt, ++idx));
            qq_buddy_set(bdy, "shengxiao", sqlite3_column_int(stmt, ++idx));
            qq_buddy_set(bdy, "constel", sqlite3_column_int(stmt, ++idx));
            qq_buddy_set(bdy, "phone", (const gchar *)sqlite3_column_text(stmt, ++idx));
            qq_buddy_set(bdy, "mobile", (const gchar *)sqlite3_column_text(stmt,++idx));
            qq_buddy_set(bdy, "email", (const gchar *)sqlite3_column_text(stmt, ++idx));
            qq_buddy_set(bdy, "occupation", (const gchar *)sqlite3_column_text(stmt, ++idx));
            qq_buddy_set(bdy, "college", (const gchar *)sqlite3_column_text(stmt, ++idx));
            qq_buddy_set(bdy, "homepage", (const gchar *)sqlite3_column_text(stmt, ++idx));
            qq_buddy_set(bdy, "personal", (const gchar *)sqlite3_column_text(stmt, ++idx));
            qq_buddy_set(bdy, "lnick", (const gchar *)sqlite3_column_text(stmt, ++idx));
            y = sqlite3_column_int(stmt, ++idx);
            m = sqlite3_column_int(stmt, ++idx);
            d = sqlite3_column_int(stmt, ++idx);
            qq_buddy_set(bdy, "birthday", y, m, d);
            ++num;
            break;
        case SQLITE_DONE:
            retcode = SQLITE_OK;
            goto out_label;
            break;
        default:
            g_warning("sqlite3_step error!(%s, %d)", __FILE__, __LINE__);
            goto out_label;
            break;
        }
    }

out_label:
    if(cnt != NULL){
        *cnt = num;
    }
    sqlite3_finalize(stmt);
    return retcode;
}