Changeset 113


Ignore:
Timestamp:
12/28/06 07:52:07 (13 years ago)
Author:
Eoin
Message:

Halite custom TabCtrl? working.

Files:
17 edited
1 moved

Legend:

Unmodified
Added
Removed
  • Halite.pnproj

    r109 r113  
    1 <Project name="Halite"><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="res" path="res\"><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="ini" path="ini\"><File path="BitTConfig.hpp"></File><File path="Dialog.hpp"></File><File path="General.hpp"></File><File path="Remote.hpp"></File><File path="Splash.hpp"></File><File path="Torrent.hpp"></File><File path="Window.hpp"></File></MagicFolder><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="GlobalIni.cpp"></File><File path="GlobalIni.hpp"></File><File path="Halite.cpp"></File><File path="Halite.hpp"></File><File path="HaliteDialog.cpp"></File><File path="HaliteDialog.hpp"></File><File path="HaliteListViewCtrl.cpp"></File><File path="HaliteListViewCtrl.hpp"></File><File path="HaliteWindow.cpp"></File><File path="HaliteWindow.hpp"></File><File path="HalTabCtrl.hpp"></File><File path="halTorrent.cpp"></File><File path="halTorrent.hpp"></File><File path="halXmlRpc.cpp"></File><File path="halXmlRpc.hpp"></File><File path="NTray.cpp"></File><File path="NTray.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="ThemeTestDialog.hpp"></File><File path="WinAPIMutex.hpp"></File></MagicFolder><File path="Jamfile"></File></Project> 
     1<Project name="Halite"><MagicFolder excludeFolders="CVS;.svn" filter="*.*" name="res" path="res\"><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="ini" path="ini\"><File path="BitTConfig.cpp"></File><File path="BitTConfig.hpp"></File><File path="Dialog.hpp"></File><File path="General.hpp"></File><File path="Remote.hpp"></File><File path="Splash.hpp"></File><File path="Window.hpp"></File></MagicFolder><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="GlobalIni.cpp"></File><File path="GlobalIni.hpp"></File><File path="Halite.cpp"></File><File path="Halite.hpp"></File><File path="HaliteDialog.cpp"></File><File path="HaliteDialog.hpp"></File><File path="HaliteListViewCtrl.cpp"></File><File path="HaliteListViewCtrl.hpp"></File><File path="HaliteTabCtrl.hpp"></File><File path="HaliteWindow.cpp"></File><File path="HaliteWindow.hpp"></File><File path="halTorrent.cpp"></File><File path="halTorrent.hpp"></File><File path="halXmlRpc.cpp"></File><File path="halXmlRpc.hpp"></File><File path="NTray.cpp"></File><File path="NTray.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="ThemeTestDialog.hpp"></File><File path="WinAPIMutex.hpp"></File></MagicFolder><File path="Jamfile"></File></Project> 
  • Jamfile

    r108 r113  
    1515        AdvHaliteDialog.cpp 
    1616        ConfigOptions.cpp 
     17        ini/BitTConfig.cpp 
    1718        halTorrent.cpp 
    1819        GlobalIni.cpp 
  • src/AdvHaliteDialog.cpp

    r107 r113  
    1717        resizeClass::DlgResize_Init(false, true, WS_CLIPCHILDREN); 
    1818         
    19         m_tabCtrl.Attach(GetDlgItem(IDC_TAB)); 
     19        m_tabCtrl.SubclassWindow(GetDlgItem(IDC_TAB)); 
    2020         
    2121        TCITEM tie = { TCIF_TEXT, 0, 0, L"Overview", 0, -1, 0 }; 
     
    3232         
    3333        mp_dlg->SetWindowPos(HWND_TOP, rect.left, rect.top, 0, 0, SWP_NOSIZE); 
    34          
    3534         
    3635        return 0; 
  • src/AdvHaliteDialog.hpp

    r107 r113  
    77#include "uxtheme.h" 
    88 
    9 #include "HalTabCtrl.hpp" 
     9#include "HaliteTabCtrl.hpp" 
    1010#include "ThemeTestDialog.hpp" 
    1111 
     
    1313class ThemeTestDialog; 
    1414 
     15/*class CMyTabCtrlWithDisable : public CTabCtrlWithDisable 
     16{ 
     17public: 
     18    BOOL IsTabEnabled(int nTab) 
     19    { 
     20        return (nTab != 2); 
     21    } 
     22}; 
     23*/ 
    1524class AdvHaliteDialog : 
    1625        public CDialogImpl<AdvHaliteDialog>, 
     
    4453                CHAIN_MSG_MAP(resizeClass) 
    4554        END_MSG_MAP() 
    46          
    47  
    4855 
    4956        BEGIN_DLGRESIZE_MAP(thisClass) 
    50 /*              DLGRESIZE_CONTROL(BTNPAUSE, (DLSZ_MOVE_X)) 
    51                 DLGRESIZE_CONTROL(BTNREANNOUNCE, (DLSZ_MOVE_X)) 
    52                 DLGRESIZE_CONTROL(BTNREMOVE, (DLSZ_MOVE_X)) 
    53                  
    54                 DLGRESIZE_CONTROL(IDC_TL, (DLSZ_MOVE_X)) 
    55                 DLGRESIZE_CONTROL(IDC_NC, (DLSZ_MOVE_X)) 
    56                 DLGRESIZE_CONTROL(IDC_TLD, (DLSZ_MOVE_X)) 
    57                 DLGRESIZE_CONTROL(IDC_TLU, (DLSZ_MOVE_X)) 
    58                 DLGRESIZE_CONTROL(IDC_NCU, (DLSZ_MOVE_X)) 
    59                 DLGRESIZE_CONTROL(IDC_NCD, (DLSZ_MOVE_X)) 
    60                  
    61                 DLGRESIZE_CONTROL(IDC_EDITNCD, (DLSZ_MOVE_X)) 
    62                 DLGRESIZE_CONTROL(IDC_EDITTLD, (DLSZ_MOVE_X)) 
    63                 DLGRESIZE_CONTROL(IDC_EDITTLU, (DLSZ_MOVE_X)) 
    64                 DLGRESIZE_CONTROL(IDC_EDITNCU, (DLSZ_MOVE_X)) 
    65                  
    66                 DLGRESIZE_CONTROL(TORRENTPROG, (DLSZ_SIZE_X)) 
    67                  
    68                 DLGRESIZE_CONTROL(IDC_NAME, (DLSZ_SIZE_X)) 
    69                 DLGRESIZE_CONTROL(IDC_TRACKER, (DLSZ_SIZE_X)) 
    70                 DLGRESIZE_CONTROL(IDC_STATUS, (DLSZ_SIZE_X)) 
    71                 DLGRESIZE_CONTROL(IDC_COMPLETE, (DLSZ_SIZE_X)) 
    72                  
    73                 DLGRESIZE_CONTROL(LISTPEERS, (DLSZ_SIZE_X | DLSZ_SIZE_Y))*/ 
    7457                DLGRESIZE_CONTROL(IDC_TAB, (DLSZ_SIZE_X | DLSZ_SIZE_Y)) 
    7558 
     
    8063        void onClose();  
    8164         
    82 //      void selectionChanged();         
    83 //      void updateDialog(); 
    84 //      void saveStatus(); 
    85          
    8665protected: 
    8766        void InitializeControls(void); 
    8867        void InitializeValues(void); 
    8968 
    90         CTabCtrl m_tabCtrl; 
     69//      CHalTabCtrl m_tabCtrl1; 
     70        CHalTabCtrl m_tabCtrl; 
    9171        boost::scoped_ptr<ThemeTestDialog> mp_dlg; 
    9272         
  • src/DdxEx.hpp

    r109 r113  
    3535public:  
    3636 
    37         BOOL DDX_StdWString(UINT id, wstring& str, BOOL save, const size_t max_len=MAX_PATH) 
     37        BOOL DDX_StdWString(UINT id, wstring& str, BOOL save, const int max_len=MAX_PATH) 
    3838        { 
    3939                T* pT = static_cast<T*>(this); 
  • src/GlobalIni.cpp

    r110 r113  
    1111#include "ini/Window.hpp" 
    1212#include "ini/BitTConfig.hpp" 
    13 //#include "ini/Torrent.hpp" 
    1413#include "ini/Splash.hpp" 
    1514 
     
    2625        haliteWindow_(new WindowConfig()), 
    2726        haliteDialog_(new DialogConfig()), 
    28 //      torrentConfig_(new halite::TorrentConfig()), 
    2927        generalConfig_(new GeneralConfig()), 
    3028        remoteConfig_(new RemoteConfig()), 
     
    5856                        ia >> make_nvp("remoteConfig", *remoteConfig_); 
    5957                        ia >> make_nvp("splashConfig", *splashConfig_); 
    60 //                      ia >> make_nvp("torrentConfig", *torrentConfig_); 
    6158                } 
    6259                return true; 
     
    8683                oa << make_nvp("generalConfig", *generalConfig_);        
    8784                oa << make_nvp("remoteConfig", *remoteConfig_);  
    88                 oa << make_nvp("splashConfig", *splashConfig_); 
    89 //              oa << make_nvp("torrentConfig", *torrentConfig_);                        
     85                oa << make_nvp("splashConfig", *splashConfig_);          
    9086                return true; 
    9187        } 
  • src/GlobalIni.hpp

    r110 r113  
    3333        WindowConfig& windowConfig() { return *haliteWindow_; } 
    3434        DialogConfig& dialogConfig() { return *haliteDialog_; } 
    35 //      halite::TorrentConfig& torrentConfig() { return *torrentConfig_; } 
    3635         
    3736        const boost::filesystem::path& workingFile() { return workingFile_; } 
     
    4847        boost::scoped_ptr<WindowConfig> haliteWindow_; 
    4948        boost::scoped_ptr<DialogConfig> haliteDialog_; 
    50 //      boost::scoped_ptr<halite::TorrentConfig> torrentConfig_; 
    5149         
    5250        boost::filesystem::path workingFile_; 
  • src/Halite.cpp

    r109 r113  
    6464{ 
    6565        boost::filesystem::path::default_name_check(boost::filesystem::native);  
    66         INI().LoadData(); 
    6766 
    6867        AtlInitCommonControls(ICC_COOL_CLASSES | ICC_BAR_CLASSES); 
     
    103102        else 
    104103        { 
     104                INI().LoadData(); 
     105                 
    105106                CMessageLoop theLoop; 
    106107                _Module.AddMessageLoop(&theLoop); 
    107                 {                                                
     108                {        
    108109                        HaliteWindow wndMain(WMU_ARE_YOU_ME); 
    109110                        if (wndMain.CreateEx() == NULL) 
     
    111112                         
    112113                        oneInstance.release(); 
     114                         
     115                        #ifndef NDEBUG 
     116                        global_debugDialog_.Create(wndMain); 
     117                        global_debugDialog_.ShowWindow(false); 
     118                        #endif 
    113119                         
    114120                        if (!globalModule().commandArgs().empty()) 
     
    122128                                INI().windowConfig().rect.bottom-INI().windowConfig().rect.top, 
    123129                                false); 
    124                                  
     130                         
    125131                        wndMain.SetIcon(LoadIcon(hInstance, MAKEINTRESOURCE(IDR_APP_ICON)), false); 
    126132                        wndMain.ShowWindow(nCmdShow); 
    127                          
    128                         #ifndef NDEBUG 
    129                         global_debugDialog_.Create(wndMain); 
    130                         global_debugDialog_.ShowWindow(false); 
    131                         #endif 
    132133                         
    133134                        nRet = theLoop.Run();                            
     
    144145                        halite::bittorrent().closeAll(); 
    145146                        halite::bittorrent().shutDownSession();          
    146                 } 
     147                }                
     148                INI().SaveData(); 
    147149        } 
    148150        } 
     
    150152        _Module.Term(); 
    151153         
    152         INI().SaveData(); 
    153          
    154154        return nRet; 
    155155} 
  • src/HaliteDialog.cpp

    r110 r113  
    77#include "HaliteDialog.hpp" 
    88#include "HaliteWindow.hpp" 
     9#include "HaliteListViewCtrl.hpp" 
    910 
    1011#include "GlobalIni.hpp" 
    1112#include "ini/Dialog.hpp" 
    1213 
    13 HaliteDialog::HaliteDialog(ui_signal& ui_sig, single_selection_manager& single_sel) : 
     14HaliteDialog::HaliteDialog(ui_signal& ui_sig, selection_manager& single_sel) : 
    1415        ui_(ui_sig), 
    15         single_selection_(single_sel) 
     16        selection_manager_(single_sel) 
    1617{ 
    1718        ui_.attach(bind(&HaliteDialog::updateDialog, this)); 
    18         single_selection_.attach(bind(&HaliteDialog::selectionChanged, this, _1)); 
     19        selection_manager_.attach(bind(&HaliteDialog::selectionChanged, this, _1)); 
    1920} 
    2021 
     
    122123void HaliteDialog::onPause(UINT, int, HWND) 
    123124{ 
    124         string torrentName = single_selection_.selected(); 
     125        string torrentName = selection_manager_.selected(); 
    125126        if (halite::bittorrent().isTorrentPaused(torrentName)) 
    126127        { 
     
    139140void HaliteDialog::onReannounce(UINT, int, HWND) 
    140141{ 
    141         halite::bittorrent().reannounceTorrent(single_selection_.selected()); 
     142        halite::bittorrent().reannounceTorrent(selection_manager_.selected()); 
    142143} 
    143144 
    144145void HaliteDialog::onRemove(UINT, int, HWND) 
    145146{ 
    146         single_selection_.clear();               
     147        selection_manager_.clear();              
    147148         
    148149        ui_.update(); 
     
    153154        DoDataExchange(true); 
    154155         
    155         halite::bittorrent().setTorrentSpeed(single_selection_.selected(), TranLimitDown, TranLimitUp); 
    156         halite::bittorrent().setTorrentLimit(single_selection_.selected(), NoConnDown, NoConnUp); 
     156        halite::bittorrent().setTorrentSpeed(selection_manager_.selected(), TranLimitDown, TranLimitUp); 
     157        halite::bittorrent().setTorrentLimit(selection_manager_.selected(), NoConnDown, NoConnUp); 
    157158         
    158159        return 0; 
     
    169170{ 
    170171        halite::TorrentDetail_ptr pTD = halite::bittorrent().getTorrentDetails( 
    171                 single_selection_.selected()); 
     172                selection_manager_.selected()); 
    172173         
    173174        if (pTD)         
     
    195196                 
    196197                halite::PeerDetails peerDetails; 
    197                 halite::bittorrent().getAllPeerDetails(single_selection_.selected(), peerDetails); 
     198                halite::bittorrent().getAllPeerDetails(selection_manager_.selected(), peerDetails); 
    198199                 
    199200                if (!peerDetails.empty()) 
  • src/HaliteDialog.hpp

    r110 r113  
    77 
    88class ui_signal; 
    9 class single_selection_manager; 
     9class selection_manager; 
    1010 
    1111class HaliteDialog : 
     
    2323        enum { IDD = IDD_HALITEDLG }; 
    2424         
    25         HaliteDialog(ui_signal& ui_sig, single_selection_manager& single_sel);   
     25        HaliteDialog(ui_signal& ui_sig, selection_manager& single_sel);  
    2626        BOOL PreTranslateMessage(MSG* pMsg)     { return this->IsDialogMessage(pMsg); } 
    2727         
     
    104104         
    105105        ui_signal& ui_; 
    106         single_selection_manager& single_selection_; 
     106        selection_manager& selection_manager_; 
    107107}; 
  • src/HaliteListViewCtrl.cpp

    r107 r113  
    66#include "halTorrent.hpp" 
    77 
    8 void HaliteListViewCtrl::onShowWIndow(UINT, INT) 
     8void selection_manager::sync_list(bool list_to_manager) 
     9{ 
     10        if (list_to_manager) 
     11        {        
     12                int itemPos = m_list_.GetSelectionMark();        
     13         
     14                if (itemPos != -1) 
     15                { 
     16                        boost::array<wchar_t, MAX_PATH> pathBuffer; 
     17                        m_list_.GetItemText(itemPos, 0, pathBuffer.c_array(), pathBuffer.size());        
     18                        string selected = wcstombs(pathBuffer.data()); 
     19                         
     20                        if (selected_ != selected) 
     21                        { 
     22                                selected_ = selected; 
     23                                signal(); 
     24                        } 
     25                } 
     26                else 
     27                { 
     28                        selected_ = ""; 
     29                        signal(); 
     30                } 
     31        } 
     32        else 
     33        { 
     34                LV_FINDINFO findInfo = { sizeof(LV_FINDINFO) };  
     35                findInfo.flags = LVFI_STRING; 
     36                 
     37                wstring torrent_name = mbstowcs(selected_);              
     38                findInfo.psz = torrent_name.c_str(); 
     39                 
     40                int itemPos = m_list_.FindItem(&findInfo, -1);   
     41                 
     42                if (itemPos != m_list_.GetSelectionMark()) 
     43                { 
     44                        LVITEM lvi = { LVIF_STATE }; 
     45                        lvi.state = LVIS_SELECTED; 
     46                        lvi.stateMask = LVIS_SELECTED; 
     47                        m_list_.SetItemState(itemPos, &lvi); 
     48                        m_list_.SetSelectionMark(itemPos); 
     49                        signal(); 
     50                } 
     51        } 
     52} 
     53 
     54void selection_manager::setSelected(int itemPos) 
     55{ 
     56        LVITEM lvi = { LVIF_STATE }; 
     57        lvi.state = LVIS_SELECTED; 
     58        lvi.stateMask = LVIS_SELECTED; 
     59        m_list_.SetItemState(itemPos, &lvi); 
     60        m_list_.SetSelectionMark(itemPos); 
     61        sync_list(true); 
     62} 
     63 
     64void selection_manager::clear() 
     65{ 
     66        m_list_.DeleteItem(m_list_.GetSelectionMark()); 
     67        halite::bittorrent().removeTorrent(selected_); 
     68         
     69//      m_list_.SelectItem(0); 
     70        sync_list(true); 
     71} 
     72 
     73HaliteListViewCtrl::HaliteListViewCtrl() : 
     74        manager_(*this) 
     75{} 
     76 
     77void HaliteListViewCtrl::onShowWindow(UINT, INT) 
    978{ 
    1079        SetExtendedListViewStyle(WS_EX_CLIENTEDGE|LVS_EX_FULLROWSELECT); 
     
    78147                INI().windowConfig().mainListColWidth[i] = GetColumnWidth(i); 
    79148} 
     149 
     150LRESULT HaliteListViewCtrl::OnClick(int, LPNMHDR pnmh, BOOL&) 
     151{ 
     152        manager().sync_list(true); 
     153 
     154        return 0; 
     155} 
     156 
     157//LRESULT HaliteListViewCtrl::OnDeleteItem(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/) 
     158//{ 
     159//      LPNMLISTVIEW pnmv=(LPNMLISTVIEW)pnmh; 
     160//      T* pItem=(T*)GetItemData(pnmv->iItem); 
     161//      ATLASSERT(pItem); 
     162//      if (pItem)      // Delete attached structure 
     163//              delete pItem; 
     164//      return 0; 
     165//} 
  • src/HaliteListViewCtrl.hpp

    r110 r113  
    33 
    44#include "stdAfx.hpp" 
     5 
     6#include <boost/array.hpp> 
     7#include <boost/signals.hpp> 
     8 
     9class HaliteListViewCtrl; 
     10 
     11class selection_manager : noncopyable 
     12{ 
     13public: 
     14        selection_manager(HaliteListViewCtrl& m_list) : 
     15                m_list_(m_list) 
     16        {} 
     17        typedef const string& param_type; 
     18         
     19        void sync_list(bool list_to_manager); 
     20         
     21        param_type selected() const { return selected_; } 
     22         
     23        void setSelected(const string& sel)  
     24        { 
     25                selected_ = sel; 
     26                sync_list(false); 
     27        } 
     28         
     29        void setSelected(int itemPos); 
     30         
     31        void clear(); 
     32         
     33        void attach(boost::function<void (param_type)> fn) { selection_.connect(fn); } 
     34        void signal() { selection_(selected_); } 
     35         
     36private: 
     37        string selected_;        
     38        boost::signal<void (param_type)> selection_; 
     39        HaliteListViewCtrl& m_list_; 
     40}; 
    541 
    642class HaliteListViewCtrl :  
     
    945{ 
    1046public:  
     47        HaliteListViewCtrl(); 
     48         
    1149        BEGIN_MSG_MAP(HaliteListViewCtrl) 
    12                 MSG_WM_SHOWWINDOW(onShowWIndow) 
     50                MSG_WM_SHOWWINDOW(onShowWindow) 
     51                 
     52                REFLECTED_NOTIFY_CODE_HANDLER(NM_CLICK, OnClick) 
     53                REFLECTED_NOTIFY_CODE_HANDLER(LVN_COLUMNCLICK , OnClick) 
     54                DEFAULT_REFLECTION_HANDLER() 
    1355        END_MSG_MAP() 
    1456         
    15         void onShowWIndow(UINT, INT); 
     57        void onShowWindow(UINT, INT); 
    1658        void saveStatus(); 
    1759        void updateListView(); 
     60         
     61        LRESULT OnClick(int, LPNMHDR pnmh, BOOL&); 
     62         
     63        selection_manager& manager() { return manager_; } 
     64 
     65private: 
     66        selection_manager manager_; 
    1867}; 
  • src/HaliteWindow.cpp

    r110 r113  
    1515#include "ConfigOptions.hpp" 
    1616#include "GlobalIni.hpp" 
     17#include "ini/BitTConfig.hpp" 
    1718#include "ini/Window.hpp" 
    18  
    19 void single_selection_manager::sync_with_list(bool list_to_manager) 
    20 { 
    21         if (list_to_manager) 
    22         {        
    23                 int itemPos = mp_list_->GetSelectionMark();              
    24                 if (itemPos != -1) 
    25                 { 
    26                         boost::array<wchar_t, MAX_PATH> pathBuffer; 
    27                         mp_list_->GetItemText(itemPos, 0, pathBuffer.c_array(), pathBuffer.size());      
    28                         string selected = wcstombs(pathBuffer.data()); 
    29                          
    30                         if (selected_ != selected) 
    31                         { 
    32                                 selected_ = selected; 
    33                                 signal(); 
    34                         } 
    35                 } 
    36                 else 
    37                 { 
    38                         selected_ = ""; 
    39                         signal(); 
    40                 } 
    41         } 
    42         else 
    43         { 
    44                 LV_FINDINFO findInfo = { sizeof(LV_FINDINFO) };  
    45                 findInfo.flags = LVFI_STRING; 
    46                  
    47                 wstring torrent_name = mbstowcs(selected_);              
    48                 findInfo.psz = torrent_name.c_str(); 
    49                  
    50                 int itemPos = mp_list_->FindItem(&findInfo, -1);         
    51                  
    52                 if (itemPos != mp_list_->GetSelectionMark()) 
    53                 { 
    54                         mp_list_->SelectItem(itemPos); 
    55                         signal(); 
    56                 } 
    57         } 
    58 } 
    59  
    60 void single_selection_manager::setSelected(int itemPos) 
    61 { 
    62         mp_list_->SelectItem(itemPos); 
    63         sync_with_list(true); 
    64 } 
    65  
    66 void single_selection_manager::clear() 
    67 { 
    68         mp_list_->DeleteItem(mp_list_->GetSelectionMark()); 
    69         halite::bittorrent().removeTorrent(selected_); 
    70          
    71         mp_list_->SelectItem(0); 
    72         sync_with_list(true); 
    73 } 
    7419 
    7520HaliteWindow::HaliteWindow(unsigned areYouMe = 0) : 
    7621        mp_list(new HaliteListViewCtrl()), 
    77         single_selection_manager_(mp_list), 
    7822        WM_AreYouMe_(areYouMe) 
    7923{} 
     
    9135 
    9236LRESULT HaliteWindow::OnCreate(LPCREATESTRUCT lpcs) 
    93 {        
    94         try 
    95         { 
    96         bool success = halite::bittorrent().listenOn( 
    97                 std::make_pair(INI().bitTConfig().portFrom, INI().bitTConfig().portTo)); 
    98         assert(success);         
    99         } 
    100         catch(const std::exception& ex) 
    101         { 
    102                 ::MessageBoxA(0, ex.what(), "Init Exception", MB_ICONERROR|MB_OK); 
    103         } 
    104          
    105         halite::bittorrent().resumeAll(); 
    106          
    107         halite::bittorrent().setSessionLimits( 
    108                 INI().bitTConfig().maxConnections, INI().bitTConfig().maxUploads); 
    109         halite::bittorrent().setSessionSpeed( 
    110                 INI().bitTConfig().downRate, INI().bitTConfig().upRate); 
    111          
    112 /*      if (INI().remoteConfig().isEnabled) 
    113         { 
    114                 halite::xmlRpc().bindHost(INI().remoteConfig().port); 
    115         } 
    116 */ 
     37{ 
     38        INI().bitTConfig().settingsChanged(); 
     39         
    11740        RECT rc; GetClientRect(&rc); 
    11841        SetMenu(0); 
     
    14164        // Create ListView and Dialog 
    14265        mp_list->Create(m_Split.m_hWnd, rc, NULL,  
    143                 LVS_REPORT|LVS_SINGLESEL|WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|LVS_SHOWSELALWAYS); 
    144          
    145         mp_dlg.reset(new HaliteDialog(ui(), selection())), 
     66                LVS_REPORT|WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|LVS_SHOWSELALWAYS); 
     67         
     68        mp_dlg.reset(new HaliteDialog(ui(), mp_list->manager())), 
    14669        mp_dlg->Create(m_Split.m_hWnd); 
    147         mp_dlg->ShowWindow(true); 
     70//      mp_dlg->ShowWindow(true); 
    14871         
    14972        mp_advDlg.reset(new AdvHaliteDialog(this)); 
    15073        mp_advDlg->Create(m_Split.m_hWnd); 
    151 //      mp_advDlg->ShowWindow(true); 
    152          
    153         m_Split.SetSplitterPanes(*mp_list, *mp_dlg); 
     74        mp_advDlg->ShowWindow(true); 
     75         
     76        m_Split.SetSplitterPanes(*mp_list, *mp_advDlg); 
    15477         
    15578        // Create the tray icon. 
     
    177100        pLoop->AddIdleHandler(this); 
    178101         
    179         selection().setSelected(0); 
    180         ui().update(); 
    181          
    182         return 0; 
    183 } 
    184  
    185 /*const string& HaliteWindow::getSelected() const  
    186 { 
    187         return selectedTorrent_;  
    188 } 
    189  
    190 void HaliteWindow::setSelected(int index)  
    191 { 
    192         mp_list->SetSelectionMark(index); 
    193         selectionChanged(); 
    194 } 
    195  
    196 void HaliteWindow::clearSelected() 
    197 { 
    198         mp_list->DeleteItem(mp_list->GetSelectionMark()); 
    199         halite::bittorrent().removeTorrent(selectedTorrent_); 
    200         selectedTorrent_ = "";   
    201          
    202         selectionChanged(); 
    203 } 
    204  
    205 void HaliteWindow::selectionChanged() 
    206 { 
    207         int itemPos = mp_list->GetSelectionMark(); 
    208          
    209         if (itemPos != -1) 
    210         { 
    211                 boost::array<wchar_t, MAX_PATH> pathBuffer; 
    212                 mp_list->GetItemText(itemPos, 0, pathBuffer.c_array(), pathBuffer.size());       
    213                 selectedTorrent_ = wcstombs(pathBuffer.data()); 
    214         } 
    215          
    216         mp_dlg->selectionChanged(); 
    217 } 
    218 */ 
    219 LRESULT HaliteWindow::OnNotify(int wParam, LPNMHDR lParam) 
    220 { 
    221         if (lParam->hwndFrom == *mp_list && lParam->code == NM_CLICK) 
    222         { 
    223                 selection().sync_with_list(true); 
    224         } 
     102        mp_list->manager().setSelected(0); 
     103        ui().update(); 
     104         
    225105        return 0; 
    226106} 
     
    253133} 
    254134 
    255 void HaliteWindow::updateConfigSettings() 
    256 { 
    257         halite::bittorrent().listenOn( 
    258                 std::make_pair(INI().bitTConfig().portFrom, INI().bitTConfig().portTo)); 
    259          
    260         halite::bittorrent().setSessionLimits( 
    261                 INI().bitTConfig().maxConnections, INI().bitTConfig().maxUploads); 
    262         halite::bittorrent().setSessionSpeed( 
    263                 INI().bitTConfig().downRate, INI().bitTConfig().upRate); 
    264          
    265 //      if (INI().remoteConfig().isEnabled) 
    266 //              halite::xmlRpc().bindHost(INI().remoteConfig().port); 
    267 //      else 
    268 //              halite::xmlRpc().stopHost(); 
    269 } 
    270  
    271135void HaliteWindow::OnTimer(UINT uTimerID, TIMERPROC pTimerProc) 
    272136{ 
     
    286150        { 
    287151                case HALITE_SENDING_CMD: 
    288                 wstring filename(static_cast<wchar_t*>(pCSD->lpData), pCSD->cbData/sizeof(wchar_t)); 
    289                 ProcessFile(filename.c_str()); 
    290         } 
    291  
     152                {        
     153                        wstring filename(static_cast<wchar_t*>(pCSD->lpData), pCSD->cbData/sizeof(wchar_t)); 
     154                        ProcessFile(filename.c_str()); 
     155                        break; 
     156                } 
     157                default: 
     158                        break; 
     159        } 
    292160        return 0; 
    293161} 
     
    298166        { 
    299167         
    300         // Big changes due here. 
     168        // Big changes due here relating to custom savedirectory. 
    301169         
    302170        path file(wcstombs(lpszPath), boost::filesystem::native);        
     
    315183                 
    316184                int itemPos = mp_list->FindItem(&findInfo, -1);  
    317                 selection().setSelected(itemPos); 
     185                mp_list->manager().setSelected(itemPos); 
    318186        }        
    319187         
     
    422290    sheet.DoModal(); 
    423291         
    424         updateConfigSettings(); 
     292        INI().bitTConfig().settingsChanged(); 
    425293         
    426294        return 0; 
     
    441309} 
    442310 
    443  
    444311LRESULT HaliteWindow::OnHelp(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) 
    445312{ 
    446         ConfigOptionsProp sheet(L"Settings", 2);         
     313        ConfigOptionsProp sheet(L"Settings", 3);         
    447314    sheet.DoModal(); 
    448315         
    449         updateConfigSettings(); 
     316        INI().bitTConfig().settingsChanged(); 
    450317         
    451318        return 0; 
  • src/HaliteWindow.hpp

    r110 r113  
    66#include "NTray.hpp" 
    77 
    8 #include <boost/array.hpp> 
    98#include <boost/signals.hpp> 
    109 
     
    2120private: 
    2221        boost::signal<void ()> ui_; 
    23 }; 
    24  
    25 class single_selection_manager : noncopyable 
    26 { 
    27 public: 
    28         single_selection_manager(boost::shared_ptr<HaliteListViewCtrl> p_list) : 
    29                 mp_list_(p_list) 
    30         {} 
    31         typedef const string& param_type; 
    32          
    33         void sync_with_list(bool list_to_manager); 
    34          
    35         param_type selected() const { return selected_; } 
    36          
    37         void setSelected(const string& sel)  
    38         { 
    39                 selected_ = sel; 
    40                 sync_with_list(false); 
    41         } 
    42          
    43         void setSelected(int itemPos); 
    44          
    45         void clear(); 
    46          
    47         void attach(boost::function<void (param_type)> fn) { selection_.connect(fn); } 
    48         void signal() { selection_(selected_); } 
    49          
    50 private: 
    51         string selected_;        
    52         boost::signal<void (param_type)> selection_; 
    53         boost::shared_ptr<HaliteListViewCtrl> mp_list_; 
    54 }; 
    55  
    56 class config_signal 
    57 { 
    58 public: 
    59         void attach(boost::function<void (bool)> fn) { config_.connect(fn); } 
    60         void update(bool firstTime) { config_(firstTime); } 
    61          
    62 private: 
    63         boost::signal<void (bool)> config_; 
    6422}; 
    6523 
     
    7937         
    8038        ui_signal& ui() { return ui_; } 
    81         single_selection_manager& selection() { return single_selection_manager_; } 
    8239 
    8340        BEGIN_MSG_MAP(HaliteWindow) 
    84                 MSG_WM_NOTIFY(OnNotify) 
    8541                MSG_WM_CREATE(OnCreate) 
    8642                MSG_WM_CLOSE(OnClose) 
     
    10359                COMMAND_ID_HANDLER(ID_TRAY_EXIT, OnTrayExit) 
    10460                 
     61                REFLECT_NOTIFICATIONS() 
    10562                CHAIN_MSG_MAP(CUpdateUI<HaliteWindow>) 
    10663                CHAIN_MSG_MAP(CFrameWindowImpl<HaliteWindow>) 
     
    161118        void updateWindow(); 
    162119         
    163 //      const string& getSelected() const; 
    164 //      void setSelected(int index); 
    165 //      void selectionChanged(); 
    166 //      void clearSelected(); 
    167  
    168120private:                 
    169121        CCommandBarCtrl m_CmdBar; 
     
    177129 
    178130        ui_signal ui_; 
    179         config_signal config_; 
    180         single_selection_manager single_selection_manager_; 
    181131         
    182 //      boost::signal<void ()> updateSelection_; 
    183          
    184 //      string selectedTorrent_; 
    185132        unsigned WM_AreYouMe_; 
    186          
    187         void updateConfigSettings(); 
    188133}; 
  • src/halTorrent.cpp

    r110 r113  
    2424 
    2525#include "halTorrent.hpp" 
    26 //#include "GlobalIni.hpp" 
    27 //#include "ini/Torrent.hpp" 
    2826 
    2927namespace halite  
     
    8583    void serialize(Archive& ar, const unsigned int version) 
    8684    { 
    87         ar & BOOST_SERIALIZATION_NVP(transferLimit_); 
    88         ar & BOOST_SERIALIZATION_NVP(connections_); 
    89         ar & BOOST_SERIALIZATION_NVP(uploads_); 
    90         ar & BOOST_SERIALIZATION_NVP(paused_); 
    91         ar & BOOST_SERIALIZATION_NVP(filename_); 
    92         ar & BOOST_SERIALIZATION_NVP(saveDirectory_); 
     85        ar & make_nvp("transferLimit", transferLimit_); 
     86        ar & make_nvp("connections", connections_); 
     87        ar & make_nvp("uploads", uploads_); 
     88        ar & make_nvp("paused", paused_); 
     89        ar & make_nvp("filename", filename_); 
     90        ar & make_nvp("saveDirectory", saveDirectory_); 
    9391    } 
    9492         
  • src/halTorrent.hpp

    r110 r113  
    1010#include <boost/filesystem/path.hpp> 
    1111#include <boost/filesystem/operations.hpp> 
    12 #include <boost/filesystem/fstream.hpp>   
     12#include <boost/filesystem/fstream.hpp> 
    1313 
    1414using boost::filesystem::path; 
  • src/ini/BitTConfig.hpp

    r109 r113  
    3737        } 
    3838         
     39        void settingsChanged(); 
     40         
    3941        friend class BitTorrentOptions; 
    4042        friend class HaliteWindow; 
     
    5355         
    5456        bool enableIPFilter;     
    55         wstring ipFilterFile; 
     57        std::wstring ipFilterFile; 
    5658}; 
    5759 
Note: See TracChangeset for help on using the changeset viewer.