Changeset 431


Ignore:
Timestamp:
05/10/08 21:25:12 (12 years ago)
Author:
Eoin
Message:

Torrent creation soooooo close.

Location:
trunk
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/res/Halite.rc

    r427 r431  
    11 
     2//         Copyright Eóin O'Callaghan 2006 - 2008. 
     3// Distributed under the Boost Software License, Version 1.0. 
     4//    (See accompanying file LICENSE_1_0.txt or copy at 
     5//          http://www.boost.org/LICENSE_1_0.txt) 
     6 
    27#include "resource.h" 
    38#include "afxres.h" 
     
    216221BEGIN 
    217222    EDITTEXT        ED_CON,3,3,246,99,WS_VSCROLL | ES_AUTOHSCROLL | ES_MULTILINE | ES_READONLY 
    218 END 
    219  
    220 IDD_PROGRESS DIALOGEX 0,0,191,46 
    221 STYLE DS_MODALFRAME | DS_SETFONT | DS_FIXEDSYS | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP 
    222 EXSTYLE WS_EX_TOOLWINDOW | WS_EX_STATICEDGE 
    223 CAPTION "Halite importing IP ranges..." 
    224 FONT 8,"MS Shell Dlg",400,0,1 
    225 BEGIN 
    226     CONTROL         "",IDC_PROG_PROGRESS,"msctls_progress32",WS_BORDER,6,6,180,12 
    227     PUSHBUTTON      "Cancel",IDC_PROG_CANCEL,60,24,66,15 
    228223END 
    229224 
     
    451446END 
    452447 
    453 IDD_PEEREDIT DIALOGEX 0,0,186,50 
     448IDD_PEEREDIT DIALOGEX 0,0,240,50 
    454449STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME 
    455450EXSTYLE WS_EX_TOOLWINDOW 
     
    457452FONT 8,"MS Shell Dlg 2",400,0,1 
    458453BEGIN 
    459     PUSHBUTTON      "OK",IDOK,78,32,50,14,BS_DEFPUSHBUTTON 
    460     PUSHBUTTON      "Cancel",IDCANCEL,132,32,50,14 
    461     LTEXT           "URL",HAL_NEWT_ADD_PEERS_URL_TEXT,4,5,100,10 
     454    PUSHBUTTON      "OK",IDOK,132,32,50,14,BS_DEFPUSHBUTTON 
     455    PUSHBUTTON      "Cancel",IDCANCEL,186,32,50,14 
     456    LTEXT           "URL",HAL_NEWT_ADD_PEERS_URL_TEXT,4,5,104,10 
    462457    EDITTEXT        HAL_NEWT_ADD_PEERS_URL_EDIT,4,15,104,13,ES_AUTOHSCROLL 
    463 //    EDITTEXT        IDC_PEER_EDIT_TYPE,153,15,30,12,ES_AUTOHSCROLL 
    464 //    COMBOBOX        IDC_PEER_EDIT_URL,4,15,145,12,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP 
    465     COMBOBOX        HAL_NEWT_ADD_PEERS_TYP_CBOX,112,15,70,13,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP 
    466     LTEXT           "Type",HAL_NEWT_ADD_PEERS_TYP_TEXT,112,5,70,10 
     458    LTEXT           "Port",HAL_NEWT_ADD_DHT_PORT_TEXT,112,5,50,10,WS_DISABLED 
     459    EDITTEXT        HAL_NEWT_ADD_DHT_PORT,112,15,50,13,ES_AUTOHSCROLL|WS_DISABLED 
     460    LTEXT           "Type",HAL_NEWT_ADD_PEERS_TYP_TEXT,166,5,70,10 
     461    COMBOBOX        HAL_NEWT_ADD_PEERS_TYP_CBOX,166,15,70,13,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP 
    467462END 
    468463 
     
    479474BEGIN 
    480475    LTEXT           "",IDC_CONTAINER,4,7,297,70,0 
     476END 
     477 
     478IDD_PROGRESS DIALOGEX 0,0,191,60 
     479STYLE DS_MODALFRAME | DS_SETFONT | DS_FIXEDSYS | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP 
     480EXSTYLE WS_EX_TOOLWINDOW | WS_EX_STATICEDGE 
     481CAPTION "Halite importing IP ranges..." 
     482FONT 8,"MS Shell Dlg",400,0,1 
     483BEGIN 
     484    CTEXT           "",IDC_PROG_DESCP,6,6,180,12 
     485    CONTROL         "",IDC_PROG_PROGRESS,"msctls_progress32",WS_BORDER,6,22,180,12 
     486    PUSHBUTTON      "Cancel",IDC_PROG_CANCEL,60,42,66,15 
    481487END 
    482488 
     
    605611        HAL_WINDOW_CLOSECONFRIM           "Are you sure you wish to close Halite? Doing so will stop any active torrents" 
    606612        HAL_WINDOW_SOCKETS_FAILED     "The socket infrastructure failed to start so Halite is forced to close. Please ensure no program is blocking Halites network access." 
    607         HAL_NEWT_ADD_PEERS_WEB        "Web Seed" 
    608         HAL_NEWT_ADD_PEERS_DHT        "DHT Node" 
    609         HAL_SAVE_TEXT                             "Save" 
     613 
     614 
     615        HAL_NEWT_ADD_PEERS_WEB                  "Web Seed" 
     616        HAL_INT_NEWT_ADD_PEERS_WEB              "Web Seed" 
     617        HAL_NEWT_ADD_PEERS_DHT                  "DHT Node" 
     618        HAL_INT_NEWT_ADD_PEERS_DHT              "DHT Node" 
     619 
     620        HAL_NEWT_EDIT_PEER                              "Edit Peer" 
     621        HAL_NEWT_ADD_NEW_PEER                   "Add New Peer" 
     622        HAL_NEWT_SAVING_TORRENT                 "Saving Torrent..." 
     623        HAL_NEWT_EDIT_TRACKER                   "Edit Tracker" 
     624        HAL_NEWT_ADD_NEW_TRACKER                "Add New Tracker" 
     625        HAL_SAVE_TEXT                                   "Save" 
    610626END 
    611627 
     
    640656        HAL_TORRENT_PAUSING             "Pausing" 
    641657        HAL_TORRENT_METADATA    "Downloading Metadata" 
     658 
     659        HAL_TORRENT_CREATINGTORRENT     "Creating Torrent..." 
     660        HAL_TORRENT_CAL_HASHES  "Calculating Piece Hashes..." 
     661        HAL_TORRENT_IMPORT_FILTERS "Importing IP Filters..." 
    642662END 
    643663 
     
    651671        HAL_DIALOGFILE_LISTVIEW_ADV       "Filename;Path;Size;Progress;Priority" 
    652672        HAL_FILES_LISTVIEW_ADV    "Filename;Path;Size" 
    653         HAL_NTPLVM_NAMES                          "URL;Type" 
     673        HAL_NTPLVM_NAMES                          "URL;Port;Type" 
    654674 
    655675        HAL_FILE_PRIORITY_0     "Don't download" 
  • trunk/src/AddTorrentDialog.hpp

    r429 r431  
    9595 
    9696                OnMoveTo(0, 0, GetDlgItem(IDC_ADDT_MOVETO_CHECK)); 
     97 
    9798                return retval; 
    9899        } 
  • trunk/src/NewTorrentDialog.cpp

    r430 r431  
    4747void FileSheet::OnOutBrowse(UINT, int, HWND hWnd) 
    4848{        
    49         CSSFileDialog dlgOpen(false, NULL, NULL, OFN_HIDEREADONLY, L"Torrents. (*.torrent)|*.torrent|", m_hWnd); 
     49        CSSFileDialog dlgOpen(false, NULL, NULL, OFN_HIDEREADONLY, L"Torrents. (*.torrent)|*.torrent|All Files (*.*)|*.*|", m_hWnd); 
    5050 
    5151        if (dlgOpen.DoModal() == IDOK)  
     
    7474void FileSheet::OnDirBrowse(UINT, int, HWND hWnd) 
    7575{        
    76         CFolderDialog fldDlg(NULL, L"", 
    77                 BIF_RETURNONLYFSDIRS|BIF_NEWDIALOGSTYLE); 
     76        CFolderDialog fldDlg(NULL, L"", BIF_RETURNONLYFSDIRS|BIF_NEWDIALOGSTYLE); 
    7877 
    7978        files_.clear(); 
     
    104103                hal::event().post(shared_ptr<hal::EventDetail>( 
    105104                        new hal::EventStdException(hal::Event::fatal, e, L"FileSheet::OnDirBrowse"))); 
    106         }        
    107  
     105        } 
    108106} 
    109107 
     
    125123        hal::file_size_pairs_t filePairs; 
    126124 
    127         for (int i = 0, e = filesList_.GetItemCount(); i<e; ++i) 
     125        try 
     126        { 
     127 
     128        for (int i=0, e=filesList_.GetItemCount(); i<e; ++i) 
    128129        { 
    129130                hal::win_c_str<std::wstring> name_buf(MAX_PATH);                 
     
    132133                hal::win_c_str<std::wstring> path_buf(MAX_PATH);                 
    133134                filesList_.GetItemText(i, 1, path_buf, path_buf.size()); 
    134  
    135 //              HAL_DEV_MSG(wformat(L"File: %1%, size: %2%, both: %3%") % fileRoot_.string() % name_buf.str() % (fileRoot_ / path_buf / name_buf).string()); 
    136135 
    137136                filePairs.push_back(hal::make_pair( 
     
    140139        } 
    141140 
     141        } 
     142        catch(const std::exception& e) 
     143        { 
     144                hal::event().post(boost::shared_ptr<hal::EventDetail>( 
     145                        new hal::EventStdException(hal::Event::critical, e,  
     146                                L"FileSheet::FileSizePairs"))); 
     147        } 
     148 
    142149        return filePairs; 
    143150} 
     
    154161        hal::tracker_details_t trackers; 
    155162 
    156         for (int i = 0, e = trackerList_.GetItemCount(); i<e; ++i) 
    157         { 
    158                 hal::win_c_str<std::wstring> str_buf(MAX_PATH);          
    159                 trackerList_.GetItemText(i, 0, str_buf, str_buf.size()); 
    160  
    161                 hal::win_c_str<std::wstring> tier_buf(MAX_PATH);                 
    162                 trackerList_.GetItemText(i, 1, tier_buf, tier_buf.size()); 
    163  
    164                 trackers.push_back(hal::tracker_detail( 
    165                         str_buf, lexical_cast<unsigned>(tier_buf.str()))); 
     163        if (trackerList_) 
     164        { 
     165                for (int i = 0, e = trackerList_.GetItemCount(); i<e; ++i) 
     166                { 
     167                        hal::win_c_str<std::wstring> str_buf(MAX_PATH);          
     168                        trackerList_.GetItemText(i, 0, str_buf, str_buf.size()); 
     169 
     170                        hal::win_c_str<std::wstring> tier_buf(MAX_PATH);                 
     171                        trackerList_.GetItemText(i, 1, tier_buf, tier_buf.size()); 
     172 
     173                        trackers.push_back(hal::tracker_detail( 
     174                                str_buf, lexical_cast<unsigned>(tier_buf.str()))); 
     175                } 
    166176        } 
    167177 
    168178        return trackers; 
     179} 
     180 
     181hal::dht_node_details_t PeersSheet::DhtNodes() const 
     182{ 
     183        hal::dht_node_details_t dht_nodes; 
     184 
     185        if (peersList_) 
     186        { 
     187                for (int i = 0, e = peersList_.GetItemCount(); i<e; ++i) 
     188                { 
     189                } 
     190        } 
     191 
     192        return dht_nodes; 
     193} 
     194 
     195hal::web_seed_details_t PeersSheet::WebSeeds() const 
     196{ 
     197        hal::web_seed_details_t web_seeds; 
     198 
     199        if (peersList_) 
     200        { 
     201                for (int i = 0, e = peersList_.GetItemCount(); i<e; ++i) 
     202                { 
     203                } 
     204        } 
     205 
     206        return web_seeds; 
    169207} 
    170208 
     
    211249        WMB_HEAD(WMB_COLNOMIN(_exp), WMB_COL(_auto), WMB_COL(_auto)), \ 
    212250                WMB_ROW(_auto,  IDC_NEWTORRENT_TRACKERS_TEXT, _r, _r), \ 
    213 /*              WMB_ROW(_auto,  IDC_NEWT_TRACKER, IDC_NEWT_TRACKERTIER, IDC_NEWT_ADDTRACKER), */\ 
    214251                WMB_ROWNOMAX(_exp|50,   IDC_NEWT_LISTTRACKERS,  _r, _r), \ 
    215252        WMB_END() 
     
    224261}        
    225262 
    226 #define NEWTORRENT_DETAILS_LAYOUT \ 
    227         WMB_HEAD(WMB_COLNOMIN(_exp|33), WMB_COLNOMIN(_exp)), \ 
    228                 WMB_ROW(_auto,  IDC_NEWTORRENT_COMMENT_TEXT,  IDC_NEWTORRENT_COMMENT), \ 
    229                 WMB_ROW(_auto,  IDC_NEWTORRENT_CREATOR_TEXT,  IDC_NEWTORRENT_CREATOR), \ 
    230         WMB_END() 
    231  
    232  
    233263#define NEWTORRENT_PEERS_LAYOUT \ 
    234264        WMB_HEAD(WMB_COLNOMIN(_exp), WMB_COL(_auto), WMB_COL(_auto)), \ 
    235265                WMB_ROW(_auto,  IDC_NEWTORRENT_PEERS_TEXT, _r, _r), \ 
    236 /*              WMB_ROW(_auto,  IDC_NEWT_TRACKER, IDC_NEWT_TRACKERTIER, IDC_NEWT_ADDTRACKER), */\ 
    237266                WMB_ROWNOMAX(_exp|50,   IDC_NEWT_LISTPEERS,  _r, _r), \ 
    238267        WMB_END() 
     
    300329        params.trackers = trackerSheet_.Trackers(); 
    301330 
    302         ProgressDialog progDlg(L"Loading IP filters...", bind( 
     331        params.dht_nodes = detailsSheet_.DhtNodes(); 
     332        params.web_seeds = detailsSheet_.WebSeeds(); 
     333 
     334        ProgressDialog progDlg(hal::app().res_wstr(HAL_NEWT_SAVING_TORRENT), bind( 
    303335                &hal::BitTorrent::create_torrent, &hal::bittorrent(), params, fileSheet_.OutputFile(), _1)); 
    304336        progDlg.DoModal(); 
  • trunk/src/NewTorrentDialog.hpp

    r429 r431  
    2626#define IDC_NEWT_OUT_BROWSE                             ID_NEWTORRENT_BEGIN+17 
    2727#define IDC_NEWT_OUTFILE_TEXT                   ID_NEWTORRENT_BEGIN+18 
    28  
    29 //#define IDC_PROG_CANCEL                 ID_NEWTORRENT_BEGIN + 2 
    30 //#define IDC_PROG_PROGRESS               ID_NEWTORRENT_BEGIN + 3 
     28#define HAL_NEWT_SAVING_TORRENT                 ID_NEWTORRENT_BEGIN+19 
    3129 
    3230#ifndef RC_INVOKED 
     
    8381                MSG_WM_DESTROY(OnDestroy) 
    8482 
    85 /*              COMMAND_ID_HANDLER(ID_TLVM_NEW, OnNew) 
    86                 COMMAND_ID_HANDLER(ID_TLVM_EDIT, OnEdit) 
    87                 COMMAND_ID_HANDLER(ID_TLVM_DELETE, OnDelete) 
    88                 COMMAND_ID_HANDLER(ID_TLVM_PRIMARY, OnPrimary) 
    89  
    90                 REFLECTED_NOTIFY_CODE_HANDLER(NM_DBLCLK, OnDoubleClick) 
    91 */ 
    9283                CHAIN_MSG_MAP(listClass) 
    9384                DEFAULT_REFLECTION_HANDLER() 
     
    9586 
    9687        void uiUpdate(const hal::TorrentDetail_ptr pT); 
    97 //      void enterNewTracker(); 
    98 //      void saveSettings(); 
    9988 
    10089    friend class boost::serialization::access; 
     
    127116public: 
    128117        FileSheet(enable_save enableSave) : 
    129           EnableSave_(enableSave) 
    130         {} 
    131  
    132         ~FileSheet() 
     118                EnableSave_(enableSave),   
     119                private_(false) 
    133120        {} 
    134121         
     
    203190                MSG_WM_DESTROY(OnDestroy) 
    204191 
    205 //              COMMAND_ID_HANDLER_EX(IDC_NEWT_ADDTRACKER, OnFileBrowse) 
    206 //              COMMAND_ID_HANDLER_EX(IDC_NEWT_DIR_BROWSE, OnDirBrowse) 
    207  
    208                 REFLECT_NOTIFICATIONS() 
    209192                CHAIN_MSG_MAP(autosizeClass) 
    210193                CHAIN_MSG_MAP(sheetClass) 
     194                REFLECT_NOTIFICATIONS() 
    211195    END_MSG_MAP() 
    212196 
     
    269253 
    270254        void OnDestroy() {} 
     255         
     256        hal::dht_node_details_t DhtNodes() const;        
     257        hal::web_seed_details_t WebSeeds() const; 
    271258         
    272259private: 
     
    329316        void OnClose() 
    330317        { 
    331                 GetWindowRect(rect_); 
    332                 Save(); 
     318                OnDestroy(); 
    333319        } 
    334320 
  • trunk/src/NewTorrentPeersAD.hpp

    r427 r431  
    1212#define HAL_NEWT_ADD_PEERS_TYP_TEXT     HAL_NEWT_ADD_PEERS + 3 
    1313#define HAL_NEWT_ADD_PEERS_TYP_CBOX     HAL_NEWT_ADD_PEERS + 4 
     14#define HAL_NEWT_ADD_DHT_PORT           HAL_NEWT_ADD_PEERS + 7 
     15#define HAL_NEWT_ADD_DHT_PORT_TEXT      HAL_NEWT_ADD_PEERS + 8 
    1416 
    1517#define HAL_NEWT_ADD_PEERS_WEB          HAL_NEWT_ADD_PEERS + 5 
    1618#define HAL_NEWT_ADD_PEERS_DHT          HAL_NEWT_ADD_PEERS + 6 
     19#define HAL_NEWT_EDIT_PEER                      HAL_NEWT_ADD_PEERS + 9 
     20#define HAL_NEWT_ADD_NEW_PEER           HAL_NEWT_ADD_PEERS + 10 
    1721 
    1822#ifndef RC_INVOKED 
     
    3236         
    3337public: 
    34         NewTorrent_PeersAddDialog(wstring title, hal::UrlDhtPeerDetail& peer) : 
     38        NewTorrent_PeersAddDialog(wstring title, hal::web_seed_or_dht_node_detail& peer) : 
    3539                genericBaseClass(title, "genericAddDlgs/NewTorrentAddPeers", "NewTorrentAddPeers"), 
    3640                peer_(peer) 
     
    3943    BEGIN_MSG_MAP_EX(thisClass) 
    4044                MSG_WM_INITDIALOG(onInitDialog) 
     45                COMMAND_HANDLER_EX(HAL_NEWT_ADD_PEERS_TYP_CBOX, CBN_SELCHANGE, OnTypeChanged) 
    4146 
    4247                CHAIN_MSG_MAP(resizeClass) 
     
    4651    BEGIN_DDX_MAP(thisClass) 
    4752                DDX_EX_STDWSTRING(HAL_NEWT_ADD_PEERS_URL_EDIT, peer_.url); 
    48         DDX_INT(HAL_NEWT_ADD_PEERS_TYP_CBOX, peer_.type) 
     53        DDX_INT(HAL_NEWT_ADD_DHT_PORT, peer_.port) 
     54        DDX_EX_STDWSTRING(HAL_NEWT_ADD_PEERS_TYP_CBOX, peer_.type) 
    4955    END_DDX_MAP()        
    5056 
     
    5460                DLGRESIZE_CONTROL(HAL_NEWT_ADD_PEERS_URL_TEXT, DLSZ_SIZE_X) 
    5561                DLGRESIZE_CONTROL(HAL_NEWT_ADD_PEERS_TYP_TEXT, DLSZ_MOVE_X) 
     62                DLGRESIZE_CONTROL(HAL_NEWT_ADD_DHT_PORT_TEXT, DLSZ_MOVE_X) 
     63                DLGRESIZE_CONTROL(HAL_NEWT_ADD_DHT_PORT, DLSZ_MOVE_X) 
    5664                DLGRESIZE_CONTROL(IDOK, DLSZ_MOVE_X|DLSZ_MOVE_Y) 
    5765                DLGRESIZE_CONTROL(IDCANCEL, DLSZ_MOVE_X|DLSZ_MOVE_Y) 
     
    6068        LRESULT onInitDialog(HWND, LPARAM) 
    6169        { 
    62                 CComboBox peerTypes; 
     70                WTL::CComboBox peerTypes; 
    6371 
    6472                peerTypes.Attach(GetDlgItem(HAL_NEWT_ADD_PEERS_TYP_CBOX)); 
     
    6775                peerTypes.AddString(hal::app().res_wstr(HAL_NEWT_ADD_PEERS_DHT).c_str()); 
    6876 
     77                if (hal::app().res_wstr(HAL_NEWT_ADD_PEERS_WEB) == peer_.type) 
     78                        peerTypes.SetCurSel(1); 
     79                else 
     80                        peerTypes.SetCurSel(0); 
     81 
    6982                SetMsgHandled(false); 
    70  
    7183                return 0; 
    7284        } 
     85         
     86        void OnTypeChanged(UINT uNotifyCode, int nID, CWindow wndCtl) 
     87        {        
     88                hal::win_c_str<std::wstring> str_buf(MAX_PATH);          
     89                wndCtl.GetWindowText(str_buf, str_buf.size()); 
     90                 
     91                if (str_buf.str() == hal::app().res_wstr(HAL_NEWT_ADD_PEERS_WEB)) 
     92                { 
     93                        ::EnableWindow(GetDlgItem(HAL_NEWT_ADD_DHT_PORT_TEXT), false); 
     94                        ::EnableWindow(GetDlgItem(HAL_NEWT_ADD_DHT_PORT), false); 
     95                } 
     96                else 
     97                { 
     98                        ::EnableWindow(GetDlgItem(HAL_NEWT_ADD_DHT_PORT_TEXT), true); 
     99                        ::EnableWindow(GetDlgItem(HAL_NEWT_ADD_DHT_PORT), true); 
     100                }                
     101        }                
    73102 
    74103private: 
    75104        wstring title_; 
    76         hal::UrlDhtPeerDetail& peer_; 
     105        hal::web_seed_or_dht_node_detail& peer_; 
    77106}; 
    78107 
  • trunk/src/NewTorrentPeersLV.cpp

    r424 r431  
    11 
    2 //         Copyright Eóin O'Callaghan 2006 - 2007. 
     2//         Copyright Eóin O'Callaghan 2006 - 2008. 
    33// Distributed under the Boost Software License, Version 1.0. 
    44//    (See accompanying file LICENSE_1_0.txt or copy at 
     
    66 
    77#include "stdAfx.hpp" 
    8  
    98#include "halTorrent.hpp" 
    109 
     
    3534void NewTorrent_PeersListViewCtrl::newItem() 
    3635{ 
    37         hal::UrlDhtPeerDetail tracker(L"", 0) 
    38         NewTorrent_PeersAddDialog trackDlg(L"Add New Peer", tracker); 
     36        hal::web_seed_or_dht_node_detail peer 
     37        NewTorrent_PeersAddDialog trackDlg(hal::app().res_wstr(HAL_NEWT_ADD_NEW_PEER), peer); 
    3938         
    40         if (trackDlg.DoModal() == 1 && !tracker.url.empty())  
     39        if (trackDlg.DoModal() == 1 && !peer.url.empty())  
    4140        { 
    42                 int itemPos = AddItem(0, 0, tracker.url.c_str(), 0);             
    43                 SetItemText(itemPos, 1, lexical_cast<wstring>(tracker.type).c_str()); 
     41                int itemPos = AddItem(0, 0, peer.url.c_str(), 0);                
     42                SetItemText(itemPos, 1, lexical_cast<wstring>(peer.port).c_str()); 
     43                SetItemText(itemPos, 2, peer.type.c_str()); 
    4444        } 
    4545} 
    4646 
    4747void NewTorrent_PeersListViewCtrl::editItem(int index) 
    48 { 
    49         array<wchar_t, MAX_PATH> buffer; 
     48{        
     49        try { 
    5050 
    51         GetItemText(index, 0, buffer.elems, buffer.size()); 
    52         hal::UrlDhtPeerDetail tracker(wstring(buffer.elems), 0); 
     51        hal::win_c_str<std::wstring> str_url(MAX_PATH);  
     52        hal::win_c_str<std::wstring> str_port(MAX_PATH);         
     53        hal::win_c_str<std::wstring> str_type(MAX_PATH);         
     54 
     55        GetItemText(index, 0, str_url, str_url.size()); 
     56        GetItemText(index, 1, str_port, str_port.size()); 
     57        GetItemText(index, 2, str_type, str_type.size()); 
    5358         
    54         GetItemText(index, 1, buffer.elems, buffer.size()); 
    55         tracker.type = lexical_cast<int>(wstring(buffer.elems)); 
     59        hal::web_seed_or_dht_node_detail peer; 
    5660 
    57         NewTorrent_PeersAddDialog trackDlg(L"Edit Tracker", tracker); 
     61        if (hal::app().res_wstr(HAL_NEWT_ADD_PEERS_WEB) == str_type.str()) 
     62        { 
     63                peer.url = str_url.str(); 
     64                peer.port = -1; 
     65                peer.type = hal::app().res_wstr(HAL_NEWT_ADD_PEERS_WEB); 
     66        } 
     67        else 
     68        { 
     69                peer.url = str_url.str(); 
     70                peer.port = lexical_cast<unsigned>(str_port.str()); 
     71                peer.type = hal::app().res_wstr(HAL_NEWT_ADD_PEERS_DHT); 
     72        } 
     73 
     74        NewTorrent_PeersAddDialog trackDlg(hal::app().res_wstr(HAL_NEWT_EDIT_PEER), peer); 
    5875         
    5976        if (trackDlg.DoModal() == 1)  
    6077        { 
    61                 if (tracker.url.empty()) 
     78                if (peer.url.empty()) 
    6279                { 
    6380                        DeleteItem(index); 
     
    6582                else 
    6683                { 
    67                         SetItemText(index, 0, tracker.url.c_str());      
    68                         SetItemText(index, 1, lexical_cast<wstring>(tracker.type).c_str()); 
     84                        SetItemText(index, 0, peer.url.c_str());         
     85                        SetItemText(index, 1, lexical_cast<wstring>(peer.port).c_str()); 
     86                        SetItemText(index, 2, peer.type.c_str()); 
    6987                }                
    7088        }        
     89 
     90        } 
     91        catch(const std::exception& e) 
     92        { 
     93                hal::event().post(boost::shared_ptr<hal::EventDetail>( 
     94                        new hal::EventStdException(hal::Event::critical, e,  
     95                                L"NewTorrent_PeersListViewCtrl::editItem"))); 
     96        } 
    7197} 
    7298 
  • trunk/src/NewTorrentPeersLV.hpp

    r425 r431  
    5555                boost::split(names, column_names, boost::is_any_of(L";")); 
    5656                 
    57                 array<int, 2> widths = {287,50}; 
    58                 array<int, 2> order = {0,1}; 
    59                 array<bool, 2> visible = {true,true}; 
     57                array<int, 3> widths = {287,50,50}; 
     58                array<int, 3> order = {0,1,2}; 
     59                array<bool, 3> visible = {true,true,true}; 
    6060                 
    6161                SetDefaults(names, widths, order, visible, true); 
  • trunk/src/NewTorrentTrackerLV.cpp

    r429 r431  
    11 
    2 //         Copyright Eóin O'Callaghan 2006 - 2007. 
     2//         Copyright Eóin O'Callaghan 2006 - 2008. 
    33// Distributed under the Boost Software License, Version 1.0. 
    44//    (See accompanying file LICENSE_1_0.txt or copy at 
     
    6060{ 
    6161        hal::tracker_detail tracker(L"", 0);     
    62         NewTorrent_TrackerAddDialog trackDlg(L"Add New Tracker", tracker); 
     62        NewTorrent_TrackerAddDialog trackDlg(hal::app().res_wstr(HAL_NEWT_ADD_NEW_TRACKER), tracker); 
    6363         
    6464        if (trackDlg.DoModal() == 1 && !tracker.url.empty())  
     
    7979        tracker.tier = lexical_cast<int>(wstring(buffer.elems)); 
    8080 
    81         NewTorrent_TrackerAddDialog trackDlg(L"Edit Tracker", tracker); 
     81        NewTorrent_TrackerAddDialog trackDlg(hal::app().res_wstr(HAL_NEWT_EDIT_TRACKER), tracker); 
    8282         
    8383        if (trackDlg.DoModal() == 1)  
  • trunk/src/NewTorrentTrackerLV.hpp

    r425 r431  
    11 
    2 //         Copyright Eóin O'Callaghan 2006 - 2007. 
     2//         Copyright Eóin O'Callaghan 2006 - 2008. 
    33// Distributed under the Boost Software License, Version 1.0. 
    44//    (See accompanying file LICENSE_1_0.txt or copy at 
    55//          http://www.boost.org/LICENSE_1_0.txt) 
    66 
    7 #define ID_NTTLVM_BEGIN         18000 
    8 #define ID_NTTLVM_NEW           ID_NTTLVM_BEGIN + 1 
    9 #define ID_NTTLVM_EDIT          ID_NTTLVM_BEGIN + 2 
    10 #define ID_NTTLVM_DELETE        ID_NTTLVM_BEGIN + 3 
     7#define ID_NTTLVM_BEGIN                         18000 
     8#define ID_NTTLVM_NEW                           ID_NTTLVM_BEGIN + 1 
     9#define ID_NTTLVM_EDIT                          ID_NTTLVM_BEGIN + 2 
     10#define ID_NTTLVM_DELETE                        ID_NTTLVM_BEGIN + 3 
     11#define HAL_NEWT_EDIT_TRACKER           ID_NTTLVM_BEGIN + 4 
     12#define HAL_NEWT_ADD_NEW_TRACKER        ID_NTTLVM_BEGIN + 5 
    1113 
    1214#ifndef RC_INVOKED 
     
    3739public: 
    3840        enum {  
    39                 LISTVIEW_ID_MENU = IDR_NEWT_TRACKERLV_MENU, 
     41                LISTVIEW_ID_MENU = HAL_GENERIC_ADD_LV_MENU, 
    4042                LISTVIEW_ID_COLUMNNAMES = HAL_TRACKER_LISTVIEW_COLUMNS, 
    4143                LISTVIEW_ID_COLUMNWIDTHS = HAL_TRACKER_LISTVIEW_DEFAULTS 
  • trunk/src/ProgressDialog.hpp

    r403 r431  
    77#pragma once 
    88 
    9 #define IDD_PROGRESS                    1901 
     9#define IDD_PROGRESS                    15000 
     10#define ID_PROGRESS_BEGIN                               15001 
    1011 
    11 #define ID_PROGRESS_BEGIN                               15000 
     12#define IDC_PROG_DESCP                  ID_PROGRESS_BEGIN + 1 
    1213#define IDC_PROG_CANCEL                 ID_PROGRESS_BEGIN + 2 
    1314#define IDC_PROG_PROGRESS               ID_PROGRESS_BEGIN + 3 
    1415 
    15 #ifndef RC_INVOKED 
     16#ifdef RC_INVOKED 
     17 
     18#else // RC_INVOKED 
    1619 
    1720#include <boost/function.hpp> 
     
    2730        typedef CDialogImpl<ProgressDialog> baseClass; 
    2831         
    29         typedef boost::function<void (hal::progressCallback fn)> threadFunction; 
     32        typedef boost::function<void (hal::progress_callback fn)> threadFunction; 
    3033 
    3134public: 
     
    5760        void ProgressThread() 
    5861        { 
    59                 fn_(bind(&ProgressDialog::Callback, this, _1)); 
     62                fn_(bind(&ProgressDialog::Callback, this, _1, _2)); 
    6063                 
    6164                EndDialog(0); 
    6265        } 
    6366         
    64         bool Callback(size_t progress) 
     67        bool Callback(size_t progress, wstring description) 
    6568        { 
     69                SetDlgItemText(IDC_PROG_DESCP, description.c_str()); 
    6670                prog_.SetPos(progress); 
    6771                 
  • trunk/src/halTorrent.cpp

    r430 r431  
    241241        std::stable_sort(torrents_.begin(), torrents_.end(), fn); 
    242242} 
     243 
     244 
     245web_seed_or_dht_node_detail::web_seed_or_dht_node_detail(std::wstring u) :  
     246        url(u),  
     247        port(-1),  
     248        type(hal::app().res_wstr(HAL_INT_NEWT_ADD_PEERS_WEB))  
     249{} 
     250 
     251web_seed_or_dht_node_detail::web_seed_or_dht_node_detail(std::wstring u, int p) :  
     252        url(u),  
     253        port(p),  
     254        type(hal::app().res_wstr(HAL_INT_NEWT_ADD_PEERS_DHT))  
     255{} 
    243256 
    244257class BitTorrent_impl 
     
    660673        } 
    661674 
    662         void create_torrent(const create_torrent_params& params, fs::wpath out_file, progressCallback fn) 
     675        void create_torrent(const create_torrent_params& params, fs::wpath out_file, progress_callback fn) 
    663676        {                
    664677        try 
     
    702715                        t_info->set_hash(i, h.final()); 
    703716 
    704                         fn((double)i / num); 
    705  
    706 //                      HAL_DEV_MSG(wformat_t(L"URL: %1%, Tier: %2%") % (*i).url % (*i).tier); 
     717                        fn(100*i / num, hal::app().res_wstr(HAL_TORRENT_CREATINGTORRENT)); 
     718 
     719                        HAL_DEV_MSG(wformat_t(L"%1% , %2%") % i % (100*i / num)); 
    707720                } 
    708721 
     
    744757         
    745758        void ip_filter_count(); 
    746         void ip_filter_load(progressCallback fn); 
     759        void ip_filter_load(progress_callback fn); 
    747760        void ip_filter_import(std::vector<lbt::ip_range<asio::ip::address_v4> >& v4, 
    748761                std::vector<lbt::ip_range<asio::ip::address_v6> >& v6); 
     
    787800} 
    788801 
    789 void BitTorrent::create_torrent(const create_torrent_params& params, fs::wpath out_file, progressCallback fn) 
     802void BitTorrent::create_torrent(const create_torrent_params& params, fs::wpath out_file, progress_callback fn) 
    790803{ 
    791804        pimpl->create_torrent(params, out_file, fn); 
     
    957970} 
    958971 
    959 void BitTorrent_impl::ip_filter_load(progressCallback fn) 
     972void BitTorrent_impl::ip_filter_load(progress_callback fn) 
    960973{ 
    961974        fs::ifstream ifs(workingDirectory/L"IPFilter.bin", std::ios::binary); 
     
    973986                        { 
    974987                                previous = i; 
    975                                 if (fn) if (fn(size_t(i/total))) break; 
     988                                if (fn) if (fn(size_t(i/total),L"")) break; 
    976989                        } 
    977990                         
     
    9981011} 
    9991012 
    1000 void BitTorrent::ensureIpFilterOn(progressCallback fn) 
     1013void BitTorrent::ensureIpFilterOn(progress_callback fn) 
    10011014{ 
    10021015        try 
     
    11591172} 
    11601173 
    1161 void BitTorrent::ip_filter_import_dat(boost::filesystem::path file, progressCallback fn, bool octalFix) 
     1174void BitTorrent::ip_filter_import_dat(boost::filesystem::path file, progress_callback fn, bool octalFix) 
    11621175{ 
    11631176        try 
     
    11841197                                if (fn) 
    11851198                                { 
    1186                                         if (fn(size_t(progress/total)))  
     1199                                        if (fn(size_t(progress/total), hal::app().res_wstr(HAL_TORRENT_IMPORT_FILTERS)))  
    11871200                                                break; 
    11881201                                } 
     
    21052118         
    21062119}; 
    2107  
  • trunk/src/halTorrent.hpp

    r430 r431  
    341341typedef std::vector<tracker_detail> tracker_details_t; 
    342342 
    343 struct UrlDhtPeerDetail 
    344 { 
    345         UrlDhtPeerDetail() {} 
    346         UrlDhtPeerDetail(std::wstring u, unsigned t) : url(u), type(t) {} 
    347          
    348         bool operator<(const UrlDhtPeerDetail& t) const 
    349         { 
    350                 return (type < t.type); 
    351         } 
    352          
    353         enum UrlDhtPeerType 
    354         { 
    355                 webSeed, 
    356                 dhtPeer 
    357         }; 
    358          
     343struct web_seed_or_dht_node_detail 
     344{ 
     345        web_seed_or_dht_node_detail() : url(L""), port(-1), type(L"") {} 
     346        web_seed_or_dht_node_detail(std::wstring u); 
     347        web_seed_or_dht_node_detail(std::wstring u, int p); 
     348                 
    359349        std::wstring url; 
    360         unsigned type; 
     350        int port; 
     351        std::wstring type; 
    361352}; 
    362353 
    363354typedef std::vector<pair<fs::wpath, size_type> > file_size_pairs_t; 
     355 
     356struct dht_node_detail 
     357{ 
     358        dht_node_detail() {} 
     359        dht_node_detail(std::wstring u, int p) : url(u), port(p) {} 
     360         
     361        std::wstring url; 
     362        int port; 
     363}; 
     364 
     365typedef std::vector<dht_node_detail> dht_node_details_t; 
     366 
     367struct web_seed_detail 
     368{ 
     369        web_seed_detail() {} 
     370        web_seed_detail(std::wstring u) : url(u) {} 
     371         
     372        std::wstring url; 
     373}; 
     374 
     375typedef std::vector<web_seed_detail> web_seed_details_t; 
    364376 
    365377struct create_torrent_params 
     
    374386 
    375387        tracker_details_t trackers; 
     388        dht_node_details_t dht_nodes; 
     389        web_seed_details_t web_seeds; 
    376390}; 
    377391 
     
    393407 
    394408typedef boost::function<bool (size_t, size_t, size_t)> filterCallback; 
    395 typedef boost::function<bool (size_t)> progressCallback; 
     409typedef boost::function<bool (size_t, std::wstring)> progress_callback; 
    396410 
    397411class BitTorrent_impl; 
     
    427441        void saveTorrentData(); 
    428442 
    429         void create_torrent(const create_torrent_params& params, fs::wpath out_file, progressCallback fn); 
     443        void create_torrent(const create_torrent_params& params, fs::wpath out_file, progress_callback fn); 
    430444         
    431445        bool listenOn(std::pair<int, int> const& portRange); 
     
    439453        void ensurePeOff(); 
    440454         
    441         void ensureIpFilterOn(progressCallback fn); 
     455        void ensureIpFilterOn(progress_callback fn); 
    442456        void ensureIpFilterOff(); 
    443457 
     
    446460        void ip_v4_filter_block(asio::ip::address_v4 first, asio::ip::address_v4 last); 
    447461        void ip_v6_filter_block(asio::ip::address_v6 first, asio::ip::address_v6 last); 
    448         void ip_filter_import_dat(boost::filesystem::path file, progressCallback fn, bool octalFix); 
     462        void ip_filter_import_dat(boost::filesystem::path file, progress_callback fn, bool octalFix); 
    449463        size_t ip_filter_size(); 
    450464        void clearIpFilter();    
  • trunk/src/halTorrentInternal.hpp

    r429 r431  
    6262#define HAL_TORRENT_PAUSING                                     HAL_TORRENT_INT_BEGIN + 23 
    6363#define HAL_TORRENT_METADATA                    HAL_TORRENT_INT_BEGIN + 24 
     64#define HAL_TORRENT_CREATINGTORRENT                     HAL_TORRENT_INT_BEGIN + 25 
     65#define HAL_TORRENT_CAL_HASHES                  HAL_TORRENT_INT_BEGIN + 26 
     66#define HAL_TORRENT_IMPORT_FILTERS              HAL_TORRENT_INT_BEGIN + 27 
     67 
     68#define HAL_INT_NEWT_ADD_PEERS_WEB              HAL_TORRENT_INT_BEGIN + 28 
     69#define HAL_INT_NEWT_ADD_PEERS_DHT              HAL_TORRENT_INT_BEGIN + 29 
     70 
    6471 
    6572#ifndef RC_INVOKED 
Note: See TracChangeset for help on using the changeset viewer.