Changeset 305


Ignore:
Timestamp:
09/23/07 17:33:44 (13 years ago)
Author:
Eoin
Message:

Corrected file listing updating.

Files:
5 edited

Legend:

Unmodified
Added
Removed
  • Halite.pnproj

    r303 r305  
    1 <Project name="Halite"><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="res" path="res\"><File path="About.rtf"></File><File path="afxres.h"></File><File path="English.rtf"></File><File path="Halite.aps"></File><File path="Halite.ico"></File><File path="Halite.rc"></File><File path="Manifest.xml"></File><File path="resource.h"></File><File path="toolbar.bmp"></File></MagicFolder><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="src" path="src\"><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="advtabs" path="advtabs\"><File path="Debug.cpp"></File><File path="Debug.hpp"></File><File path="Files.cpp"></File><File path="Files.hpp"></File><File path="Peers.cpp"></File><File path="Peers.hpp"></File><File path="ThemeTestDialog.hpp"></File><File path="Torrent.cpp"></File><File path="Torrent.hpp"></File><File path="Tracker.cpp"></File><File path="Tracker.hpp"></File><File path="TrackerAddDialog.hpp"></File><File path="TrackerListView.cpp"></File><File path="TrackerListView.hpp"></File></MagicFolder><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="global" path="global\"><File path="InheritEnum.hpp"></File><File path="ini.cpp"></File><File path="ini.hpp"></File><File path="ini_adapter.cpp"></File><File path="ini_adapter.hpp"></File><File path="logger.cpp"></File><File path="logger.hpp"></File><File path="string_conv.cpp"></File><File path="string_conv.hpp"></File><File path="tinyxml.cpp"></File><File path="tinyxml.hpp"></File><File path="tinyxmlerror.cpp"></File><File path="tinyxmlparser.cpp"></File><File path="unicode.hpp"></File><File path="utf8.hpp"></File><File path="wtl_app.cpp"></File><File path="wtl_app.hpp"></File></MagicFolder><File path="AddTorrentDialog.hpp"></File><File path="AdvHaliteDialog.cpp"></File><File path="AdvHaliteDialog.hpp"></File><File path="ConfigOptions.cpp"></File><File path="ConfigOptions.hpp"></File><File path="CSSFileDialog.hpp"></File><File path="DdxEx.hpp"></File><File path="DebugDialog.hpp"></File><File path="DropFileTarget.h"></File><File path="halConfig.cpp"></File><File path="halConfig.hpp"></File><File path="halEvent.cpp"></File><File path="halEvent.hpp"></File><File path="Halite.cpp"></File><File path="Halite.hpp"></File><File path="HaliteDialog.cpp"></File><File path="HaliteDialog.hpp"></File><File path="HaliteDialogBase.hpp"></File><File path="HaliteEditCtrl.hpp"></File><File path="HaliteIni.hpp"></File><File path="HaliteListManager.hpp"></File><File path="HaliteListView.cpp"></File><File path="HaliteListView.hpp"></File><File path="HaliteListViewCtrl.hpp"></File><File path="HaliteSortListViewCtrl.hpp"></File><File path="HaliteTabCtrl.hpp"></File><File path="HaliteTabPage.hpp"></File><File path="HaliteUpdateLock.hpp"></File><File path="HaliteWindow.cpp"></File><File path="HaliteWindow.hpp"></File><File path="halTorrent.cpp"></File><File path="halTorrent.hpp"></File><File path="halTorrentInternal.hpp"></File><File path="halXmlRpc.cpp"></File><File path="halXmlRpc.hpp"></File><File path="NTray.cpp"></File><File path="NTray.hpp"></File><File path="ProgressDialog.hpp"></File><File path="SimpleHtml.h"></File><File path="SplashDialog.hpp"></File><File path="SSFileDialog.hpp"></File><File path="stdAfx.cpp"></File><File path="stdAfx.hpp"></File><File path="UxthemeWrapper.cpp"></File><File path="UxthemeWrapper.hpp"></File><File path="WinAPIMutex.hpp"></File><File path="WinAPIWaitableTimer.hpp"></File></MagicFolder><File path="Jamfile.v2"></File></Project> 
     1<Project name="Halite"><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="res" path="res\"><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="res24" path="res24\"><File path="ad.ico"></File><File path="ae.ico"></File><File path="af.ico"></File><File path="ag.ico"></File><File path="ai.ico"></File><File path="al.ico"></File><File path="am.ico"></File><File path="an.ico"></File><File path="ao.ico"></File><File path="ar.ico"></File><File path="as.ico"></File><File path="at.ico"></File><File path="au.ico"></File><File path="aw.ico"></File><File path="ax.ico"></File><File path="az.ico"></File><File path="ba.ico"></File><File path="bb.ico"></File><File path="bd.ico"></File><File path="be.ico"></File><File path="bf.ico"></File><File path="bg.ico"></File><File path="bh.ico"></File><File path="bi.ico"></File><File path="bj.ico"></File><File path="bm.ico"></File><File path="bn.ico"></File><File path="bo.ico"></File><File path="br.ico"></File><File path="bs.ico"></File><File path="bt.ico"></File><File path="bw.ico"></File><File path="by.ico"></File><File path="bz.ico"></File><File path="ca.ico"></File><File path="cc.ico"></File><File path="cd.ico"></File><File path="cf.ico"></File><File path="cg.ico"></File><File path="ch.ico"></File><File path="ci.ico"></File><File path="ck.ico"></File><File path="cl.ico"></File><File path="cm.ico"></File><File path="cn.ico"></File><File path="co.ico"></File><File path="cr.ico"></File><File path="cu.ico"></File><File path="cv.ico"></File><File path="cx.ico"></File><File path="cy.ico"></File><File path="cz.ico"></File><File path="de.ico"></File><File path="dj.ico"></File><File path="dk.ico"></File><File path="dm.ico"></File><File path="do.ico"></File><File path="dz.ico"></File><File path="ec.ico"></File><File path="ee.ico"></File><File path="eg.ico"></File><File path="eh.ico"></File><File path="er.ico"></File><File path="es.ico"></File><File path="et.ico"></File><File path="fi.ico"></File><File path="fj.ico"></File><File path="fk.ico"></File><File path="fm.ico"></File><File path="fo.ico"></File><File path="fr.ico"></File><File path="ga.ico"></File><File path="gb.ico"></File><File path="gd.ico"></File><File path="ge.ico"></File><File path="gg.ico"></File><File path="gh.ico"></File><File path="gi.ico"></File><File path="gk.ico"></File><File path="gl.ico"></File><File path="gm.ico"></File><File path="gn.ico"></File><File path="gp.ico"></File><File path="gq.ico"></File><File path="gr.ico"></File><File path="gs.ico"></File><File path="gt.ico"></File><File path="gu.ico"></File><File path="gw.ico"></File><File path="gy.ico"></File><File path="hk.ico"></File><File path="hn.ico"></File><File path="hr.ico"></File><File path="ht.ico"></File><File path="hu.ico"></File><File path="Icons.h"></File><File path="Icons.rc"></File><File path="id.ico"></File><File path="ie.ico"></File><File path="il.ico"></File><File path="im.ico"></File><File path="in.ico"></File><File path="io.ico"></File><File path="iq.ico"></File><File path="ir.ico"></File><File path="is.ico"></File><File path="it.ico"></File><File path="je.ico"></File><File path="jm.ico"></File><File path="jo.ico"></File><File path="jp.ico"></File><File path="ke.ico"></File><File path="kg.ico"></File><File path="kh.ico"></File><File path="ki.ico"></File><File path="km.ico"></File><File path="kn.ico"></File><File path="kp.ico"></File><File path="kr.ico"></File><File path="kw.ico"></File><File path="ky.ico"></File><File path="kz.ico"></File><File path="la.ico"></File><File path="lb.ico"></File><File path="lc.ico"></File><File path="li.ico"></File><File path="lk.ico"></File><File path="lr.ico"></File><File path="ls.ico"></File><File path="lt.ico"></File><File path="lu.ico"></File><File path="lv.ico"></File><File path="ly.ico"></File><File path="ma.ico"></File><File path="mc.ico"></File><File path="md.ico"></File><File path="me.ico"></File><File path="mg.ico"></File><File path="mh.ico"></File><File path="mk.ico"></File><File path="ml.ico"></File><File path="mm.ico"></File><File path="mn.ico"></File><File path="mo.ico"></File><File path="mp.ico"></File><File path="mq.ico"></File><File path="mr.ico"></File><File path="ms.ico"></File><File path="mt.ico"></File><File path="mu.ico"></File><File path="mv.ico"></File><File path="mw.ico"></File><File path="mx.ico"></File><File path="my.ico"></File><File path="mz.ico"></File><File path="na.ico"></File><File path="nc.ico"></File><File path="ne.ico"></File><File path="nf.ico"></File><File path="ng.ico"></File><File path="ni.ico"></File><File path="nl.ico"></File><File path="no.ico"></File><File path="not.ico"></File><File path="np.ico"></File><File path="nr.ico"></File><File path="nu.ico"></File><File path="nz.ico"></File><File path="om.ico"></File><File path="pa.ico"></File><File path="pe.ico"></File><File path="pf.ico"></File><File path="pg.ico"></File><File path="ph.ico"></File><File path="pk.ico"></File><File path="pl.ico"></File><File path="pm.ico"></File><File path="pn.ico"></File><File path="pr.ico"></File><File path="ps.ico"></File><File path="pt.ico"></File><File path="pw.ico"></File><File path="py.ico"></File><File path="qa.ico"></File><File path="ro.ico"></File><File path="rs.ico"></File><File path="ru.ico"></File><File path="rw.ico"></File><File path="sa.ico"></File><File path="sb.ico"></File><File path="sc.ico"></File><File path="sd.ico"></File><File path="se.ico"></File><File path="sg.ico"></File><File path="sh.ico"></File><File path="si.ico"></File><File path="sk.ico"></File><File path="sl.ico"></File><File path="sm.ico"></File><File path="sn.ico"></File><File path="so.ico"></File><File path="sr.ico"></File><File path="st.ico"></File><File path="sv.ico"></File><File path="sy.ico"></File><File path="sz.ico"></File><File path="tc.ico"></File><File path="td.ico"></File><File path="Template.rc"></File><File path="tf.ico"></File><File path="tg.ico"></File><File path="th.ico"></File><File path="tj.ico"></File><File path="tk.ico"></File><File path="tl.ico"></File><File path="tm.ico"></File><File path="tn.ico"></File><File path="to.ico"></File><File path="tr.ico"></File><File path="tt.ico"></File><File path="tv.ico"></File><File path="tw.ico"></File><File path="tz.ico"></File><File path="ua.ico"></File><File path="ug.ico"></File><File path="us.ico"></File><File path="uy.ico"></File><File path="uz.ico"></File><File path="va.ico"></File><File path="vc.ico"></File><File path="ve.ico"></File><File path="vg.ico"></File><File path="vi.ico"></File><File path="vn.ico"></File><File path="vu.ico"></File><File path="wf.ico"></File><File path="ws.ico"></File><File path="ye.ico"></File><File path="yu.ico"></File><File path="za.ico"></File><File path="zm.ico"></File><File path="zw.ico"></File></MagicFolder><File path="About.rtf"></File><File path="afxres.h"></File><File path="English.rtf"></File><File path="Halite.aps"></File><File path="Halite.ico"></File><File path="Halite.rc"></File><File path="Icons.rc"></File><File path="Manifest.xml"></File><File path="resource.h"></File><File path="toolbar.bmp"></File></MagicFolder><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="src" path="src\"><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="advtabs" path="advtabs\"><File path="Debug.cpp"></File><File path="Debug.hpp"></File><File path="Files.cpp"></File><File path="Files.hpp"></File><File path="Peers.cpp"></File><File path="Peers.hpp"></File><File path="ThemeTestDialog.hpp"></File><File path="Torrent.cpp"></File><File path="Torrent.hpp"></File><File path="Tracker.cpp"></File><File path="Tracker.hpp"></File><File path="TrackerAddDialog.hpp"></File><File path="TrackerListView.cpp"></File><File path="TrackerListView.hpp"></File></MagicFolder><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="global" path="global\"><File path="InheritEnum.hpp"></File><File path="ini.cpp"></File><File path="ini.hpp"></File><File path="ini_adapter.cpp"></File><File path="ini_adapter.hpp"></File><File path="logger.cpp"></File><File path="logger.hpp"></File><File path="string_conv.cpp"></File><File path="string_conv.hpp"></File><File path="tinyxml.cpp"></File><File path="tinyxml.hpp"></File><File path="tinyxmlerror.cpp"></File><File path="tinyxmlparser.cpp"></File><File path="unicode.hpp"></File><File path="utf8.hpp"></File><File path="wtl_app.cpp"></File><File path="wtl_app.hpp"></File></MagicFolder><File path="AddTorrentDialog.hpp"></File><File path="AdvHaliteDialog.cpp"></File><File path="AdvHaliteDialog.hpp"></File><File path="ConfigOptions.cpp"></File><File path="ConfigOptions.hpp"></File><File path="CSSFileDialog.hpp"></File><File path="DdxEx.hpp"></File><File path="DebugDialog.hpp"></File><File path="DropFileTarget.h"></File><File path="halConfig.cpp"></File><File path="halConfig.hpp"></File><File path="halEvent.cpp"></File><File path="halEvent.hpp"></File><File path="Halite.cpp"></File><File path="Halite.hpp"></File><File path="HaliteDialog.cpp"></File><File path="HaliteDialog.hpp"></File><File path="HaliteDialogBase.hpp"></File><File path="HaliteEditCtrl.hpp"></File><File path="HaliteIni.hpp"></File><File path="HaliteListManager.hpp"></File><File path="HaliteListView.cpp"></File><File path="HaliteListView.hpp"></File><File path="HaliteListViewCtrl.hpp"></File><File path="HaliteSortListViewCtrl.hpp"></File><File path="HaliteTabCtrl.hpp"></File><File path="HaliteTabPage.hpp"></File><File path="HaliteUpdateLock.hpp"></File><File path="HaliteWindow.cpp"></File><File path="HaliteWindow.hpp"></File><File path="halTorrent.cpp"></File><File path="halTorrent.hpp"></File><File path="halTorrentInternal.hpp"></File><File path="halXmlRpc.cpp"></File><File path="halXmlRpc.hpp"></File><File path="NTray.cpp"></File><File path="NTray.hpp"></File><File path="ProgressDialog.hpp"></File><File path="SimpleHtml.h"></File><File path="SplashDialog.hpp"></File><File path="SSFileDialog.hpp"></File><File path="stdAfx.cpp"></File><File path="stdAfx.hpp"></File><File path="UxthemeWrapper.cpp"></File><File path="UxthemeWrapper.hpp"></File><File path="WinAPIMutex.hpp"></File><File path="WinAPIWaitableTimer.hpp"></File></MagicFolder><File path="Jamfile.v2"></File></Project> 
  • Halite.pnps

    r303 r305  
    1 <pd><ViewState><e p="Halite\src\advtabs" x="true"></e><e p="Halite" x="true"></e><e p="Halite\res" x="true"></e><e p="Halite\src" x="true"></e><e p="Halite\src\global" x="true"></e></ViewState></pd> 
     1<pd><ViewState><e p="Halite\src\advtabs" x="true"></e><e p="Halite" x="true"></e><e p="Halite\res" x="true"></e><e p="Halite\res\res24" x="false"></e><e p="Halite\src" x="true"></e><e p="Halite\src\global" x="true"></e></ViewState></pd> 
  • src/advtabs/Files.cpp

    r303 r305  
    144144} 
    145145 
     146void FileTreeView::determineFocused() 
     147{ 
     148        wpath branch; 
     149         
     150        if (CTreeItem ti = GetSelectedItem()) 
     151        {                        
     152                do 
     153                { 
     154                        if (!ti.GetParent()) break; 
     155                         
     156                        boost::array<wchar_t, MAX_PATH> buffer; 
     157                        ti.GetText(buffer.elems, MAX_PATH); 
     158                         
     159                        branch = wstring(buffer.elems)/branch; 
     160                }  
     161                while (ti = ti.GetParent()); 
     162        } 
     163         
     164        focused_ = branch; 
     165} 
     166 
    146167LRESULT FileTreeView::OnSelChanged(int, LPNMHDR pnmh, BOOL&) 
    147 {                
    148         wpath branch; 
    149          
     168{        
    150169        TryUpdateLock<thisClass> lock(*this); 
    151170        if (lock) 
    152171        {                
    153                 if (CTreeItem ti = GetSelectedItem()) 
    154                 {                        
    155                         do 
    156                         { 
    157                                 if (!ti.GetParent()) break; 
    158                                  
    159                                 boost::array<wchar_t, MAX_PATH> buffer; 
    160                                 ti.GetText(buffer.elems, MAX_PATH); 
    161                                  
    162                                 branch = wstring(buffer.elems)/branch; 
    163                         }  
    164                         while (ti = ti.GetParent()); 
    165                 } 
    166                  
     172                determineFocused(); 
    167173                signal(); 
    168174        } 
    169175         
    170         focused_ = branch; 
    171176        return 0; 
    172177} 
     
    215220} 
    216221 
    217  
    218222void AdvFilesDialog::doUiUpdate() 
    219223{ 
     224        hal::event().post(shared_ptr<hal::EventDetail>(new hal::EventDebug(hal::Event::info, (wformat(L"doUiUpdate %1%") % current_torrent_name_).str().c_str()))); 
     225 
     226        current_torrent_name_ = L""; 
    220227        uiUpdate(hal::bittorrent().torrentDetails()); 
    221228} 
     
    228235                torrent_name = torrent->filename(); 
    229236         
     237//      hal::event().post(shared_ptr<hal::EventDetail>(new hal::EventDebug(hal::Event::info, (wformat(L"uiUpdate %1%, %2%") % current_torrent_name_ % torrent_name).str().c_str()))); 
     238         
    230239        if (current_torrent_name_ != torrent_name) 
    231240        {        
    232                 current_torrent_name_ = torrent_name; 
    233                 focusChanged(current_torrent_name_); 
    234         } 
    235          
    236         std::pair<hal::FileDetails::iterator, hal::FileDetails::iterator> range = 
    237                 std::equal_range(fileDetails.begin(), fileDetails.end(), hal::FileDetail(tree_.focused(), L"")); 
    238          
    239         std::sort(range.first, range.second, &hal::FileDetailNamesLess); 
     241                focusChanged(torrent_name); 
     242        } 
     243         
     244        if (fileDetails_.empty()) return; 
    240245         
    241246        TryUpdateLock<FileListView::listClass> lock(list_); 
     
    250255                        hal::FileDetail file(L"", wstring(fullPath.c_array())); 
    251256                        hal::FileDetails::iterator iter =  
    252                                 std::lower_bound(range.first, range.second, file, &hal::FileDetailNamesLess); 
    253                          
    254                         if (iter == range.second || !(hal::FileDetailNamesEqual((*iter), file))) 
     257                                std::lower_bound(range_.first, range_.second, file, &hal::FileDetailNamesLess); 
     258                         
     259                        if (iter == range_.second || !(hal::FileDetailNamesEqual((*iter), file))) 
    255260                        { 
    256                                 if (iter == range.second) 
     261                                if (iter == range_.second) 
    257262                                        hal::event().post(shared_ptr<hal::EventDetail>(new hal::EventDebug(hal::Event::info, (wformat(L"Deleting %1%") % file.filename).str().c_str()))); 
    258263                                else 
     
    263268                        else 
    264269                        { 
    265                                 list_.SetItemData(i, std::distance(range.first, iter)); 
     270                                list_.SetItemData(i, std::distance(range_.first, iter)); 
    266271                                ++i; 
    267272                        } 
     
    269274                 
    270275                // Add additional details 
    271                 for (hal::FileDetails::iterator i=range.first, e=range.second; 
     276                for (hal::FileDetails::iterator i=range_.first, e=range_.second; 
    272277                        i != e; ++i) 
    273278                {                        
     
    294299void AdvFilesDialog::focusChanged(wstring& torrent_name) 
    295300{ 
     301        hal::event().post(shared_ptr<hal::EventDetail>(new hal::EventDebug(hal::Event::info, (wformat(L"focusChanged %1%, %2% : %3%") % current_torrent_name_ % torrent_name % tree_.focused()).str().c_str()))); 
     302 
     303        current_torrent_name_ = torrent_name; 
     304         
    296305        const hal::TorrentDetails& tD = hal::bittorrent().torrentDetails(); 
    297306         
     307        fileDetails_.clear(); 
    298308//      foreach (const hal::TorrentDetail_ptr torrent, tD.selectedTorrents()) 
    299309        if (hal::TorrentDetail_ptr torrent = tD.focusedTorrent()) 
    300310        { 
    301311                std::copy(torrent->fileDetails().begin(), torrent->fileDetails().end(),  
    302                         std::back_inserter(fileDetails)); 
     312                        std::back_inserter(fileDetails_)); 
    303313        } 
    304314         
    305315        list_.setFocused(tD.focusedTorrent()); 
    306316         
    307         std::sort(fileDetails.begin(), fileDetails.end()); 
     317        std::sort(fileDetails_.begin(), fileDetails_.end()); 
    308318         
    309319        {       UpdateLock<FileTreeView> lock(tree_); 
     
    311321                treeManager_.InvalidateAll(); 
    312322                 
    313                 foreach (hal::FileDetail file, fileDetails) 
     323                foreach (hal::FileDetail file, fileDetails_) 
    314324                { 
    315325                        treeManager_.EnsureValid(file.branch); 
     
    318328                treeManager_.ClearInvalid(); 
    319329        } 
    320                  
     330         
     331        tree_.determineFocused(); 
     332         
     333        range_ = std::equal_range(fileDetails_.begin(), fileDetails_.end(), 
     334                hal::FileDetail(tree_.focused(), L"")); 
     335         
     336        std::sort(range_.first, range_.second, &hal::FileDetailNamesLess); 
     337         
    321338        splitterPos = splitter_.GetSplitterPos(); 
    322339} 
  • src/advtabs/Files.hpp

    r303 r305  
    191191        void signal() { selection_(); } 
    192192         
     193        void determineFocused(); 
     194         
    193195protected: 
    194196        void OnDestroy() 
     
    388390         
    389391        wstring current_torrent_name_;   
    390         hal::FileDetails fileDetails; 
    391 }; 
     392        hal::FileDetails fileDetails_; 
     393        std::pair<hal::FileDetails::iterator, hal::FileDetails::iterator> range_; 
     394}; 
  • src/halTorrentInternal.hpp

    r304 r305  
    552552        void prepare(wpath filename, wpath saveDirectory, wpath workingDirectory) 
    553553        { 
     554                if (exists(filename))  
     555                        metadata_ = haldecode(filename); 
     556                 
     557                extractNames(metadata_);                         
     558                 
    554559                const wpath resumeFile = workingDirectory/L"resume"/filename_; 
    555560                const wpath torrentFile = workingDirectory/L"torrents"/filename_; 
     
    560565                if (exists(resumeFile))  
    561566                        resumedata_ = haldecode(resumeFile); 
    562                 if (exists(filename))  
    563                         metadata_ = haldecode(filename); 
    564567 
    565568                if (!exists(workingDirectory/L"torrents")) 
     
    571574                if (!exists(saveDirectory)) 
    572575                        create_directory(saveDirectory); 
    573                          
    574                 extractNames(metadata_);                         
    575576        } 
    576577         
     
    579580                lbt::torrent_info info(metadata);                                
    580581                name_ = hal::from_utf8_safe(info.name()); 
    581                          
     582                 
    582583                filename_ = name_; 
    583584                if (!boost::find_last(filename_, L".torrent"))  
Note: See TracChangeset for help on using the changeset viewer.