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.
kvirc/src/modules/notifier/notifierwindowtabs.h

265 lines
7.2 KiB

#ifndef _KVINOTIFIERWINDOWTABS_H_
#define _KVINOTIFIERWINDOWTABS_H_
//=============================================================================
//
// File : kvinotifierwindowtabs.h
// Created on dom 02 gen 2005 15:30:50 by Iacopo Palazzi
//
// This file is part of the KVIrc distribution
// Copyright (C) 2005 Iacopo Palazzi < iakko(at)siena.linux.it >
//
// 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 opinion) 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.
//
//=============================================================================
#include <tqfont.h>
#include <tqmap.h>
#include <tqobject.h>
#include <tqpixmap.h>
#include <tqpoint.h>
#include <tqrect.h>
#include "kvi_settings.h"
#include "kvi_pointerlist.h"
#include "notifiersettings.h"
#include "notifierwindow.h"
#include "notifiermessage.h"
class TQPainter;
class KviWindow;
class KviNotifierWindowTab;
typedef struct wndTabPair_s {
KviNotifierWindowTab * pTab;
KviWindow * pWnd;
} wndTabPair;
class KviNotifierWindowTab : public TQObject // this class defines an object for every single tab about the tabs area
{
Q_OBJECT
public:
KviNotifierWindowTab(KviWindow *, TQString);
~KviNotifierWindowTab();
// ================================
// Put members declaration below...
// ================================
private:
bool m_bFocused;
TQColor m_cLabel;
TQColor m_clrHighlightedLabel;
TQColor m_clrNormalLabel;
TQColor m_clrChangedLabel;
TQRect m_rect;
TQString m_label;
KviPointerList<KviNotifierMessage> * m_pMessageList;
KviWindow * m_pWnd;
KviNotifierMessage * m_pCurrentMessage;
TabState m_eState;
public:
protected:
// ================================
// Put methods declaration below...
// ================================
private:
private slots:
void labelChanged();
void closeMe();
public:
bool focused() { return m_bFocused; };
int countMessage() { return m_pMessageList->count(); };
int width(bool b = false);
void appendMessage(KviNotifierMessage * m);
void setCurrentMessage(KviNotifierMessage * m) { m_pCurrentMessage = m; };
void setFocused(bool b = true);
void setLastMessageAsCurrent();
void setNextMessageAsCurrent();
void setPrevMessageAsCurrent();
void setState(TabState state);
void setRect(int x, int y, int w, int h) { m_rect.setX(x); m_rect.setY(y); m_rect.setWidth(w); m_rect.setHeight(h); };
TQColor labelColor() {return m_cLabel; }
TQRect rect() { return m_rect; };
TQString label() { return m_label; };
KviNotifierMessage * currentMessage() { return m_pCurrentMessage; };
KviPointerList<KviNotifierMessage> * messageList() { return m_pMessageList; };
KviWindow * window() { return m_pWnd; };
KviWindow * wnd() {return m_pWnd; };
TabState state() { return m_eState; };
protected:
};
//####################################################################################################
//## Tabs Manager
//####################################################################################################
class KviNotifierWindowTabs // this class defines the tabs area
{
public:
KviNotifierWindowTabs(TQRect r);
~KviNotifierWindowTabs();
// ================================
// Put members declaration below...
// ================================
private:
TQRect m_rct;
TQPoint m_pnt;
TQMap<KviWindow *, KviNotifierWindowTab *> m_tabMap;
KviPointerList<KviNotifierWindowTab> m_tabPtrList;
KviPointerList<KviNotifierWindowTab> m_lastVisitedTabPtrList;
TQFont * m_pFocusedFont;
TQFont * m_pUnfocusedFont;
KviNotifierWindowTab * m_pTabFocused;
KviWindow * m_pWndTabFocused;
TQRect m_rctNextIcon;
TQRect m_rctPrevIcon;
TQRect m_rctCloseTabIcon;
TQRect m_rctCloseTabIconHotArea;
TQRect m_rctTabs;
TQPainter * m_pPainter;
TQPixmap * m_pPixmap;
TQPixmap m_pixDX;
TQPixmap m_pixSX;
TQPixmap m_pixBKG;
TQPixmap m_pixSXFocused;
TQPixmap m_pixDXFocused;
TQPixmap m_pixBKGFocused;
TQPixmap m_pixSXUnfocused;
TQPixmap m_pixDXUnfocused;
TQPixmap m_pixBKGUnfocused;
TQPixmap m_pixIconTabPrev;
TQPixmap m_pixIconTabPrev_out;
TQPixmap m_pixIconTabPrev_over;
TQPixmap m_pixIconTabPrev_clicked;
TQPixmap m_pixIconTabNext;
TQPixmap m_pixIconTabNext_out;
TQPixmap m_pixIconTabNext_over;
TQPixmap m_pixIconTabNext_clicked;
TQPixmap m_pixIconCloseTab;
TQPixmap m_pixIconCloseTab_off;
TQPixmap m_pixIconCloseTab_on;
TQPixmap m_pixIconCloseTab_clicked;
int m_closeTabIconState;
int m_iTabToStartFrom;
bool m_bIsOverLeftBound;
bool m_bIsOverRightBound;
bool m_bNeedToRedraw;
public:
protected:
// ================================
// Put methods declaration below...
// ================================
private:
void initConfig();
void loadImages();
public:
void addMessage(KviWindow *, KviNotifierMessage *);
void closeCurrentTab();
void closeTab(KviWindow * pWnd); // referes to void closeTab(KviWindow * pWnd, KviNotifierWindowTab * pTab);
void closeTab(KviNotifierWindowTab * pTab); // referes to void closeTab(KviWindow * pWnd, KviNotifierWindowTab * pTab);
void closeTab(KviWindow * pWnd, KviNotifierWindowTab * pTab);
void draw(TQPainter *);
void needToRedraw() { m_bNeedToRedraw = true; };
void markAllMessagesAsHistoric();
void mouseMoveEvent(TQMouseEvent * e);
void mousePressEvent(TQMouseEvent * e);
void mouseReleaseEvent(TQMouseEvent * e);
void next();
void prev();
void recalculatePositions();
void resetIcons();
void resize(TQRect);
void scrollTabsLeft();
void scrollTabsRight();
void setCloseTabIcon(int state);
void setCurrentMessage(KviNotifierMessage * m) { if(m_pTabFocused)m_pTabFocused->setCurrentMessage(m); };
void setFocusOn(KviNotifierWindowTab *);
void setPoint(int x, int y) { m_pnt.setX(x); m_pnt.setY(y); };
void setWidth(int w);
void touch() { m_bNeedToRedraw = true; };
int baseLine() { return (y()+height()); };
int closeTabIconState() { return m_closeTabIconState; };
int count() { return (int)m_tabMap.count(); };
int height() { return m_rct.height(); };
int width() { return m_rct.width(); };
int x() { return m_pnt.x(); };
int y() { return m_pnt.y(); };
TQFont * fontFocused() { return m_pFocusedFont; };
TQFont * fontUnfocused() { return m_pUnfocusedFont; };
TQPixmap * tabFocusedPixSx() {return &m_pixSXFocused; };
TQPixmap * tabFocusedPixDx() {return &m_pixDXFocused; };
TQPixmap * tabUnfocusedPixSx() {return &m_pixSXUnfocused; };
TQPixmap * tabUnfocusedPixDx() {return &m_pixDXUnfocused; };
TQRect rect() {return m_rct;};
TQRect rctCloseTabIconHotArea() {return m_rctCloseTabIconHotArea; };
KviNotifierWindowTab * currentTab() { return m_pTabFocused; };
KviNotifierMessage * currentMessage() { return m_pTabFocused ? m_pTabFocused->currentMessage() : 0; };
KviWindow * window() { return m_pTabFocused->wnd(); };
protected:
};
#endif //!_KVINOTIFIERWINDOWTABS_H_