diff options
Diffstat (limited to 'kio/kfile/krecentdocument.cpp')
-rw-r--r-- | kio/kfile/krecentdocument.cpp | 177 |
1 files changed, 0 insertions, 177 deletions
diff --git a/kio/kfile/krecentdocument.cpp b/kio/kfile/krecentdocument.cpp deleted file mode 100644 index 7ad690be4..000000000 --- a/kio/kfile/krecentdocument.cpp +++ /dev/null @@ -1,177 +0,0 @@ -/* -*- c++ -*- - * Copyright (C)2000 Daniel M. Duley <mosfet@kde.org> - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ -#include <krecentdocument.h> -#include <ksimpleconfig.h> -#include <kstandarddirs.h> -#include <kapplication.h> -#include <kurl.h> -#include <kdebug.h> -#include <kmimetype.h> -#include <kdesktopfile.h> -#include <tqdir.h> -#include <tqfileinfo.h> -#include <tqtextstream.h> -#include <tqstringlist.h> -#include <tqregexp.h> - -#include <sys/types.h> -#include <utime.h> - -TQString KRecentDocument::recentDocumentDirectory() -{ - // need to change this path, not sure where - return locateLocal("data", TQString::fromLatin1("RecentDocuments/")); -} - -TQStringList KRecentDocument::recentDocuments() -{ - TQDir d(recentDocumentDirectory(), "*.desktop", TQDir::Time, - TQDir::Files | TQDir::Readable | TQDir::Hidden); - - if (!d.exists()) - d.mkdir(recentDocumentDirectory()); - - TQStringList list = d.entryList(); - TQStringList fullList; - - for (TQStringList::ConstIterator it = list.begin(); it != list.end(); ++it) { - TQString pathDesktop = d.absFilePath( *it ); - KDesktopFile tmpDesktopFile( pathDesktop, false); - KURL urlDesktopFile(tmpDesktopFile.readURL()); - if( urlDesktopFile.isLocalFile() && !TQFile(urlDesktopFile.path()).exists()) - d.remove(pathDesktop); - else - fullList.append( pathDesktop ); - } - - return fullList; -} - -void KRecentDocument::add(const KURL& url) -{ - KRecentDocument::add(url, tqApp->argv()[0]); // ### argv[0] might not match the service filename! -} - -void KRecentDocument::add(const KURL& url, const TQString& desktopEntryName) -{ - if ( url.isLocalFile() && !KGlobal::dirs()->relativeLocation("tmp", url.path()).startsWith("/")) - return; - - TQString openStr = url.url(); - openStr.replace( TQRegExp("\\$"), "$$" ); // Desktop files with type "Link" are $-variable expanded - - kdDebug(250) << "KRecentDocument::add for " << openStr << endl; - KConfig *config = KGlobal::config(); - TQString oldGrp = config->group(); - config->setGroup(TQString::fromLatin1("RecentDocuments")); - bool useRecent = config->readBoolEntry(TQString::fromLatin1("UseRecent"), true); - int maxEntries = config->readNumEntry(TQString::fromLatin1("MaxEntries"), 10); - - config->setGroup(oldGrp); - if(!useRecent) - return; - - TQString path = recentDocumentDirectory(); - - TQString dStr = path + url.fileName(); - - TQString ddesktop = dStr + TQString::fromLatin1(".desktop"); - - int i=1; - // check for duplicates - while(TQFile::exists(ddesktop)){ - // see if it points to the same file and application - KSimpleConfig tmp(ddesktop); - tmp.setDesktopGroup(); - if(tmp.readEntry(TQString::fromLatin1("X-TDE-LastOpenedWith")) - == desktopEntryName) - { - utime(TQFile::encodeName(ddesktop), NULL); - return; - } - // if not append a (num) to it - ++i; - if ( i > maxEntries ) - break; - ddesktop = dStr + TQString::fromLatin1("[%1].desktop").arg(i); - } - - TQDir dir(path); - // check for max entries, delete oldest files if exceeded - TQStringList list = dir.entryList(TQDir::Files | TQDir::Hidden, TQDir::Time | TQDir::Reversed); - i = list.count(); - if(i > maxEntries-1){ - TQStringList::Iterator it; - it = list.begin(); - while(i > maxEntries-1){ - TQFile::remove(dir.absPath() + TQString::fromLatin1("/") + (*it)); - --i, ++it; - } - } - - // create the applnk - KSimpleConfig conf(ddesktop); - conf.setDesktopGroup(); - conf.writeEntry( TQString::fromLatin1("Type"), TQString::fromLatin1("Link") ); - conf.writePathEntry( TQString::fromLatin1("URL"), openStr ); - // If you change the line below, change the test in the above loop - conf.writeEntry( TQString::fromLatin1("X-TDE-LastOpenedWith"), desktopEntryName ); - TQString name = url.fileName(); - if (name.isEmpty()) - name = openStr; - conf.writeEntry( TQString::fromLatin1("Name"), name ); - conf.writeEntry( TQString::fromLatin1("Icon"), KMimeType::iconForURL( url ) ); -} - -void KRecentDocument::add(const TQString &openStr, bool isUrl) -{ - if( isUrl ) { - add( KURL( openStr ) ); - } else { - KURL url; - url.setPath( openStr ); - add( url ); - } -} - -void KRecentDocument::clear() -{ - TQStringList list = recentDocuments(); - TQDir dir; - for(TQStringList::Iterator it = list.begin(); it != list.end() ; ++it) - dir.remove(*it); -} - -int KRecentDocument::maximumItems() -{ - KConfig *config = KGlobal::config(); - KConfigGroupSaver sa(config, TQString::fromLatin1("RecentDocuments")); - return config->readNumEntry(TQString::fromLatin1("MaxEntries"), 10); -} - - |