kde-extraapps/kompare/komparepart/komparesplitter.h
2014-11-19 18:58:05 +00:00

121 lines
3.1 KiB
C++

/***************************************************************************
komparesplitter.h
-----------------
begin : Wed Jan 14 2004
Copyright 2004 Jeff Snyder <jeff@caffeinated.me.uk>
Copyright 2007-2011 Kevin Kofler <kevin.kofler@chello.at>
****************************************************************************/
/***************************************************************************
**
** 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.
**
***************************************************************************/
#ifndef _KOMPARESPLITTER_H_
#define _KOMPARESPLITTER_H_
#include <QtGui/QSplitter>
#include "komparemodellist.h"
class QSplitterHandle;
class QTimer;
class QScrollBar;
class QWheelEvent;
class QKeyEvent;
namespace Diff2 {
class DiffModel;
class Difference;
}
class ViewSettings;
class KompareListView;
class KompareConnectWidget;
class KompareSplitter : public QSplitter
{
Q_OBJECT
public:
KompareSplitter(ViewSettings *settings, QWidget *parent);
~KompareSplitter();
signals:
void configChanged();
void scrollViewsToId( int id );
void setXOffset( int x );
void selectionChanged( const Diff2::Difference* diff );
public slots:
void slotScrollToId( int id );
void slotDelayedUpdateScrollBars();
void slotUpdateScrollBars();
void slotDelayedUpdateVScrollValue();
void slotUpdateVScrollValue();
void keyPressEvent( QKeyEvent* e );
void slotApplyDifference( bool apply );
void slotApplyAllDifferences( bool apply );
void slotApplyDifference( const Diff2::Difference* diff, bool apply );
void slotSetSelection( const Diff2::DiffModel* model, const Diff2::Difference* diff );
void slotSetSelection( const Diff2::Difference* diff );
void slotDifferenceClicked( const Diff2::Difference* diff );
void slotConfigChanged();
protected:
void wheelEvent( QWheelEvent* e );
ViewSettings* settings() const { return m_settings; }
protected slots:
void slotDelayedRepaintHandles();
void slotRepaintHandles();
void timerTimeout();
private:
// override from QSplitter
QSplitterHandle* createHandle();
void setCursor( int id, const QCursor& cursor );
void unsetCursor( int id );
protected:
KompareListView* listView( int index );
KompareConnectWidget* connectWidget( int index );
private:
// Scrollbars. all this just for the goddamn scrollbars. i hate them.
int scrollId();
int lineHeight();
int pageSize();
bool needVScrollBar();
int minVScrollId();
int maxVScrollId();
bool needHScrollBar();
int minHScrollId();
int maxHScrollId();
int maxContentsX();
int minVisibleWidth();
QTimer* m_scrollTimer;
bool m_restartTimer;
int m_scrollTo;
ViewSettings* m_settings;
QScrollBar* m_vScroll;
QScrollBar* m_hScroll;
friend class KompareConnectWidgetFrame;
};
#endif //_KOMPARESPLITTER_H_