Subversion Repositories spk

Rev

Rev 182 | Rev 197 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 182 Rev 196
Line 1... Line 1...
1
#include "../stdafx.h"
1
#include "../stdafx.h"
2
#include "DirectoryControl.h"
2
#include "DirectoryControl.h"
3
 
3
 
4
using namespace PluginManager;
4
using namespace PluginManager;
5
 
5
 
6
DirectoryControl::DirectoryControl(CPackages *packages, Utils::CStringList *currentDirs, Utils::CStringList *removedDirs)
6
DirectoryControl::DirectoryControl(CPackages *packages, Utils::WStringList *currentDirs, Utils::WStringList *removedDirs)
7
{
7
{
8
	InitializeComponent();
8
	InitializeComponent();
9
 
9
 
10
	this->listView1->LargeImageList = this->imageListGames;
10
	this->listView1->LargeImageList = this->imageListGames;
11
	this->listView1->SmallImageList = this->imageListGames;
11
	this->listView1->SmallImageList = this->imageListGames;
12
	this->listView2->LargeImageList = this->imageListGames;
12
	this->listView2->LargeImageList = this->imageListGames;
13
	this->listView2->SmallImageList = this->imageListGames;
13
	this->listView2->SmallImageList = this->imageListGames;
14
 
14
 
15
	_packages = packages;
15
	_packages = packages;
16
	_lDirs = new Utils::CStringList();
16
	_lDirs = new Utils::WStringList();
17
	_lRemoveDirs = new Utils::CStringList();
17
	_lRemoveDirs = new Utils::WStringList();
18
	_lFoundDirs = new Utils::CStringList();
18
	_lFoundDirs = new Utils::WStringList();
19
 
19
 
20
	this->getAllDirs(currentDirs, removedDirs);
20
	this->getAllDirs(currentDirs, removedDirs);
21
	this->UpdateGameDirs();
21
	this->UpdateGameDirs();
22
	this->UpdateFoundDirs();
22
	this->UpdateFoundDirs();
23
	this->UpdateTexts();
23
	this->UpdateTexts();
Line 33... Line 33...
33
	delete _lDirs;
33
	delete _lDirs;
34
	delete _lRemoveDirs;
34
	delete _lRemoveDirs;
35
	delete _lFoundDirs;
35
	delete _lFoundDirs;
36
}
36
}
37
 
37
 
38
void DirectoryControl::AddFoundDir(const Utils::String &dir)
38
void DirectoryControl::AddFoundDir(const Utils::WString &dir)
39
{
39
{
40
	if (CDirIO(dir).exists())
40
	if (CDirIO(dir).exists())
41
	{
41
	{
42
		Utils::String gameName = _packages->GetGameExe()->GetGameName(dir);
42
		Utils::WString gameName = _packages->GetGameExe()->GetGameName(dir.toString());
43
		if (!gameName.empty())
43
		if (!gameName.empty())
44
		{
44
		{
45
			if (!_lFoundDirs->contains(dir, true) && !_lDirs->contains(dir, true) && !_lRemoveDirs->contains(dir, true))
45
			if (!_lFoundDirs->contains(dir, true) && !_lDirs->contains(dir, true) && !_lRemoveDirs->contains(dir, true))
46
			{
46
			{
47
				Utils::String exe = dir.findReplace("\\", "/").findReplace("//", "/");
47
				Utils::WString exe = dir.findReplace("\\", "/").findReplace("//", "/");
48
				_lFoundDirs->pushBack(exe, _packages->GetGameExe()->GetGameName(exe));
48
				_lFoundDirs->pushBack(exe, _packages->GetGameExe()->GetGameName(exe.toString()));
49
			}
49
			}
50
		}
50
		}
51
	}
51
	}
52
}
52
}
53
 
53
 
54
void DirectoryControl::FindAllAddons(const Utils::String &exe, bool checkBase)
54
void DirectoryControl::FindAllAddons(const Utils::WString &exe, bool checkBase)
55
{
55
{
56
	CDirIO Dir(exe);
56
	CDirIO Dir(exe);
57
 
57
 
58
	if (checkBase && _packages->GetGameExe()->isAddon(exe))
58
	if (checkBase && _packages->GetGameExe()->isAddon(exe.toString()))
59
	{
59
	{
60
		Utils::String base = _packages->getGameRunExe(_packages->GetGameExe()->GetGameDir(exe));
60
		Utils::WString base = _packages->getGameRunExe(_packages->GetGameExe()->GetGameDir(exe.toString()));
61
		if (CFileIO::Exists(base))
61
		if (CFileIO::Exists(base))
62
		{
62
		{
63
			AddFoundDir(base);
63
			AddFoundDir(base);
64
			FindAllAddons(base, false);
64
			FindAllAddons(base, false);
65
			return;
65
			return;
Line 70... Line 70...
70
	{
70
	{
71
		CFileIO file(exe);
71
		CFileIO file(exe);
72
		if (file.exists())
72
		if (file.exists())
73
		{
73
		{
74
			// dont include addons, only the base game
74
			// dont include addons, only the base game
75
			if (!_packages->GetGameExe()->isAddon(exe))
75
			if (!_packages->GetGameExe()->isAddon(exe.toString()))
76
			{
76
			{
77
				CDirIO dir(file.dir());
77
				CDirIO dir(file.dir());
78
				Utils::CStringList list;
78
				Utils::CStringList list;
79
				// get all the addons from a base game
79
				// get all the addons from a base game
80
				if (_packages->getGameAddons(list, _packages->GetGameExe()->GetProperDir(exe)))
80
				if (_packages->getGameAddons(list, _packages->GetGameExe()->GetProperDir(exe.toString())))
81
				{
81
				{
82
					for (Utils::SStringList *a_item = list.first(); a_item; a_item = list.next())
82
					for (Utils::SStringList *a_item = list.first(); a_item; a_item = list.next())
83
					{
83
					{
84
						//check both the exe and the data directory exists
84
						//check both the exe and the data directory exists
85
						if (dir.exists(a_item->data) && dir.exists(a_item->str))
85
						if (dir.exists(a_item->data) && dir.exists(a_item->str))
86
						{
86
						{
87
							Utils::String newFile = dir.file(a_item->str);
87
							Utils::WString newFile = dir.file(a_item->str);
88
							AddFoundDir(newFile);
88
							AddFoundDir(newFile);
89
						}
89
						}
90
					}
90
					}
91
				}
91
				}
92
			}
92
			}
Line 94... Line 94...
94
	}
94
	}
95
	else if (Dir.exists())
95
	else if (Dir.exists())
96
	{
96
	{
97
		Utils::CStringList list;
97
		Utils::CStringList list;
98
		// get all the addons from a base game
98
		// get all the addons from a base game
99
		if (_packages->getGameAddons(list, _packages->GetGameExe()->GetProperDir(exe)))
99
		if (_packages->getGameAddons(list, _packages->GetGameExe()->GetProperDir(exe.toString())))
100
		{
100
		{
101
			for (Utils::SStringList *a_item = list.first(); a_item; a_item = list.next())
101
			for (Utils::SStringList *a_item = list.first(); a_item; a_item = list.next())
102
			{
102
			{
103
				//check both the exe and the data directory exists
103
				//check both the exe and the data directory exists
104
				if (Dir.exists(a_item->data) && Dir.exists(a_item->str))
104
				if (Dir.exists(a_item->data) && Dir.exists(a_item->str))
105
				{
105
				{
106
					Utils::String newFile = Dir.file(a_item->str);
106
					Utils::WString newFile = Dir.file(a_item->str);
107
					AddFoundDir(newFile);
107
					AddFoundDir(newFile);
108
				}
108
				}
109
			}
109
			}
110
		}
110
		}
111
	}
111
	}
112
}
112
}
113
 
113
 
114
void DirectoryControl::getAllDirs(Utils::CStringList *currentDirs, Utils::CStringList *removedDirs)
114
void DirectoryControl::getAllDirs(Utils::WStringList *currentDirs, Utils::WStringList *removedDirs)
115
{
115
{
116
	if (currentDirs)
116
	if (currentDirs)
117
	{
117
	{
118
		for (auto itr = currentDirs->begin(); itr != currentDirs->end(); itr++)
118
		for (auto itr = currentDirs->begin(); itr != currentDirs->end(); itr++)
119
		{
119
		{
120
			Utils::String data = (*itr)->data;
120
			Utils::WString data = (*itr)->data;
121
			if(data.isin("|"))
121
			if(data.contains(L"|"))
122
				_lDirs->pushBack(_packages->getGameRunExe((*itr)->str), data.tokens("|", 2));
122
				_lDirs->pushBack(_packages->getGameRunExe((*itr)->str.toString()), data.tokens(L"|", 2));
123
			else
123
			else
124
				_lDirs->pushBack(_packages->getGameRunExe((*itr)->str), data);
124
				_lDirs->pushBack(_packages->getGameRunExe((*itr)->str.toString()), data);
125
		}
125
		}
126
	}
126
	}
127
	if (removedDirs)
127
	if (removedDirs)
128
	{
128
	{
129
		for (auto itr = removedDirs->begin(); itr != removedDirs->end(); itr++)
129
		for (auto itr = removedDirs->begin(); itr != removedDirs->end(); itr++)
130
			_lRemoveDirs->pushBack(_packages->getGameRunExe((*itr)->str), (*itr)->data);
130
			_lRemoveDirs->pushBack(_packages->getGameRunExe((*itr)->str.toString()), (*itr)->data);
131
	}
131
	}
132
 
132
 
133
	// find other dirs
133
	// find other dirs
134
	System::String ^progfile = Environment::GetFolderPath(Environment::SpecialFolder::ProgramFiles);
134
	System::String ^progfile = Environment::GetFolderPath(Environment::SpecialFolder::ProgramFiles);
135
	Utils::CStringList gameDirs;		
135
	Utils::CStringList gameDirs;		
Line 205... Line 205...
205
}
205
}
206
 
206
 
207
void DirectoryControl::UpdateGameDirs()
207
void DirectoryControl::UpdateGameDirs()
208
{
208
{
209
	this->listView1->Items->Clear();
209
	this->listView1->Items->Clear();
210
	for (Utils::SStringList *s_item = _lDirs->first(); s_item; s_item = _lDirs->next()) {
210
	for (Utils::WStringNode *s_item = _lDirs->first(); s_item; s_item = _lDirs->next()) {
211
		Utils::String dir = _packages->GetGameExe()->GetProperDir(s_item->str);
211
		Utils::String dir = _packages->GetGameExe()->GetProperDir(s_item->str.toString());
212
		ListViewItem ^item = gcnew ListViewItem(_US(dir));
212
		ListViewItem ^item = gcnew ListViewItem(_US(dir));
213
		
213
		
214
		int iGame = _packages->GetGameExe()->GetGameType(s_item->str);
214
		int iGame = _packages->GetGameExe()->GetGameType(s_item->str.toString());
215
		item->ImageIndex = iGame;
215
		item->ImageIndex = iGame;
216
 
216
 
217
		item->SubItems->Add(_US(s_item->data));
217
		item->SubItems->Add(_US(s_item->data));
218
		if (CFileIO::Exists(s_item->str))
218
		if (CFileIO::Exists(s_item->str))
219
		{
219
		{
220
			ListViewItem::ListViewSubItem ^i = _packages->isCurrentDir(dir) ? item->SubItems->Add("Active") : item->SubItems->Add("OK");
220
			ListViewItem::ListViewSubItem ^i = _packages->isCurrentDir(dir) ? item->SubItems->Add("Active") : item->SubItems->Add("OK");
221
			i->ForeColor = Color::Green;
221
			i->ForeColor = Color::Green;
222
			item->SubItems->Add(_US(_packages->ConvertLanguage(_packages->getGameLanguage(CFileIO(s_item->str).dir()))));
222
			item->SubItems->Add(_US(_packages->ConvertLanguage(_packages->getGameLanguage(CFileIO(s_item->str).dir().toString()))));
223
		}
223
		}
224
		else
224
		else
225
		{
225
		{
226
			ListViewItem::ListViewSubItem ^i = item->SubItems->Add("Not Found");
226
			ListViewItem::ListViewSubItem ^i = item->SubItems->Add("Not Found");
227
			i->ForeColor = Color::Red;
227
			i->ForeColor = Color::Red;
228
			item->SubItems->Add("-");
228
			item->SubItems->Add("-");
229
		}
229
		}
230
 
230
 
231
		item->SubItems->Add(_US(_packages->GetGameExe()->isAddon(s_item->str) ? "Yes" : "No"));
231
		item->SubItems->Add(_US(_packages->GetGameExe()->isAddon(s_item->str.toString()) ? "Yes" : "No"));
232
		item->SubItems->Add(_US(s_item->str));
232
		item->SubItems->Add(_US(s_item->str));
233
		this->listView1->Items->Add(item);
233
		this->listView1->Items->Add(item);
234
 
234
 
235
	}
235
	}
236
 
236
 
Line 243... Line 243...
243
}
243
}
244
 
244
 
245
void DirectoryControl::UpdateFoundDirs()
245
void DirectoryControl::UpdateFoundDirs()
246
{
246
{
247
	this->listView2->Items->Clear();
247
	this->listView2->Items->Clear();
248
	for (Utils::SStringList *s_item = _lRemoveDirs->first(); s_item; s_item = _lRemoveDirs->next()) {
248
	for (Utils::WStringNode *s_item = _lRemoveDirs->first(); s_item; s_item = _lRemoveDirs->next()) {
249
		if (CFileIO::Exists(s_item->str)) {
249
		if (CFileIO::Exists(s_item->str)) {
250
			ListViewItem ^item = gcnew ListViewItem(_US(_packages->GetGameExe()->GetProperDir(s_item->str)));
250
			ListViewItem ^item = gcnew ListViewItem(_US(_packages->GetGameExe()->GetProperDir(s_item->str.toString())));
251
			int iGame = _packages->GetGameExe()->GetGameType(s_item->str);
251
			int iGame = _packages->GetGameExe()->GetGameType(s_item->str.toString());
252
			item->ImageIndex = iGame;
252
			item->ImageIndex = iGame;
253
			item->SubItems->Add(_US(s_item->data));
253
			item->SubItems->Add(_US(s_item->data));
254
			item->SubItems->Add(_US(_packages->ConvertLanguage(_packages->getGameLanguage(CFileIO(s_item->str).dir()))));
254
			item->SubItems->Add(_US(_packages->ConvertLanguage(_packages->getGameLanguage(CFileIO(s_item->str).dir().toString()))));
255
			item->SubItems->Add(_US(_packages->GetGameExe()->isAddon(s_item->str) ? "Yes" : "No"));
255
			item->SubItems->Add(_US(_packages->GetGameExe()->isAddon(s_item->str.toString()) ? "Yes" : "No"));
256
			item->SubItems->Add(_US(s_item->str));
256
			item->SubItems->Add(_US(s_item->str));
257
			this->listView2->Items->Add(item);
257
			this->listView2->Items->Add(item);
258
		}
258
		}
259
	}
259
	}
260
 
260
 
261
	for (Utils::SStringList *s_item = _lFoundDirs->first(); s_item; s_item = _lFoundDirs->next()) {
261
	for (Utils::WStringNode *s_item = _lFoundDirs->first(); s_item; s_item = _lFoundDirs->next()) {
262
		if (CFileIO::Exists(s_item->str)) {
262
		if (CFileIO::Exists(s_item->str)) {
263
			ListViewItem ^item = gcnew ListViewItem(_US(_packages->GetGameExe()->GetProperDir(s_item->str)));
263
			ListViewItem ^item = gcnew ListViewItem(_US(_packages->GetGameExe()->GetProperDir(s_item->str.toString())));
264
			int iGame = _packages->GetGameExe()->GetGameType(s_item->str);
264
			int iGame = _packages->GetGameExe()->GetGameType(s_item->str.toString());
265
			item->ImageIndex = iGame;
265
			item->ImageIndex = iGame;
266
			item->SubItems->Add(_US(_packages->GetGameExe()->GetGameName(s_item->str)));
266
			item->SubItems->Add(_US(_packages->GetGameExe()->GetGameName(s_item->str.toString())));
267
			item->SubItems->Add(_US(_packages->ConvertLanguage(_packages->getGameLanguage(CFileIO(s_item->str).dir()))));
267
			item->SubItems->Add(_US(_packages->ConvertLanguage(_packages->getGameLanguage(CFileIO(s_item->str).dir().toString()))));
268
			item->SubItems->Add(_US(_packages->GetGameExe()->isAddon(s_item->str) ? "Yes" : "No"));
268
			item->SubItems->Add(_US(_packages->GetGameExe()->isAddon(s_item->str.toString()) ? "Yes" : "No"));
269
			item->SubItems->Add(_US(s_item->str));
269
			item->SubItems->Add(_US(s_item->str));
270
			this->listView2->Items->Add(item);
270
			this->listView2->Items->Add(item);
271
		}
271
		}
272
	}
272
	}
273
 
273
 
Line 410... Line 410...
410
		UpdateGameDirs();
410
		UpdateGameDirs();
411
		UpdateFoundDirs();
411
		UpdateFoundDirs();
412
	}
412
	}
413
}
413
}
414
 
414
 
415
Utils::CStringList *DirectoryControl::directories()
415
Utils::WStringList *DirectoryControl::directories()
416
{
416
{
417
	return _lDirs;
417
	return _lDirs;
418
}
418
}
419
Utils::CStringList *DirectoryControl::removeDirectories()
419
Utils::WStringList *DirectoryControl::removeDirectories()
420
{
420
{
421
	return _lRemoveDirs;
421
	return _lRemoveDirs;
422
}
422
}
423
 
423