You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdebase/kcontrol/kfontinst/kcmfontinst/KFileFontView.h

220 lines
7.1 KiB

#ifndef __KFILE_FONT_VIEW_H__
#define __KFILE_FONT_VIEW_H__
////////////////////////////////////////////////////////////////////////////////
//
// Class Name : CKFileFontView
// Author : Craig Drummond
// Project : K Font Installer
// Creation Date : 31/05/2003
// Version : $Revision$ $Date$
//
////////////////////////////////////////////////////////////////////////////////
//
// 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; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
////////////////////////////////////////////////////////////////////////////////
// (C) Craig Drummond, 2003
////////////////////////////////////////////////////////////////////////////////
//
// NOTE: HEAVILY copied from kfiledetailview.cpp...
//
// Copyright (C) 1997 Stephan Kulow <coolo@kde.org>
// 2000, 2001 Carste
class KFileItem;
class TQWidget;
class TQKeyEvent;
#include <klistview.h>
#include <kmimetyperesolver.h>
#include "kfileview.h"
/**
* An item for the listiew, that has a reference to its corresponding
* @ref KFileItem.
*/
class CFontListViewItem : public KListViewItem
{
public:
CFontListViewItem(TQListView *parent, const TQString &text, const TQPixmap &icon, KFileItem *fi)
: KListViewItem(parent, text),
itsInf(fi)
{
setPixmap(0, icon);
setText(0, text);
}
CFontListViewItem(TQListView *parent, KFileItem *fi)
: KListViewItem(parent),
itsInf(fi)
{
init();
}
CFontListViewItem(TQListView *parent, const TQString &text, const TQPixmap &icon, KFileItem *fi, TQListViewItem *after)
: KListViewItem(parent, after),
itsInf(fi)
{
setPixmap(0, icon);
setText(0, text);
}
~CFontListViewItem() { itsInf->removeExtraData(listView()); }
/**
* @returns the corresponding KFileItem
*/
KFileItem *fileInfo() const { return itsInf; }
virtual TQString key( int /*column*/, bool /*ascending*/ ) const { return itsKey; }
void setKey( const TQString& key ) { itsKey = key; }
TQRect rect() const
{
TQRect r = listView()->itemRect(this);
return TQRect(listView()->viewportToContents(r.topLeft()), TQSize(r.width(), r.height()));
}
void init();
private:
KFileItem *itsInf;
TQString itsKey;
class CFontListViewItemPrivate;
CFontListViewItemPrivate *d;
};
/**
* A list-view capable of showing @ref KFileItem'. Used in the filedialog
* for example. Most of the documentation is in @ref KFileView class.
*
* @see KDirOperator
* @see KCombiView
* @see KFileIconView
*/
class CKFileFontView : public KListView, public KFileView
{
Q_OBJECT
public:
CKFileFontView(TQWidget *parent, const char *name);
virtual ~CKFileFontView();
virtual TQWidget * widget() { return this; }
virtual void clearView();
virtual void setAutoUpdate(bool) {} // ### unused. remove in KDE4
virtual void setSelectionMode( KFile::SelectionMode sm );
virtual void updateView(bool b);
virtual void updateView(const KFileItem *i);
virtual void removeItem(const KFileItem *i);
virtual void listingCompleted();
virtual void setSelected(const KFileItem *i, bool b);
virtual bool isSelected(const KFileItem *i) const;
virtual void clearSelection();
virtual void selectAll();
virtual void invertSelection();
virtual void setCurrentItem( const KFileItem *i);
virtual KFileItem * currentFileItem() const;
virtual KFileItem * firstFileItem() const;
virtual KFileItem * nextItem(const KFileItem *i) const;
virtual KFileItem * prevItem(const KFileItem *i) const;
virtual void insertItem( KFileItem *i);
void readConfig(KConfig *kc, const TQString &group);
void writeConfig(KConfig *kc, const TQString &group);
// implemented to get noticed about sorting changes (for sortingIndicator)
virtual void setSorting(TQDir::SortSpec s);
void ensureItemVisible(const KFileItem *i);
// for KMimeTypeResolver
void mimeTypeDeterminationFinished();
void determineIcon(CFontListViewItem *item);
TQScrollView * scrollWidget() const { return (TQScrollView*) this; }
signals:
// The user dropped something.
// fileItem points to the item dropped on or can be 0 if the
// user dropped on empty space.
void dropped(TQDropEvent *event, KFileItem *fileItem);
// The user dropped the URLs urls.
// url points to the item dropped on or can be empty if the
// user dropped on empty space.
void dropped(TQDropEvent *event, const KURL::List &urls, const KURL &url);
protected:
virtual void keyPressEvent(TQKeyEvent *e);
// DND support
TQDragObject * dragObject();
void contentsDragEnterEvent(TQDragEnterEvent *e);
void contentsDragMoveEvent(TQDragMoveEvent *e);
void contentsDragLeaveEvent(TQDragLeaveEvent *e);
void contentsDropEvent(TQDropEvent *e);
bool acceptDrag(TQDropEvent *e) const;
int itsSortingCol;
protected slots:
void slotSelectionChanged();
private slots:
void slotSortingChanged(int c);
void selected(TQListViewItem *item);
void slotActivate(TQListViewItem *item);
void highlighted(TQListViewItem *item);
void slotActivateMenu(TQListViewItem *item, const TQPoint& pos);
void slotAutoOpen();
private:
virtual void insertItem(TQListViewItem *i) { KListView::insertItem(i); }
virtual void setSorting(int i, bool b) { KListView::setSorting(i, b); }
virtual void setSelected(TQListViewItem *i, bool b) { KListView::setSelected(i, b); }
inline CFontListViewItem * viewItem( const KFileItem *item ) const
{
return item ? (CFontListViewItem *) item->extraData(this) : NULL;
}
void setSortingKey( CFontListViewItem *item, const KFileItem *i);
bool itsBlockSortingSignal;
KMimeTypeResolver<CFontListViewItem,CKFileFontView> *itsResolver;
protected:
virtual void virtual_hook(int id, void *data);
private:
class CKFileFontViewPrivate;
CKFileFontViewPrivate *d;
};
#endif