(trunk gtk) #3348 "Add URL doesn't warn upon corrupt torrents" -- fixed.
This commit is contained in:
parent
7638e44724
commit
c927189fed
|
@ -1018,40 +1018,53 @@ struct url_dialog_data
|
|||
{
|
||||
TrCore * core;
|
||||
tr_ctor * ctor;
|
||||
GtkDialog * dialog;
|
||||
char * url;
|
||||
char * error;
|
||||
int response_code;
|
||||
};
|
||||
|
||||
static gboolean
|
||||
onURLDoneIdle( gpointer vdata )
|
||||
{
|
||||
struct url_dialog_data * data = vdata;
|
||||
tr_core_add_ctor( data->core, data->ctor );
|
||||
|
||||
if( data->response_code != 200 )
|
||||
{
|
||||
gtr_http_failure_dialog( NULL, data->url, data->response_code );
|
||||
}
|
||||
else
|
||||
{
|
||||
const gboolean doPrompt = pref_flag_get( PREF_KEY_OPTIONS_PROMPT );
|
||||
const gboolean doNotify = FALSE;
|
||||
const int err = add_ctor( data->core, data->ctor, doPrompt, doNotify );
|
||||
|
||||
if( err == TR_PARSE_ERR )
|
||||
tr_core_errsig( data->core, TR_PARSE_ERR, data->url );
|
||||
|
||||
tr_core_torrents_added( data->core );
|
||||
}
|
||||
|
||||
/* cleanup */
|
||||
g_free( data->url );
|
||||
g_free( data );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
onURLDone( tr_session * session,
|
||||
long response_code UNUSED,
|
||||
const void * response,
|
||||
size_t response_byte_count,
|
||||
void * vdata )
|
||||
onURLDone( tr_session * session,
|
||||
long response_code,
|
||||
const void * response,
|
||||
size_t response_byte_count,
|
||||
void * vdata )
|
||||
{
|
||||
struct url_dialog_data * data = vdata;
|
||||
tr_ctor * ctor = tr_ctorNew( session );
|
||||
|
||||
/* FIME: error dialog */
|
||||
data->response_code = response_code;
|
||||
data->ctor = tr_ctorNew( session );
|
||||
tr_core_apply_defaults( data->ctor );
|
||||
tr_ctorSetMetainfo( data->ctor, response, response_byte_count );
|
||||
|
||||
if( tr_ctorSetMetainfo( ctor, response, response_byte_count ) )
|
||||
{
|
||||
tr_ctorFree( ctor );
|
||||
g_free( data );
|
||||
}
|
||||
else /* move the work back to the gtk thread */
|
||||
{
|
||||
data->ctor = ctor;
|
||||
gtr_idle_add( onURLDoneIdle, data );
|
||||
}
|
||||
gtr_idle_add( onURLDoneIdle, data );
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1084,6 +1097,7 @@ tr_core_add_from_url( TrCore * core, const char * url )
|
|||
{
|
||||
struct url_dialog_data * data = g_new( struct url_dialog_data, 1 );
|
||||
data->core = core;
|
||||
data->url = g_strdup( url );
|
||||
tr_webRun( session, url, NULL, onURLDone, data );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -156,9 +156,10 @@ notifyInMainThread( gpointer user_data )
|
|||
static void
|
||||
completenessChangedCallback( tr_torrent * tor,
|
||||
tr_completeness completeness,
|
||||
tr_bool wasRunning,
|
||||
void * user_data )
|
||||
{
|
||||
if( ( completeness != TR_LEECH ) && ( tr_torrentStat( tor )->sizeWhenDone != 0 ) )
|
||||
if( wasRunning && ( completeness != TR_LEECH ) && ( tr_torrentStat( tor )->sizeWhenDone != 0 ) )
|
||||
gtr_idle_add( notifyInMainThread, user_data );
|
||||
}
|
||||
|
||||
|
|
20
gtk/util.c
20
gtk/util.c
|
@ -33,6 +33,7 @@
|
|||
|
||||
#include <libtransmission/transmission.h> /* TR_RATIO_NA, TR_RATIO_INF */
|
||||
#include <libtransmission/utils.h> /* tr_inf */
|
||||
#include <libtransmission/web.h> /* tr_webResponseStr() */
|
||||
#include <libtransmission/version.h> /* tr_inf */
|
||||
|
||||
#include "conf.h"
|
||||
|
@ -803,6 +804,25 @@ gtr_timeout_add_seconds( guint seconds, GSourceFunc function, gpointer data )
|
|||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
gtr_http_failure_dialog( GtkWidget * parent, const char * url, long response_code )
|
||||
{
|
||||
GtkWindow * window = getWindow( parent );
|
||||
|
||||
GtkWidget * w = gtk_message_dialog_new( window, 0,
|
||||
GTK_MESSAGE_ERROR,
|
||||
GTK_BUTTONS_CLOSE,
|
||||
_( "Error opening \"%s\"" ), url );
|
||||
|
||||
gtk_message_dialog_format_secondary_text( GTK_MESSAGE_DIALOG( w ),
|
||||
_( "Server returned \"%1$ld %2$s\"" ),
|
||||
response_code,
|
||||
tr_webGetResponseStr( response_code ) );
|
||||
|
||||
g_signal_connect_swapped( w, "response", G_CALLBACK( gtk_widget_destroy ), w );
|
||||
gtk_widget_show( w );
|
||||
}
|
||||
|
||||
void
|
||||
gtr_unrecognized_url_dialog( GtkWidget * parent, const char * url )
|
||||
{
|
||||
|
|
|
@ -156,6 +156,7 @@ GtkWidget * gtr_priority_combo_new( void );
|
|||
|
||||
void gtr_unrecognized_url_dialog( GtkWidget * parent, const char * url );
|
||||
|
||||
void gtr_http_failure_dialog( GtkWidget * parent, const char * url, long response_code );
|
||||
|
||||
void addTorrentErrorDialog( GtkWidget * window_or_child,
|
||||
int err,
|
||||
|
|
Loading…
Reference in New Issue