Changeset 403 for trunk


Ignore:
Timestamp:
03/15/08 20:31:42 (12 years ago)
Author:
Eoin
Message:

Added command to recheck torrents.

Location:
trunk
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/res/Halite.rc

    r398 r403  
    22#include "resource.h" 
    33#include "afxres.h" 
     4 
     5#if 0 
     6 
     7#define ID_ADD_TORRENT_BEGIN            11000 
     8#define ID_CONFIG_BEGIN                         12000 
     9#define ID_NEWTORRENT_BEGIN                     14000 
     10#define ID_PROGRESS_BEGIN                       15000 
     11#define ID_TRACKER_BEGIN                        16000 
     12#define ID_TLVM_BEGIN                           17000 
     13 
     14#define ID_HAL_MAIN_LISTVIEW_BEGIN      30000 
     15 
     16#define HAL_EVENT_BEGIN                         40000 
     17#define HAL_TORRENT_EXT_BEGIN           41000 
     18#define HAL_TORRENT_INT_BEGIN           42000 
     19 
     20#endif 
    421 
    522#include "../src/advtabs/Tracker.hpp" 
     
    825#include "../src/HaliteListView.hpp" 
    926#include "../src/HaliteDialog.hpp" 
     27#include "../src/AddTorrentDialog.hpp" 
    1028#include "../src/NewTorrentDialog.hpp" 
    1129#include "../src/ConfigOptions.hpp" 
     
    7694FONT 8, "MS Shell Dlg", 400, 0, 0x1 
    7795BEGIN 
    78     RTEXT           "Open a (single) port between : ",IDC_BITT_OPENPORT,12,31,120,12,SS_WORDELLIPSIS | SS_CENTERIMAGE 
     96    RTEXT           "Open a (single) port between : ",IDC_BITT_OPENPORT,12,31,120,12,SS_WORDELLIPSIS|SS_CENTERIMAGE 
    7997    EDITTEXT        IDC_BC_PORTFROM,135,29,65,12,ES_AUTOHSCROLL 
    8098    EDITTEXT        IDC_BC_PORTTO,250,29,65,12,ES_AUTOHSCROLL 
     
    207225    GROUPBOX        "Global Limits",IDC_CONFIGT_GLOBALG,5,6,315,55 
    208226    EDITTEXT        IDC_BC_MAXCONN,118,29,42,12,ES_AUTOHSCROLL 
    209     RTEXT           "Total max connections :",IDC_CONFIGT_TOTALMAX,12,31,100,11 
    210     RTEXT           "Total upload slots :",IDC_CONFIGT_TOTALUP,12,44,100,10 
     227    RTEXT           "Total max connections :",IDC_CONFIGT_TOTALMAX,12,31,100,11,SS_WORDELLIPSIS|SS_CENTERIMAGE 
     228    RTEXT           "Total upload slots :",IDC_CONFIGT_TOTALUP,12,44,100,10,SS_WORDELLIPSIS|SS_CENTERIMAGE 
    211229    EDITTEXT        IDC_BC_MAXUP,118,42,42,12,ES_AUTOHSCROLL 
    212230    EDITTEXT        IDC_BC_DOWNRATE,271,29,42,12,ES_AUTOHSCROLL 
    213     RTEXT           "Download Rate (KB/s) :",IDC_CONFIGT_DOWNRATE,165,31,100,11 
    214     RTEXT           "Upload Rate (KB/s) :",IDC_CONFIGT_UPRATE,165,44,100,10 
     231    RTEXT           "Download Rate (KB/s) :",IDC_CONFIGT_DOWNRATE,165,31,100,11,SS_WORDELLIPSIS|SS_CENTERIMAGE 
     232    RTEXT           "Upload Rate (KB/s) :",IDC_CONFIGT_UPRATE,165,44,100,10,SS_WORDELLIPSIS|SS_CENTERIMAGE 
    215233    EDITTEXT        IDC_BC_UPRATE,271,42,42,12,ES_AUTOHSCROLL 
    216234    EDITTEXT        IDC_BC_TMAXCONN,118,88,42,12,ES_AUTOHSCROLL 
    217     RTEXT           "Total max connections :",IDC_CONFIGT_TORMAX,12,91,100,12 
    218     RTEXT           "Total upload slots :",IDC_CONFIGT_TORUP,12,104,100,12 
     235    RTEXT           "Total max connections :",IDC_CONFIGT_TORMAX,12,91,100,12,SS_WORDELLIPSIS|SS_CENTERIMAGE 
     236    RTEXT           "Total upload slots :",IDC_CONFIGT_TORUP,12,104,100,12,SS_WORDELLIPSIS|SS_CENTERIMAGE 
    219237    EDITTEXT        IDC_BC_TMAXUP,118,101,42,12,ES_AUTOHSCROLL 
    220238    EDITTEXT        IDC_BC_TDOWNRATE,271,88,42,12,ES_AUTOHSCROLL 
    221     RTEXT           "Download Rate (KB/s) :",IDC_CONFIGT_TDOWNRATE,165,91,100,12 
    222     RTEXT           "Upload Rate (KB/s) :",IDC_CONFIGT_TORUPRATE,165,104,100,12 
     239    RTEXT           "Download Rate (KB/s) :",IDC_CONFIGT_TDOWNRATE,165,91,100,12,SS_WORDELLIPSIS|SS_CENTERIMAGE 
     240    RTEXT           "Upload Rate (KB/s) :",IDC_CONFIGT_TORUPRATE,165,104,100,12,SS_WORDELLIPSIS|SS_CENTERIMAGE 
    223241    EDITTEXT        IDC_BC_TUPRATE,271,101,42,12,ES_AUTOHSCROLL 
    224242    GROUPBOX        "Torrent Defaults",IDC_CONFIGT_TORRENTG,5,66,315,82 
    225     LTEXT           "These options set global maximums which will always be honoured.",IDC_CONFIGT_GLOBAL_TEXT,12,16,300,11 
    226     LTEXT           "These options specify the default limits applied to new torrents.",IDC_CONFIGT_TOR_TEXT,12,76,301,11 
    227     RTEXT           "Default save folder :",IDC_CONFIGT_DEF_FOLDER,12,120,100,11 
     243    LTEXT           "These options set global maximums which will always be honoured.",IDC_CONFIGT_GLOBAL_TEXT,12,16,300,11,SS_WORDELLIPSIS|SS_CENTERIMAGE 
     244    LTEXT           "These options specify the default limits applied to new torrents.",IDC_CONFIGT_TOR_TEXT,12,76,301,11,SS_WORDELLIPSIS|SS_CENTERIMAGE 
     245    RTEXT           "Default save folder :",IDC_CONFIGT_DEF_FOLDER,12,120,100,11,SS_WORDELLIPSIS|SS_CENTERIMAGE 
    228246    EDITTEXT        IDC_BC_SAVEFOLDER,118,119,170,12,ES_AUTOHSCROLL 
    229247    PUSHBUTTON      "...",IDC_BC_SAVEBROWSE,293,118,18,13 
    230     AUTOCHECKBOX    "Prompt for alternate save folder.",IDC_BC_PROMPTSAVE,118,133,195,11 
     248    AUTOCHECKBOX    "",IDC_BC_MOVETO_CHECK,118,133,10,11 
     249    RTEXT           "Move finished torrents to :",IDC_BC_MOVETO_TEXT,12,120,100,11,SS_WORDELLIPSIS|SS_CENTERIMAGE 
     250    EDITTEXT        IDC_BC_MOVETO_FOLDER,118,119,170,12,ES_AUTOHSCROLL 
     251    PUSHBUTTON      "...",IDC_BC_MOVETO_BROWSE,293,118,18,13 
     252    AUTOCHECKBOX    "Review settings when adding torrent.",IDC_BC_PROMPTSAVE,118,133,195,11 
    231253END 
    232254 
     
    341363END 
    342364 
    343 IDD_ADD_TORRENT DIALOGEX 0, 0, 225, 86 
    344 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION 
     365IDD_ADD_TORRENT DIALOGEX 0, 0, 230, 124 
     366STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_THICKFRAME 
    345367EXSTYLE WS_EX_STATICEDGE 
    346368CAPTION "Add Torrent" 
    347369FONT 8, "MS Shell Dlg", 400, 0, 0x1 
    348370BEGIN 
    349     PUSHBUTTON      "Ok",IDOK,85,65,62,14 
    350     PUSHBUTTON      "Cancel",IDCANCEL,155,65,62,14 
    351  
    352     EDITTEXT        IDC_BC_SAVEFOLDER,5,5,195,12,ES_AUTOHSCROLL 
    353     PUSHBUTTON      "...",IDC_BC_SAVEBROWSE,205,5,15,12,SS_CENTERIMAGE 
     371    PUSHBUTTON      "Ok",IDOK,85,65,62,13 
     372    PUSHBUTTON      "Cancel",IDCANCEL,155,65,62,13 
     373 
     374        LTEXT           "Torrent save folder:",IDC_ADDT_DEFFLD_TEXT,6,51,215,8,SS_WORDELLIPSIS|SS_CENTERIMAGE 
     375    EDITTEXT        IDC_BC_SAVEFOLDER,5,5,195,13,ES_AUTOHSCROLL 
     376    PUSHBUTTON      "...",IDC_BC_SAVEBROWSE,205,5,18,13 
     377        CONTROL         "Move the completed torrent to:",IDC_ADDT_MOVETO_CHECK,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,5,38,220,8 
     378        EDITTEXT        IDC_ADDT_MOVETO_FOLDER,5,5,195,13,ES_AUTOHSCROLL 
     379    PUSHBUTTON      "...",IDC_ADDT_MOVETO_BROWSE,205,5,18,13 
    354380 
    355381    CONTROL         "Use Compact Allocation.",IDC_CHECK_COMPACT,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,5,38,220,8 
    356     CONTROL         "Stopped initially (Allows changing advanced setting).",IDC_CHECK_PAUSED,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,5,25,220,8 
    357     LTEXT           "Note. Compact Allocation is incompatible with File Selection",IDC_STATIC,6,51,215,8,SS_WORDELLIPSIS|SS_CENTERIMAGE 
     382    CONTROL         "Stopped initially (Allows changing advanced setting)",IDC_CHECK_PAUSED,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,5,25,220,8 
     383    LTEXT           "Note. Compact Allocation is incompatible with File Selection",IDC_ADDT_NOTE_TEXT,6,51,215,8,SS_WORDELLIPSIS|SS_CENTERIMAGE 
    358384END 
    359385 
     
    448474        MENUITEM "Pause",ID__LVM_PAUSE 
    449475        MENUITEM "Stop",ID_LVM_STOP 
     476        MENUITEM "Recheck Files",ID_LVM_RECHECK 
    450477        MENUITEM SEPARATOR 
    451478    //    MENUITEM "Reannounce",ID_TLVM_PRIMARY 
     
    669696        HAL_EVENT_DEV                             "Dev Msg: %1%." 
    670697END 
     698 
     699#if 0 
     700 
     701IDD_DIALOG1 DIALOGEX 0, 0, 186, 95 
     702STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU 
     703CAPTION "Dialog" 
     704FONT 8, "MS Shell Dlg", 400, 0, 0x1 
     705BEGIN 
     706    DEFPUSHBUTTON   "OK",IDOK,129,7,50,14 
     707    PUSHBUTTON      "Cancel",IDCANCEL,129,24,50,14 
     708END 
     709 
     710IDD_DIALOG2 DIALOGEX 0, 0, 186, 94 
     711STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME 
     712CAPTION "Dialog" 
     713FONT 8, "MS Shell Dlg", 400, 0, 0x1 
     714BEGIN 
     715    DEFPUSHBUTTON   "OK",IDOK,129,7,50,14 
     716    PUSHBUTTON      "Cancel",IDCANCEL,129,24,50,14 
     717END 
     718 
     719IDD_DIALOG3 DIALOGEX 0, 0, 186, 95 
     720STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME 
     721EXSTYLE WS_EX_TOOLWINDOW 
     722CAPTION "Dialog" 
     723FONT 8, "MS Shell Dlg", 400, 0, 0x1 
     724BEGIN 
     725    DEFPUSHBUTTON   "OK",IDOK,129,7,50,14 
     726    PUSHBUTTON      "Cancel",IDCANCEL,129,24,50,14 
     727END 
     728 
     729IDD_DIALOG4 DIALOGEX 0, 0, 186, 94 
     730STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_SYSMENU 
     731FONT 8, "MS Shell Dlg", 400, 0, 0x1 
     732BEGIN 
     733    DEFPUSHBUTTON   "OK",IDOK,129,7,50,14 
     734    PUSHBUTTON      "Cancel",IDCANCEL,129,24,50,14 
     735END 
     736 
     737#endif 
  • trunk/sln/Halite/Halite.vcproj

    r398 r403  
    834834                        </File> 
    835835                        <File 
     836                                RelativePath="..\..\src\halSignaler.hpp" 
     837                                > 
     838                        </File> 
     839                        <File 
    836840                                RelativePath="..\..\src\halTorrent.hpp" 
    837841                                > 
  • trunk/src/AddTorrentDialog.hpp

    r389 r403  
    77#pragma once 
    88 
     9#define ID_ADD_TORRENT_BEGIN            11000 
     10#define IDC_ADDT_MOVETO_FOLDER          ID_ADD_TORRENT_BEGIN + 1 
     11#define IDC_ADDT_MOVETO_BROWSE          ID_ADD_TORRENT_BEGIN + 2 
     12#define IDC_ADDT_MOVETO_CHECK           ID_ADD_TORRENT_BEGIN + 3 
     13#define IDC_ADDT_DEFFLD_TEXT            ID_ADD_TORRENT_BEGIN + 6 
     14#define IDC_ADDT_NOTE_TEXT                      ID_ADD_TORRENT_BEGIN + 8 
     15 
     16#ifndef RC_INVOKED 
     17 
    918#include <boost/function.hpp> 
    1019#include "halTorrent.hpp" 
     
    1221class AddTorrentDialog : 
    1322        public CDialogImpl<AddTorrentDialog>, 
     23        public CAutoSizeWindow<AddTorrentDialog, true>, 
    1424    public CWinDataExchangeEx<AddTorrentDialog> 
    1525{ 
     
    1727        typedef AddTorrentDialog thisClass; 
    1828        typedef CDialogImpl<thisClass> baseClass; 
     29        typedef CAutoSizeWindow<thisClass, true> autosizeClass; 
    1930 
    2031public: 
    21         AddTorrentDialog(wstring& d, bool& p, bool& c) : 
     32        AddTorrentDialog(wstring& d, wstring& m, bool& u, bool& p, bool& c) : 
    2233                saveDirectory_(d), 
     34                moveToDirectory_(m), 
     35                useMove_(u), 
    2336                startPaused_(p), 
    2437                compactStorage_(c) 
     
    2942    BEGIN_MSG_MAP_EX(thisClass) 
    3043        MSG_WM_INITDIALOG(OnInitDialog) 
     44 
    3145                COMMAND_ID_HANDLER_EX(IDCANCEL, OnCancel) 
    3246                COMMAND_ID_HANDLER_EX(IDOK, OnOk) 
     47                COMMAND_ID_HANDLER_EX(IDC_ADDT_MOVETO_CHECK, OnMoveTo) 
    3348                COMMAND_ID_HANDLER_EX(IDC_BC_SAVEBROWSE, OnBrowse) 
     49                COMMAND_ID_HANDLER_EX(IDC_ADDT_MOVETO_BROWSE, OnMoveBrowse) 
     50                 
     51        CHAIN_MSG_MAP(autosizeClass) 
    3452    END_MSG_MAP() 
    3553         
     
    3755        DDX_CHECK(IDC_CHECK_COMPACT, compactStorage_) 
    3856        DDX_CHECK(IDC_CHECK_PAUSED, startPaused_) 
     57        DDX_CHECK(IDC_ADDT_MOVETO_CHECK, useMove_) 
    3958                DDX_EX_STDWSTRING(IDC_BC_SAVEFOLDER, saveDirectory_) 
     59                DDX_EX_STDWSTRING(IDC_ADDT_MOVETO_FOLDER, moveToDirectory_) 
    4060    END_DDX_MAP()        
    41          
     61 
     62#define ADD_FOLDERS_LAYOUT \ 
     63        WMB_HEAD(WMB_COLNOMAX(_exp), WMB_COL(_auto)), \ 
     64                WMB_ROW(_auto,  IDC_ADDT_DEFFLD_TEXT, _r), \ 
     65                WMB_ROW(_auto,  IDC_BC_SAVEFOLDER, IDC_BC_SAVEBROWSE), \ 
     66                WMB_ROW(_auto,  IDC_ADDT_MOVETO_CHECK, _r), \ 
     67                WMB_ROW(_auto,  IDC_ADDT_MOVETO_FOLDER, IDC_ADDT_MOVETO_BROWSE), \ 
     68        WMB_END() 
     69 
     70#define ADD_BUTTONS_LAYOUT \ 
     71        WMB_HEAD(WMB_COLNOMAX(_exp), WMB_COL(_auto), WMB_COL(_auto)), \ 
     72                WMB_ROW(_auto,  0, IDOK, IDCANCEL), \ 
     73        WMB_END() 
     74 
     75        BEGIN_WINDOW_MAP(thisClass, 6, 6, 3, 3) 
     76                WMB_HEAD(WMB_COLNOMAX(_exp)), 
     77                        WMB_ROW(_auto,  ADD_FOLDERS_LAYOUT),  
     78                        WMB_ROW(_gap,   _d), 
     79                        WMB_ROW(_auto,  IDC_CHECK_COMPACT),  
     80                        WMB_ROW(_auto,  IDC_CHECK_PAUSED),  
     81                        WMB_ROW(_auto,  IDC_ADDT_NOTE_TEXT),  
     82                        WMB_ROW(_gap,   _d), 
     83                        WMB_ROW(_auto,  ADD_BUTTONS_LAYOUT),  
     84                WMB_END() 
     85        END_WINDOW_MAP()         
     86 
    4287        LRESULT OnInitDialog(HWND hwndFocus, LPARAM lParam) 
    4388        { 
    44                 CenterWindow(); 
     89                CenterWindow();          
     90 
     91                CtrlsInitialize(); 
     92                CtrlsArrange(); 
     93                 
     94                OnMoveTo(0, 0, GetDlgItem(IDC_ADDT_MOVETO_CHECK)); 
    4595                 
    4696                BOOL retval =  DoDataExchange(false); 
     
    64114        } 
    65115         
     116        void OnMoveTo(UINT, int, HWND hWnd) 
     117        { 
     118                LRESULT result = ::SendMessage(hWnd, BM_GETCHECK, 0, 0); 
     119 
     120                if (result == BST_CHECKED) 
     121                { 
     122                        ::EnableWindow(GetDlgItem(IDC_ADDT_MOVETO_FOLDER), true); 
     123                        ::EnableWindow(GetDlgItem(IDC_ADDT_MOVETO_BROWSE), true); 
     124                } 
     125                else 
     126                { 
     127                        ::EnableWindow(GetDlgItem(IDC_ADDT_MOVETO_FOLDER), false); 
     128                        ::EnableWindow(GetDlgItem(IDC_ADDT_MOVETO_BROWSE), false); 
     129                } 
     130        } 
     131         
    66132        void OnBrowse(UINT, int, HWND hWnd) 
    67133        { 
     
    80146        } 
    81147         
     148        void OnMoveBrowse(UINT, int, HWND hWnd) 
     149        { 
     150                std::wstring save_prompt = hal::app().res_wstr(IDS_SAVEPROMPT);          
     151                CFolderDialog fldDlg(NULL, save_prompt.c_str(), 
     152                        BIF_RETURNONLYFSDIRS|BIF_NEWDIALOGSTYLE); 
     153                 
     154                wstring defaultMoveFolder = moveToDirectory_; 
     155                fldDlg.SetInitialFolder(defaultMoveFolder.c_str()); 
     156          
     157                if (IDOK == fldDlg.DoModal()) 
     158                { 
     159                        moveToDirectory_ = wstring(fldDlg.m_szFolderPath); 
     160                        DoDataExchange(false); 
     161                } 
     162        } 
     163         
    82164private: 
    83165        wstring& saveDirectory_; 
     166        wstring& moveToDirectory_; 
     167        bool& useMove_; 
    84168        bool& startPaused_; 
    85169        bool& compactStorage_; 
    86170}; 
     171 
     172#endif // RC_INVOKED 
  • trunk/src/ConfigOptions.hpp

    r390 r403  
    4848#define IDC_BITT_GPORTFORWARD_TEST      ID_CONFIG_BEGIN + 39 
    4949#define IDC_BITT_GPORTFORWARD_LIST      ID_CONFIG_BEGIN + 40 
     50#define IDC_BC_MOVETO_FOLDER            ID_CONFIG_BEGIN + 41 
     51#define IDC_BC_MOVETO_BROWSE            ID_CONFIG_BEGIN + 42 
     52#define IDC_BC_MOVETO_TEXT                      ID_CONFIG_BEGIN + 43 
     53#define IDC_BC_MOVETO_CHECK                     ID_CONFIG_BEGIN + 44 
    5054 
    5155#ifndef RC_INVOKED 
     
    574578    BEGIN_MSG_MAP_EX(TorrentsOptions) 
    575579        MSG_WM_INITDIALOG(OnInitDialog) 
     580 
    576581                COMMAND_ID_HANDLER_EX(IDC_BC_SAVEBROWSE, onFolderBrowse) 
     582                COMMAND_ID_HANDLER_EX(IDC_BC_MOVETO_BROWSE, onMoveToFolderBrowse) 
     583                COMMAND_ID_HANDLER_EX(IDC_BC_MOVETO_CHECK, onMoveToCheck) 
     584 
    577585        CHAIN_MSG_MAP(CPropertyPageImpl<TorrentsOptions>) 
    578586        CHAIN_MSG_MAP(autosizeClass) 
     
    594602        WMB_END() 
    595603 
     604#define CONFIGT_TORRENT_FOLDER_MOVETO_LAYOUT \ 
     605        WMB_HEAD(WMB_COL(_auto), WMB_COLNOMAX(_exp|50)), \ 
     606                WMB_ROW(_auto,  IDC_BC_MOVETO_CHECK, IDC_BC_MOVETO_TEXT), \ 
     607        WMB_END() 
     608 
    596609#define CONFIGT_TORRENT_FOLDER_LAYOUT \ 
    597         WMB_HEAD(WMB_COLNOMAX(_exp|50), WMB_COLNOMAX(_exp), WMB_COLNOMAX(_auto)), \ 
     610        WMB_HEAD( WMB_COLNOMAX(_exp|50), WMB_COLNOMAX(_exp), WMB_COLNOMAX(_auto)), \ 
    598611                WMB_ROW(_auto,  IDC_CONFIGT_DEF_FOLDER, IDC_BC_SAVEFOLDER, IDC_BC_SAVEBROWSE), \ 
     612                WMB_ROW(_auto,  CONFIGT_TORRENT_FOLDER_MOVETO_LAYOUT, IDC_BC_MOVETO_FOLDER, IDC_BC_MOVETO_BROWSE), \ 
    599613                WMB_ROW(_auto, 0, IDC_BC_PROMPTSAVE, _r), \ 
    600614        WMB_END() 
     
    613627 
    614628    BEGIN_DDX_MAP(TorrentsOptions) 
    615 /*        DDX_EX_INT_POSITIVE_LIMIT(IDC_BC_MAXCONN, hal::config().maxConnections, 2, true) 
     629/*      DDX_EX_INT_POSITIVE_LIMIT(IDC_BC_MAXCONN, hal::config().maxConnections, 2, true) 
    616630        DDX_EX_INT_POSITIVE_LIMIT(IDC_BC_MAXUP, hal::config().maxUploads, 2, true) 
    617631        DDX_EX_FLOAT_POSITIVE(IDC_BC_DOWNRATE, hal::config().downRate) 
     
    624638*/ 
    625639                DDX_EX_STDWSTRING(IDC_BC_SAVEFOLDER, hal::config().defaultSaveFolder); 
    626         DDX_CHECK(IDC_BC_PROMPTSAVE, hal::config().savePrompt) 
     640                DDX_EX_STDWSTRING(IDC_BC_MOVETO_FOLDER, hal::config().defaultMoveToFolder); 
     641        DDX_CHECK(IDC_BC_MOVETO_CHECK, hal::config().useMoveTo); 
     642        DDX_CHECK(IDC_BC_PROMPTSAVE, hal::config().savePrompt); 
    627643    END_DDX_MAP()        
    628644 
     
    650666         
    651667                BOOL retval =  DoDataExchange(false); 
     668                onMoveToCheck(0, 0, GetDlgItem(IDC_BC_MOVETO_CHECK)); 
    652669 
    653670                autosizeClass::CtrlsArrange(); 
     
    656673 
    657674        void onFolderBrowse(UINT, int, HWND hWnd) 
    658         { 
    659                 hal::bittorrent().clearIpFilter(); 
    660                  
     675        {                
    661676                wstring folderSelect = hal::app().res_wstr(HAL_FOLDER_SELECT); 
    662677 
     
    666681                if (IDOK == fldDlg.DoModal()) 
    667682                        SetDlgItemText(IDC_BC_SAVEFOLDER, fldDlg.m_szFolderPath); 
     683        } 
     684 
     685        void onMoveToFolderBrowse(UINT, int, HWND hWnd) 
     686        {                
     687                wstring folderSelect = hal::app().res_wstr(HAL_FOLDER_SELECT); 
     688 
     689                WTL::CFolderDialog fldDlg (NULL, folderSelect.c_str(), 
     690                        BIF_RETURNONLYFSDIRS|BIF_NEWDIALOGSTYLE); 
     691 
     692                if (IDOK == fldDlg.DoModal()) 
     693                        SetDlgItemText(IDC_BC_MOVETO_FOLDER, fldDlg.m_szFolderPath); 
     694        } 
     695 
     696        void onMoveToCheck(UINT, int, HWND hWnd) 
     697        { 
     698                LRESULT result = ::SendMessage(hWnd, BM_GETCHECK, 0, 0); 
     699 
     700                if (result == BST_CHECKED) 
     701                { 
     702                        ::EnableWindow(GetDlgItem(IDC_BC_MOVETO_FOLDER), true); 
     703                        ::EnableWindow(GetDlgItem(IDC_BC_MOVETO_BROWSE), true); 
     704                } 
     705                else 
     706                { 
     707                        ::EnableWindow(GetDlgItem(IDC_BC_MOVETO_FOLDER), false); 
     708                        ::EnableWindow(GetDlgItem(IDC_BC_MOVETO_BROWSE), false); 
     709                }                
    668710        } 
    669711 
  • trunk/src/HaliteDialog.cpp

    r373 r403  
    3737         
    3838        DoDataExchange(false); 
     39 
    3940        return 0; 
    4041} 
  • trunk/src/HaliteListView.cpp

    r392 r403  
    157157} 
    158158 
     159LRESULT HaliteListViewCtrl::OnRecheck(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) 
     160{ 
     161        std::for_each(manager().allSelected().begin(), manager().allSelected().end(), 
     162                bind((void (hal::BitTorrent::*)(const std::wstring&))&hal::BitTorrent::recheckTorrent,  
     163                        &hal::bittorrent(), _1));        
     164 
     165        return 0; 
     166} 
     167 
    159168LRESULT HaliteListViewCtrl::OnRemoveWipeFiles(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) 
    160169{ 
  • trunk/src/HaliteListView.hpp

    r392 r403  
    77#pragma once 
    88 
    9 #define HAL_MAIN_LISTVIEW_BEGIN                         42000 
    10 #define ID_LVM_DOWNLOAD_FOLDER                  HAL_MAIN_LISTVIEW_BEGIN + 1 
     9#define ID_HAL_MAIN_LISTVIEW_BEGIN                      30000 
     10#define ID_LVM_DOWNLOAD_FOLDER                  ID_HAL_MAIN_LISTVIEW_BEGIN + 1 
     11#define ID_LVM_RECHECK                                          ID_HAL_MAIN_LISTVIEW_BEGIN + 2 
    1112 
    1213#ifndef RC_INVOKED 
     
    341342                COMMAND_ID_HANDLER(ID_LVM_STOP, OnStop) 
    342343                COMMAND_ID_HANDLER(ID_LVM_RESUME, OnResume) 
     344                COMMAND_ID_HANDLER(ID_LVM_RECHECK, OnRecheck) 
    343345                COMMAND_ID_HANDLER(ID_LVM_REMOVE_T, OnRemove) 
    344346                COMMAND_ID_HANDLER(ID_LVM_REMOVE_TD, OnRemoveWipeFiles) 
     
    357359        LRESULT OnStop(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); 
    358360        LRESULT OnResume(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); 
     361        LRESULT OnRecheck(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); 
    359362        LRESULT OnRemoveFocused(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); 
    360363        LRESULT OnRemove(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); 
  • trunk/src/HaliteWindow.cpp

    r398 r403  
    148148        UISetCheck(ID_VIEW_TOOLBAR, 1); 
    149149        UISetCheck(ID_VIEW_STATUS_BAR, 1); 
    150         UISetCheck(IDR_TRAY_MENU, 1); 
     150        UISetCheck(IDR_TRAY_MENU, 1);    
     151         
     152        TBBUTTONINFO tbinfo = { sizeof(TBBUTTONINFO) }; 
     153        tbinfo.dwMask = TBIF_STATE; 
     154        tbinfo.fsState = TBSTATE_INDETERMINATE; 
     155        ::SendMessage(hWndToolBar, TB_SETBUTTONINFO, ID_FILE_NEW, (LPARAM)&tbinfo); 
    151156         
    152157        // Register UIEvents and the timer for the monitoring interval 
     
    183188                DestroyWindow(); 
    184189        } 
    185          
     190 
    186191        return 0; 
    187192} 
     
    345350         
    346351        wstring saveDirectory = wpath(hal::config().defaultSaveFolder).native_file_string(); 
     352        wstring moveToDirectory = wpath(hal::config().defaultMoveToFolder).native_file_string(); 
     353        bool useMoveTo = hal::config().useMoveTo; 
    347354        bool startPaused = false; 
    348355        bool compactStorage = false; 
     
    353360        if (hal::config().savePrompt) 
    354361        { 
    355                 AddTorrentDialog addTorrent(saveDirectory, startPaused, compactStorage);         
     362                AddTorrentDialog addTorrent(saveDirectory, moveToDirectory, useMoveTo, startPaused, compactStorage);     
    356363                 
    357364                if (IDOK != addTorrent.DoModal()) 
     
    360367         
    361368        wpath file(lpszPath, boost::filesystem::native);         
    362         hal::bittorrent().addTorrent(file, wpath(saveDirectory), startPaused, compactStorage); 
     369        hal::bittorrent().addTorrent(file, wpath(saveDirectory), startPaused, compactStorage,  
     370                wpath(moveToDirectory), useMoveTo); 
    363371 
    364372        ui().update(); 
  • trunk/src/NewTorrentDialog.hpp

    r398 r403  
    77#pragma once 
    88 
    9 #define IDD_NEWTORRENT_BEGIN                    1950 
    10 #define IDC_NEWTORRENT_SELECT_TEXT              IDD_NEWTORRENT_BEGIN+1 
    11 #define IDC_NEWTORRENT_TRACKERS_TEXT    IDD_NEWTORRENT_BEGIN+2 
    12 #define IDC_NEWTORRENT_CREATOR_TEXT             IDD_NEWTORRENT_BEGIN+3 
    13 #define IDC_NEWTORRENT_CREATOR                  IDD_NEWTORRENT_BEGIN+4 
    14 #define IDC_NEWTORRENT_COMMENT_TEXT             IDD_NEWTORRENT_BEGIN+5 
    15 #define IDC_NEWTORRENT_COMMENT                  IDD_NEWTORRENT_BEGIN+6 
    16 #define IDC_NEWTORRENT_PRIVATE                  IDD_NEWTORRENT_BEGIN+7 
    17 #define IDC_NEWT_FILE_BROWSE                    IDD_NEWTORRENT_BEGIN+8 
    18 #define IDC_NEWT_DIR_BROWSE                             IDD_NEWTORRENT_BEGIN+9 
    19 #define IDC_NEWT_LISTFILES                              IDD_NEWTORRENT_BEGIN+10 
    20 #define HAL_FILES_LISTVIEW_ADV                  IDD_NEWTORRENT_BEGIN+11 
    21 #define HAL_NEW_PANE_DLG                                IDD_NEWTORRENT_BEGIN+12 
    22 //#define IDC_PROG_CANCEL                 IDD_NEWTORRENT_BEGIN + 2 
    23 //#define IDC_PROG_PROGRESS               IDD_NEWTORRENT_BEGIN + 3 
     9#define ID_NEWTORRENT_BEGIN                             14000 
     10#define IDC_NEWTORRENT_SELECT_TEXT              ID_NEWTORRENT_BEGIN+1 
     11#define IDC_NEWTORRENT_TRACKERS_TEXT    ID_NEWTORRENT_BEGIN+2 
     12#define IDC_NEWTORRENT_CREATOR_TEXT             ID_NEWTORRENT_BEGIN+3 
     13#define IDC_NEWTORRENT_CREATOR                  ID_NEWTORRENT_BEGIN+4 
     14#define IDC_NEWTORRENT_COMMENT_TEXT             ID_NEWTORRENT_BEGIN+5 
     15#define IDC_NEWTORRENT_COMMENT                  ID_NEWTORRENT_BEGIN+6 
     16#define IDC_NEWTORRENT_PRIVATE                  ID_NEWTORRENT_BEGIN+7 
     17#define IDC_NEWT_FILE_BROWSE                    ID_NEWTORRENT_BEGIN+8 
     18#define IDC_NEWT_DIR_BROWSE                             ID_NEWTORRENT_BEGIN+9 
     19#define IDC_NEWT_LISTFILES                              ID_NEWTORRENT_BEGIN+10 
     20#define HAL_FILES_LISTVIEW_ADV                  ID_NEWTORRENT_BEGIN+11 
     21#define HAL_NEW_PANE_DLG                                ID_NEWTORRENT_BEGIN+12 
     22//#define IDC_PROG_CANCEL                 ID_NEWTORRENT_BEGIN + 2 
     23//#define IDC_PROG_PROGRESS               ID_NEWTORRENT_BEGIN + 3 
    2424 
    2525#ifndef RC_INVOKED 
  • trunk/src/ProgressDialog.hpp

    r392 r403  
    77#pragma once 
    88 
    9 #define IDD_PROGRESS_BEGIN                              1900 
    109#define IDD_PROGRESS                    1901 
    11 #define IDC_PROG_CANCEL                 IDD_PROGRESS_BEGIN + 2 
    12 #define IDC_PROG_PROGRESS               IDD_PROGRESS_BEGIN + 3 
     10 
     11#define ID_PROGRESS_BEGIN                               15000 
     12#define IDC_PROG_CANCEL                 ID_PROGRESS_BEGIN + 2 
     13#define IDC_PROG_PROGRESS               ID_PROGRESS_BEGIN + 3 
    1314 
    1415#ifndef RC_INVOKED 
  • trunk/src/advtabs/Tracker.hpp

    r397 r403  
    55//          http://www.boost.org/LICENSE_1_0.txt) 
    66 
    7 #define ID_TRACKER_BEGIN         41000 
     7#define ID_TRACKER_BEGIN        16000 
    88#define IDC_TRACKER_LABEL       ID_TRACKER_BEGIN + 1 
    99#define IDC_LOGIN_APPLY         ID_TRACKER_BEGIN + 2 
  • trunk/src/halConfig.hpp

    r381 r403  
    5151                proxyPort(0), 
    5252                defaultSaveFolder((hal::app().exe_path().branch_path()/L"incoming").string()), 
     53                defaultMoveToFolder((hal::app().exe_path().branch_path()/L"completed").string()), 
     54                useMoveTo(false), 
    5355                savePrompt(true), 
    5456                enablePe(false), 
     
    9799                 
    98100                ar & BOOST_SERIALIZATION_NVP(defaultSaveFolder); 
     101                if (version > 3) { 
     102                        ar & BOOST_SERIALIZATION_NVP(defaultMoveToFolder); 
     103                        ar & BOOST_SERIALIZATION_NVP(useMoveTo); 
     104                } 
    99105                ar & BOOST_SERIALIZATION_NVP(savePrompt); 
    100106                 
     
    159165         
    160166        std::wstring defaultSaveFolder; 
     167        std::wstring defaultMoveToFolder; 
     168        bool useMoveTo; 
    161169        bool savePrompt; 
    162170 
     
    179187} // namespace hal 
    180188 
    181 BOOST_CLASS_VERSION(hal::Config, 3) 
     189BOOST_CLASS_VERSION(hal::Config, 4) 
  • trunk/src/halTorrent.cpp

    r392 r403  
    2727#include "halTorrent.hpp" 
    2828#include "halEvent.hpp" 
     29#include "halSignaler.hpp" 
    2930 
    3031#define foreach BOOST_FOREACH 
     
    239240} 
    240241 
    241 struct once 
    242 { 
    243         template<typename S> 
    244         once(S& s, boost::function<void ()> f) : 
    245                 f_(f) 
    246         { 
    247                 c_ = s.connect(*this); 
    248                 HAL_DEV_MSG(L"Once ctor"); 
    249         } 
    250  
    251         void operator()()  
    252         { 
    253                 f_(); 
    254                  
    255                 HAL_DEV_MSG(L"Once disconnecting"); 
    256  
    257                 c_.disconnect(); 
    258         } 
    259  
    260         boost::function<void ()> f_; 
    261         boost::signals::connection c_; 
    262 }; 
    263  
    264 template<typename S=boost::signal<void()> > 
    265 class signaler 
    266 { 
    267 public: 
    268  
    269         void connectRepeat(const typename S::slot_type& slot) 
    270         { 
    271                 repeat_.connect(slot); 
    272         } 
    273  
    274         void connectOnce(const typename S::slot_type& slot) 
    275         { 
    276                 once_.connect(slot); 
    277         } 
    278  
    279         void operator()()  
    280         { 
    281                 repeat_(); 
    282  
    283                  
    284                 HAL_DEV_MSG(L"Once disconnecting"); 
    285                 once_(); 
    286                 once_.disconnect_all_slots(); 
    287         }        
    288  
    289 private: 
    290         S repeat_; 
    291         S once_; 
    292 }; 
    293  
    294242class BitTorrent_impl 
    295243{ 
     
    333281        struct  
    334282        { 
    335                 signaler<> successfulListen; 
     283                signaler<> successful_listen; 
     284                signaler<> torrent_finished; 
    336285        }  
    337286        signals; 
     
    368317                                        Event::info, a.timestamp()))); 
    369318 
    370                         get(a.handle)->completedPauseEvent(); 
     319                        get(a.handle)->signals.torrent_paused(); 
    371320                } 
    372321                 
     
    522471                        )       );       
    523472 
    524                         bit_impl_.signals.successfulListen(); 
     473                        bit_impl_.signals.successful_listen(); 
    525474                } 
    526475                 
     
    793742                else 
    794743                { 
    795                         pimpl->signals.successfulListen(); 
     744                        pimpl->signals.successful_listen(); 
    796745                         
    797746                        return true; 
     
    877826                        pimpl->theSession.stop_natpmp(); 
    878827 
    879                         pimpl->signals.successfulListen.connectOnce(bind(&lbt::session::start_upnp, &pimpl->theSession)); 
     828                        pimpl->signals.successful_listen.connect_once(bind(&lbt::session::start_upnp, &pimpl->theSession)); 
    880829                } 
    881830                else 
     
    885834                        pimpl->theSession.stop_natpmp(); 
    886835 
    887                         pimpl->signals.successfulListen.connectOnce(bind(&lbt::session::start_natpmp, &pimpl->theSession)); 
     836                        pimpl->signals.successful_listen.connect_once(bind(&lbt::session::start_natpmp, &pimpl->theSession)); 
    888837                } 
    889838        } 
     
    13131262} 
    13141263 
    1315 void BitTorrent::addTorrent(wpath_t file, wpath_t saveDirectory, bool startStopped, bool compactStorage)  
     1264void BitTorrent::addTorrent(wpath_t file, wpath_t saveDirectory, bool startStopped, bool compactStorage,  
     1265                boost::filesystem::wpath moveToDirectory, bool useMoveTo)  
    13161266{ 
    13171267        try  
    13181268        {        
    13191269         
    1320         TorrentInternal_ptr TIp(new TorrentInternal(file, saveDirectory, pimpl->workingDirectory, compactStorage)); 
     1270        TorrentInternal_ptr TIp; 
     1271         
     1272        if (useMoveTo) 
     1273                TIp.reset(new TorrentInternal(file, saveDirectory, compactStorage, moveToDirectory));            
     1274        else 
     1275                TIp.reset(new TorrentInternal(file, saveDirectory, compactStorage)); 
    13211276         
    13221277        std::pair<TorrentManager::torrentByName::iterator, bool> p = 
     
    18171772} 
    18181773 
     1774void BitTorrent::recheckTorrent(const std::string& filename) 
     1775{ 
     1776        recheckTorrent(hal::to_wstr_shim(filename)); 
     1777} 
     1778 
     1779void BitTorrent::recheckTorrent(const std::wstring& filename) 
     1780{ 
     1781        try { 
     1782         
     1783        pimpl->theTorrents.get(filename)->forceRecheck(); 
     1784         
     1785        } HAL_GENERIC_TORRENT_EXCEPTION_CATCH(filename, "recheckTorrent") 
     1786} 
     1787 
    18191788void BitTorrent::removeTorrentWipeFiles(const std::string& filename) 
    18201789{ 
  • trunk/src/halTorrent.hpp

    r384 r403  
    410410        void newTorrent(boost::filesystem::wpath filename, boost::filesystem::wpath files); 
    411411        void addTorrent(boost::filesystem::wpath file, boost::filesystem::wpath saveDirectory,  
    412                 bool startPaused=false, bool compactStorage=false); 
     412                bool startPaused=false, bool compactStorage=false,  
     413                boost::filesystem::wpath moveToDirectory=L"", bool useMoveTo=false); 
    413414         
    414415        void setTorrentRatio(const std::string&, float ratio); 
     
    438439        void reannounceTorrent(const std::string& filename); 
    439440        void reannounceTorrent(const std::wstring& filename); 
     441        void recheckTorrent(const std::string& filename); 
     442        void recheckTorrent(const std::wstring& filename); 
    440443         
    441444        void pauseAllTorrents(); 
  • trunk/src/halTorrentInternal.hpp

    r392 r403  
    77#pragma once 
    88 
    9 #define HALITE_VERSION                                  0, 3, 0, 386 
    10 #define HALITE_VERSION_STRING                   "v 0.3.0.4 dev 386" 
    11 #define HALITE_FINGERPRINT                              "HL", 0, 3, 0, 4 
     9#define HALITE_VERSION                                  0, 3, 0, 399 
     10#define HALITE_VERSION_STRING                   "v 0.3.0.5 dev 399" 
     11#define HALITE_FINGERPRINT                              "HL", 0, 3, 0, 5 
    1212 
    1313#ifndef HAL_NA 
     
    1515#endif 
    1616 
    17 #define HAL_TORRENT_EXT_BEGIN                           80000 
     17#define HAL_TORRENT_EXT_BEGIN                           41000 
    1818#define LBT_EVENT_TORRENT_FINISHED                      HAL_TORRENT_EXT_BEGIN + 1 
    1919#define HAL_PEER_BAN_ALERT                                      HAL_TORRENT_EXT_BEGIN + 2 
     
    3737#define HAL_LISTEN_V6_FAILED_ALERT                      HAL_TORRENT_EXT_BEGIN + 20 
    3838 
    39 #define HAL_TORRENT_INT_BEGIN                           80500 
     39#define HAL_TORRENT_INT_BEGIN                           42000 
    4040#define HAL_PEER_INTERESTING                    HAL_TORRENT_INT_BEGIN + 1 
    4141#define HAL_PEER_CHOKED                         HAL_TORRENT_INT_BEGIN + 2 
     
    7575 
    7676#include "halIni.hpp" 
     77#include "halSignaler.hpp" 
    7778 
    7879namespace hal  
    7980{ 
    8081class TorrentInternalOld; 
     82class TorrentInternal; 
    8183} 
    8284 
    8385BOOST_CLASS_VERSION(hal::TorrentInternalOld, 9) 
     86BOOST_CLASS_VERSION(hal::TorrentInternal, 1) 
    8487 
    8588namespace hal  
     
    422425        {} 
    423426         
    424         TorrentInternal(wpath_t filename, wpath_t saveDirectory, wpath_t workingDirectory, bool compactStorage) : 
     427        TorrentInternal(wpath_t filename, wpath_t saveDirectory, bool compactStorage, wpath_t move_to_directory=L"") : 
    425428                TORRENT_INTERNALS_DEFAULTS, 
    426429                save_directory_(saveDirectory.string()), 
     430                move_to_directory_(move_to_directory.string()), 
    427431                compactStorage_(compactStorage),         
    428432                state_(TorrentDetail::torrent_stopped),  
     
    524528        } 
    525529         
    526         void removeFromSession() 
    527         { 
     530        void removeFromSession(bool writeData=true) 
     531        { 
     532                HAL_DEV_MSG(wformat_t(L"removeFromSession() %1%") % writeData); 
     533 
    528534                mutex_t::scoped_lock l(mutex_); 
    529535                assert(inSession()); 
    530536                 
    531                 resumedata_ = handle_.write_resume_data(); // Update the fast-resume data 
    532                 writeResumeData(); 
     537                if (writeData) 
     538                { 
     539                        resumedata_ = handle_.write_resume_data(); // Update the fast-resume data 
     540                        writeResumeData(); 
     541                } 
    533542                 
    534543                the_session_->remove_torrent(handle_); 
    535                 in_session_ = false;             
     544                in_session_ = false; 
    536545                 
    537546                assert(!inSession());    
     
    556565        { 
    557566                mutex_t::scoped_lock l(mutex_); 
     567 
    558568                if (state_ == TorrentDetail::torrent_stopped) 
    559569                {        
     
    574584        { 
    575585                mutex_t::scoped_lock l(mutex_); 
     586 
    576587                if (state_ == TorrentDetail::torrent_stopped) 
    577588                {        
     
    584595                        assert(inSession()); 
    585596                        handle_.pause(); 
     597                        signals.torrent_paused.connect_once(bind(&TorrentInternal::completedPauseEvent, this)); 
     598 
    586599                        state_ = TorrentDetail::torrent_pausing;         
    587600                }        
     
    593606        { 
    594607                mutex_t::scoped_lock l(mutex_); 
     608 
    595609                if (state_ != TorrentDetail::torrent_stopped) 
    596610                { 
     
    599613                                assert(inSession()); 
    600614                                handle_.pause(); 
     615                                signals.torrent_paused.connect_once(bind(&TorrentInternal::completedPauseEvent, this)); 
     616 
    601617                                state_ = TorrentDetail::torrent_stopping; 
    602618                        } 
     
    609625                } 
    610626        } 
     627 
     628        void forceRecheck() 
     629        { 
     630                mutex_t::scoped_lock l(mutex_); 
     631                 
     632                HAL_DEV_MSG(L"forceRecheck()"); 
     633 
     634                if (state_ != TorrentDetail::torrent_stopped) 
     635                { 
     636                        assert(inSession()); 
     637 
     638                        if (state_ == TorrentDetail::torrent_active) 
     639                        { 
     640                                handle_.pause(); 
     641                                signals.torrent_paused.connect_once(bind(&TorrentInternal::handleRecheck, this)); 
     642 
     643                                state_ = TorrentDetail::torrent_stopping; 
     644                        } 
     645                        else if (state_ == TorrentDetail::torrent_paused) 
     646                        {                        
     647                                handleRecheck();                                 
     648                        } 
     649                        else 
     650                        { 
     651                                signals.torrent_paused.connect_once(bind(&TorrentInternal::handleRecheck, this)); 
     652                        } 
     653                } 
     654                else 
     655                { 
     656                        handleRecheck(); 
     657                } 
     658        } 
     659 
     660        void handleRecheck() 
     661        { 
     662                mutex_t::scoped_lock l(mutex_); 
     663 
     664                HAL_DEV_MSG(L"handleRecheck()"); 
     665 
     666                state_ = TorrentDetail::torrent_stopped; 
     667                removeFromSession(false); 
     668                resume(); 
     669        } 
    611670         
    612671        void writeResumeData() 
     
    633692                if (finishTime_.is_special()) 
    634693                        finishTime_ = boost::posix_time::second_clock::universal_time(); 
     694 
     695                if (move_to_directory_ != L"" && move_to_directory_ != save_directory_) 
     696                { 
     697                        handle_.move_storage(to_utf8(move_to_directory_)); 
     698                        save_directory_ = move_to_directory_; 
     699                } 
    635700        } 
    636701         
     
    712777                ar & make_nvp("filename", filename_);            
    713778        ar & make_nvp("saveDirectory", save_directory_); 
     779                if (version > 0) { 
     780                        ar & make_nvp("moveToDirectory", move_to_directory_); 
     781                } else { 
     782                        move_to_directory_ = save_directory_; 
     783                } 
    714784                 
    715785                ar & make_nvp("payloadUploaded_", payloadUploaded_); 
     
    886956        } 
    887957 
     958        struct  
     959        { 
     960                signaler<> torrent_finished; 
     961                signaler<> torrent_paused; 
     962        }  
     963        signals; 
     964 
    888965private:         
    889966        void applySettings() 
     
    10311108        wstring_t name_; 
    10321109        wstring_t save_directory_; 
     1110        wstring_t move_to_directory_; 
    10331111        wstring_t originalFilename_; 
    10341112        lbt::torrent_handle handle_;     
Note: See TracChangeset for help on using the changeset viewer.