/* KPilot ** ** Copyright (C) 1998-2001 by Dan Pilone ** ** This is a class that does "the work" of adding and deleting ** files in the pending_install directory of KPilot. It is used ** by the fileInstallWidget and by the daemon's drag-and-drop ** file accepter. */ /* ** 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 2 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 in a file called COPYING; if not, write to ** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, ** MA 02110-1301, USA. */ /* ** Bug reports and questions can be sent to kde-pim@kde.org */ #include "options.h" #include #include #include #include #include #include #include #include #include #include "fileInstaller.moc" FileInstaller::FileInstaller() : enabled(true) { FUNCTIONSETUP; fDirName = TDEGlobal::dirs()->saveLocation("data", CSL1("kpilot/pending_install/")); fPendingCopies = 0; } /* virtual */ FileInstaller::~FileInstaller() { FUNCTIONSETUP; } void FileInstaller::clearPending() { FUNCTIONSETUP; unsigned int i; TQDir installDir(fDirName); // Start from 2 to skip . and .. // for (i = 2; i < installDir.count(); i++) { TQFile::remove(fDirName + installDir[i]); } if (i > 2) { emit filesChanged(); } } void FileInstaller::deleteFile(const TQString &file) { TQFile::remove(fDirName + file); emit filesChanged(); } void FileInstaller::deleteFiles(const TQStringList &files) { if(files.empty()) return; for(TQStringList::ConstIterator it = files.begin(); it != files.end(); ++it) TQFile::remove(fDirName + *it); emit filesChanged(); } /* virtual */ bool FileInstaller::runCopy(const TQString & s, TQWidget* w ) { FUNCTIONSETUP; if(!(s.endsWith(CSL1(".pdb"), false) || s.endsWith(CSL1(".prc"), false))) { KMessageBox::detailedSorry(w, i18n("Cannot install %1").arg(s), i18n("Only PalmOS database files (like *.pdb and *.prc) can be installed by the file installer.")); return false; } #ifdef DEBUG DEBUGKPILOT << fname << ": Copying " << s << endl; #endif KURL srcName; srcName.setPath(s); KURL destDir(fDirName + CSL1("/") + srcName.fileName()); #if KDE_IS_VERSION(3,1,9) return TDEIO::NetAccess::copy(srcName, destDir, w); #else return TDEIO::NetAccess::copy(srcName,destDir); #endif } void FileInstaller::addFiles(const TQStringList & fileList, TQWidget* w) { FUNCTIONSETUP; if (!enabled) return; unsigned int succ = 0; for(TQStringList::ConstIterator it = fileList.begin(); it != fileList.end(); ++it) { if (runCopy( *it, w )) succ++; } if (succ) { emit filesChanged(); } } void FileInstaller::addFile( const TQString & file, TQWidget* w ) { FUNCTIONSETUP; if (!enabled) return; if (runCopy(file, w)) { emit(filesChanged()); } } /* slot */ void FileInstaller::copyCompleted() { FUNCTIONSETUP; } const TQStringList FileInstaller::fileNames() const { FUNCTIONSETUP; TQDir installDir(fDirName); return installDir.entryList(TQDir::Files | TQDir::NoSymLinks | TQDir::Readable); } /* slot */ void FileInstaller::setEnabled(bool b) { FUNCTIONSETUP; enabled=b; }