Changeset 241


Ignore:
Timestamp:
07/21/07 19:03:35 (13 years ago)
Author:
Eoin
Message:
 
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • res/Halite.rc

    r235 r241  
    1515FONT 8,"MS Shell Dlg",400,0,1 
    1616BEGIN 
    17     GROUPBOX        "Torrent",IDC_GROUP_TORRENT,4,7,305,85 
    18     GROUPBOX        "Tracker",IDC_GROUP_TRACKER,4,95,305,25 
    19     CONTROL         "",TORRENTPROG,"msctls_progress32",WS_BORDER,10,79,291,8 
    20     LTEXT           "N/A",IDC_ETA,42,63,55,8,SS_WORDELLIPSIS 
    21     LTEXT           "Time left:",IDC_STATIC,10,63,30,8 
    22     LTEXT           "N/A",IDC_STATUS,10,33,175,8,SS_WORDELLIPSIS 
    23     LTEXT           "N/A",IDC_TRACKER,10,106,170,8,SS_WORDELLIPSIS 
    24     LTEXT           "N/A",IDC_NAME,10,18,175,10,SS_WORDELLIPSIS 
     17    GROUPBOX        "Torrent",IDC_GROUP_TORRENT,4,7,305,83 
     18    GROUPBOX        "Tracker",IDC_GROUP_TRACKER,4,92,305,25 
     19    CONTROL         "",TORRENTPROG,"msctls_progress32",WS_BORDER,10,77,291,8 
     20    LTEXT           "N/A",IDC_STATUS,10,28,175,8,SS_WORDELLIPSIS 
     21    LTEXT           "N/A",IDC_TRACKER,10,103,170,8,SS_WORDELLIPSIS 
     22    LTEXT           "N/A",IDC_NAME,10,16,175,8,SS_WORDELLIPSIS 
    2523    EDITTEXT        IDC_EDITTLU,267,46,34,12,ES_AUTOHSCROLL 
    2624    EDITTEXT        IDC_EDITTLD,216,46,34,12,ES_AUTOHSCROLL 
     
    3331    RTEXT           "Up",IDC_TLU,252,49,11,8 
    3432    RTEXT           "Down",IDC_TLD,192,49,20,8 
    35     LTEXT           "N/A",IDC_UPDATE,228,106,71,8,SS_WORDELLIPSIS 
    36     RTEXT           "Update in:",IDC_UPDATESTAT,185,106,40,8 
     33    LTEXT           "N/A",IDC_UPDATE,228,103,71,8,SS_WORDELLIPSIS 
     34    RTEXT           "Update in:",IDC_UPDATESTAT,185,103,40,8 
    3735    EDITTEXT        IDC_EDITRATIO,267,60,34,12,ES_AUTOHSCROLL 
    38     LTEXT           "Downloaded %1%MB, Uploaded %2%MB, Ratio %3%.",IDC_TRANS,10,48,140,8,SS_WORDELLIPSIS 
     36    LTEXT           "Downloaded %1%MB, Uploaded %2%MB, Ratio %3%.",IDC_TRANS,10,40,173,8,SS_WORDELLIPSIS 
    3937    LTEXT           "Ratio (this session):",IDC_RATIOESTATIC,192,63,70,8,SS_WORDELLIPSIS 
    40     LTEXT           "N/A",IDC_RATIO,125,63,60,8,SS_WORDELLIPSIS 
    41     RTEXT           "Ratio:",IDC_RATIOSTAT,98,63,25,8 
     38    LTEXT           "This Session Downloaded %1%MB, Uploaded %2%MB",IDC_TRANS_SES,10,51,173,8,SS_WORDELLIPSIS 
     39    LTEXT           "This Session Downloaded %1%MB, Uploaded %2%MB",IDC_TRANS_ETA,10,63,173,8,SS_WORDELLIPSIS 
    4240END 
    4341 
  • res/resource.h

    r235 r241  
    3232#define IDD_ADVPEER                     131 
    3333#define IDR_TRACKERLV_MENU              132 
     34#define IDC_TRANS_SES                   1004 
     35#define IDC_TRANS_ETA                   1005 
    3436#define IDC_PEERPROXY                   1000 
    3537#define IDC_WEBPROXY                    1001 
  • src/HaliteDialog.cpp

    r240 r241  
    112112void HaliteDialog::onPause(UINT, int, HWND) 
    113113{ 
    114 /*      string torrentName = selection_manager().selected(); 
     114        string torrentName = hal::to_utf8(haliteWnd.torrents().selectedTorrent()->filename()); 
     115         
    115116        if (!hal::bittorrent().isTorrentActive(torrentName)) 
    116117        { 
     
    124125        } 
    125126         
    126         ui().update(); 
    127         */ 
     127        haliteWnd.issueUiUpdate();       
    128128} 
    129129 
     
    139139void HaliteDialog::onRemove(UINT, int, HWND) 
    140140{ 
    141 /*      hal::bittorrent().removeTorrent(selection_manager().selected()); 
    142 //      selection_manager().clear();             
    143          
    144         ui().update(); 
    145         */ 
     141        string torrentName = hal::to_utf8(haliteWnd.torrents().selectedTorrent()->filename()); 
     142 
     143        hal::bittorrent().removeTorrent(torrentName); 
     144        haliteWnd.torrentsList().clearFocused(); 
    146145} 
    147146 
  • src/HaliteDialogBase.hpp

    r240 r241  
    1616         
    1717public: 
    18         CHaliteDialogBase(HaliteWindow& theDaddy) 
     18        CHaliteDialogBase(HaliteWindow& haliteWindow) : 
     19                haliteWnd(haliteWindow) 
    1920        {                
    20                 theDaddy.connectUiUpdate(bind(&TBase::uiUpdate, static_cast<TBase*>(this), _1)); 
     21                haliteWindow.connectUiUpdate(bind(&TBase::uiUpdate, static_cast<TBase*>(this), _1)); 
    2122        } 
    2223         
     
    2930        void uiUpdate(const hal::TorrentDetails& tD) 
    3031        {} 
     32         
     33        template<typename T> 
     34        BOOL SetDlgItemInfo(int nID, T info) 
     35        { 
     36                std::wostringstream oss; 
     37                oss << info; 
     38                TBase* pT = static_cast<TBase*>(this); 
     39                return pT->SetDlgItemText(nID, oss.str().c_str()); 
     40        } 
    3141         
    3242/*      void save() 
     
    6272        } 
    6373*/       
    64          
     74protected: 
     75        HaliteWindow& haliteWnd; 
    6576private: 
    6677}; 
  • src/HaliteListView.cpp

    r240 r241  
    108108} 
    109109 
     110LRESULT HaliteListViewCtrl::OnRemoveFocused(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) 
     111{ 
     112        hal::bittorrent().removeTorrent(manager_.selected()); 
     113 
     114        clearFocused();  
     115        return 0; 
     116} 
     117 
    110118LRESULT HaliteListViewCtrl::OnRemove(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) 
    111119{ 
     
    113121                bind(&hal::BitTorrent::removeTorrent, &hal::bittorrent(), _1)); 
    114122 
    115 //      manager().clearAllSelected();    
     123        clearSelected();         
    116124        return 0; 
    117125} 
     
    122130                bind(&hal::BitTorrent::removeTorrentWipeFiles, &hal::bittorrent(), _1)); 
    123131         
    124 //      manager().clearAllSelected(); 
     132        clearSelected(); 
    125133        return 0; 
    126134} 
  • src/HaliteListView.hpp

    r238 r241  
    5757        LRESULT OnStop(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); 
    5858        LRESULT OnResume(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); 
     59        LRESULT OnRemoveFocused(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); 
    5960        LRESULT OnRemove(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); 
    6061        LRESULT OnRemoveWipeFiles(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); 
  • src/HaliteListViewCtrl2.hpp

    r240 r241  
    7575                        boost::array<wchar_t, MAX_PATH> pathBuffer; 
    7676                        std::set<S> all_selected; 
    77                         string selected; 
     77                        string selected = ""; 
    7878                         
    7979                        bool do_signal = false; 
     
    200200 
    201201                        LVITEM lvi = { LVIF_STATE }; 
    202                         lvi.state = LVIS_SELECTED; 
    203                         lvi.stateMask = LVIS_SELECTED; 
     202                        lvi.state = LVIS_SELECTED|LVIS_FOCUSED; 
     203                        lvi.stateMask = LVIS_SELECTED|LVIS_FOCUSED; 
    204204                        m_list_.SetItemState(itemPos, &lvi); 
     205                         
    205206                        m_list_.SetSelectionMark(itemPos); 
     207                         
    206208                        sync_list(true); 
    207209                } 
     
    209211                void clear() 
    210212                { 
     213                        // Prevent changing states from signaling another sync 
     214                        UpdateLock<L> lock(m_list_); 
     215                         
    211216                        hal::event().post(shared_ptr<hal::EventDetail>(new hal::EventDebug(hal::Event::info, (wformat(L"Clear")).str().c_str()))); 
    212                         m_list_.DeleteItem(m_list_.GetSelectionMark()); 
     217         
     218                        m_list_.DeleteItem(selectedIndex()); 
    213219                         
    214220                //      m_list_.SelectItem(0); 
     
    216222                } 
    217223                 
    218                 void clearAllSelected() 
    219                 { 
     224                void clear_all_selected() 
     225                { 
     226                        // Prevent changing states from signaling another sync 
     227                        UpdateLock<L> lock(m_list_); 
     228                         
    220229                        hal::event().post(shared_ptr<hal::EventDetail>(new hal::EventDebug(hal::Event::info, (wformat(L"ClearAllSelected")).str().c_str()))); 
    221230 
     
    235244                } 
    236245                 
    237                 void clearAll() 
    238                 { 
     246                void clear_all() 
     247                { 
     248                        // Prevent changing states from signaling another sync 
     249                        UpdateLock<L> lock(m_list_); 
     250                         
    239251                        hal::event().post(shared_ptr<hal::EventDetail>(new hal::EventDebug(hal::Event::info, (wformat(L"ClearAll")).str().c_str()))); 
     252 
    240253                        m_list_.DeleteAllItems(); 
    241254                        all_selected_.clear(); 
     255                         
    242256                        sync_list(true);                 
    243257                } 
     
    461475         
    462476        bool canUpdate() const { return updateLock_ == 0; } 
     477         
     478        void clearFocused() { manager_.clear(); } 
     479        void clearSelected() { manager_.clear_all_selected(); } 
     480        void clearAll() { manager_.clear(); } 
    463481 
    464482protected: 
  • src/HaliteWindow.cpp

    r240 r241  
    106106        SetTimer(ID_UPDATE_TIMER, 500); 
    107107        SetTimer(ID_SAVE_TIMER, 5000); 
    108         ui().attach(bind(&HaliteWindow::updateWindow, this)); 
     108        connectUiUpdate(bind(&HaliteWindow::updateWindow, this)); 
    109109         
    110110        RegisterDropTarget(); 
     
    240240        try 
    241241        { 
    242         std::set<string> selectedNames; 
    243         selectedNames.insert( 
    244                 haliteList.manager().allSelected().begin(), haliteList.manager().allSelected().end()); 
    245  
    246         hal::TorrentDetails td = hal::bittorrent().getTorrentDetails( 
    247                 haliteList.manager().selected(), selectedNames); 
    248  
    249         ui_update_signal_(td); 
     242 
     243        torrents_ = hal::bittorrent().getTorrentDetails( 
     244                haliteList.manager().selected(), haliteList.manager().allSelected()); 
     245 
     246        ui_update_signal_(torrents()); 
    250247 
    251248        } 
  • src/HaliteWindow.hpp

    r240 r241  
    115115        } 
    116116         
     117        const hal::TorrentDetails& torrents() { return torrents_; } 
     118         
     119        HaliteListViewCtrl& torrentsList() { return haliteList; } 
     120         
    117121protected: 
    118122        typedef CHaliteIni<HaliteWindow> iniClass; 
     
    171175                ar & BOOST_SERIALIZATION_NVP(activeTab); 
    172176        } 
    173          
     177                 
    174178        friend class GeneralOptions; 
    175179 
     
    200204        bool advancedUI; 
    201205        int activeTab; 
     206         
     207        hal::TorrentDetails torrents_; 
    202208}; 
    203209 
  • src/advtabs/Torrent.cpp

    r240 r241  
    108108        */ 
    109109        return 0; 
     110} 
     111 
     112void AdvTorrentDialog::uiUpdate(const hal::TorrentDetails& tD) 
     113{ 
     114        uiUpdateSingle(tD.selectedTorrent()); 
     115} 
     116 
     117void AdvTorrentDialog::uiUpdateMultiple(const hal::TorrentDetail_vec& torrents) 
     118{ 
     119} 
     120 
     121void AdvTorrentDialog::uiUpdateSingle(const hal::TorrentDetail_ptr& torrent) 
     122{        
     123        if (torrent)     
     124        { 
     125                SetDlgItemText(IDC_NAME, torrent->filename().c_str()); 
     126                SetDlgItemText(IDC_TRACKER, torrent->currentTracker().c_str()); 
     127                SetDlgItemText(IDC_STATUS, torrent->state().c_str()); 
     128                m_prog.SetPos(static_cast<int>(torrent->completion()*100)); 
     129                 
     130/*              if (!torrent->estimatedTimeLeft().is_special()) 
     131                { 
     132                        SetDlgItemText(IDC_ETA, 
     133                                (hal::from_utf8(boost::posix_time::to_simple_string(torrent->estimatedTimeLeft())).c_str())); 
     134                } 
     135                else SetDlgItemText(IDC_ETA,L"∞"); 
     136*/               
     137/*              SetDlgItemText(IDC_COMPLETE, 
     138                        (wformat(L"%1$.2fmb of %2$.2fmb")  
     139                                % (static_cast<float>(pTD->totalWantedDone())/(1024*1024)) 
     140                                % (static_cast<float>(pTD->totalWanted())/(1024*1024)) 
     141                        ).str().c_str()); 
     142*/                       
     143                float ratio = (torrent->totalWantedDone())  
     144                        ? static_cast<float>(torrent->totalUploaded()) 
     145                                / static_cast<float>(torrent->totalWantedDone()) 
     146                        : 0; 
     147                 
     148                SetDlgItemInfo(IDC_TRANS, 
     149                        wformat(hal::app().res_wstr(HAL_DOWNLOAD_SUMMARY))  
     150                                % (static_cast<float>(torrent->totalWantedDone())/(1024*1024)) 
     151                                % (static_cast<float>(torrent->totalUploaded())/(1024*1024)) 
     152                                % ratio);        
     153                         
     154                if (!torrent->updateTrackerIn().is_special()) 
     155                { 
     156                        SetDlgItemText(IDC_UPDATE,       
     157                                (hal::from_utf8(boost::posix_time::to_simple_string(torrent->updateTrackerIn())).c_str())); 
     158                } 
     159                else SetDlgItemText(IDC_UPDATE, L"N/A");         
     160        } 
     161} 
     162 
     163void AdvTorrentDialog::uiUpdateNone() 
     164{ 
    110165} 
    111166 
  • src/advtabs/Torrent.hpp

    r240 r241  
    6565                DLGRESIZE_CONTROL(IDC_RATIOESTATIC, (DLSZ_MOVE_X)) 
    6666                DLGRESIZE_CONTROL(IDC_EDITRATIO, (DLSZ_MOVE_X)) 
    67                 DLGRESIZE_CONTROL(IDC_RATIO, (DLSZ_MOVE_X)) 
    68                 DLGRESIZE_CONTROL(IDC_RATIOSTAT, (DLSZ_MOVE_X)) 
     67//              DLGRESIZE_CONTROL(IDC_RATIO, (DLSZ_MOVE_X)) 
     68//              DLGRESIZE_CONTROL(IDC_RATIOSTAT, (DLSZ_MOVE_X)) 
    6969 
    7070                DLGRESIZE_CONTROL(IDC_UPDATESTAT, (DLSZ_MOVE_X)) 
     
    8484                DLGRESIZE_CONTROL(IDC_STATUS, (DLSZ_SIZE_X)) 
    8585                DLGRESIZE_CONTROL(IDC_TRANS, (DLSZ_SIZE_X)) 
     86                DLGRESIZE_CONTROL(IDC_TRANS_SES, (DLSZ_SIZE_X)) 
     87                DLGRESIZE_CONTROL(IDC_TRANS_ETA, (DLSZ_SIZE_X)) 
    8688 
    8789        END_DLGRESIZE_MAP() 
     
    9496        void selectionChanged(const string& torrent_name); 
    9597        void updateDialog();     
    96         void uiUpdate(const hal::TorrentDetails& tD) {} 
     98        void uiUpdate(const hal::TorrentDetails& tD); 
     99        void uiUpdateMultiple(const hal::TorrentDetail_vec& torrents); 
     100        void uiUpdateSingle(const hal::TorrentDetail_ptr& torrent); 
     101        void uiUpdateNone(); 
    97102 
    98103protected: 
Note: See TracChangeset for help on using the changeset viewer.