Changeset 119


Ignore:
Timestamp:
01/06/07 15:40:32 (13 years ago)
Author:
Eoin
Message:

Prototype extended TabCtrl? for Advanced UI.

Files:
1 added
17 edited

Legend:

Unmodified
Added
Removed
  • res/Halite.rc

    r118 r119  
    5757    SEPARATOR 
    5858    BUTTON      ID_SETTINGS 
     59    BUTTON      ID_ADVANCED 
    5960    SEPARATOR 
    6061    BUTTON      ID_RESUME 
     
    249250END 
    250251 
    251 IDD_THEMETEST DIALOGEX 0, 0, 186, 93 
     252IDD_THEMETEST DIALOGEX 0, 0, 186, 94 
    252253STYLE DS_SETFONT | DS_FIXEDSYS | DS_CONTROL | WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_SYSMENU 
    253254EXSTYLE WS_EX_TRANSPARENT | WS_EX_CONTROLPARENT 
     
    412413        RIGHTMARGIN, 179 
    413414        TOPMARGIN, 7 
    414         BOTTOMMARGIN, 86 
     415        BOTTOMMARGIN, 87 
    415416    END 
    416417 
     
    485486BEGIN 
    486487    IDPANE_FILTER           "Filtering 000000 ranges." 
     488    IDS_TRYANOTHERPORT      "The BitTorrent session could not start. Try selecting another port in the settings." 
     489    IDS_DHTTRYANOTHERPORT   "DHT session could not start. Try selecting another port in the settings." 
    487490END 
    488491 
  • res/resource.h

    r118 r119  
    1515#define IDD_CONFIGGENERAL               112 
    1616#define IDPANE_FILTER                   112 
     17#define IDS_TRYANOTHERPORT              113 
    1718#define IDD_ADVHALITEDLG                114 
    1819#define IDI_ICON1                       114 
    1920#define IDR_APP_ICON                    114 
     21#define IDS_DHTTRYANOTHERPORT           114 
    2022#define IDD_DIALOG1                     115 
    2123#define IDD_THEMETEST                   115 
     
    5759#define IDC_BC_TMAXUP                   1028 
    5860#define IDC_BC_PORTFROM                 1029 
    59 #define IDC_BC_TMAXUP2                  1029 
    6061#define IDC_BC_SAVEFOLDER               1029 
    6162#define IDC_BC_PORTTO                   1030 
     
    103104#define IDC_BC_PORTCHECK                1064 
    104105#define IDC_BC_SAVEBROWSE               1064 
     106#define ID_ADVANCED                     1064 
    105107#define ED_CON                          3000 
    106108#define ID_ABOUT_OPENHALITE             40001 
     
    119121#define _APS_NEXT_RESOURCE_VALUE        119 
    120122#define _APS_NEXT_COMMAND_VALUE         40010 
    121 #define _APS_NEXT_CONTROL_VALUE         1065 
     123#define _APS_NEXT_CONTROL_VALUE         1066 
    122124#define _APS_NEXT_SYMED_VALUE           110 
    123125#endif 
  • src/AdvHaliteDialog.cpp

    r113 r119  
    1212#include "ini/Dialog.hpp" 
    1313 
    14  
    1514LRESULT AdvHaliteDialog::onInitDialog(HWND, LPARAM) 
    1615{        
    1716        resizeClass::DlgResize_Init(false, true, WS_CLIPCHILDREN); 
    1817         
     18         
    1919        m_tabCtrl.SubclassWindow(GetDlgItem(IDC_TAB)); 
    2020         
    21         TCITEM tie = { TCIF_TEXT, 0, 0, L"Overview", 0, -1, 0 }; 
    22         m_tabCtrl.InsertItem(0, &tie); 
     21        mp_dlg.reset(new ThemeTestDialog()); 
     22        mp_dlg->Create(m_tabCtrl); 
    2323         
    24         mp_dlg.reset(new ThemeTestDialog()); 
     24        m_tabCtrl.AddPage(*mp_dlg, L"Test1"); 
    2525         
    26         mp_dlg->Create(m_tabCtrl); 
    27         mp_dlg->ShowWindow(true);        
     26        mp_dlg2.reset(new ThemeTestDialog()); 
     27        mp_dlg2->Create(m_tabCtrl); 
    2828         
    29         RECT rect; 
    30         m_tabCtrl.GetClientRect(&rect); 
    31         m_tabCtrl.AdjustRect(false, &rect); 
     29        m_tabCtrl.AddPage(*mp_dlg2, L"Test2"); 
    3230         
    33         mp_dlg->SetWindowPos(HWND_TOP, rect.left, rect.top, 0, 0, SWP_NOSIZE); 
    34          
     31        m_tabCtrl.SetCurrentPage(0); 
    3532        return 0; 
    3633} 
     
    4239        m_tabCtrl.AdjustRect(false, &rect); 
    4340         
    44         mp_dlg->SetWindowPos(HWND_TOP, 0, 0, rect.right-rect.left, rect.bottom-rect.top, SWP_NOMOVE); 
     41//      mp_dlg->SetWindowPos(HWND_TOP, 0, 0, rect.right-rect.left, rect.bottom-rect.top, SWP_NOMOVE); 
    4542         
    4643        SetMsgHandled(false); 
  • src/AdvHaliteDialog.hpp

    r117 r119  
    1111class ThemeTestDialog; 
    1212 
    13 /*class CMyTabCtrlWithDisable : public CTabCtrlWithDisable 
    14 { 
    15 public: 
    16     BOOL IsTabEnabled(int nTab) 
    17     { 
    18         return (nTab != 2); 
    19     } 
    20 }; 
    21 */ 
    2213class AdvHaliteDialog : 
    2314        public CDialogImpl<AdvHaliteDialog>, 
     
    5041                 
    5142                CHAIN_MSG_MAP(resizeClass) 
     43                REFLECT_NOTIFICATIONS() 
    5244        END_MSG_MAP() 
    5345 
     
    6860        CHalTabCtrl m_tabCtrl; 
    6961        boost::scoped_ptr<ThemeTestDialog> mp_dlg; 
     62        boost::scoped_ptr<ThemeTestDialog> mp_dlg2; 
    7063         
    7164        HaliteWindow* mainHaliteWindow;  
  • src/ConfigOptions.hpp

    r118 r119  
    3434        DDX_CHECK(IDC_GENERAL_ONEINST, INI().generalConfig().oneInst) 
    3535        DDX_CHECK(IDC_GENERAL_TRAY, INI().windowConfig().use_tray) 
    36 //      DDX_CHECK(IDC_GENERAL_ADVGUI, INI().remoteConfig().isEnabled) 
     36        DDX_CHECK(IDC_GENERAL_ADVGUI, INI().windowConfig().advancedUI) 
    3737    END_DDX_MAP() 
    3838  
  • src/Halite.cpp

    r113 r119  
    6363int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 
    6464{ 
    65         boost::filesystem::path::default_name_check(boost::filesystem::native);  
     65        boost::filesystem::path::default_name_check(boost::filesystem::native); 
    6666 
    6767        AtlInitCommonControls(ICC_COOL_CLASSES | ICC_BAR_CLASSES); 
  • src/HaliteTabCtrl.hpp

    r113 r119  
    33  
    44#include "stdAfx.hpp" 
     5#include "HaliteTabPage.hpp" 
    56 
    67class CHalTabCtrl : public CWindowImpl<CHalTabCtrl, CTabCtrl> 
    78{ 
    89public:  
     10        CHalTabCtrl() : 
     11                currentPage_(0) 
     12        {} 
    913 
    1014    BEGIN_MSG_MAP(CTabCtrlWithDisableImpl) 
    1115//        MESSAGE_HANDLER(WM_CREATE, OnCreate) 
     16                REFLECTED_NOTIFY_CODE_HANDLER_EX(TCN_SELCHANGE, OnSelChange) 
    1217        DEFAULT_REFLECTION_HANDLER() 
    1318    END_MSG_MAP() 
     
    2530        } 
    2631         
     32        void SetCurrentPage(unsigned index) 
     33        { 
     34                if (currentPage_) 
     35                        ::ShowWindow(currentPage_, false); 
     36                         
     37                if (!pages_.empty()) 
     38                { 
     39                        currentPage_ = pages_[index]; 
     40                        ::ShowWindow(currentPage_, true);        
     41                         
     42                        RECT rect; 
     43                        GetClientRect(&rect); 
     44                        AdjustRect(false, &rect); 
     45                         
     46                        ::SetWindowPos(currentPage_, HWND_TOP, rect.left, rect.top, 0, 0, SWP_NOSIZE); 
     47                } 
     48        } 
     49         
     50        LRESULT OnSelChange(LPNMHDR lpHdr) 
     51        { 
     52                SetCurrentPage(GetCurSel()); 
     53                 
     54                return 0; 
     55        } 
     56         
     57        void AddPage(HWND hWnd, wstring wndText) 
     58        {        
     59                TCITEM tie = { TCIF_TEXT, 0, 0, const_cast<wchar_t*>(wndText.c_str()), 0, -1, 0 }; 
     60                InsertItem(0, &tie); 
     61                 
     62                pages_.push_back(hWnd); 
     63 
     64/*              ::ShowWindow(hWnd, true);        
     65                 
     66                RECT rect; 
     67                GetClientRect(&rect); 
     68                AdjustRect(false, &rect); 
     69                 
     70                ::SetWindowPos(hWnd, HWND_TOP, rect.left, rect.top, 0, 0, SWP_NOSIZE); 
     71*/ 
     72        } 
     73         
     74protected: 
     75        std::vector<HWND> pages_; 
     76        HWND currentPage_; 
    2777}; 
  • src/HaliteWindow.cpp

    r118 r119  
    6868        mp_dlg.reset(new HaliteDialog(ui(), mp_list->manager())), 
    6969        mp_dlg->Create(m_Split.m_hWnd); 
    70         mp_dlg->ShowWindow(true); 
     70//      mp_dlg->ShowWindow(true); 
    7171         
    7272        mp_advDlg.reset(new AdvHaliteDialog(this)); 
     
    7474//      mp_advDlg->ShowWindow(true); 
    7575         
    76         m_Split.SetSplitterPanes(*mp_list, *mp_dlg); 
     76//      m_Split.SetSplitterPanes(*mp_list, *mp_dlg); 
    7777         
    7878        // Create the tray icon. 
     
    101101         
    102102        mp_list->manager().setSelected(0); 
    103         ui().update(); 
     103        setCorrectDialog(); 
     104         
     105        return 0; 
     106} 
     107 
     108LRESULT HaliteWindow::OnAdvanced(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) 
     109{ 
     110        INI().windowConfig().advancedUI = !INI().windowConfig().advancedUI;              
     111        setCorrectDialog(); 
    104112         
    105113        return 0; 
     
    111119     
    112120    return 0; 
     121} 
     122void HaliteWindow::setCorrectDialog() 
     123{ 
     124        if (!INI().windowConfig().advancedUI) 
     125        {                
     126                mp_dlg->ShowWindow(true); 
     127                mp_advDlg->ShowWindow(false); 
     128                m_Split.SetSplitterPanes(*mp_list, *mp_dlg); 
     129        } 
     130        else 
     131        {                
     132                mp_dlg->ShowWindow(false); 
     133                mp_advDlg->ShowWindow(true); 
     134                m_Split.SetSplitterPanes(*mp_list, *mp_advDlg); 
     135        } 
     136        ui().update(); 
    113137} 
    114138 
  • src/HaliteWindow.hpp

    r117 r119  
    5454                COMMAND_ID_HANDLER(ID_PAUSE, OnPauseAll) 
    5555                COMMAND_ID_HANDLER(ID_SETTINGS, OnSettings) 
     56                COMMAND_ID_HANDLER(ID_ADVANCED, OnAdvanced) 
    5657                COMMAND_ID_HANDLER(ID_HELP, OnHelp) 
    5758                COMMAND_ID_HANDLER(ID_VIEW_STATUS_BAR, OnViewStatusBar) 
     
    113114        LRESULT OnSettings(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); 
    114115        LRESULT OnHelp(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); 
     116        LRESULT OnAdvanced(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); 
    115117         
    116118        LRESULT OnViewStatusBar(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled); 
     
    121123         
    122124        void updateWindow(); 
     125        void setCorrectDialog(); 
    123126         
    124127private:                 
     
    131134        boost::scoped_ptr<HaliteDialog> mp_dlg; 
    132135        boost::scoped_ptr<AdvHaliteDialog> mp_advDlg; 
     136         
     137        bool whichSimple_; 
    133138 
    134139        ui_signal ui_; 
  • src/ThemeTestDialog.hpp

    r117 r119  
    55#include "DdxEx.hpp" 
    66 
     7#include "HaliteTabPage.hpp" 
    78#include "UxthemeWrapper.hpp" 
    89 
     
    1314 
    1415class ThemeTestDialog : 
    15         public CDialogImpl<ThemeTestDialog>, 
     16        public CHalTabPageImpl<ThemeTestDialog>, 
    1617        public CDialogResize<ThemeTestDialog> 
    1718{ 
    1819protected: 
    1920        typedef ThemeTestDialog thisClass; 
    20         typedef CDialogImpl<ThemeTestDialog> baseClass; 
     21        typedef CHalTabPageImpl<ThemeTestDialog> baseClass; 
    2122        typedef CDialogResize<ThemeTestDialog> resizeClass; 
    2223public: 
     
    3334        BEGIN_MSG_MAP(thisClass) 
    3435                MSG_WM_INITDIALOG(onInitDialog) 
    35                 MSG_WM_CTLCOLORDLG(OnCltColorDlg) 
    36                 MSG_WM_CTLCOLORBTN(OnCltColor) 
    37                 MSG_WM_CTLCOLORSTATIC(OnCltColor) 
    3836                 
    3937                if (uMsg == WM_FORWARDMSG) 
    4038                        if (PreTranslateMessage((LPMSG)lParam)) return TRUE; 
    4139                 
     40                CHAIN_MSG_MAP(baseClass) 
    4241                CHAIN_MSG_MAP(resizeClass) 
    4342        END_MSG_MAP() 
     
    5251                return 0;  
    5352        }        
    54          
    55         LRESULT OnCltColorDlg(HDC hDC, HWND hWnd) 
    56         { 
    57                 SetMsgHandled(false); 
    58                  
    59                 if (halite::uxtheme().pIsAppThemed) 
    60                         if(halite::uxtheme().pIsAppThemed()) 
    61                         { 
    62                                 RECT rect; 
    63                                 GetClientRect(&rect); 
    64                                 if (halite::uxtheme().pDrawThemeParentBackground) 
    65                                 { 
    66                                         halite::uxtheme().pDrawThemeParentBackground(hWnd, hDC, &rect); 
    67                                         SetMsgHandled(true); 
    68                                 } 
    69                         } 
    70                          
    71                 return (LRESULT)::GetStockObject(HOLLOW_BRUSH); 
    72         } 
    73          
    74         LRESULT OnCltColor(HDC hDC, HWND hWnd) 
    75         {        
    76                 SetMsgHandled(false); 
    77                  
    78                 if (halite::uxtheme().pIsAppThemed) 
    79                         if(halite::uxtheme().pIsAppThemed()) 
    80                         { 
    81                                 RECT rect; 
    82                                 ::GetClientRect(hWnd, &rect); 
    83                                 ::SetBkMode(hDC, TRANSPARENT);  
    84                                 if (halite::uxtheme().pDrawThemeParentBackground) 
    85                                 { 
    86                                         halite::uxtheme().pDrawThemeParentBackground(hWnd, hDC, &rect); 
    87                                         SetMsgHandled(true); 
    88                                 } 
    89                         } 
    90                          
    91                 return (LRESULT)::GetStockObject(HOLLOW_BRUSH); 
    92         } 
    9353                 
    9454protected: 
  • src/halTorrent.cpp

    r117 r119  
    135135         
    136136        TorrentInternal(libtorrent::torrent_handle h, std::wstring f, path saveDirectory) :              
    137                 transferLimit_(std::pair<float, float>(-1, -1)), 
    138                 connections_(-1), 
    139                 uploads_(-1), 
     137                transferLimit_(std::pair<float, float>(bittorrent().defTorrentDownload(), bittorrent().defTorrentUpload())), 
     138                connections_(bittorrent().defTorrentMaxConn()), 
     139                uploads_(bittorrent().defTorrentMaxUpload()), 
    140140                paused_(false), 
    141141                filename_(f), 
     
    420420                } 
    421421        } 
     422 
     423        int defTorrentMaxConn() { return defTorrentMaxConn_; } 
     424        int defTorrentMaxUpload() { return defTorrentMaxUpload_; } 
     425        float defTorrentDownload() { return defTorrentDownload_; } 
     426        float defTorrentUpload() { return defTorrentUpload_; } 
    422427         
    423428private: 
     
    425430                theSession(lbt::fingerprint("HL", 0, 2, 0, 8)), 
    426431                workingDirectory(globalModule().exePath().branch_path()), 
     432                defTorrentMaxConn_(-1), 
     433                defTorrentMaxUpload_(-1), 
     434                defTorrentDownload_(-1), 
     435                defTorrentUpload_(-1), 
    427436                ip_filter_on_(false), 
    428437                ip_filter_loaded_(false), 
     
    453462        TorrentMap torrents; 
    454463        const path workingDirectory; 
     464         
     465        int defTorrentMaxConn_; 
     466        int defTorrentMaxUpload_; 
     467        float defTorrentDownload_; 
     468        float defTorrentUpload_; 
    455469         
    456470        bool ip_filter_on_; 
     
    754768} 
    755769 
     770void BitTorrent::setTorrentDefaults(int maxConn, int maxUpload, float download, float upload) 
     771{ 
     772        pimpl->defTorrentMaxConn_ = maxConn; 
     773        pimpl->defTorrentMaxUpload_ = maxUpload; 
     774        pimpl->defTorrentDownload_ = download; 
     775        pimpl->defTorrentUpload_ = upload; 
     776} 
     777 
    756778lbt::entry BitTorrent_impl::prepTorrent(path filename, path saveDirectory) 
    757779{ 
     
    11181140} 
    11191141 
     1142int BitTorrent::defTorrentMaxConn() { return pimpl->defTorrentMaxConn_; } 
     1143int BitTorrent::defTorrentMaxUpload() { return pimpl->defTorrentMaxUpload_; } 
     1144float BitTorrent::defTorrentDownload() { return pimpl->defTorrentDownload_; } 
     1145float BitTorrent::defTorrentUpload() { return pimpl->defTorrentUpload_; } 
     1146         
    11201147}; 
  • src/halTorrent.hpp

    r115 r119  
    158158        void setDhtSettings(int max_peers_reply, int search_branching,  
    159159                int service_port, int max_fail_count); 
    160          
     160                         
    161161        const SessionDetail getSessionDetails(); 
    162          
     162 
     163        void setTorrentDefaults(int maxConn, int maxUpload, float download, float upload);       
    163164        void newTorrent(boost::filesystem::path filename, boost::filesystem::path files); 
    164165        void addTorrent(boost::filesystem::path file, path saveDirectory); 
     
    190191        friend BitTorrent& bittorrent(); 
    191192         
     193        int defTorrentMaxConn(); 
     194        int defTorrentMaxUpload(); 
     195        float defTorrentDownload(); 
     196        float defTorrentUpload(); 
     197         
    192198private: 
    193199        BitTorrent(); 
  • src/ini/BitTConfig.cpp

    r118 r119  
    1717void BitTConfig::settingsThread() 
    1818{ 
     19        try 
     20        { 
    1921        if (INI().bitTConfig().enableIPFilter) 
    2022        { 
     
    2527        else 
    2628                halite::bittorrent().ensure_ip_filter_off(); 
     29        } 
     30        catch(const std::exception& ex) 
     31        { 
     32                ::MessageBoxA(0, ex.what(), "Loading IP Filter Exception", MB_ICONERROR|MB_OK); 
     33        } 
    2734         
    2835        try 
     
    3037        bool success = halite::bittorrent().listenOn( 
    3138                std::make_pair(INI().bitTConfig().portFrom, INI().bitTConfig().portTo)); 
    32         assert(success);         
     39        if (!success) 
     40        { 
     41                MessageBox(0, globalModule().loadResString(IDS_TRYANOTHERPORT).c_str(), L"Init Exception", MB_ICONERROR|MB_OK); 
     42        } 
    3343        } 
    3444        catch(const std::exception& ex) 
     
    4353        halite::bittorrent().setSessionSpeed( 
    4454                INI().bitTConfig().downRate, INI().bitTConfig().upRate); 
     55                 
     56        halite::bittorrent().setTorrentDefaults(INI().bitTConfig().torrentMaxConnections, 
     57                INI().bitTConfig().torrentMaxUploads, INI().bitTConfig().torrentDownRate, 
     58                INI().bitTConfig().torrentUpRate); 
    4559         
     60        try 
     61        { 
    4662        halite::bittorrent().setDhtSettings(INI().bitTConfig().dhtMaxPeersReply,  
    4763                INI().bitTConfig().dhtSearchBranching, INI().bitTConfig().dhtServicePort,  
     
    5268        else 
    5369                halite::bittorrent().ensure_dht_off(); 
    54          
     70        } 
     71        catch(const asio::error& ex) 
     72        {                
     73                MessageBox(0, globalModule().loadResString(IDS_DHTTRYANOTHERPORT).c_str(), L"DHT Error", MB_ICONERROR|MB_OK); 
     74        }        
    5575/*      if (INI().remoteConfig().isEnabled) 
    5676        { 
  • src/ini/Window.hpp

    r118 r119  
    1010        WindowConfig() : 
    1111                splitterPos(100), 
    12                 use_tray(true) 
     12                use_tray(true), 
     13                advancedUI(false) 
    1314        { 
    1415                rect.top = 10; 
     
    3940                if (version > 0) { 
    4041                        ar & BOOST_SERIALIZATION_NVP(mainListColWidthEx); 
     42                        ar & BOOST_SERIALIZATION_NVP(advancedUI); 
    4143                } 
    4244        } 
     
    5557        unsigned int mainListColWidthEx[numMainColsEx]; 
    5658        bool use_tray; 
     59        bool advancedUI; 
    5760}; 
    5861 
  • src/stdAfx.hpp

    r117 r119  
    2929#include <atlctrlx.h> 
    3030#include <atlddx.h> 
    31  
    3231 
    3332#include "..\res\resource.h" 
     
    9089        const std::vector<wstring>& commandArgs() const { return command_args_; } 
    9190         
     91        HINSTANCE hInstance() const { return hInstance_; } 
     92        void hInstance(HINSTANCE hInst) { hInstance_ = hInst; } 
     93         
     94        wstring loadResString(UINT uID); 
     95         
    9296private: 
    9397        wstring exe_string_; 
    9498        path exe_path_; 
    9599        std::vector<wstring> command_args_; 
     100         
     101        HINSTANCE hInstance_; 
    96102}; 
    97103 
Note: See TracChangeset for help on using the changeset viewer.