|
|
|
/*
|
|
|
|
*
|
|
|
|
* This file is part of the KDE project, module tdefile.
|
|
|
|
* Copyright (C) 2000 Geert Jansen <jansen@kde.org>
|
|
|
|
* (C) 2000 Kurt Granroth <granroth@kde.org>
|
|
|
|
* (C) 1997 Christoph Neerfeld <chris@kde.org>
|
|
|
|
* (C) 2002 Carsten Pfeiffer <pfeiffer@kde.org>
|
|
|
|
*
|
|
|
|
* This is free software; it comes under the GNU Library General
|
|
|
|
* Public License, version 2. See the file "COPYING.LIB" for the
|
|
|
|
* exact licensing terms.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __TDEIconDialog_h__
|
|
|
|
#define __TDEIconDialog_h__
|
|
|
|
|
|
|
|
#include <tqstring.h>
|
|
|
|
#include <tqstringlist.h>
|
|
|
|
#include <tqpushbutton.h>
|
|
|
|
|
|
|
|
#include <kicontheme.h>
|
|
|
|
#include <kdialogbase.h>
|
|
|
|
#include <kiconview.h>
|
|
|
|
|
|
|
|
class TQComboBox;
|
|
|
|
class TQTimer;
|
|
|
|
class TQKeyEvent;
|
|
|
|
class TQRadioButton;
|
|
|
|
class KProgress;
|
|
|
|
class TDEIconLoader;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Icon canvas for TDEIconDialog.
|
|
|
|
*/
|
|
|
|
class TDEIO_EXPORT TDEIconCanvas: public TDEIconView
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
TDEIconCanvas(TQWidget *parent=0L, const char *name=0L);
|
|
|
|
~TDEIconCanvas();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Load icons into the canvas.
|
|
|
|
*/
|
|
|
|
void loadFiles(const TQStringList& files);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the current icon.
|
|
|
|
*/
|
|
|
|
TQString getCurrent() const;
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
void stopLoading();
|
|
|
|
|
|
|
|
signals:
|
|
|
|
/**
|
|
|
|
* Emitted when the current icon has changed.
|
|
|
|
*/
|
|
|
|
void nameChanged(TQString);
|
|
|
|
/* KDE 4: Make it const TQString & */
|
|
|
|
|
|
|
|
void startLoading(int);
|
|
|
|
void progress(int);
|
|
|
|
void finished();
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
void slotLoadFiles();
|
|
|
|
void slotCurrentChanged(TQIconViewItem *item);
|
|
|
|
|
|
|
|
private:
|
|
|
|
TQStringList mFiles;
|
|
|
|
TQTimer *mpTimer;
|
|
|
|
TDEIconLoader *mpLoader; // unused
|
|
|
|
|
|
|
|
protected:
|
|
|
|
virtual void virtual_hook( int id, void* data );
|
|
|
|
|
|
|
|
private:
|
|
|
|
class TDEIconCanvasPrivate;
|
|
|
|
TDEIconCanvasPrivate *d;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Dialog for interactive selection of icons. Use the function
|
|
|
|
* getIcon() let the user select an icon.
|
|
|
|
*
|
|
|
|
* @short An icon selection dialog.
|
|
|
|
*/
|
|
|
|
class TDEIO_EXPORT TDEIconDialog: public KDialogBase
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
* Constructs an icon selection dialog using the global iconloader.
|
|
|
|
*/
|
|
|
|
TDEIconDialog(TQWidget *parent=0L, const char *name=0L);
|
|
|
|
/**
|
|
|
|
* Constructs an icon selection dialog using a specific iconloader.
|
|
|
|
*/
|
|
|
|
TDEIconDialog(TDEIconLoader *loader, TQWidget *parent=0,
|
|
|
|
const char *name=0);
|
|
|
|
/**
|
|
|
|
* Destructs the dialog.
|
|
|
|
*/
|
|
|
|
~TDEIconDialog();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets a strict icon size policy for allowed icons. When true,
|
|
|
|
* only icons of the specified group's size in getIcon() are shown.
|
|
|
|
* When false, icons not available at the desired group's size will
|
|
|
|
* also be selectable.
|
|
|
|
*/
|
|
|
|
void setStrictIconSize(bool b);
|
|
|
|
/**
|
|
|
|
* Returns true if a strict icon size policy is set.
|
|
|
|
*/
|
|
|
|
bool strictIconSize() const;
|
|
|
|
/**
|
|
|
|
* sets a custom icon directory
|
|
|
|
* @since 3.1
|
|
|
|
*/
|
|
|
|
void setCustomLocation( const TQString& location );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the size of the icons to be shown / selected.
|
|
|
|
* @see TDEIcon::StdSizes
|
|
|
|
* @see iconSize
|
|
|
|
*/
|
|
|
|
void setIconSize(int size);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the iconsize set via setIconSize() or 0, if the default
|
|
|
|
* iconsize will be used.
|
|
|
|
*/
|
|
|
|
int iconSize() const;
|
|
|
|
|
|
|
|
#ifndef KDE_NO_COMPAT
|
|
|
|
/**
|
|
|
|
* @deprecated in KDE 3.0, use the static method getIcon instead.
|
|
|
|
*/
|
|
|
|
TQString selectIcon(TDEIcon::Group group=TDEIcon::Desktop, TDEIcon::Context
|
|
|
|
context=TDEIcon::Application, bool user=false);
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Allows you to set the same parameters as in the class method
|
|
|
|
* getIcon().
|
|
|
|
*/
|
|
|
|
void setup( TDEIcon::Group group,
|
|
|
|
TDEIcon::Context context = TDEIcon::Application,
|
|
|
|
bool strictIconSize = false, int iconSize = 0,
|
|
|
|
bool user = false );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Allows you to set the same parameters as in the class method
|
|
|
|
* getIcon(), as well as two additional parameters to lock
|
|
|
|
* the choice between system and user dirs and to lock the custom user
|
|
|
|
* dir itself.
|
|
|
|
*
|
|
|
|
* @since 3.3
|
|
|
|
*/
|
|
|
|
|
|
|
|
void setup( TDEIcon::Group group, TDEIcon::Context context,
|
|
|
|
bool strictIconSize, int iconSize, bool user, bool lockUser,
|
|
|
|
bool lockCustomDir );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* exec()utes this modal dialog and returns the name of the selected icon,
|
|
|
|
* or TQString::null if the dialog was aborted.
|
|
|
|
* @returns the name of the icon, suitable for loading with TDEIconLoader.
|
|
|
|
* @see getIcon
|
|
|
|
*/
|
|
|
|
TQString openDialog();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* show()es this dialog and emits a newIcon(const TQString&) signal when
|
|
|
|
* successful. TQString::null will be emitted if the dialog was aborted.
|
|
|
|
*/
|
|
|
|
void showDialog();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Pops up the dialog an lets the user select an icon.
|
|
|
|
*
|
|
|
|
* @param group The icon group this icon is intended for. Providing the
|
|
|
|
* group shows the icons in the dialog with the same appearance as when
|
|
|
|
* used outside the dialog.
|
|
|
|
* @param context The initial icon context. Initially, the icons having
|
|
|
|
* this context are shown in the dialog. The user can change this.
|
|
|
|
* @param strictIconSize When true, only icons of the specified group's size
|
|
|
|
* are shown, otherwise icon not available in the desired group's size
|
|
|
|
* will also be selectable.
|
|
|
|
* @param iconSize the size of the icons -- the default of the icongroup
|
|
|
|
* if set to 0
|
|
|
|
* @param user Begin with the "user icons" instead of "system icons".
|
|
|
|
* @param parent The parent widget of the dialog.
|
|
|
|
* @param caption The caption to use for the dialog.
|
|
|
|
* @return The name of the icon, suitable for loading with TDEIconLoader.
|
|
|
|
* @version New in 3.0
|
|
|
|
*/
|
|
|
|
static TQString getIcon(TDEIcon::Group group=TDEIcon::Desktop,
|
|
|
|
TDEIcon::Context context=TDEIcon::Application,
|
|
|
|
bool strictIconSize=false, int iconSize = 0,
|
|
|
|
bool user=false, TQWidget *parent=0,
|
|
|
|
const TQString &caption=TQString::null);
|
|
|
|
|
|
|
|
signals:
|
|
|
|
void newIconName(const TQString&);
|
|
|
|
|
|
|
|
protected slots:
|
|
|
|
void slotOk();
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
void slotButtonClicked(int);
|
|
|
|
void slotContext(int);
|
|
|
|
void slotStartLoading(int);
|
|
|
|
void slotProgress(int);
|
|
|
|
void slotFinished();
|
|
|
|
void slotAcceptIcons();
|
|
|
|
private:
|
|
|
|
void init();
|
|
|
|
void showIcons();
|
|
|
|
void setContext( TDEIcon::Context context );
|
|
|
|
|
|
|
|
int mGroupOrSize;
|
|
|
|
TDEIcon::Context mContext;
|
|
|
|
int mType;
|
|
|
|
|
|
|
|
TQStringList mFileList;
|
|
|
|
TQComboBox *mpCombo;
|
|
|
|
TQPushButton *mpBrowseBut;
|
|
|
|
TQRadioButton *mpRb1, *mpRb2;
|
|
|
|
KProgress *mpProgress;
|
|
|
|
TDEIconLoader *mpLoader;
|
|
|
|
TDEIconCanvas *mpCanvas;
|
|
|
|
int mNumContext;
|
|
|
|
TDEIcon::Context mContextMap[ 12 ]; // must match TDEIcon::Context size, code has assert
|
|
|
|
|
|
|
|
protected:
|
|
|
|
virtual void virtual_hook( int id, void* data );
|
|
|
|
private:
|
|
|
|
class TDEIconDialogPrivate;
|
|
|
|
TDEIconDialogPrivate *d;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A pushbutton for choosing an icon. Pressing on the button will open a
|
|
|
|
* TDEIconDialog for the user to select an icon. The current icon will be
|
|
|
|
* displayed on the button.
|
|
|
|
*
|
|
|
|
* @see TDEIconDialog
|
|
|
|
* @short A push button that allows selection of an icon.
|
|
|
|
*/
|
|
|
|
class TDEIO_EXPORT TDEIconButton: public TQPushButton
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
TQ_PROPERTY( TQString icon READ icon WRITE setIcon RESET resetIcon )
|
|
|
|
TQ_PROPERTY( int iconSize READ iconSize WRITE setIconSize)
|
|
|
|
TQ_PROPERTY( bool strictIconSize READ strictIconSize WRITE setStrictIconSize )
|
|
|
|
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
* Constructs a TDEIconButton using the global iconloader.
|
|
|
|
*/
|
|
|
|
TDEIconButton(TQWidget *parent=0L, const char *name=0L);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Constructs a TDEIconButton using a specific TDEIconLoader.
|
|
|
|
*/
|
|
|
|
TDEIconButton(TDEIconLoader *loader, TQWidget *parent, const char *name=0L);
|
|
|
|
/**
|
|
|
|
* Destructs the button.
|
|
|
|
*/
|
|
|
|
~TDEIconButton();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets a strict icon size policy for allowed icons. When true,
|
|
|
|
* only icons of the specified group's size in setIconType are allowed,
|
|
|
|
* and only icons of that size will be shown in the icon dialog.
|
|
|
|
*/
|
|
|
|
void setStrictIconSize(bool b);
|
|
|
|
/**
|
|
|
|
* Returns true if a strict icon size policy is set.
|
|
|
|
*/
|
|
|
|
bool strictIconSize() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the icon group and context. Use TDEIcon::NoGroup if you want to
|
|
|
|
* allow icons for any group in the given context.
|
|
|
|
*/
|
|
|
|
void setIconType(TDEIcon::Group group, TDEIcon::Context context, bool user=false);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the button's initial icon.
|
|
|
|
*/
|
|
|
|
void setIcon(const TQString& icon);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Resets the icon (reverts to an empty button).
|
|
|
|
*/
|
|
|
|
void resetIcon();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the name of the selected icon.
|
|
|
|
*/
|
|
|
|
TQString icon() const { return mIcon; }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the size of the icon to be shown / selected.
|
|
|
|
* @see TDEIcon::StdSizes
|
|
|
|
* @see iconSize
|
|
|
|
*/
|
|
|
|
void setIconSize( int size );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the iconsize set via setIconSize() or 0, if the default
|
|
|
|
* iconsize will be used.
|
|
|
|
*/
|
|
|
|
int iconSize() const;
|
|
|
|
|
|
|
|
signals:
|
|
|
|
/**
|
|
|
|
* Emitted when the icon has changed.
|
|
|
|
*/
|
|
|
|
void iconChanged(TQString icon);
|
|
|
|
/* KDE 4: Make it const TQString & */
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
void slotChangeIcon();
|
|
|
|
void newIconName(const TQString& name);
|
|
|
|
|
|
|
|
private:
|
|
|
|
void init( TDEIconLoader *loader );
|
|
|
|
|
|
|
|
bool mbUser;
|
|
|
|
TDEIcon::Group mGroup;
|
|
|
|
TDEIcon::Context mContext;
|
|
|
|
|
|
|
|
TQString mIcon;
|
|
|
|
TDEIconDialog *mpDialog;
|
|
|
|
TDEIconLoader *mpLoader;
|
|
|
|
class TDEIconButtonPrivate;
|
|
|
|
TDEIconButtonPrivate *d;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif // __TDEIconDialog_h__
|