Changeset 8405


Ignore:
Timestamp:
May 15, 2009, 2:05:07 AM (12 years ago)
Author:
charles
Message:

(trunk qt) #2072: Delete .torrent with or without error

Location:
trunk/qt
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/qt/options.cc

    r8374 r8405  
    252252    // rpc spec section 3.4 "adding a torrent"
    253253
     254    const int64_t tag = mySession.getUniqueTag( );
    254255    tr_benc top;
    255256    tr_bencInitDict( &top, 3 );
    256257    tr_bencDictAddStr( &top, "method", "torrent-add" );
    257     tr_bencDictAddInt( &top, "tag", Session::ADD_TORRENT_TAG );
     258    tr_bencDictAddInt( &top, "tag", tag );
    258259    tr_benc * args( tr_bencDictAddDict( &top, "arguments", 10 ) );
    259260
     
    302303    }
    303304
     305    // maybe delete the source .torrent
     306    if( myTrashCheck->isChecked( ) ) {
     307        FileAdded * fileAdded = new FileAdded( tag, myFile );
     308        connect( &mySession, SIGNAL(executed(int64_t,const QString&, struct tr_benc*)),
     309                 fileAdded, SLOT(executed(int64_t,const QString&, struct tr_benc*)));
     310    }
     311
    304312    mySession.exec( &top );
    305313
    306314    tr_bencFree( &top );
    307315    deleteLater( );
    308 
    309     // maybe the source .torrent
    310     if( myTrashCheck->isChecked( ) )
    311         QFile(myFile).remove( );
    312316}
    313317
  • trunk/qt/options.h

    r8232 r8405  
    3232class QCheckBox;
    3333class Session;
     34
     35extern "C" { struct tr_benc; };
     36
     37class FileAdded: public QObject
     38{
     39        Q_OBJECT
     40        const int64_t myTag;
     41        QString myDelFile;
     42
     43    public:
     44        FileAdded( int tag, const QString file ): myTag(tag), myDelFile(file) { }
     45        ~FileAdded( ) { }
     46
     47    public slots:
     48        void executed( int64_t tag, const QString& result, struct tr_benc * arguments ) {
     49            Q_UNUSED( arguments );
     50            if( tag == myTag ) {
     51                if( result == "success" )
     52                    QFile( myDelFile ).remove( );
     53                deleteLater();
     54            }
     55        }
     56};
    3457
    3558class Options: public QDialog
  • trunk/qt/session.cc

    r8401 r8405  
    4848        TAG_BLOCKLIST_UPDATE,
    4949        TAG_ADD_TORRENT,
    50         TAG_PORT_TEST
     50        TAG_PORT_TEST,
     51
     52        FIRST_UNIQUE_TAG
    5153    };
    5254}
     
    179181
    180182Session :: Session( const char * configDir, Prefs& prefs ):
     183    nextUniqueTag( FIRST_UNIQUE_TAG ),
    181184    myBlocklistSize( -1 ),
    182185    myPrefs( prefs ),
     
    322325    }
    323326}
    324 
    325 const int Session :: ADD_TORRENT_TAG = TAG_ADD_TORRENT;
    326327
    327328void
     
    625626    if( !err )
    626627    {
    627         int64_t tag;
     628        int64_t tag = -1;
     629        const char * result = NULL;
     630        tr_benc * args = NULL;
     631
     632        tr_bencDictFindInt ( &top, "tag", &tag );
     633        tr_bencDictFindStr ( &top, "result", &result );
     634        tr_bencDictFindDict( &top, "arguments", &args );
     635
     636        emit executed( tag, result, args );
     637
     638        tr_benc * torrents;
    628639        const char * str;
    629         tr_benc *args, *torrents;
     640
    630641        if( tr_bencDictFindInt( &top, "tag", &tag ) )
    631642        {
  • trunk/qt/session.h

    r8389 r8405  
    4141        ~Session( );
    4242
    43         static const int ADD_TORRENT_TAG;
    44 
    4543    public:
    4644        void stop( );
     
    7977        void exec( const char * request );
    8078        void exec( const struct tr_benc * request );
     79
     80    public:
     81        int64_t getUniqueTag( ) { return nextUniqueTag++; }
    8182
    8283    private:
     
    118119
    119120    signals:
     121        void executed( int64_t tag, const QString& result, struct tr_benc * arguments );
    120122        void sourceChanged( );
    121123        void portTested( bool isOpen );
     
    130132
    131133    private:
     134        int64_t nextUniqueTag;
    132135        int64_t myBlocklistSize;
    133136        Prefs& myPrefs;
Note: See TracChangeset for help on using the changeset viewer.