/************************************************************************* * Copyright (C) 2008 by Volker Lanz * * Copyright (C) 2016 by Andrius Štikonas * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License as * * published by the Free Software Foundation; either version 3 of * * the License, or (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see .* *************************************************************************/ #include "jobs/setfilesystemlabeljob.h" #include "core/partition.h" #include "fs/filesystem.h" #include "util/report.h" #include /** Creates a new SetFileSystemLabelJob @param p the Partition the FileSystem whose label is to be set is on @param newlabel the new label */ SetFileSystemLabelJob::SetFileSystemLabelJob(Partition& p, const QString& newlabel) : Job(), m_Partition(p), m_Label(newlabel) { } bool SetFileSystemLabelJob::run(Report& parent) { bool rval = true; Report* report = jobStarted(parent); // If there's no support for file system label setting for this file system, // just ignore the request and say all is well. This helps in operations because // we don't have to check for support to avoid having a failed job. if (partition().fileSystem().supportSetLabel() == FileSystem::cmdSupportNone) report->line() << xi18nc("@info:progress", "File system on partition %1 does not support setting labels. Job ignored.", partition().deviceNode()); else if (partition().fileSystem().supportSetLabel() == FileSystem::cmdSupportFileSystem) { rval = partition().fileSystem().writeLabel(*report, partition().deviceNode(), label()); if (rval) partition().fileSystem().setLabel(label()); } jobFinished(*report, rval); return rval; } QString SetFileSystemLabelJob::description() const { return xi18nc("@info:progress", "Set the file system label on partition %1 to \"%2\"", partition().deviceNode(), label()); }