Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: 8142cf1621
Fetching contributors…

Cannot retrieve contributors at this time

84 lines (75 sloc) 2.695 kb
#include "FileUtils.h"
#include "guilib/GUIWindowManager.h"
#include "dialogs/GUIDialogYesNo.h"
#include "guilib/GUIKeyboardFactory.h"
#include "utils/log.h"
#include "guilib/LocalizeStrings.h"
#include "JobManager.h"
#include "FileOperationJob.h"
#include "URIUtils.h"
#include "filesystem/MultiPathDirectory.h"
#include <vector>
using namespace XFILE;
using namespace std;
bool CFileUtils::DeleteItem(const CStdString &strPath, bool force)
{
CFileItemPtr item(new CFileItem(strPath));
item->SetPath(strPath);
item->m_bIsFolder = URIUtils::HasSlashAtEnd(strPath);
item->Select(true);
return DeleteItem(item, force);
}
bool CFileUtils::DeleteItem(const CFileItemPtr &item, bool force)
{
if (!item || item->IsParentFolder())
return false;
CGUIDialogYesNo* pDialog = (CGUIDialogYesNo*)g_windowManager.GetWindow(WINDOW_DIALOG_YES_NO);
if (!force && pDialog)
{
pDialog->SetHeading(122);
pDialog->SetLine(0, 125);
pDialog->SetLine(1, URIUtils::GetFileName(item->GetPath()));
pDialog->SetLine(2, "");
pDialog->DoModal();
if (!pDialog->IsConfirmed()) return false;
}
// Create a temporary item list containing the file/folder for deletion
CFileItemPtr pItemTemp(new CFileItem(*item));
pItemTemp->Select(true);
CFileItemList items;
items.Add(pItemTemp);
// grab the real filemanager window, set up the progress bar,
// and process the delete action
CFileOperationJob op(CFileOperationJob::ActionDelete, items, "");
return op.DoWork();
}
bool CFileUtils::RenameFile(const CStdString &strFile)
{
CStdString strFileAndPath(strFile);
URIUtils::RemoveSlashAtEnd(strFileAndPath);
CStdString strFileName = URIUtils::GetFileName(strFileAndPath);
CStdString strPath = strFile.Left(strFileAndPath.size() - strFileName.size());
if (CGUIKeyboardFactory::ShowAndGetInput(strFileName, g_localizeStrings.Get(16013), false))
{
strPath += strFileName;
CLog::Log(LOGINFO,"FileUtils: rename %s->%s\n", strFileAndPath.c_str(), strPath.c_str());
if (URIUtils::IsMultiPath(strFileAndPath))
{ // special case for multipath renames - rename all the paths.
vector<CStdString> paths;
CMultiPathDirectory::GetPaths(strFileAndPath, paths);
bool success = false;
for (unsigned int i = 0; i < paths.size(); ++i)
{
CStdString filePath(paths[i]);
URIUtils::RemoveSlashAtEnd(filePath);
URIUtils::GetDirectory(filePath, filePath);
URIUtils::AddFileToFolder(filePath, strFileName, filePath);
if (CFile::Rename(paths[i], filePath))
success = true;
}
return success;
}
return CFile::Rename(strFileAndPath, strPath);
}
return false;
}
Jump to Line
Something went wrong with that request. Please try again.