diff options
Diffstat (limited to 'kio/kfile/kfileview.cpp')
-rw-r--r-- | kio/kfile/kfileview.cpp | 429 |
1 files changed, 0 insertions, 429 deletions
diff --git a/kio/kfile/kfileview.cpp b/kio/kfile/kfileview.cpp deleted file mode 100644 index a62b8aa50..000000000 --- a/kio/kfile/kfileview.cpp +++ /dev/null @@ -1,429 +0,0 @@ -/* This file is part of the KDE libraries - Copyright (C) 1998 Stephan Kulow <[email protected]> - 1998 Daniel Grana <[email protected]> - 2001 Carsten Pfeiffer <[email protected]> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include <assert.h> -#include <stdlib.h> - -#include <kaction.h> -#include <kapplication.h> -#include <kdebug.h> -#include <kglobal.h> -#include <klocale.h> -#include <kstandarddirs.h> - -#include "config-kfile.h" -#include "kfileview.h" - -#ifdef Unsorted // the "I hate X.h" modus -#undef Unsorted -#endif - -TQDir::SortSpec KFileView::defaultSortSpec = static_cast<TQDir::SortSpec>(TQDir::Name | TQDir::IgnoreCase | TQDir::DirsFirst); - -class KFileView::KFileViewPrivate -{ -public: - KFileViewPrivate() - { - actions = 0; - dropOptions = 0; - } - - ~KFileViewPrivate() - { - if( actions ) { - actions->clear(); // so that the removed() signal is emitted! - delete actions; - } - } - - TQGuardedPtr<KActionCollection> actions; - int dropOptions; -}; - - -KFileView::KFileView() -{ - d = new KFileViewPrivate(); - m_sorting = KFileView::defaultSortSpec; - - sig = new KFileViewSignaler(); - sig->setName("view-signaller"); - - m_selectedList = 0L; - filesNumber = 0; - dirsNumber = 0; - - view_mode = All; - selection_mode = KFile::Single; - m_viewName = i18n("Unknown View"); - - myOnlyDoubleClickSelectsFiles = false; - m_itemList.setAutoDelete( false ); // just references -} - -KFileView::~KFileView() -{ - delete d; - delete sig; - delete m_selectedList; -} - -void KFileView::setParentView(KFileView *parent) -{ - if ( parent ) { // pass all signals right to our parent - TQObject::connect(sig, TQT_SIGNAL( activatedMenu(const KFileItem *, - const TQPoint& ) ), - parent->sig, TQT_SIGNAL( activatedMenu(const KFileItem *, - const TQPoint& ))); - TQObject::connect(sig, TQT_SIGNAL( dirActivated(const KFileItem *)), - parent->sig, TQT_SIGNAL( dirActivated(const KFileItem*))); - TQObject::connect(sig, TQT_SIGNAL( fileSelected(const KFileItem *)), - parent->sig, TQT_SIGNAL( fileSelected(const KFileItem*))); - TQObject::connect(sig, TQT_SIGNAL( fileHighlighted(const KFileItem *) ), - parent->sig,TQT_SIGNAL(fileHighlighted(const KFileItem*))); - TQObject::connect(sig, TQT_SIGNAL( sortingChanged( TQDir::SortSpec ) ), - parent->sig, TQT_SIGNAL(sortingChanged( TQDir::SortSpec))); - TQObject::connect(sig, TQT_SIGNAL( dropped(const KFileItem *, TQDropEvent*, const KURL::List&) ), - parent->sig, TQT_SIGNAL(dropped(const KFileItem *, TQDropEvent*, const KURL::List&))); - } -} - -bool KFileView::updateNumbers(const KFileItem *i) -{ - if (!( viewMode() & Files ) && i->isFile()) - return false; - - if (!( viewMode() & Directories ) && i->isDir()) - return false; - - if (i->isDir()) - dirsNumber++; - else - filesNumber++; - - return true; -} - -void qt_qstring_stats(); - -// filter out files if we're in directory mode and count files/directories -// and insert into the view -void KFileView::addItemList(const KFileItemList& list) -{ - KFileItem *tmp; - - for (KFileItemListIterator it(list); (tmp = it.current()); ++it) - { - if (!updateNumbers(tmp)) - continue; - - insertItem( tmp ); - } - -#ifdef Q2HELPER - qt_qstring_stats(); -#endif -} - -void KFileView::insertItem( KFileItem * ) -{ -} - -void KFileView::setSorting(TQDir::SortSpec new_sort) -{ - m_sorting = new_sort; -} - -void KFileView::clear() -{ - m_itemList.clear(); - filesNumber = 0; - dirsNumber = 0; - clearView(); -} - -void KFileView::sortReversed() -{ - int spec = sorting(); - - setSorting( static_cast<TQDir::SortSpec>( spec ^ TQDir::Reversed ) ); -} - -#if 0 -int KFileView::compareItems(const KFileItem *fi1, const KFileItem *fi2) const -{ - static const TQString &dirup = TDEGlobal::staticQString(".."); - bool bigger = true; - bool keepFirst = false; - bool dirsFirst = ((m_sorting & TQDir::DirsFirst) == TQDir::DirsFirst); - - if (fi1 == fi2) - return 0; - - // .. is always bigger, independent of the sort criteria - if ( fi1->name() == dirup ) { - bigger = false; - keepFirst = dirsFirst; - } - else if ( fi2->name() == dirup ) { - bigger = true; - keepFirst = dirsFirst; - } - - else { - if ( fi1->isDir() != fi2->isDir() && dirsFirst ) { - bigger = fi2->isDir(); - keepFirst = true; - } - else { - - TQDir::SortSpec sort = static_cast<TQDir::SortSpec>(m_sorting & TQDir::SortByMask); - - //if (fi1->isDir() || fi2->isDir()) - // sort = static_cast<TQDir::SortSpec>(KFileView::defaultSortSpec & TQDir::SortByMask); - - switch (sort) { - case TQDir::Name: - default: -sort_by_name: - if ( (m_sorting & TQDir::IgnoreCase) == TQDir::IgnoreCase ) - bigger = (fi1->name( true ) > fi2->name( true )); - else - bigger = (fi1->name() > fi2->name()); - break; - case TQDir::Time: - { - time_t t1 = fi1->time( TDEIO::UDS_MODIFICATION_TIME ); - time_t t2 = fi2->time( TDEIO::UDS_MODIFICATION_TIME ); - if ( t1 != t2 ) { - bigger = (t1 > t2); - break; - } - - // Sort by name if both items have the same timestamp. - // Don't honor the reverse flag tho. - else { - keepFirst = true; - goto sort_by_name; - } - } - case TQDir::Size: - { - TDEIO::filesize_t s1 = fi1->size(); - TDEIO::filesize_t s2 = fi2->size(); - if ( s1 != s2 ) { - bigger = (s1 > s2); - break; - } - - // Sort by name if both items have the same size. - // Don't honor the reverse flag tho. - else { - keepFirst = true; - goto sort_by_name; - } - } - case TQDir::Unsorted: - bigger = true; // nothing - break; - } - } - } - - if (reversed && !keepFirst ) // don't reverse dirs to the end! - bigger = !bigger; - - return (bigger ? 1 : -1); -} -#endif - -void KFileView::updateView(bool f) -{ - widget()->repaint(f); -} - -void KFileView::updateView(const KFileItem *) -{ -} - -void KFileView::setCurrentItem(const TQString &filename ) -{ - if (!filename.isNull()) { - KFileItem *item; - for ( (item = firstFileItem()); item; item = nextItem( item ) ) { - if (item->name() == filename) { - setCurrentItem( item ); - return; - } - } - } - - kdDebug(kfile_area) << "setCurrentItem: no match found: " << filename << endl; -} - -const KFileItemList * KFileView::items() const -{ - KFileItem *item = 0L; - - // only ever use m_itemList in this method! - m_itemList.clear(); - for ( (item = firstFileItem()); item; item = nextItem( item ) ) - m_itemList.append( item ); - - return &m_itemList; -} - - -const KFileItemList * KFileView::selectedItems() const -{ - if ( !m_selectedList ) - m_selectedList = new KFileItemList; - - m_selectedList->clear(); - - KFileItem *item; - for ( (item = firstFileItem()); item; item = nextItem( item ) ) { - if ( isSelected( item ) ) - m_selectedList->append( item ); - } - - return m_selectedList; -} - -void KFileView::selectAll() -{ - if (selection_mode == KFile::NoSelection || selection_mode== KFile::Single) - return; - - KFileItem *item = 0L; - for ( (item = firstFileItem()); item; item = nextItem( item ) ) - setSelected( item, true ); -} - - -void KFileView::invertSelection() -{ - KFileItem *item = 0L; - for ( (item = firstFileItem()); item; item = nextItem( item ) ) - setSelected( item, !isSelected( item ) ); -} - - -void KFileView::setSelectionMode( KFile::SelectionMode sm ) -{ - selection_mode = sm; -} - -KFile::SelectionMode KFileView::selectionMode() const -{ - return selection_mode; -} - -void KFileView::setViewMode( ViewMode vm ) -{ - view_mode = vm; -} - -void KFileView::removeItem( const KFileItem *item ) -{ - if ( !item ) - return; - - if ( item->isDir() ) - dirsNumber--; - else - filesNumber--; - - if ( m_selectedList ) - m_selectedList->removeRef( item ); -} - -void KFileView::listingCompleted() -{ - // empty default impl. -} - -KActionCollection * KFileView::actionCollection() const -{ - if ( !d->actions ) - d->actions = new KActionCollection( widget(), "KFileView::d->actions" ); - return d->actions; -} - -void KFileView::readConfig( TDEConfig *, const TQString& ) -{ -} - -void KFileView::writeConfig( TDEConfig *, const TQString& ) -{ -} - -TQString KFileView::sortingKey( const TQString& value, bool isDir, int sortSpec ) -{ - bool reverse = sortSpec & TQDir::Reversed; - bool dirsFirst = sortSpec & TQDir::DirsFirst; - char start = (isDir && dirsFirst) ? (reverse ? '2' : '0') : '1'; - TQString result = (sortSpec & TQDir::IgnoreCase) ? value.lower() : value; - return result.prepend( start ); -} - -TQString KFileView::sortingKey( TDEIO::filesize_t value, bool isDir, int sortSpec) -{ - bool reverse = sortSpec & TQDir::Reversed; - bool dirsFirst = sortSpec & TQDir::DirsFirst; - char start = (isDir && dirsFirst) ? (reverse ? '2' : '0') : '1'; - return TDEIO::number( value ).rightJustify( 24, '0' ).prepend( start ); -} - -void KFileView::setDropOptions(int options) -{ - virtual_hook(VIRTUAL_SET_DROP_OPTIONS, &options); // Virtual call -} - -void KFileView::setDropOptions_impl(int options) -{ - d->dropOptions = options; -} - -int KFileView::dropOptions() -{ - return d->dropOptions; -} - -int KFileView::autoOpenDelay() -{ - return (TQApplication::startDragTime() * 3) / 2; -} - -void KFileView::virtual_hook( int id, void* data) -{ - switch(id) { - case VIRTUAL_SET_DROP_OPTIONS: - setDropOptions_impl(*(int *)data); - break; - default: - /*BASE::virtual_hook( id, data );*/ - break; - } -} - -#include "kfileview.moc" |