Source Code (Use browser search to find items of interest.)
Class Index
kmix'KDockWidget (./kdemultimedia/kmix/docking.h:37)
class KDockWidget : public QWidget {
Q_OBJECT
public:
/// Creates a docking widget and allows passing of the name of
/// the docking icon. You must either pass a valid icon or 0.
/// Passing 0, you can paint anything you like on the docking widget
/// by overrdiding tjhe paint event.
KDockWidget(const QString& dockIcon, const char *name=0);
/// Overloaded constructor. Only differs from the previous constructor
/// in that you can pass the icon as a QPixmap
KDockWidget(const QPixmap& dockPixmap, const char *name=0);
/// Deletes the docking widget. Please note that the widget undocks from
/// the panel automatically.
virtual ~KDockWidget();
virtual void setMainWindow(KTMainWindow *ktmw);
/** Checks, if application is in "docked" state. Returns true, if yes.
It has still to be defined what the exact semantics are: Complete
application docked, a single window docked, or is this application
dependent?!? */
virtual bool isDocked() const;
// void savePosition();
virtual void setPixmap(const QString& dockPixmapName);
virtual void setPixmap(const QPixmap& dockPixmap);
public slots:
/// Dock this widget - this means to show this widget on the docking area
virtual void dock();
/// Undock this widget - this means to remove this widget from the docking area
virtual void undock();
/// A MousePressEvent for the left button. The default implementation shows and
/// hides the main window set via setMainWindow().
virtual void mousePressLeftEvent(QMouseEvent *e);
/// A MousePressEvent for the right button. The default implementation pops up
/// a menu.
virtual void mousePressRightEvent(QMouseEvent *e);
virtual void toggle_window_state();
protected:
/// The paint event normally repaints the icon by calling paintIcon().
/// If you do not want to show an icon, but draw some grapics, you
/// must derive from QDockWidget and override this function.
void paintEvent(QPaintEvent *e);
/// Paint the icon.
virtual void paintIcon();
virtual void setShowHideText();
virtual void baseInit();
private slots:
void mousePressEvent(QMouseEvent *e);
signals:
void quit_clicked();
protected slots:
void emit_quit();
protected:
bool docked;
int pos_x;
int pos_y;
int showHidePopmenuEntry;
KTMainWindow *ktmw;
QPopupMenu *popup_m;
QPixmap pm_dockPixmap;
};
kmix'KDockWidget::KDockWidget() (./kdemultimedia/kmix/docking.cpp:32)
KDockWidget::KDockWidget(const QString& dockPixmapName, const char* name)
: QWidget(0, name, 0)
{
baseInit();
setPixmap(dockPixmapName);
}
// --- Constructor ---
kmix'KDockWidget::KDockWidget() (./kdemultimedia/kmix/docking.cpp:40)
KDockWidget::KDockWidget(const QPixmap& dockPixmap, const char* name)
: QWidget(0, name, 0)
{
baseInit();
setPixmap(dockPixmap);
}
// --- set a new dock Pixmap by filename ---
kmix'KDockWidget::setPixmap() (./kdemultimedia/kmix/docking.cpp:48)
void KDockWidget::setPixmap(const QString& dockPixmapName)
{
setPixmap(BarIcon(dockPixmapName));
}
// --- set a new dock Pixmap by giving a QPixmap ---
kmix'KDockWidget::setPixmap() (./kdemultimedia/kmix/docking.cpp:55)
void KDockWidget::setPixmap(const QPixmap& dockPixmap)
{
this->pm_dockPixmap = dockPixmap;
}
kmix'KDockWidget::baseInit() (./kdemultimedia/kmix/docking.cpp:61)
void KDockWidget::baseInit() {
// initialize some basic variables
docked = false;
pos_x = pos_y = 0;
ktmw = 0;
showHidePopmenuEntry = -1; // invalid
// Create standard popup menu for right mouse button
popup_m = new QPopupMenu();
// Insert standard item "Quit" into context menu of docking area
popup_m->insertItem(i18n("Quit"),
this, SLOT(emit_quit()));
}
// --- Destructor ---
kmix'KDockWidget::~KDockWidget() (./kdemultimedia/kmix/docking.cpp:78)
KDockWidget::~KDockWidget()
{
delete popup_m;
}
// --- Dock on Panel ---
kmix'KDockWidget::dock() (./kdemultimedia/kmix/docking.cpp:85)
void KDockWidget::dock()
{
if (!docked) {
// Tell the Panel, this widget wants a place on the docking area
KWM::setDockWindow (this->winId());
// that's all the space there is !!! SHOULD BE REWORKED (ask kpanel maintainer) !!!
this->setFixedSize(24, 24);
// finally show the docking widget on the docking area
show();
docked = true;
}
}
// --- Undock from Panel ---
kmix'KDockWidget::undock() (./kdemultimedia/kmix/docking.cpp:102)
void KDockWidget::undock()
{
if (docked) {
// The widget's window has to be destroyed in order to undock from the
// panel. Simply using hide() is not enough.
this->destroy(true, true);
// recreate docking widget for further dockings
this->create(0, true, false);
docked = false;
}
}
// --- check whether dock widget is in "docked" state ---
kmix'KDockWidget::isDocked() (./kdemultimedia/kmix/docking.cpp:117)
bool KDockWidget::isDocked() const
{
return docked;
}
kmix'KDockWidget::setMainWindow() (./kdemultimedia/kmix/docking.cpp:123)
void KDockWidget::setMainWindow(KTMainWindow *ktmw)
{
this->ktmw = ktmw;
if ( ktmw == 0 ) {
if ( showHidePopmenuEntry != -1 ) {
// Remove menu entry from menu of docking area
popup_m->removeItem(showHidePopmenuEntry);
}
showHidePopmenuEntry = -1;
}
else {
// Insert the standard show/hide item into context menu of docking area
showHidePopmenuEntry = popup_m->insertItem("",
this, SLOT(toggle_window_state()) );
}
}
kmix'KDockWidget::paintEvent() (./kdemultimedia/kmix/docking.cpp:143)
void KDockWidget::paintEvent (QPaintEvent* )
{
paintIcon();
}
kmix'KDockWidget::paintIcon() (./kdemultimedia/kmix/docking.cpp:148)
void KDockWidget::paintIcon ()
{
if (!pm_dockPixmap.isNull())
bitBlt(this, 0, 0, &pm_dockPixmap);
}
kmix'KDockWidget::mousePressEvent() (./kdemultimedia/kmix/docking.cpp:155)
void KDockWidget::mousePressEvent(QMouseEvent *e)
{
// open/close connect-window on left mouse button
if ( e->button() == LeftButton ) {
mousePressLeftEvent(e);
}
// open popup menu on right mouse button
if ( e->button() == RightButton ) {
mousePressRightEvent(e);
}
}
kmix'KDockWidget::mousePressLeftEvent() (./kdemultimedia/kmix/docking.cpp:168)
void KDockWidget::mousePressLeftEvent(QMouseEvent *)
{
toggle_window_state();
}
kmix'KDockWidget::mousePressRightEvent() (./kdemultimedia/kmix/docking.cpp:172)
void KDockWidget::mousePressRightEvent(QMouseEvent *e)
{
int x = e->x() + this->x();
int y = e->y() + this->y();
setShowHideText();
popup_m->popup(QPoint(x, y));
popup_m->exec();
}
kmix'KDockWidget::setShowHideText() (./kdemultimedia/kmix/docking.cpp:183)
void KDockWidget::setShowHideText()
{
if (showHidePopmenuEntry != -1) {
// set the show/hide Text appropiate
QString text;
if ( ktmw->isVisible() )
text = i18n("&Minimize");
else
text = i18n("&Restore");
popup_m->changeItem(text, showHidePopmenuEntry);
}
}
kmix'KDockWidget::toggle_window_state() (./kdemultimedia/kmix/docking.cpp:196)
void KDockWidget::toggle_window_state()
{
if(ktmw != 0) {
if (ktmw->isVisible()) {
// --- Toplevel was visible => hide it
debug("Hide\n");
ktmw->hide();
//ktmw->recreate(0, 0, QPoint(x(), y()), FALSE);
//kapp->setTopWidget( this ); // !!! esken: Is this line needed?
}
else {
// --- Toplevel was invisible => show it again
debug("Show\n");
ktmw->show();
//KWM::activate(ktmw->winId());
}
}
}
kmix'KDockWidget::emit_quit() (./kdemultimedia/kmix/docking.cpp:217)
void KDockWidget::emit_quit()
{
emit quit_clicked();
}