Changeset 4220


Ignore:
Timestamp:
Dec 19, 2007, 6:11:10 PM (14 years ago)
Author:
charles
Message:

partial work on gtk+ 'minimal mode'

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gtk/torrent-cell-renderer.c

    r4212 r4220  
    1616#include <glib/gi18n.h>
    1717#include <libtransmission/transmission.h>
     18#include "hig.h"
    1819#include "torrent-cell-renderer.h"
    1920#include "tr_torrent.h"
     
    8283    else if( !isSeed )
    8384        str = g_strdup_printf(
    84                   _("%s of %s (%.2f%%), uploaded %s (Ratio: %.2f"),
     85                  _("%s of %s (%.2f%%), uploaded %s (Ratio: %.1f"),
    8586                  tr_strlsize( buf1, haveTotal, sizeof(buf1) ),
    8687                  tr_strlsize( buf2, info->totalSize, sizeof(buf2) ),
     
    9091    else
    9192        str = g_strdup_printf(
    92                   _("%s, uploaded %s (Ratio: %.2f)"),
     93                  _("%s, uploaded %s (Ratio: %.1f)"),
    9394                  tr_strlsize( buf1, info->totalSize, sizeof(buf1) ),
    9495                  tr_strlsize( buf2, torStat->uploadedEver, sizeof(buf2) ),
     
    99100
    100101static char*
    101 getStatusString( const tr_torrent * tor UNUSED, const tr_stat * torStat )
    102 {
     102getShortStatusString( const tr_stat    * torStat )
     103{
     104    char upStr[64], downStr[64];
     105    GString * gstr = g_string_new( NULL );
     106
     107    switch( torStat->status )
     108    {
     109        case TR_STATUS_STOPPED:
     110            g_string_assign( gstr, _("Paused") );
     111            break;
     112
     113        case TR_STATUS_CHECK_WAIT:
     114            g_string_assign( gstr, _( "Waiting to Verify local data" ) );
     115            break;
     116
     117        case TR_STATUS_CHECK:
     118            g_string_append_printf( gstr, _("Verifying local data (%.1f%% tested)"),
     119                                    torStat->recheckProgress * 100.0 );
     120
     121        case TR_STATUS_DOWNLOAD:
     122            tr_strlspeed( downStr, torStat->rateDownload, sizeof(downStr) ),
     123            tr_strlspeed( upStr, torStat->rateUpload, sizeof(upStr) );
     124            g_string_append_printf( gstr, _("DL: %s, UL: %s"), downStr, upStr );
     125            break;
     126
     127        case TR_STATUS_SEED:
     128        case TR_STATUS_DONE:
     129            tr_strlspeed( upStr, torStat->rateUpload, sizeof(upStr) );
     130            g_string_append_printf( gstr, _("Ratio: %.1f, UL: %s"),
     131                                    torStat->ratio*100.0, upStr );
     132            break;
     133
     134        default:
     135            break;
     136    }
     137
     138    return g_string_free( gstr, FALSE );
     139}
     140
     141static char*
     142getStatusString( const tr_stat * torStat )
     143{
     144    char * pch;
    103145    const int isActive = torStat->status != TR_STATUS_STOPPED;
    104146    const int isChecking = torStat->status == TR_STATUS_CHECK
     
    114156    {
    115157        case TR_STATUS_STOPPED:
    116             g_string_assign( gstr, _("Paused" ) );
    117             break;
    118 
    119158        case TR_STATUS_CHECK_WAIT:
    120             g_string_assign( gstr, _( "Waiting to Verify local data" ) );
    121             break;
    122 
    123159        case TR_STATUS_CHECK:
    124             g_string_append_printf( gstr, _("Verifying local data (%.1f%% tested)"),
    125                                     torStat->recheckProgress * 100.0 );
     160            pch = getShortStatusString( torStat );
     161            g_string_assign( gstr, pch );
     162            g_free( pch );
    126163            break;
    127164
     
    204241        const char * name = info->name;
    205242        const tr_stat * torStat = tr_torrentStat( (tr_torrent*)tor );
    206         char * progressString = getProgressString( tor, torStat );
    207         char * statusString = getStatusString( tor, torStat );
    208243        char * str;
    209244        int tmp_w, tmp_h;
     
    211246
    212247        /* above the progressbar */
    213         str = g_markup_printf_escaped( "<b>%s</b>\n<small>%s</small>",
    214                                        name, progressString );
    215         g_object_set( self->priv->text_renderer, "markup", str, NULL );
    216         gtk_cell_renderer_get_size( self->priv->text_renderer,
    217                                     widget, NULL, NULL, NULL, &tmp_w, &tmp_h );
    218         h += tmp_h;
    219         w = MAX( w, tmp_w );
    220         g_free( str );
     248        if( self->priv->minimal )
     249        {
     250            int w1, w2, h1, h2;
     251            char * shortStatusString = getShortStatusString( torStat );
     252            g_object_set( self->priv->text_renderer, "text", name, NULL );
     253            gtk_cell_renderer_get_size( self->priv->text_renderer,
     254                                        widget, NULL, NULL, NULL, &w1, &h1 );
     255            str = g_markup_printf_escaped( "<small>%s</small>", shortStatusString );
     256            g_object_set( self->priv->text_renderer, "markup", name, NULL );
     257            gtk_cell_renderer_get_size( self->priv->text_renderer,
     258                                        widget, NULL, NULL, NULL, &w2, &h2 );
     259            h += MAX( h1, h2 );
     260            w = MAX( w, w1+GUI_PAD_BIG+w2 );
     261            g_free( str );
     262            g_free( shortStatusString );
     263        }
     264        else
     265        {
     266            char * progressString = getProgressString( tor, torStat );
     267            str = g_markup_printf_escaped( "<b>%s</b>\n<small>%s</small>",
     268                                           name, progressString );
     269            g_object_set( self->priv->text_renderer, "markup", str, NULL );
     270            gtk_cell_renderer_get_size( self->priv->text_renderer,
     271                                        widget, NULL, NULL, NULL, &tmp_w, &tmp_h );
     272            h += tmp_h;
     273            w = MAX( w, tmp_w );
     274            g_free( str );
     275            g_free( progressString );
     276        }
    221277
    222278        /* below the progressbar */
    223         str = g_markup_printf_escaped( "<small>%s</small>", statusString );
    224         g_object_set( self->priv->text_renderer, "markup", str, NULL );
    225         gtk_cell_renderer_get_size( self->priv->text_renderer,
    226                                     widget, NULL, NULL, NULL, &tmp_w, &tmp_h );
    227         h += tmp_h;
    228         w = MAX( w, tmp_w );
    229         g_free( str );
    230 
    231         /* make the progressbar the same height as the below */
     279        if( !self->priv->minimal )
     280        {
     281            char * statusString = getStatusString( torStat );
     282            str = g_markup_printf_escaped( "<small>%s</small>", statusString );
     283            g_object_set( self->priv->text_renderer, "markup", str, NULL );
     284            gtk_cell_renderer_get_size( self->priv->text_renderer,
     285                                        widget, NULL, NULL, NULL, &tmp_w, &tmp_h );
     286            h += tmp_h;
     287            w = MAX( w, tmp_w );
     288            g_free( str );
     289            g_free( statusString );
     290        }
     291
    232292        h += self->priv->bar_height;
    233293
     
    242302        *width = w + xpad*2;
    243303        *height = h + ypad*2;
    244 
    245         /* cleanup */
    246         g_free( statusString );
    247         g_free( progressString );
    248304    }
    249305}
     
    416472        const tr_stat * torStat = tr_torrentStat( (tr_torrent*)tor );
    417473        char * progressString = getProgressString( tor, torStat );
    418         char * statusString = getStatusString( tor, torStat );
     474        char * statusString = getStatusString( torStat );
    419475        char * str;
    420476        GdkRectangle my_bg;
     
    462518
    463519        /* below progressbar */
    464         str = g_markup_printf_escaped( "<small>%s</small>", statusString );
    465         g_object_set( self->priv->text_renderer, "markup", str, NULL );
    466         gtk_cell_renderer_get_size( self->priv->text_renderer,
    467                                     widget, NULL, NULL, NULL, &w, &h );
    468         my_bg.height      = h;
    469         my_cell.height    = h;
    470         my_expose.height  = h;
    471         gtk_cell_renderer_render( self->priv->text_renderer,
    472                                   window, widget,
    473                                   &my_bg, &my_cell, &my_expose, flags );
     520        if( !self->priv->minimal )
     521        {
     522            str = g_markup_printf_escaped( "<small>%s</small>", statusString );
     523            g_object_set( self->priv->text_renderer, "markup", str, NULL );
     524            gtk_cell_renderer_get_size( self->priv->text_renderer,
     525                                        widget, NULL, NULL, NULL, &w, &h );
     526            my_bg.height      = h;
     527            my_cell.height    = h;
     528            my_expose.height  = h;
     529            gtk_cell_renderer_render( self->priv->text_renderer,
     530                                      window, widget,
     531                                      &my_bg, &my_cell, &my_expose, flags );
     532        }
    474533
    475534        g_free( statusString );
     
    479538
    480539static void
    481 setColor( GdkColor * color, const GValue * value )
     540v2c( GdkColor * color, const GValue * value )
    482541{
    483542    gdk_color_parse( g_value_get_string( value ), color );
     
    487546torrent_cell_renderer_set_property( GObject      * object,
    488547                                    guint          property_id,
    489                                     const GValue * value,
     548                                    const GValue * v,
    490549                                    GParamSpec   * pspec)
    491550{
     
    495554    switch( property_id )
    496555    {
    497         case P_TORRENT:             p->tor = g_value_get_pointer( value ); break;
    498         case P_BAR_HEIGHT:          p->bar_height = g_value_get_int( value ); break;
    499         case P_MINIMAL:             p->minimal          = g_value_get_boolean( value ); break;
    500         case P_GRADIENT:            p->gradient         = g_value_get_boolean( value ); break;
    501         case P_SHOW_UNAVAILABLE:    p->show_unavailable = g_value_get_boolean( value ); break;
    502         case P_COLOR_MISSING:       setColor( &p->color_missing[0],     value ); break;
    503         case P_COLOR_MISSING_2:     setColor( &p->color_missing[1],     value ); break;
    504         case P_COLOR_UNWANTED:      setColor( &p->color_unwanted[0],    value ); break;
    505         case P_COLOR_UNWANTED_2:    setColor( &p->color_unwanted[1],    value ); break;
    506         case P_COLOR_PAUSED:        setColor( &p->color_paused[0],      value ); break;
    507         case P_COLOR_PAUSED_2:      setColor( &p->color_paused[1],      value ); break;
    508         case P_COLOR_VERIFIED:      setColor( &p->color_verified[0],    value ); break;
    509         case P_COLOR_VERIFIED_2:    setColor( &p->color_verified[1],    value ); break;
    510         case P_COLOR_UNAVAILABLE:   setColor( &p->color_unavailable[0], value ); break;
    511         case P_COLOR_UNAVAILABLE_2: setColor( &p->color_unavailable[1], value ); break;
    512         case P_COLOR_VERIFYING:     setColor( &p->color_verifying[0],   value ); break;
    513         case P_COLOR_VERIFYING_2:   setColor( &p->color_verifying[1],   value ); break;
    514         case P_COLOR_SEEDING:       setColor( &p->color_seeding[0],     value ); break;
    515         case P_COLOR_SEEDING_2:     setColor( &p->color_seeding[1],     value ); break;
     556        case P_TORRENT:             p->tor = g_value_get_pointer( v ); break;
     557        case P_BAR_HEIGHT:          p->bar_height = g_value_get_int( v ); break;
     558        case P_MINIMAL:             p->minimal  = g_value_get_boolean( v ); break;
     559        case P_GRADIENT:            p->gradient = g_value_get_boolean( v ); break;
     560        case P_SHOW_UNAVAILABLE:    p->show_unavailable = g_value_get_boolean( v ); break;
     561        case P_COLOR_MISSING:       v2c( &p->color_missing[0],     v ); break;
     562        case P_COLOR_MISSING_2:     v2c( &p->color_missing[1],     v ); break;
     563        case P_COLOR_UNWANTED:      v2c( &p->color_unwanted[0],    v ); break;
     564        case P_COLOR_UNWANTED_2:    v2c( &p->color_unwanted[1],    v ); break;
     565        case P_COLOR_PAUSED:        v2c( &p->color_paused[0],      v ); break;
     566        case P_COLOR_PAUSED_2:      v2c( &p->color_paused[1],      v ); break;
     567        case P_COLOR_VERIFIED:      v2c( &p->color_verified[0],    v ); break;
     568        case P_COLOR_VERIFIED_2:    v2c( &p->color_verified[1],    v ); break;
     569        case P_COLOR_UNAVAILABLE:   v2c( &p->color_unavailable[0], v ); break;
     570        case P_COLOR_UNAVAILABLE_2: v2c( &p->color_unavailable[1], v ); break;
     571        case P_COLOR_VERIFYING:     v2c( &p->color_verifying[0],   v ); break;
     572        case P_COLOR_VERIFYING_2:   v2c( &p->color_verifying[1],   v ); break;
     573        case P_COLOR_SEEDING:       v2c( &p->color_seeding[0],     v ); break;
     574        case P_COLOR_SEEDING_2:     v2c( &p->color_seeding[1],     v ); break;
    516575        default: G_OBJECT_WARN_INVALID_PROPERTY_ID( object, property_id, pspec ); break;
    517576    }
     
    519578
    520579static void
    521 setValueColor( GValue * value, const GdkColor * color )
     580c2v( GValue * value, const GdkColor * color )
    522581{
    523582    char buf[16];
     
    533592torrent_cell_renderer_get_property( GObject      * object,
    534593                                    guint          property_id,
    535                                     GValue       * value,
     594                                    GValue       * v,
    536595                                    GParamSpec   * pspec)
    537596{
     
    541600    switch( property_id )
    542601    {
    543         case P_TORRENT:             g_value_set_pointer( value, p->tor ); break;
    544         case P_BAR_HEIGHT:          g_value_set_int( value, p->bar_height ); break;
    545         case P_MINIMAL:             g_value_set_boolean( value, p->minimal ); break;
    546         case P_GRADIENT:            g_value_set_boolean( value, p->gradient ); break;
    547         case P_SHOW_UNAVAILABLE:    g_value_set_boolean( value, p->show_unavailable ); break;
    548         case P_COLOR_MISSING:       setValueColor( value, &p->color_missing[0] ); break;
    549         case P_COLOR_MISSING_2:     setValueColor( value, &p->color_missing[1] ); break;
    550         case P_COLOR_UNWANTED:      setValueColor( value, &p->color_unwanted[0] ); break;
    551         case P_COLOR_UNWANTED_2:    setValueColor( value, &p->color_unwanted[1] ); break;
    552         case P_COLOR_PAUSED:        setValueColor( value, &p->color_paused[0] ); break;
    553         case P_COLOR_PAUSED_2:      setValueColor( value, &p->color_paused[1] ); break;
    554         case P_COLOR_VERIFIED:      setValueColor( value, &p->color_verified[0] ); break;
    555         case P_COLOR_VERIFIED_2:    setValueColor( value, &p->color_verified[1] ); break;
    556         case P_COLOR_UNAVAILABLE:   setValueColor( value, &p->color_unavailable[0] ); break;
    557         case P_COLOR_UNAVAILABLE_2: setValueColor( value, &p->color_unavailable[1] ); break;
    558         case P_COLOR_VERIFYING:     setValueColor( value, &p->color_verifying[0] ); break;
    559         case P_COLOR_VERIFYING_2:   setValueColor( value, &p->color_verifying[1] ); break;
    560         case P_COLOR_SEEDING:       setValueColor( value, &p->color_seeding[0] ); break;
    561         case P_COLOR_SEEDING_2:     setValueColor( value, &p->color_seeding[1] ); break;
     602        case P_TORRENT:             g_value_set_pointer( v, p->tor ); break;
     603        case P_BAR_HEIGHT:          g_value_set_int( v, p->bar_height ); break;
     604        case P_MINIMAL:             g_value_set_boolean( v, p->minimal ); break;
     605        case P_GRADIENT:            g_value_set_boolean( v, p->gradient ); break;
     606        case P_SHOW_UNAVAILABLE:    g_value_set_boolean( v, p->show_unavailable ); break;
     607        case P_COLOR_MISSING:       c2v( v, &p->color_missing[0] ); break;
     608        case P_COLOR_MISSING_2:     c2v( v, &p->color_missing[1] ); break;
     609        case P_COLOR_UNWANTED:      c2v( v, &p->color_unwanted[0] ); break;
     610        case P_COLOR_UNWANTED_2:    c2v( v, &p->color_unwanted[1] ); break;
     611        case P_COLOR_PAUSED:        c2v( v, &p->color_paused[0] ); break;
     612        case P_COLOR_PAUSED_2:      c2v( v, &p->color_paused[1] ); break;
     613        case P_COLOR_VERIFIED:      c2v( v, &p->color_verified[0] ); break;
     614        case P_COLOR_VERIFIED_2:    c2v( v, &p->color_verified[1] ); break;
     615        case P_COLOR_UNAVAILABLE:   c2v( v, &p->color_unavailable[0] ); break;
     616        case P_COLOR_UNAVAILABLE_2: c2v( v, &p->color_unavailable[1] ); break;
     617        case P_COLOR_VERIFYING:     c2v( v, &p->color_verifying[0] ); break;
     618        case P_COLOR_VERIFYING_2:   c2v( v, &p->color_verifying[1] ); break;
     619        case P_COLOR_SEEDING:       c2v( v, &p->color_seeding[0] ); break;
     620        case P_COLOR_SEEDING_2:     c2v( v, &p->color_seeding[1] ); break;
    562621        default:
    563622            G_OBJECT_WARN_INVALID_PROPERTY_ID( object, property_id, pspec );
Note: See TracChangeset for help on using the changeset viewer.