Changeset 6831


Ignore:
Timestamp:
Oct 2, 2008, 3:29:45 PM (13 years ago)
Author:
charles
Message:

(gtk) #1026: "new torrent" dialogue: remember last announce URL

Location:
trunk/gtk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/gtk/makemeta-ui.c

    r6795 r6831  
    1919#include <libtransmission/makemeta.h>
    2020
     21#include "conf.h"
    2122#include "hig.h"
    2223#include "makemeta-ui.h"
     
    2728
    2829#define UI_KEY "ui"
     30#define ANNOUNCE_KEY "recent-announce-url"
    2931
    3032typedef struct
     
    212214    trackers = tracker_list_get_trackers( ui->announce_list, &trackerCount );
    213215
     216    pref_int_set( ANNOUNCE_KEY"-count", trackerCount );
     217    for( i=0; i<trackerCount; ++i )
     218    {
     219        char key[512];
     220        g_snprintf( key, sizeof( key ), ANNOUNCE_KEY"-%d-tier", i );
     221        pref_int_set( key, trackers[i].tier );
     222        g_snprintf( key, sizeof( key ), ANNOUNCE_KEY"-%d-announce", i );
     223        pref_string_set( key, trackers[i].announce );
     224    }
     225
    214226    tr_makeMetaInfo( ui->builder,
    215227                    NULL,
     
    356368              tr_handle * handle )
    357369{
     370    int          n;
    358371    int          row = 0;
    359372    GtkWidget *  d, *t, *w, *h, *h2, *v, *focusMe, *extras;
     
    415428
    416429    w = tracker_list_new( NULL );
     430
     431    n = pref_int_get( ANNOUNCE_KEY"-count" );
     432    if( n > 0 )
     433    {
     434        int i;
     435        int trackerCount = 0;
     436        tr_tracker_info * trackers = g_new0( tr_tracker_info, n );
     437         
     438        for( i=0; i<n; ++i )
     439        {
     440            char key[512];
     441            int tier;
     442            const char * announce;
     443            g_snprintf( key, sizeof( key ), ANNOUNCE_KEY"-%d-tier", i );
     444            tier = pref_int_get( key );
     445            g_snprintf( key, sizeof( key ), ANNOUNCE_KEY"-%d-announce", i );
     446            announce = pref_string_get( key );
     447            if( tier >= 0 && announce && *announce ) {
     448                trackers[trackerCount].tier = tier;
     449                trackers[trackerCount++].announce = (char*) announce;
     450            }
     451        }
     452
     453        if( trackerCount > 0 )
     454            tracker_list_add_trackers( w, trackers, trackerCount );
     455
     456        g_free( trackers );
     457    }
     458
    417459    ui->announce_list = w;
    418460    hig_workarea_add_wide_control( t, &row, w );
  • trunk/gtk/tracker-list.c

    r6807 r6831  
    3030
    3131#define UPDATE_INTERVAL_MSEC 2000
    32 
     32#define PAGE_KEY "page"
    3333
    3434struct tracker_page
     
    8686        const tr_tracker_info * tinf = inf->trackers + i;
    8787        gtk_list_store_append( store, &iter );
    88         gtk_list_store_set( store, &iter, TR_COL_TIER, tinf->tier + 1,
     88        gtk_list_store_set( store, &iter,
     89                            TR_COL_TIER, tinf->tier + 1,
    8990                            TR_COL_ANNOUNCE, tinf->announce,
    9091                            -1 );
     
    140141    gtk_list_store_append( page->store, &iter );
    141142    setTrackerChangeState( page, TRUE );
    142     gtk_list_store_set( page->store, &iter, TR_COL_TIER, 1,
     143    gtk_list_store_set( page->store, &iter,
     144                        TR_COL_TIER, 1,
    143145                        TR_COL_ANNOUNCE, "http://",
    144146                        -1 );
     
    376378    onTrackerSelectionChanged( sel, page );
    377379
    378     g_object_set_data_full( G_OBJECT( top ), "page", page, g_free );
     380    g_object_set_data_full( G_OBJECT( top ), PAGE_KEY, page, g_free );
    379381    return top;
    380382}
     
    385387{
    386388    struct tracker_page * page = g_object_get_data( G_OBJECT(
    387                                                         list ), "page" );
     389                                                        list ), PAGE_KEY );
    388390    GtkTreeModel *        model = GTK_TREE_MODEL( page->store );
    389391    const int             n = gtk_tree_model_iter_n_children( model, NULL );
     
    396398    if( gtk_tree_model_get_iter_first( model, &iter ) ) do
    397399        {
    398             gtk_tree_model_get( model, &iter, TR_COL_TIER,
    399                                 &trackers[i].tier,
     400            int tier;
     401            gtk_tree_model_get( model, &iter,
     402                                TR_COL_TIER, &tier,
    400403                                TR_COL_ANNOUNCE, &trackers[i].announce,
    401404                                -1 );
     405            /* tracker_info.tier is zero-based, but the display is 1-based */
     406            trackers[i].tier = tier - 1;
    402407            ++i;
    403408        }
     
    411416}
    412417
     418void
     419tracker_list_add_trackers( GtkWidget             * list,
     420                           const tr_tracker_info * trackers,
     421                           int                     trackerCount )
     422{
     423    int i;
     424    struct tracker_page * page = g_object_get_data( G_OBJECT( list ), PAGE_KEY );
     425    GtkListStore * store = page->store;
     426
     427    for( i=0; i<trackerCount; ++i )
     428    {
     429        GtkTreeIter             iter;
     430        gtk_list_store_append( store, &iter );
     431        gtk_list_store_set( store, &iter,
     432                            TR_COL_TIER, trackers[i].tier + 1,
     433                            TR_COL_ANNOUNCE, trackers[i].announce,
     434                            -1 );
     435    }
     436}
  • trunk/gtk/tracker-list.h

    r6795 r6831  
    1212 */
    1313tr_tracker_info* tracker_list_get_trackers( GtkWidget * list,
    14                                             int *       trackerCount );
     14                                            int       * trackerCount );
     15
     16void tracker_list_add_trackers( GtkWidget             * list,
     17                                const tr_tracker_info * trackers,
     18                                int                     trackerCount );
    1519
    1620#endif
Note: See TracChangeset for help on using the changeset viewer.