source: trunk/src/NewTorrentDialog.cpp @ 419

Revision 419, 4.5 KB checked in by Eoin, 12 years ago (diff)

Factored out base code for adding and editing items in ListViews?. Made the NewTorrent? Tracker ListView? editable.

Line 
1
2//         Copyright Eóin O'Callaghan 2006 - 2008.
3// Distributed under the Boost Software License, Version 1.0.
4//    (See accompanying file LICENSE_1_0.txt or copy at
5//          http://www.boost.org/LICENSE_1_0.txt)
6
7#include "stdAfx.hpp"
8#include "../res/resource.h"
9
10#include "NewTorrentDialog.hpp"
11#include "CSSFileDialog.hpp"
12
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
36void FileSheet::OnFileBrowse(UINT, int, HWND hWnd)
37{       
38        CSSFileDialog dlgOpen(TRUE, NULL, NULL, OFN_HIDEREADONLY, L"Torrents (*.torrent)|*.torrent|", m_hWnd);
39
40        if (dlgOpen.DoModal() == IDOK) 
41        {
42        //      ProcessFile(dlgOpen.m_ofn.lpstrFile);
43        }
44}
45
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
62void FileSheet::OnDirBrowse(UINT, int, HWND hWnd)
63{       
64        CFolderDialog fldDlg(NULL, L"",
65                BIF_RETURNONLYFSDIRS|BIF_NEWDIALOGSTYLE);
66
67        files_.clear();
68        filesList_.DeleteAllItems();
69
70        if (IDOK == fldDlg.DoModal())
71        {
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                }
84        }
85}
86
87LRESULT FileSheet::onInitDialog(HWND, LPARAM)
88{       
89        filesList_.Attach(GetDlgItem(IDC_NEWT_LISTFILES));     
90
91        BOOL retval =  DoDataExchange(false);
92        return 0;
93}
94
95#define NEWTORRENT_SELECT_LAYOUT \
96        WMB_HEAD(WMB_COLNOMIN(_exp|150), WMB_COL(_auto), WMB_COL(_auto)), \
97                WMB_ROW(_auto,  IDC_NEWTORRENT_SELECT_TEXT,  _r, _r), \
98                WMB_ROW(_auto,  IDC_NEWT_FILE, IDC_NEWT_FILE_BROWSE, IDC_NEWT_DIR_BROWSE), \
99                WMB_ROWNOMAX(_exp|50,   IDC_NEWT_LISTFILES,  _r, _r), \
100        WMB_END()
101
102#define NEWTORRENT_BUTTONS_LAYOUT \
103        WMB_HEAD(WMB_COLNOMIN(_exp), WMB_COL(_auto), WMB_COL(_auto)), \
104                WMB_ROW(_auto,  IDC_NEWTORRENT_PRIVATE,  IDOK, IDCANCEL), \
105        WMB_END()
106
107#define NEWTORRENT_COMMENT_LAYOUT \
108        WMB_HEAD(WMB_COL(_auto), WMB_COLNOMIN(_exp)), \
109                WMB_ROW(_auto,  IDC_NEWTORRENT_COMMENT_TEXT,  IDC_NEWTORRENT_COMMENT), \
110        WMB_END()
111
112#define NEWTORRENT_CREATOR_LAYOUT \
113        WMB_HEAD(WMB_COL(_auto), WMB_COLNOMIN(_exp)), \
114                WMB_ROW(_auto,  IDC_NEWTORRENT_CREATOR_TEXT,  IDC_NEWTORRENT_CREATOR), \
115        WMB_END()
116
117FileSheet::CWindowMapStruct* FileSheet::GetWindowMap()
118{
119        BEGIN_WINDOW_MAP_INLINE(FileSheet, 3, 3, 3, 3)
120                WMB_HEAD(WMB_COL(_exp)), 
121                WMB_ROW(_auto, NEWTORRENT_CREATOR_LAYOUT),
122                WMB_ROWNOMIN(_exp, NEWTORRENT_SELECT_LAYOUT),
123                WMB_ROW(_auto, NEWTORRENT_COMMENT_LAYOUT),
124                WMB_ROW(_auto, IDC_NEWTORRENT_PRIVATE),
125                WMB_END() 
126        END_WINDOW_MAP_INLINE() 
127}       
128
129#define NEWTORRENT_TRACKERS_LAYOUT \
130        WMB_HEAD(WMB_COLNOMIN(_exp), WMB_COL(_auto), WMB_COL(_auto)), \
131                WMB_ROW(_auto,  IDC_NEWTORRENT_TRACKERS_TEXT, _r, _r), \
132/*              WMB_ROW(_auto,  IDC_NEWT_TRACKER, IDC_NEWT_TRACKERTIER, IDC_NEWT_ADDTRACKER), */\
133                WMB_ROWNOMAX(_exp|50,   IDC_NEWT_LISTTRACKERS,  _r, _r), \
134        WMB_END()
135
136TrackerSheet::CWindowMapStruct* TrackerSheet::GetWindowMap()
137{
138        BEGIN_WINDOW_MAP_INLINE(TrackerSheet, 3, 3, 3, 3)
139                WMB_HEAD(WMB_COL(_exp)), 
140                WMB_ROWNOMIN(_exp, NEWTORRENT_TRACKERS_LAYOUT),
141                WMB_END() 
142        END_WINDOW_MAP_INLINE() 
143}       
144
145#define NEWTORRENT_DETAILS_LAYOUT \
146        WMB_HEAD(WMB_COLNOMIN(_exp|33), WMB_COLNOMIN(_exp)), \
147                WMB_ROW(_auto,  IDC_NEWTORRENT_COMMENT_TEXT,  IDC_NEWTORRENT_COMMENT), \
148                WMB_ROW(_auto,  IDC_NEWTORRENT_CREATOR_TEXT,  IDC_NEWTORRENT_CREATOR), \
149        WMB_END()
150
151DetailsSheet::CWindowMapStruct* DetailsSheet::GetWindowMap()
152{
153        BEGIN_WINDOW_MAP_INLINE(DetailsSheet, 3, 3, 3, 3)
154                WMB_HEAD(WMB_COL(_exp)), 
155                WMB_ROWNOMIN(_exp, NEWTORRENT_DETAILS_LAYOUT),
156                WMB_ROW(_gap),
157                WMB_ROW(_auto, IDC_NEWTORRENT_PRIVATE),
158                WMB_END() 
159        END_WINDOW_MAP_INLINE() 
160}       
Note: See TracBrowser for help on using the repository browser.