Changeset 4998 for trunk/gtk/tr_core.c
- Timestamp:
- Feb 9, 2008, 5:29:05 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gtk/tr_core.c
r4978 r4998 39 39 #include "util.h" 40 40 41 struct TrCorePrivate 42 { 43 GtkTreeModel * model; 44 tr_handle * handle; 45 int nextid; 46 gboolean quitting; 47 struct core_stats stats; 48 }; 49 41 50 static void 42 51 tr_core_marshal_err( GClosure * closure, GValue * ret UNUSED, guint count, … … 118 127 } 119 128 129 static int 130 isDisposed( const TrCore * core ) 131 { 132 return !core || !core->priv; 133 } 134 120 135 static void 121 136 tr_core_dispose( GObject * obj ) 122 137 { 123 TrCore * self = (TrCore *) obj;138 TrCore * core = TR_CORE( obj ); 124 139 GObjectClass * parent; 125 140 126 if( self->disposed ) 127 return; 128 129 self->disposed = TRUE; 130 pref_save( NULL ); 141 if( !isDisposed( core ) ) 142 { 143 pref_save( NULL ); 144 core->priv = NULL; 145 } 146 131 147 parent = g_type_class_peek( g_type_parent( TR_CORE_TYPE ) ); 132 148 parent->dispose( obj ); … … 142 158 gobject_class = G_OBJECT_CLASS( g_class ); 143 159 gobject_class->dispose = tr_core_dispose; 160 161 g_type_class_add_private( g_class, 162 sizeof(struct TrCorePrivate) ); 163 144 164 145 165 core_class = TR_CORE_CLASS( g_class ); … … 292 312 int col = MC_TORRENT_RAW; 293 313 GtkSortType type = isReversed ? GTK_SORT_ASCENDING : GTK_SORT_DESCENDING; 294 GtkTreeSortable * sortable = GTK_TREE_SORTABLE( core->model ); 314 GtkTreeModel * model = tr_core_model( core ); 315 GtkTreeSortable * sortable = GTK_TREE_SORTABLE( model ); 295 316 296 317 if( !strcmp( mode, "sort-by-activity" ) ) … … 325 346 { 326 347 const uint16_t val = pref_int_get( key ); 327 tr_setGlobalPeerLimit( core->handle, val );348 tr_setGlobalPeerLimit( tr_core_handle( core ), val ); 328 349 } 329 350 } … … 335 356 TrCore * self = (TrCore *) instance; 336 357 GtkListStore * store; 358 struct TrCorePrivate * p; 337 359 338 360 /* column types for the model used to store torrent information */ … … 347 369 G_TYPE_INT /* ID for IPC */ 348 370 }; 371 372 p = self->priv = G_TYPE_INSTANCE_GET_PRIVATE( self, 373 TR_CORE_TYPE, 374 struct TrCorePrivate ); 375 349 376 350 377 h = tr_initFull( "gtk", … … 367 394 store = gtk_list_store_newv( MC_ROW_COUNT, types ); 368 395 369 self->model = GTK_TREE_MODEL( store ); 370 self->handle = h; 371 self->nextid = 1; 372 self->quitting = FALSE; 373 self->disposed = FALSE; 396 p->model = GTK_TREE_MODEL( store ); 397 p->handle = h; 398 p->nextid = 1; 399 p->quitting = FALSE; 374 400 } 375 401 … … 419 445 420 446 GtkTreeModel * 421 tr_core_model( TrCore * self ) 422 { 423 g_return_val_if_fail (TR_IS_CORE(self), NULL); 424 425 return self->disposed ? NULL : self->model; 447 tr_core_model( TrCore * core ) 448 { 449 return isDisposed( core ) ? NULL : core->priv->model; 426 450 } 427 451 428 452 tr_handle * 429 tr_core_handle( TrCore * self ) 430 { 431 g_return_val_if_fail (TR_IS_CORE(self), NULL); 432 433 return self->disposed ? NULL : self->handle; 453 tr_core_handle( TrCore * core ) 454 { 455 return isDisposed( core ) ? NULL : core->priv->handle; 456 } 457 458 459 const struct core_stats* 460 tr_core_get_stats( const TrCore * core ) 461 { 462 return isDisposed( core ) ? NULL : &core->priv->stats; 434 463 } 435 464 … … 464 493 const tr_stat * torStat = tr_torrent_stat( tor ); 465 494 char * collated = doCollate( inf->name ); 495 GtkListStore * store = GTK_LIST_STORE( tr_core_model( self ) ); 466 496 GtkTreeIter unused; 467 gtk_list_store_insert_with_values( GTK_LIST_STORE( self->model ), &unused, 0,497 gtk_list_store_insert_with_values( store, &unused, 0, 468 498 MC_NAME, inf->name, 469 499 MC_NAME_COLLATED, collated, … … 472 502 MC_TORRENT_RAW, tor->handle, 473 503 MC_STATUS, torStat->status, 474 MC_ID, self-> nextid,504 MC_ID, self->priv->nextid, 475 505 -1); 476 self-> nextid++;506 self->priv->nextid++; 477 507 g_object_unref( tor ); 478 508 g_free( collated ); … … 492 522 path = getdownloaddir( ); 493 523 494 ctor = tr_ctorNew( self->handle);524 ctor = tr_ctorNew( tr_core_handle( self ) ); 495 525 if( forcePaused ) 496 526 tr_ctorSetPaused( ctor, TR_FORCE, TRUE ); … … 498 528 tr_ctorSetMaxConnectedPeers( ctor, TR_FALLBACK, pref_int_get( PREF_KEY_MAX_PEERS_PER_TORRENT ) ); 499 529 500 torrents = tr_loadTorrents ( self->handle, ctor, &count );530 torrents = tr_loadTorrents ( tr_core_handle( self ), ctor, &count ); 501 531 for( i=0; i<count; ++i ) 502 532 tr_core_insert( self, tr_torrent_new_preexisting( torrents[i] ) ); … … 544 574 545 575 errstr = NULL; 546 tor = tr_torrent_new( self->handle, path, dir, act, paused, &errstr );576 tor = tr_torrent_new( tr_core_handle( self ), path, dir, act, paused, &errstr ); 547 577 if( NULL == tor ) 548 578 { … … 613 643 TR_IS_CORE( self ); 614 644 615 tor = tr_torrent_new_with_data( self->handle, data, size, dir,645 tor = tr_torrent_new_with_data( tr_core_handle( self ), data, size, dir, 616 646 paused, &errstr ); 617 647 if( NULL == tor ) … … 641 671 { 642 672 TrTorrent * tor; 673 GtkTreeModel * model = tr_core_model( self ); 643 674 644 675 TR_IS_CORE( self ); 645 676 646 gtk_tree_model_get( self->model, iter, MC_TORRENT, &tor, -1 );647 gtk_list_store_remove( GTK_LIST_STORE( self->model ), iter );677 gtk_tree_model_get( model, iter, MC_TORRENT, &tor, -1 ); 678 gtk_list_store_remove( GTK_LIST_STORE( model ), iter ); 648 679 tr_torrentRemoveSaved( tr_torrent_handle( tor ) ); 649 680 650 681 g_object_unref( G_OBJECT( tor ) ); 651 682 } 683 684 /*** 685 **** 686 ***/ 652 687 653 688 static gboolean … … 694 729 GtkSortType order; 695 730 GtkTreeSortable * sortable; 731 GtkTreeModel * model = tr_core_model( self ); 696 732 697 733 /* pause sorting */ 698 sortable = GTK_TREE_SORTABLE( self->model );734 sortable = GTK_TREE_SORTABLE( model ); 699 735 gtk_tree_sortable_get_sort_column_id( sortable, &column, &order ); 700 736 gtk_tree_sortable_set_sort_column_id( sortable, GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID, order ); 701 737 702 738 /* refresh the model */ 703 memset( &self-> stats, 0, sizeof( struct core_stats ) );704 gtk_tree_model_foreach( self->model, update_foreach, &self->stats );739 memset( &self->priv->stats, 0, sizeof( struct core_stats ) ); 740 gtk_tree_model_foreach( model, update_foreach, &self->priv->stats ); 705 741 706 742 /* resume sorting */
Note: See TracChangeset
for help on using the changeset viewer.