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.
150 lines
3.7 KiB
150 lines
3.7 KiB
/*
|
|
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.
|
|
*/
|
|
|
|
/*
|
|
Copyright (C) 2005 Francois Chazal <neptune3k@free.fr>
|
|
Copyright (C) 2006-2007 Eike Hein <hein@kde.org>
|
|
*/
|
|
|
|
|
|
#ifndef TABBED_WIDGET_H
|
|
#define TABBED_WIDGET_H
|
|
|
|
|
|
#include "translucent_widget.h"
|
|
|
|
#include <qfont.h>
|
|
#include <qcolor.h>
|
|
#include <qpoint.h>
|
|
#include <qpixmap.h>
|
|
#include <qpainter.h>
|
|
#include <qlineedit.h>
|
|
#include <qvaluelist.h>
|
|
#include <qfontmetrics.h>
|
|
|
|
#include <klocale.h>
|
|
#include <krootpixmap.h>
|
|
#include <kinputdialog.h>
|
|
|
|
|
|
class KPopupMenu;
|
|
|
|
class TabbedWidget : public TranslucentWidget
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit TabbedWidget(QWidget* parent = 0, const char* name = 0, bool translucency = false);
|
|
~TabbedWidget();
|
|
|
|
int pressedPosition();
|
|
void resetPressedPosition() { pressed_position = -1; }
|
|
|
|
void addItem(int session_id);
|
|
int removeItem(int session_id);
|
|
|
|
int tabPositionForSessionId(int session_id);
|
|
int sessionIdForTabPosition(int position);
|
|
|
|
void selectItem(int session_id);
|
|
void selectPosition(int position);
|
|
|
|
void selectNextItem();
|
|
void selectPreviousItem();
|
|
|
|
void moveItemLeft();
|
|
void moveItemLeft(int position);
|
|
|
|
void moveItemRight();
|
|
void moveItemRight(int position);
|
|
|
|
const QString itemName(int session_id);
|
|
void renameItem(int session_id, const QString& name);
|
|
|
|
void interactiveRename();
|
|
void interactiveRename(int position);
|
|
|
|
void setFontColor(const QColor& color);
|
|
void setBackgroundPixmap(const QString& path);
|
|
void setSeparatorPixmap(const QString& path);
|
|
|
|
void setUnselectedPixmap(const QString& path);
|
|
|
|
void setSelectedPixmap(const QString& path);
|
|
void setSelectedLeftPixmap(const QString& path);
|
|
void setSelectedRightPixmap(const QString& path);
|
|
|
|
void refreshBuffer();
|
|
|
|
|
|
signals:
|
|
void addItem();
|
|
void itemSelected(int session_id);
|
|
|
|
|
|
protected:
|
|
virtual void keyPressEvent(QKeyEvent*);
|
|
|
|
virtual void wheelEvent(QWheelEvent*);
|
|
virtual void mousePressEvent(QMouseEvent*);
|
|
virtual void mouseReleaseEvent(QMouseEvent*);
|
|
virtual void mouseDoubleClickEvent(QMouseEvent*);
|
|
|
|
virtual void leaveEvent(QEvent*);
|
|
|
|
virtual void paintEvent(QPaintEvent*);
|
|
|
|
|
|
private:
|
|
void createContextMenu();
|
|
const int drawButton(int position, QPainter& painter);
|
|
QString defaultTabCaption(int session_id);
|
|
QString lowestAvailableCaption();
|
|
|
|
int current_position;
|
|
bool pressed;
|
|
int pressed_position;
|
|
int edited_position;
|
|
|
|
/* Tabs properties */
|
|
QColor font_color;
|
|
QFont selected_font;
|
|
QFont unselected_font;
|
|
|
|
/* Inline renaming */
|
|
QLineEdit* inline_edit;
|
|
|
|
/* Widget's pixmaps */
|
|
QPixmap background_image;
|
|
|
|
QPixmap separator_image;
|
|
QPixmap unselected_image;
|
|
|
|
QPixmap selected_image;
|
|
QPixmap selected_left_image;
|
|
QPixmap selected_right_image;
|
|
|
|
/* Widget's appearance */
|
|
QPixmap buffer_image;
|
|
QPixmap desktop_image;
|
|
|
|
/* Tabs value lists */
|
|
QValueList<int> items;
|
|
QValueList<int> areas;
|
|
QValueList<QString> captions;
|
|
|
|
KPopupMenu* context_menu;
|
|
|
|
|
|
private slots:
|
|
void slotRenameSelected();
|
|
void slotUpdateBuffer(const QPixmap& pixmap);
|
|
void slotResetEditedPosition();
|
|
};
|
|
|
|
#endif /* TABBED_WIDGET_H */
|