diff options
Diffstat (limited to 'kcontrol/tdefontinst/kcmfontinst/KFileFontView.h')
-rw-r--r-- | kcontrol/tdefontinst/kcmfontinst/KFileFontView.h | 219 |
1 files changed, 219 insertions, 0 deletions
diff --git a/kcontrol/tdefontinst/kcmfontinst/KFileFontView.h b/kcontrol/tdefontinst/kcmfontinst/KFileFontView.h new file mode 100644 index 000000000..2950d3c33 --- /dev/null +++ b/kcontrol/tdefontinst/kcmfontinst/KFileFontView.h @@ -0,0 +1,219 @@ +#ifndef __TDEFILE_FONT_VIEW_H__ +#define __TDEFILE_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 tdefiledetailview.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 "tdefileview.h" + +/** + * An item for the listiew, that has a reference to its corresponding + * @ref KFileItem. + */ +class CFontListViewItem : public TDEListViewItem +{ + public: + + CFontListViewItem(TQListView *parent, const TQString &text, const TQPixmap &icon, KFileItem *fi) + : TDEListViewItem(parent, text), + itsInf(fi) + { + setPixmap(0, icon); + setText(0, text); + } + + CFontListViewItem(TQListView *parent, KFileItem *fi) + : TDEListViewItem(parent), + itsInf(fi) + { + init(); + } + + CFontListViewItem(TQListView *parent, const TQString &text, const TQPixmap &icon, KFileItem *fi, TQListViewItem *after) + : TDEListViewItem(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 TDEListView, 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(TDEConfig *kc, const TQString &group); + void writeConfig(TDEConfig *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) { TDEListView::insertItem(i); } + virtual void setSorting(int i, bool b) { TDEListView::setSorting(i, b); } + virtual void setSelected(TQListViewItem *i, bool b) { TDEListView::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 |