source: trunk/src/NewTorrentDialog.cpp @ 397

Revision 397, 4.8 KB checked in by Eoin, 12 years ago (diff)

Arrgh in place edit!

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_TRACKERS_LAYOUT \
103        WMB_HEAD(WMB_COLNOMIN(_exp), WMB_COL(_auto)), \
104                WMB_ROW(_auto,  IDC_NEWTORRENT_TRACKERS_TEXT, _r), \
105                WMB_ROW(_auto,  IDC_NEWT_TRACKER, IDC_NEWT_ADDTRACKER), \
106                WMB_ROWNOMAX(_exp|50,   IDC_NEWT_LISTTRACKERS,  _r), \
107        WMB_END()
108
109#define NEWTORRENT_BUTTONS_LAYOUT \
110        WMB_HEAD(WMB_COLNOMIN(_exp), WMB_COL(_auto), WMB_COL(_auto)), \
111                WMB_ROW(_auto,  IDC_NEWTORRENT_PRIVATE,  IDOK, IDCANCEL), \
112        WMB_END()
113
114#define NEWTORRENT_COMMENT_LAYOUT \
115        WMB_HEAD(WMB_COL(_auto), WMB_COLNOMIN(_exp)), \
116                WMB_ROW(_auto,  IDC_NEWTORRENT_COMMENT_TEXT,  IDC_NEWTORRENT_COMMENT), \
117        WMB_END()
118
119#define NEWTORRENT_CREATOR_LAYOUT \
120        WMB_HEAD(WMB_COL(_auto), WMB_COLNOMIN(_exp)), \
121                WMB_ROW(_auto,  IDC_NEWTORRENT_CREATOR_TEXT,  IDC_NEWTORRENT_CREATOR), \
122        WMB_END()
123
124FileSheet::CWindowMapStruct* FileSheet::GetWindowMap()
125{
126        BEGIN_WINDOW_MAP_INLINE(FileSheet, 3, 3, 3, 3)
127                WMB_HEAD(WMB_COL(_exp)), 
128                WMB_ROW(_auto, NEWTORRENT_CREATOR_LAYOUT),
129                WMB_ROWNOMIN(_exp, NEWTORRENT_SELECT_LAYOUT),
130                WMB_ROW(_auto, NEWTORRENT_COMMENT_LAYOUT),
131                WMB_ROW(_auto, IDC_NEWTORRENT_PRIVATE),
132                WMB_END() 
133        END_WINDOW_MAP_INLINE() 
134}       
135
136#define NEWTORRENT_TRACKERS_LAYOUT \
137        WMB_HEAD(WMB_COLNOMIN(_exp), WMB_COL(_auto)), \
138                WMB_ROW(_auto,  IDC_NEWTORRENT_TRACKERS_TEXT, _r), \
139                WMB_ROW(_auto,  IDC_NEWT_TRACKER, IDC_NEWT_ADDTRACKER), \
140                WMB_ROWNOMAX(_exp|50,   IDC_NEWT_LISTTRACKERS,  _r), \
141        WMB_END()
142
143TrackerSheet::CWindowMapStruct* TrackerSheet::GetWindowMap()
144{
145        BEGIN_WINDOW_MAP_INLINE(TrackerSheet, 3, 3, 3, 3)
146                WMB_HEAD(WMB_COL(_exp)), 
147                WMB_ROWNOMIN(_exp, NEWTORRENT_TRACKERS_LAYOUT),
148                WMB_END() 
149        END_WINDOW_MAP_INLINE() 
150}       
151
152#define NEWTORRENT_DETAILS_LAYOUT \
153        WMB_HEAD(WMB_COLNOMIN(_exp|33), WMB_COLNOMIN(_exp)), \
154                WMB_ROW(_auto,  IDC_NEWTORRENT_COMMENT_TEXT,  IDC_NEWTORRENT_COMMENT), \
155                WMB_ROW(_auto,  IDC_NEWTORRENT_CREATOR_TEXT,  IDC_NEWTORRENT_CREATOR), \
156        WMB_END()
157
158DetailsSheet::CWindowMapStruct* DetailsSheet::GetWindowMap()
159{
160        BEGIN_WINDOW_MAP_INLINE(DetailsSheet, 3, 3, 3, 3)
161                WMB_HEAD(WMB_COL(_exp)), 
162                WMB_ROWNOMIN(_exp, NEWTORRENT_DETAILS_LAYOUT),
163                WMB_ROW(_gap),
164                WMB_ROW(_auto, IDC_NEWTORRENT_PRIVATE),
165                WMB_END() 
166        END_WINDOW_MAP_INLINE() 
167}       
Note: See TracBrowser for help on using the repository browser.