Changeset 389 for trunk


Ignore:
Timestamp:
03/04/08 16:31:15 (12 years ago)
Author:
Eoin
Message:

Working on New Torrent Dialog.

Location:
trunk
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/res/Halite.rc

    r387 r389  
    248248    EDITTEXT        IDC_NEWT_TRACKER,4,42,193,12,ES_AUTOHSCROLL|NOT WS_VISIBLE 
    249249//    AUTOCHECKBOX    "Have Halite acts a DHT node.",IDC_NEWT_DHTNODE,4,116,118,8,WS_DISABLED 
    250     AUTOCHECKBOX    "Private",IDC_NEWTORRENT_PRIVATE,4,116,118,8,NOT WS_VISIBLE 
     250    AUTOCHECKBOX    "Private",IDC_NEWTORRENT_PRIVATE,4,116,118,8 
    251251    PUSHBUTTON      "Add",IDC_NEWT_ADDTRACKER,202,41,23,13,NOT WS_VISIBLE 
    252     LTEXT           "Comment",IDC_NEWTORRENT_COMMENT_TEXT,4,4,50,11,SS_WORDELLIPSIS|SS_CENTERIMAGE|NOT WS_VISIBLE 
    253     EDITTEXT        IDC_NEWTORRENT_COMMENT,4,15,203,12,ES_AUTOHSCROLL|NOT WS_VISIBLE 
    254     LTEXT           "Creator",IDC_NEWTORRENT_CREATOR_TEXT,4,4,50,11,SS_WORDELLIPSIS|SS_CENTERIMAGE|NOT WS_VISIBLE 
    255     EDITTEXT        IDC_NEWTORRENT_CREATOR,4,15,203,12,ES_AUTOHSCROLL|NOT WS_VISIBLE 
     252    LTEXT           "Comment",IDC_NEWTORRENT_COMMENT_TEXT,4,4,50,11,SS_WORDELLIPSIS|SS_CENTERIMAGE 
     253    EDITTEXT        IDC_NEWTORRENT_COMMENT,4,15,203,12,ES_AUTOHSCROLL 
     254    LTEXT           "Creator",IDC_NEWTORRENT_CREATOR_TEXT,4,4,50,11,SS_WORDELLIPSIS|SS_CENTERIMAGE 
     255    EDITTEXT        IDC_NEWTORRENT_CREATOR,4,15,203,12,ES_AUTOHSCROLL 
    256256END 
    257257 
     
    581581        HAL_DIALOGPEER_LISTVIEW_ADV       "Peer;Country;Download;Upload;Type;Client;Status" 
    582582        HAL_DIALOGFILE_LISTVIEW_ADV       "Filename;Path;Size;Progress;Priority" 
     583        HAL_FILES_LISTVIEW_ADV    "Filename;Path;Size" 
    583584 
    584585        HAL_FILE_PRIORITY_0     "Don't download" 
  • trunk/src/AddTorrentDialog.hpp

    r381 r389  
    6868                std::wstring save_prompt = hal::app().res_wstr(IDS_SAVEPROMPT);          
    6969                CFolderDialog fldDlg(NULL, save_prompt.c_str(), 
    70                         BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE); 
     70                        BIF_RETURNONLYFSDIRS|BIF_NEWDIALOGSTYLE); 
    7171                 
    7272                wstring defaultSaveFolder = saveDirectory_; 
  • trunk/src/HaliteListView.cpp

    r385 r389  
    2929        Load(); 
    3030} 
    31          
     31 
    3232void HaliteListViewCtrl::OnShowWindow(UINT, INT) 
    3333{ 
  • trunk/src/NewTorrentDialog.cpp

    r386 r389  
    1111#include "CSSFileDialog.hpp" 
    1212 
     13void FilesListViewCtrl::OnAttach() 
     14{ 
     15        SetExtendedListViewStyle(WS_EX_CLIENTEDGE|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP); 
     16        SetSortListViewExtendedStyle(SORTLV_USESHELLBITMAPS, SORTLV_USESHELLBITMAPS); 
     17         
     18        ApplyDetails(); 
     19         
     20        SetColumnSortType(0, LVCOLSORT_TEXTNOCASE); 
     21        SetColumnSortType(1, LVCOLSORT_TEXTNOCASE); 
     22        SetColumnSortType(2, LVCOLSORT_LONG); 
     23} 
     24 
     25void FilesListViewCtrl::OnDestroy() 
     26{ 
     27        saveSettings(); 
     28} 
     29 
     30void FilesListViewCtrl::saveSettings() 
     31{                
     32        GetListViewDetails(); 
     33        save(); 
     34} 
     35 
    1336void FileSheet::OnFileBrowse(UINT, int, HWND hWnd) 
    1437{        
     
    2144} 
    2245 
     46void recurseDirectory(std::vector<wpath>& files, wpath baseDir, wpath relDir) 
     47{        
     48        wpath currentDir(baseDir / relDir); 
     49 
     50        if (hal::fs::is_directory(currentDir)) 
     51    { 
     52                for (hal::fs::wdirectory_iterator i(currentDir), end; i != end; ++i) 
     53                        recurseDirectory(files, baseDir, relDir / i->leaf()); 
     54    } 
     55    else 
     56    { 
     57                HAL_DEV_MSG(currentDir.string()); 
     58                files.push_back(relDir);                 
     59    } 
     60} 
     61 
    2362void FileSheet::OnDirBrowse(UINT, int, HWND hWnd) 
    2463{        
    25         CFolderDialog fldDlg (NULL, L"", 
     64        CFolderDialog fldDlg(NULL, L"", 
    2665                BIF_RETURNONLYFSDIRS|BIF_NEWDIALOGSTYLE); 
     66 
     67        files_.clear(); 
     68        filesList_.DeleteAllItems(); 
    2769 
    2870        if (IDOK == fldDlg.DoModal()) 
    2971        { 
    30 //              SetDlgItemText(IDC_BC_SAVEFOLDER, fldDlg.m_szFolderPath); 
     72                fileRoot_ = wpath(fldDlg.m_szFolderPath); 
     73 
     74                recurseDirectory(files_, fileRoot_, L"/"); 
     75 
     76                foreach(wpath& file, files_) 
     77                { 
     78                        int itemPos = filesList_.AddItem(0, 0, file.leaf().c_str(), 0); 
     79 
     80                        filesList_.SetItemText(itemPos, 1, file.branch_path().string().c_str()); 
     81                        filesList_.SetItemText(itemPos, 2, lexical_cast<wstring>( 
     82                                hal::fs::file_size(fileRoot_/file)).c_str()); 
     83                } 
    3184        } 
     85} 
     86 
     87LRESULT FileSheet::onInitDialog(HWND, LPARAM) 
     88{        
     89        filesList_.Attach(GetDlgItem(IDC_NEWT_LISTFILES));       
     90 
     91        BOOL retval =  DoDataExchange(false); 
     92        return 0; 
    3293} 
    3394 
     
    65126        BEGIN_WINDOW_MAP_INLINE(NewTorrentDialog, 3, 3, 3, 3) 
    66127                WMB_HEAD(WMB_COL(_exp)),  
     128                WMB_ROW(_auto, NEWTORRENT_CREATOR_LAYOUT), 
    67129                WMB_ROWNOMIN(_exp, NEWTORRENT_SELECT_LAYOUT), 
    68 //              WMB_ROW(_auto, NEWTORRENT_CREATOR_LAYOUT), 
    69 //              WMB_ROW(_auto, NEWTORRENT_COMMENT_LAYOUT), 
    70 //              WMB_ROW(_auto, NEWTORRENT_BUTTONS_LAYOUT), 
     130                WMB_ROW(_auto, NEWTORRENT_COMMENT_LAYOUT), 
     131                WMB_ROW(_auto, IDC_NEWTORRENT_PRIVATE), 
    71132                WMB_END()  
    72133        END_WINDOW_MAP_INLINE()  
  • trunk/src/NewTorrentDialog.hpp

    r386 r389  
    1818#define IDC_NEWT_DIR_BROWSE                             IDD_NEWTORRENT_BEGIN+9 
    1919#define IDC_NEWT_LISTFILES                              IDD_NEWTORRENT_BEGIN+10 
     20#define HAL_FILES_LISTVIEW_ADV                  IDD_NEWTORRENT_BEGIN+11 
    2021//#define IDC_PROG_CANCEL                 IDD_NEWTORRENT_BEGIN + 2 
    2122//#define IDC_PROG_PROGRESS               IDD_NEWTORRENT_BEGIN + 3 
     
    2728#include "halIni.hpp" 
    2829#include "halEvent.hpp" 
    29  
    30  
     30#include "DdxEx.hpp" 
     31#include "HaliteSortListViewCtrl.hpp" 
     32 
     33 
     34class FilesListViewCtrl : 
     35        public CHaliteSortListViewCtrl<FilesListViewCtrl>, 
     36        public hal::IniBase<FilesListViewCtrl>, 
     37        private boost::noncopyable 
     38{ 
     39 
     40        typedef hal::IniBase<FilesListViewCtrl> iniClass; 
     41        typedef CHaliteSortListViewCtrl<FilesListViewCtrl> listClass; 
     42 
     43        friend class listClass; 
     44         
     45public: 
     46        enum {  
     47                LISTVIEW_ID_MENU = 0, 
     48                LISTVIEW_ID_COLUMNNAMES = HAL_FILES_LISTVIEW_ADV, 
     49                LISTVIEW_ID_COLUMNWIDTHS = 0 
     50        }; 
     51         
     52        FilesListViewCtrl() : 
     53                listClass(true,false,false), 
     54                iniClass("listviews/new_files", "NewFilesListView") 
     55        { 
     56                std::vector<wstring> names;      
     57                wstring column_names = hal::app().res_wstr(LISTVIEW_ID_COLUMNNAMES); 
     58 
     59                // "Tracker;Tier" 
     60                boost::split(names, column_names, boost::is_any_of(L";")); 
     61                 
     62                array<int, 3> widths = {50,287,50}; 
     63                array<int, 3> order = {0,1,2}; 
     64                array<bool, 3> visible = {true,true,true}; 
     65                 
     66                SetDefaults(names, widths, order, visible, true); 
     67                Load(); 
     68        } 
     69 
     70        BEGIN_MSG_MAP_EX(FilesListViewCtrl) 
     71                MSG_WM_DESTROY(OnDestroy) 
     72 
     73/*              COMMAND_ID_HANDLER(ID_TLVM_NEW, OnNew) 
     74                COMMAND_ID_HANDLER(ID_TLVM_EDIT, OnEdit) 
     75                COMMAND_ID_HANDLER(ID_TLVM_DELETE, OnDelete) 
     76                COMMAND_ID_HANDLER(ID_TLVM_PRIMARY, OnPrimary) 
     77 
     78                REFLECTED_NOTIFY_CODE_HANDLER(NM_DBLCLK, OnDoubleClick) 
     79*/ 
     80                CHAIN_MSG_MAP(listClass) 
     81                DEFAULT_REFLECTION_HANDLER() 
     82        END_MSG_MAP() 
     83 
     84        void uiUpdate(const hal::TorrentDetail_ptr pT); 
     85//      void enterNewTracker(); 
     86//      void saveSettings(); 
     87 
     88    friend class boost::serialization::access; 
     89    template<class Archive> 
     90    void serialize(Archive& ar, const unsigned int version) 
     91    { 
     92                ar & boost::serialization::make_nvp("listview", boost::serialization::base_object<listClass>(*this)); 
     93    } 
     94 
     95private: 
     96        void OnAttach(); 
     97        void OnDestroy(); 
     98        void saveSettings(); 
     99 
     100        boost::signal<void ()> listEdited_; 
     101}; 
     102 
     103typedef FilesListViewCtrl::SelectionManager FilesListViewManager; 
    31104 
    32105class FileSheet : 
    33106    public CPropertyPageImpl<FileSheet>, 
     107    public CWinDataExchangeEx<FileSheet>, 
    34108        public CAutoSizeWindow<FileSheet, false> 
    35109{ 
     
    49123 
    50124    BEGIN_MSG_MAP_EX(thisClass) 
     125                MSG_WM_INITDIALOG(onInitDialog) 
    51126                MSG_WM_DESTROY(OnDestroy) 
    52127 
     
    58133                REFLECT_NOTIFICATIONS() 
    59134    END_MSG_MAP() 
     135         
     136    BEGIN_DDX_MAP(thisClass) 
     137                DDX_EX_STDWSTRING(IDC_NEWTORRENT_CREATOR, creator_); 
     138                DDX_EX_STDWSTRING(IDC_NEWTORRENT_COMMENT, comment_); 
     139        DDX_CHECK(IDC_NEWTORRENT_PRIVATE, private_) 
     140    END_DDX_MAP() 
    60141 
    61142        static CWindowMapStruct* GetWindowMap(); 
     
    68149        void OnFileBrowse(UINT, int, HWND hWnd); 
    69150        void OnDirBrowse(UINT, int, HWND hWnd); 
     151        LRESULT onInitDialog(HWND, LPARAM); 
    70152        void OnDestroy() {}; 
    71153         
    72154private: 
     155        FilesListViewCtrl filesList_; 
     156         
     157        wpath fileRoot_; 
     158        std::vector<wpath> files_; 
     159 
     160        wstring creator_; 
     161        wstring comment_; 
     162        bool private_; 
     163 
    73164}; 
    74165 
     
    161252                AddPage(fileSheet); 
    162253                AddPage(trackerSheet); 
    163                 AddPage(detailsSheet); 
    164                  
     254                AddPage(detailsSheet);           
    165255        } 
    166256 
  • trunk/src/advtabs/Tracker.hpp

    r356 r389  
    3838 
    3939        AdvTrackerDialog(HaliteWindow& HalWindow) : 
    40                 dialogBaseClass(HalWindow) 
     40                dialogBaseClass(HalWindow), 
     41                m_list("listviews/tracker", "TrackerListView") 
    4142        {} 
    4243 
     
    7374        static CWindowMapStruct* GetWindowMap(); 
    7475 
    75  
    7676        LRESULT onInitDialog(HWND, LPARAM); 
    7777        void onClose(); 
  • trunk/src/advtabs/TrackerListView.hpp

    r347 r389  
    3939        }; 
    4040         
    41         TrackerListViewCtrl() : 
     41        TrackerListViewCtrl(boost::filesystem::path location, std::string name) : 
    4242                listClass(true,false,false), 
    43                 iniClass("listviews/tracker", "TrackerListView") 
     43                iniClass(location, name) 
    4444        { 
    4545                std::vector<wstring> names;      
  • trunk/src/halTorrent.cpp

    r386 r389  
    15231523                                        break; 
    15241524                                case TorrentDetail::torrent_paused: 
    1525                                 case TorrentDetail::torrent_pausing: 
    15261525                                        (*i).torrent->addToSession(true); 
    15271526                                        break; 
     
    15291528                                        (*i).torrent->addToSession(false); 
    15301529                                        break; 
     1530                                default: 
     1531                                        assert(false); 
    15311532                        }; 
    15321533                         
  • trunk/src/halTorrentInternal.hpp

    r384 r389  
    827827                if (!exists(saveDirectory)) 
    828828                        create_directory(saveDirectory); 
     829 
     830                if (state_ == TorrentDetail::torrent_stopping) 
     831                        state_ = TorrentDetail::torrent_stopped; 
     832                else if (state_ == TorrentDetail::torrent_pausing) 
     833                        state_ = TorrentDetail::torrent_paused; 
    829834        } 
    830835         
  • trunk/src/stdAfx.hpp

    r383 r389  
    8989#include <boost/archive/xml_woarchive.hpp> 
    9090#include <boost/archive/xml_wiarchive.hpp> 
     91#include <boost/date_time/posix_time/time_serialize.hpp> 
    9192 
    9293using std::string; 
     
    117118{ 
    118119         
     120        namespace fs = boost::filesystem; 
     121        namespace pt = boost::posix_time; 
     122 
    119123        using std::pair; 
    120124        using std::make_pair; 
Note: See TracChangeset for help on using the changeset viewer.