Changeset 436


Ignore:
Timestamp:
05/11/08 14:43:39 (12 years ago)
Author:
Eoin
Message:

Added a generic container dialog for sub dialogs.

Location:
trunk
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/res/Halite.rc

    r433 r436  
    2020#define ID_NTTLVM_BEGIN                         18000 
    2121#define ID_NTPLVM_BEGIN                         19000 
    22 #define HAL_GENERIC_ALV_BEGIN           20000 
    23  
    24 #define ID_HAL_MAIN_LISTVIEW_BEGIN      30000 
     22 
     23#define HAL_GENERIC_HOLDER                      20000 
     24#define HAL_GENERIC_ALV_BEGIN           20010 
     25 
     26#define HAL_MAIN_LISTVIEW_BEGIN         30000 
     27#define HAL_MAIN_LISTVIEW_DLG_BEGIN     30100 
    2528 
    2629#define HAL_EVENT_BEGIN                         40000 
     
    3639#include "../src/HaliteListView.hpp" 
    3740#include "../src/HaliteDialog.hpp" 
     41#include "../src/WTLx/GenericAddDialog.hpp" 
    3842#include "../src/WTLx/GenericAddListView.hpp" 
    3943#include "../src/AddTorrentDialog.hpp" 
     44#include "../src/HaliteListViewDlg.hpp" 
    4045#include "../src/NewTorrentDialog.hpp" 
    4146#include "../src/NewTorrentTrackerLV.hpp" 
     
    369374END 
    370375 
    371 IDD_ADD_TORRENT DIALOGEX 0, 0, 230, 124 
    372 STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_THICKFRAME 
    373 EXSTYLE WS_EX_STATICEDGE 
    374 CAPTION "Add Torrent" 
    375 FONT 8, "MS Shell Dlg", 400, 0, 0x1 
    376 BEGIN 
    377     PUSHBUTTON      "Ok",IDOK,85,65,62,13 
    378     PUSHBUTTON      "Cancel",IDCANCEL,155,65,62,13 
    379  
    380         LTEXT           "Torrent save folder:",IDC_ADDT_DEFFLD_TEXT,6,51,215,8,SS_WORDELLIPSIS|SS_CENTERIMAGE 
     376HAL_GENERIC_HOLDER DIALOGEX 0,0,186,50 
     377STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME 
     378EXSTYLE WS_EX_TOOLWINDOW 
     379CAPTION "Add New Tracker" 
     380FONT 8,"MS Shell Dlg",400,0,1 
     381BEGIN 
     382    PUSHBUTTON      "OK",IDOK,78,32,50,14,BS_DEFPUSHBUTTON 
     383    PUSHBUTTON      "Cancel",IDCANCEL,132,32,50,14 
     384END 
     385 
     386HAL_ADJUST_DLG DIALOGEX 4, 4, 178, 24 
     387STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD  
     388FONT 8, "MS Shell Dlg", 400, 0, 0x1 
     389BEGIN 
     390        LTEXT           "Torrent save folder:",IDC_ADDT_DEFFLD_TEXT,0,0,215,8,SS_WORDELLIPSIS|SS_CENTERIMAGE 
    381391    EDITTEXT        IDC_BC_SAVEFOLDER,5,5,195,13,ES_AUTOHSCROLL 
    382392    PUSHBUTTON      "...",IDC_BC_SAVEBROWSE,205,5,18,13 
     
    384394        EDITTEXT        IDC_ADDT_MOVETO_FOLDER,5,5,195,13,ES_AUTOHSCROLL 
    385395    PUSHBUTTON      "...",IDC_ADDT_MOVETO_BROWSE,205,5,18,13 
     396END 
     397 
     398 
     399IDD_ADD_TORRENT DIALOGEX 0, 0, 230, 124 
     400STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_THICKFRAME 
     401EXSTYLE WS_EX_STATICEDGE 
     402CAPTION "Add Torrent" 
     403FONT 8, "MS Shell Dlg", 400, 0, 0x1 
     404BEGIN 
     405    PUSHBUTTON      "Ok",IDOK,85,65,62,13 
     406    PUSHBUTTON      "Cancel",IDCANCEL,155,65,62,13 
    386407 
    387408    CONTROL         "Use Compact Allocation.",IDC_CHECK_COMPACT,"Button",BS_AUTOCHECKBOX|WS_TABSTOP,5,38,220,8 
     
    436457EXSTYLE WS_EX_TOOLWINDOW 
    437458CAPTION "Add New Tracker" 
    438 FONT 8,"MS Shell Dlg 2",400,0,1 
     459FONT 8,"MS Shell Dlg",400,0,1 
    439460BEGIN 
    440461    PUSHBUTTON      "OK",IDOK,78,32,50,14,BS_DEFPUSHBUTTON 
  • trunk/sln/Halite/Halite.vcproj

    r429 r436  
    966966                        </File> 
    967967                        <File 
     968                                RelativePath="..\..\src\HaliteListViewDlg.hpp" 
     969                                > 
     970                        </File> 
     971                        <File 
    968972                                RelativePath="..\..\src\HaliteSortListViewCtrl.hpp" 
    969973                                > 
  • trunk/src/AddTorrentDialog.hpp

    r431 r436  
    88 
    99#define ID_ADD_TORRENT_BEGIN            11000 
    10 #define IDC_ADDT_MOVETO_FOLDER          ID_ADD_TORRENT_BEGIN + 1 
    11 #define IDC_ADDT_MOVETO_BROWSE          ID_ADD_TORRENT_BEGIN + 2 
    12 #define IDC_ADDT_MOVETO_CHECK           ID_ADD_TORRENT_BEGIN + 3 
    1310#define IDC_ADDT_DEFFLD_TEXT            ID_ADD_TORRENT_BEGIN + 6 
    1411#define IDC_ADDT_NOTE_TEXT                      ID_ADD_TORRENT_BEGIN + 8 
     12#define HAL_ADJUST_DLG_HOLDER           ID_ADD_TORRENT_BEGIN + 9 
    1513 
    1614#ifndef RC_INVOKED 
    1715 
    1816#include <boost/function.hpp> 
     17#include "HaliteListViewDlg.hpp" 
    1918#include "halTorrent.hpp" 
    2019 
     
    2221        public CDialogImpl<AddTorrentDialog>, 
    2322        public CAutoSizeWindow<AddTorrentDialog, true>, 
    24     public CWinDataExchangeEx<AddTorrentDialog> 
     23    public CWinDataExchangeEx<AddTorrentDialog>, 
     24        private hal::IniBase<AddTorrentDialog> 
    2525{ 
    2626protected: 
     
    2828        typedef CDialogImpl<thisClass> baseClass; 
    2929        typedef CAutoSizeWindow<thisClass, true> autosizeClass; 
     30        typedef hal::IniBase<thisClass> iniClass; 
    3031 
    3132public: 
    32         AddTorrentDialog(wstring& d, wstring& m, bool& u, bool& p, bool& c) : 
    33                 saveDirectory_(d), 
    34                 moveToDirectory_(m), 
    35                 useMove_(u), 
     33        AddTorrentDialog(wstring& d, wstring& m, bool& u, bool& p, bool& c) :      
     34                iniClass("AddTorrentDialog", "settings"), 
     35                rect_(0,0,0,0), 
     36                adjustDlg_(d, m, u), 
    3637                startPaused_(p), 
    3738                compactStorage_(c) 
    38         {} 
    39          
     39        { Load(); } 
     40 
     41        ~AddTorrentDialog() { Save(); }  
     42 
    4043        enum { IDD = IDD_ADD_TORRENT }; 
    4144 
     
    4548                COMMAND_ID_HANDLER_EX(IDCANCEL, OnCancel) 
    4649                COMMAND_ID_HANDLER_EX(IDOK, OnOk) 
    47                 COMMAND_ID_HANDLER_EX(IDC_ADDT_MOVETO_CHECK, OnMoveTo) 
    48                 COMMAND_ID_HANDLER_EX(IDC_BC_SAVEBROWSE, OnBrowse) 
    49                 COMMAND_ID_HANDLER_EX(IDC_ADDT_MOVETO_BROWSE, OnMoveBrowse) 
    5050                 
    5151        CHAIN_MSG_MAP(autosizeClass) 
     
    5555        DDX_CHECK(IDC_CHECK_COMPACT, compactStorage_) 
    5656        DDX_CHECK(IDC_CHECK_PAUSED, startPaused_) 
    57         DDX_CHECK(IDC_ADDT_MOVETO_CHECK, useMove_) 
    58                 DDX_EX_STDWSTRING(IDC_BC_SAVEFOLDER, saveDirectory_) 
    59                 DDX_EX_STDWSTRING(IDC_ADDT_MOVETO_FOLDER, moveToDirectory_) 
    6057    END_DDX_MAP()        
    61  
    62 #define ADD_FOLDERS_LAYOUT \ 
    63         WMB_HEAD(WMB_COLNOMAX(_exp), WMB_COL(_auto)), \ 
    64                 WMB_ROW(_auto,  IDC_ADDT_DEFFLD_TEXT, _r), \ 
    65                 WMB_ROW(_auto,  IDC_BC_SAVEFOLDER, IDC_BC_SAVEBROWSE), \ 
    66                 WMB_ROW(_auto,  IDC_ADDT_MOVETO_CHECK, _r), \ 
    67                 WMB_ROW(_auto,  IDC_ADDT_MOVETO_FOLDER, IDC_ADDT_MOVETO_BROWSE), \ 
    68         WMB_END() 
    6958 
    7059#define ADD_BUTTONS_LAYOUT \ 
     
    7564        BEGIN_WINDOW_MAP(thisClass, 6, 6, 3, 3) 
    7665                WMB_HEAD(WMB_COLNOMAX(_exp)), 
    77                         WMB_ROW(_auto,  ADD_FOLDERS_LAYOUT),  
     66                        WMB_ROW(_exp,   HAL_ADJUST_DLG),  
    7867                        WMB_ROW(_gap,   _d), 
    7968                        WMB_ROW(_auto,  IDC_CHECK_COMPACT),  
     
    8776        LRESULT OnInitDialog(HWND hwndFocus, LPARAM lParam) 
    8877        { 
    89                 CenterWindow();          
     78                if (rect_.left == rect_.right) 
     79                { 
     80                        CenterWindow(); 
     81                        GetWindowRect(rect_); 
     82                } 
     83                else  
     84                { 
     85                        MoveWindow(rect_.left, rect_.top, rect_.right-rect_.left, rect_.bottom-rect_.top, false);                
     86                } 
     87 
     88                adjustDlg_.Create(*this); 
     89                adjustDlg_.ShowWindow(SW_SHOW); 
     90                adjustDlg_.SetDlgCtrlID(HAL_ADJUST_DLG); 
    9091 
    9192                CtrlsInitialize(); 
    9293                CtrlsArrange(); 
    9394                 
    94                 BOOL retval =  DoDataExchange(false); 
    95  
    96                 OnMoveTo(0, 0, GetDlgItem(IDC_ADDT_MOVETO_CHECK)); 
    97  
     95                BOOL retval =  DoAllDataxchange(false); 
    9896                return retval; 
    9997        } 
     
    106104        void OnCancel(UINT, int, HWND hWnd) 
    107105        { 
     106                GetWindowRect(rect_); 
    108107                EndDialog(IDCANCEL); 
    109108        } 
     
    111110        void OnOk(UINT, int, HWND hWnd) 
    112111        { 
    113                 DoDataExchange(true); 
     112                DoAllDataxchange(true); 
     113 
     114                GetWindowRect(rect_); 
    114115                EndDialog(IDOK); 
    115116        } 
    116          
    117         void OnMoveTo(UINT, int, HWND hWnd) 
     117 
     118    friend class boost::serialization::access; 
     119    template<class Archive> 
     120    void serialize(Archive& ar, const unsigned int version) 
    118121        { 
    119                 LRESULT result = ::SendMessage(hWnd, BM_GETCHECK, 0, 0); 
     122                ar & boost::serialization::make_nvp("rect", rect_); 
     123        } 
    120124 
    121                 if (result == BST_CHECKED) 
    122                 { 
    123                         ::EnableWindow(GetDlgItem(IDC_ADDT_MOVETO_FOLDER), true); 
    124                         ::EnableWindow(GetDlgItem(IDC_ADDT_MOVETO_BROWSE), true); 
    125                 } 
    126                 else 
    127                 { 
    128                         ::EnableWindow(GetDlgItem(IDC_ADDT_MOVETO_FOLDER), false); 
    129                         ::EnableWindow(GetDlgItem(IDC_ADDT_MOVETO_BROWSE), false); 
    130                 } 
     125private: 
     126        BOOL DoAllDataxchange(bool direction) 
     127        { 
     128                adjustDlg_.DoDataExchange(direction); 
     129                return DoDataExchange(direction); 
    131130        } 
    132          
    133         void OnBrowse(UINT, int, HWND hWnd) 
    134         { 
    135                 std::wstring save_prompt = hal::app().res_wstr(IDS_SAVEPROMPT);          
    136                 CFolderDialog fldDlg(NULL, save_prompt.c_str(), 
    137                         BIF_RETURNONLYFSDIRS|BIF_NEWDIALOGSTYLE); 
    138                  
    139                 wstring defaultSaveFolder = saveDirectory_; 
    140                 fldDlg.SetInitialFolder(defaultSaveFolder.c_str()); 
    141           
    142                 if (IDOK == fldDlg.DoModal()) 
    143                 { 
    144                         saveDirectory_ = wstring(fldDlg.m_szFolderPath); 
    145                         DoDataExchange(false); 
    146                 } 
    147         } 
    148          
    149         void OnMoveBrowse(UINT, int, HWND hWnd) 
    150         { 
    151                 std::wstring save_prompt = hal::app().res_wstr(IDS_SAVEPROMPT);          
    152                 CFolderDialog fldDlg(NULL, save_prompt.c_str(), 
    153                         BIF_RETURNONLYFSDIRS|BIF_NEWDIALOGSTYLE); 
    154                  
    155                 wstring defaultMoveFolder = moveToDirectory_; 
    156                 fldDlg.SetInitialFolder(defaultMoveFolder.c_str()); 
    157           
    158                 if (IDOK == fldDlg.DoModal()) 
    159                 { 
    160                         moveToDirectory_ = wstring(fldDlg.m_szFolderPath); 
    161                         DoDataExchange(false); 
    162                 } 
    163         } 
    164          
    165 private: 
    166         wstring& saveDirectory_; 
    167         wstring& moveToDirectory_; 
    168         bool& useMove_; 
     131 
     132        HaliteSaveAndMoveToDlg adjustDlg_; 
     133 
     134        WTL::CRect rect_; 
    169135        bool& startPaused_; 
    170136        bool& compactStorage_; 
  • trunk/src/HaliteListView.hpp

    r403 r436  
    77#pragma once 
    88 
    9 #define ID_HAL_MAIN_LISTVIEW_BEGIN                      30000 
    10 #define ID_LVM_DOWNLOAD_FOLDER                  ID_HAL_MAIN_LISTVIEW_BEGIN + 1 
    11 #define ID_LVM_RECHECK                                          ID_HAL_MAIN_LISTVIEW_BEGIN + 2 
     9#define HAL_MAIN_LISTVIEW_BEGIN                 30000 
     10#define ID_LVM_DOWNLOAD_FOLDER          HAL_MAIN_LISTVIEW_BEGIN + 1 
     11#define ID_LVM_RECHECK                                  HAL_MAIN_LISTVIEW_BEGIN + 2 
    1212 
    1313#ifndef RC_INVOKED 
  • trunk/src/HaliteWindow.cpp

    r419 r436  
    358358                boost::filesystem::create_directory(saveDirectory); 
    359359         
     360/*      HaliteListViewAdjustDlg addTorrent(L"Hello", saveDirectory, moveToDirectory, useMoveTo);         
     361         
     362        if (IDOK != addTorrent.DoModal()) 
     363                return; 
     364        return; 
     365*/ 
    360366        if (hal::config().savePrompt) 
    361367        { 
  • trunk/src/NewTorrentPeersAD.hpp

    r432 r436  
    8484                } 
    8585 
     86                resizeClass::DlgResize_Init(false, true, WS_CLIPCHILDREN); 
     87 
    8688                SetMsgHandled(false); 
    8789                return 0; 
  • trunk/src/WTLx/GenericAddDialog.hpp

    r425 r436  
    66 
    77#pragma once 
     8 
     9#define HAL_GENERIC_HOLDER                      20000 
     10 
     11#ifndef RC_INVOKED 
    812 
    913#include <boost/archive/xml_oarchive.hpp> 
     
    4145 
    4246    BEGIN_MSG_MAP_EX(thisClass) 
    43         MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) 
     47                MSG_WM_INITDIALOG(OnInitDialog) 
    4448                MSG_WM_CLOSE(OnClose)    
     49 
    4550                COMMAND_ID_HANDLER_EX(IDOK, OnOk) 
    4651                COMMAND_ID_HANDLER_EX(IDCANCEL, OnCancel) 
    4752    END_MSG_MAP() 
    4853 
    49         LRESULT OnInitDialog(...) 
     54        LRESULT OnInitDialog(HWND, LPARAM) 
    5055        { 
    5156                TBase* pT = static_cast<TBase*>(this); 
    5257 
    5358                pT->SetWindowText(title_.c_str()); 
    54                 pT->TBase::resizeClass::DlgResize_Init(false, true, WS_CLIPCHILDREN); 
    5559 
    5660                if (rect_.left == rect_.right) 
     
    7175        } 
    7276 
    73         void OnCancel(...) 
    74         { 
    75                 endDialog(0); 
    76         } 
    77  
    78         void OnOk(...) 
     77        void OnCancel(UINT uNotifyCode, int nID, CWindow wndCtl) 
     78        { 
     79                endDialog(0); 
     80        } 
     81 
     82        void OnOk(UINT uNotifyCode, int nID, CWindow wndCtl) 
    7983        { 
    8084                endDialog(1); 
     
    111115}; 
    112116 
     117template<class TBase, class dlgClass, int dialogIDD>  
     118class GenericAddContainerDialog : 
     119        public CDialogImpl<GenericAddContainerDialog<TBase, dlgClass, dialogIDD> >, 
     120        public CDialogResize<GenericAddContainerDialog<TBase, dlgClass, dialogIDD> >, 
     121        private hal::IniBase<GenericAddContainerDialog<TBase, dlgClass, dialogIDD> >, 
     122        private boost::noncopyable 
     123{ 
     124        typedef GenericAddContainerDialog<TBase, dlgClass, dialogIDD> thisClass; 
     125        typedef CDialogResize<thisClass> resizeClass; 
     126        typedef hal::IniBase<thisClass> iniClass; 
     127         
     128public: 
     129        GenericAddContainerDialog(std::wstring title, boost::filesystem::path location, std::string name, dlgClass& dlg) : 
     130                dlg_(dlg), 
     131                title_(title), 
     132                iniClass(location, name), 
     133                rect_(0,0,0,0) 
     134        { 
     135                Load();  
     136        } 
     137 
     138        ~GenericAddContainerDialog() 
     139        { 
     140                Save(); 
     141        } 
     142         
     143        enum { IDD = HAL_GENERIC_HOLDER }; 
     144 
     145    BEGIN_MSG_MAP_EX(thisClass) 
     146                MSG_WM_INITDIALOG(OnInitDialog) 
     147                MSG_WM_CLOSE(OnClose)    
     148 
     149                COMMAND_ID_HANDLER_EX(IDOK, OnOk) 
     150                COMMAND_ID_HANDLER_EX(IDCANCEL, OnCancel) 
     151 
     152                CHAIN_MSG_MAP(resizeClass) 
     153    END_MSG_MAP() 
     154 
     155        BEGIN_DLGRESIZE_MAP(thisClass) 
     156                DLGRESIZE_CONTROL(dialogIDD, DLSZ_SIZE_X|DLSZ_SIZE_Y) 
     157 
     158                DLGRESIZE_CONTROL(IDOK, DLSZ_MOVE_X|DLSZ_MOVE_Y) 
     159                DLGRESIZE_CONTROL(IDCANCEL, DLSZ_MOVE_X|DLSZ_MOVE_Y) 
     160        END_DLGRESIZE_MAP() 
     161 
     162        LRESULT OnInitDialog(HWND, LPARAM) 
     163        { 
     164                TBase* pT = static_cast<TBase*>(this); 
     165                 
     166                dlg_.Create(*pT); 
     167                dlg_.ShowWindow(SW_SHOW); 
     168                dlg_.SetDlgCtrlID(dialogIDD); 
     169 
     170                resizeClass::DlgResize_Init(false, true, WS_CLIPCHILDREN); 
     171 
     172                SetWindowText(title_.c_str()); 
     173 
     174                if (rect_.left == rect_.right) 
     175                { 
     176                        pT->CenterWindow(); 
     177                        pT->GetWindowRect(rect_); 
     178                } 
     179                else 
     180                        pT->MoveWindow(rect_.left, rect_.top, rect_.right-rect_.left, rect_.bottom-rect_.top, false);    
     181 
     182                pT->DoDataExchange(false);                               
     183                return TRUE; 
     184        } 
     185         
     186        void OnClose() 
     187        { 
     188                endDialog(0); 
     189        } 
     190 
     191        void OnCancel(UINT uNotifyCode, int nID, CWindow wndCtl) 
     192        { 
     193                endDialog(0); 
     194        } 
     195 
     196        void OnOk(UINT uNotifyCode, int nID, CWindow wndCtl) 
     197        { 
     198                endDialog(1); 
     199        } 
     200 
     201        BOOL PreTranslateMessage(MSG* pMsg) 
     202        { 
     203                return pT->IsDialogMessage(pMsg); 
     204        } 
     205         
     206        void onCancel(UINT, int, HWND hWnd) 
     207        {} 
     208 
     209    friend class boost::serialization::access; 
     210    template<class Archive> 
     211    void serialize(Archive& ar, const unsigned int version) 
     212        { 
     213                ar & boost::serialization::make_nvp("rect", rect_); 
     214        } 
     215 
     216private: 
     217        void endDialog(int i) 
     218        { 
     219                TBase* pT = static_cast<TBase*>(this); 
     220                pT->DoDataExchange(true); 
     221                pT->GetWindowRect(rect_); 
     222 
     223                pT->EndDialog(i); 
     224        } 
     225 
     226        dlgClass& dlg_; 
     227        std::wstring title_; 
     228        WTL::CRect rect_; 
     229}; 
     230 
    113231} 
    114232 
     233#endif 
  • trunk/src/WTLx/GenericAddListView.hpp

    r425 r436  
    77#pragma once 
    88 
    9 #define HAL_GENERIC_ALV_BEGIN           20000 
     9#define HAL_GENERIC_ALV_BEGIN           20010 
    1010#define HAL_GENERIC_ALV_NEW             HAL_GENERIC_ALV_BEGIN + 1 
    1111#define HAL_GENERIC_ALV_EDIT            HAL_GENERIC_ALV_BEGIN + 2 
Note: See TracChangeset for help on using the changeset viewer.