summaryrefslogtreecommitdiffabout
path: root/korganizer
Side-by-side diff
Diffstat (limited to 'korganizer') (more/less context) (show whitespace changes)
-rw-r--r--korganizer/kotodoviewitem.cpp2
-rw-r--r--korganizer/kotodoviewitem.h2
-rw-r--r--korganizer/koviewmanager.cpp2
-rw-r--r--korganizer/searchdialog.cpp22
-rw-r--r--korganizer/timespanview.cpp2
5 files changed, 15 insertions, 15 deletions
diff --git a/korganizer/kotodoviewitem.cpp b/korganizer/kotodoviewitem.cpp
index ead8628..21ecb73 100644
--- a/korganizer/kotodoviewitem.cpp
+++ b/korganizer/kotodoviewitem.cpp
@@ -1,163 +1,163 @@
/*
This file is part of KOrganizer.
Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
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.
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include <klocale.h>
#include <kdebug.h>
#include <qapp.h>
#include <kiconloader.h>
#include "kotodoviewitem.h"
#include "kotodoview.h"
#include "koprefs.h"
KOTodoViewItem::KOTodoViewItem( QListView *parent, Todo *todo, KOTodoView *kotodo)
: QCheckListItem( parent , "", CheckBox ), mTodo( todo ), mTodoView( kotodo )
{
construct();
}
KOTodoViewItem::KOTodoViewItem( KOTodoViewItem *parent, Todo *todo, KOTodoView *kotodo )
: QCheckListItem( parent, "", CheckBox ), mTodo( todo ), mTodoView( kotodo )
{
construct();
}
QString KOTodoViewItem::key(int column,bool) const
{
QMap<int,QString>::ConstIterator it = mKeyMap.find(column);
if (it == mKeyMap.end()) {
return text(column).lower();
} else {
return *it;
}
}
void KOTodoViewItem:: setup()
{
int h = 20;
if ( listView () ) {
QFontMetrics fm ( listView ()->font () );
h = fm.height();
}
setHeight( h );
}
void KOTodoViewItem::setSortKey(int column,const QString &key)
{
mKeyMap.insert(column,key);
}
-#if QT_VERSION >= 300
+#if QT_VERSION >= 0x030000
void KOTodoViewItem::paintBranches(QPainter *p,const QColorGroup & cg,int w,
int y,int h)
{
QListViewItem::paintBranches(p,cg,w,y,h);
}
#else
#endif
void KOTodoViewItem::construct()
{
// qDebug("KOTodoViewItem::construct() ");
m_init = true;
QString keyd = "==";
QString keyt = "==";
QString skeyd = "==";
QString skeyt = "==";
setOn(mTodo->isCompleted());
setText(0,mTodo->summary());
setText(1,QString::number(mTodo->priority()));
setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete())));
if (mTodo->percentComplete()<100) {
if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
else setSortKey(2,QString::number(mTodo->percentComplete()));
}
else {
if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
else setSortKey(2,QString::number(99));
}
if (mTodo->hasDueDate()) {
setText(3, mTodo->dtDueDateStr());
QDate d = mTodo->dtDue().date();
keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
// setSortKey(3,keyd);
if (mTodo->doesFloat()) {
setText(4,"");
}
else {
setText(4,mTodo->dtDueTimeStr());
QTime t = mTodo->dtDue().time();
keyt.sprintf("%02d%02d",t.hour(),t.minute());
//setSortKey(4,keyt);
}
} else {
setText(3,"");
setText(4,"");
}
setSortKey(3,keyd);
setSortKey(4,keyt);
if (mTodo->isCompleted()) setSortKey(1,"6" + QString::number(mTodo->priority())+keyd+keyt);
else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt);
if (mTodo->hasStartDate()) {
setText(5, mTodo->dtStartDateStr());
QDate d = mTodo->dtStart().date();
skeyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
if (mTodo->doesFloat()) {
setText(6,"");
}
else {
setText(6,mTodo->dtStartTimeStr());
QTime t = mTodo->dtStart().time();
skeyt.sprintf("%02d%02d",t.hour(),t.minute());
}
} else {
setText(5,"");
setText(6,"");
}
setSortKey(5,skeyd);
setSortKey(6,skeyt);
setText(7,mTodo->cancelled() ? i18n("Yes") : i18n("No"));
setText(8,mTodo->categoriesStr());
#if 0
// Find sort id in description. It's the text behind the last '#' character
// found in the description. White spaces are removed from beginning and end
// of sort id.
int pos = mTodo->description().findRev('#');
if (pos < 0) {
setText(6,"");
} else {
QString str = mTodo->description().mid(pos+1);
str.stripWhiteSpace();
setText(6,str);
}
#endif
m_known = false;
m_init = false;
diff --git a/korganizer/kotodoviewitem.h b/korganizer/kotodoviewitem.h
index 74dbe98..bd024c8 100644
--- a/korganizer/kotodoviewitem.h
+++ b/korganizer/kotodoviewitem.h
@@ -1,93 +1,93 @@
/*
This file is part of KOrganizer.
Copyright (c) 2000, 2001 Cornelius Schumacher <schumacher@kde.org>
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.
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef KOTODOVIEWITEM_H
#define KOTODOVIEWITEM_H
#include <qfont.h>
#include <qfontmetrics.h>
#include <qlineedit.h>
#include <qptrlist.h>
#include <qstrlist.h>
#include <qlistbox.h>
#include <qpopupmenu.h>
#include <qlabel.h>
#include <qmap.h>
#include <qlistview.h>
#include <qpainter.h>
#include <libkcal/calendar.h>
#include <libkcal/todo.h>
using namespace KCal;
class KOTodoView;
/**
This class provides a way of displaying a single Event of Todo-Type in a
KTodoView.
@author Cornelius Schumacher <schumacher@kde.org>
@see KOTodoView
*/
class KOTodoViewItem : public QCheckListItem
{
public:
/**
Constructor.
@param parent is the list view to which this item belongs.
@param ev is the event to have the item display information for.
*/
KOTodoViewItem(QListView *parent, Todo *todo, KOTodoView *kotodo);
KOTodoViewItem(KOTodoViewItem *parent, Todo *todo, KOTodoView *kotodo);
//~KOTodoViewItem() { qDebug("~KOTodoViewItem() %s ", text(0).latin1() );}
void construct();
Todo *todo() { return mTodo; }
QString key(int, bool) const;
void setSortKey(int column,const QString &key);
bool isAlternate();
virtual void paintCell(QPainter *p, const QColorGroup &cg,
int column, int width, int alignment);
virtual void setup();
protected:
-#if QT_VERSION >= 300
+#if QT_VERSION >= 0x030000
void paintBranches(QPainter *p,const QColorGroup & cg,int w,int y,int h);
#else
#endif
virtual void stateChange(bool);
void setMyPixmap();
private:
Todo *mTodo;
KOTodoView *mTodoView;
QMap<int,QString> mKeyMap;
uint m_odd : 1;
uint m_known : 1;
uint m_unused : 30;
bool m_init;
};
#endif
diff --git a/korganizer/koviewmanager.cpp b/korganizer/koviewmanager.cpp
index f6b7718..e255b83 100644
--- a/korganizer/koviewmanager.cpp
+++ b/korganizer/koviewmanager.cpp
@@ -482,107 +482,107 @@ void KOViewManager::showTodoView()
// SIGNALS/SLOTS FOR TODO VIEW
connect( mTodoView, SIGNAL( newTodoSignal() ),
mMainView, SLOT( newTodo() ) );
connect( mTodoView, SIGNAL( newSubTodoSignal( Todo * ) ),
mMainView, SLOT( newSubTodo( Todo *) ) );
connect( mTodoView, SIGNAL( showTodoSignal( Todo *) ),
mMainView, SLOT( showTodo( Todo * ) ) );
connect( mTodoView, SIGNAL( editTodoSignal( Todo * ) ),
mMainView, SLOT( editTodo( Todo * ) ) );
connect( mTodoView, SIGNAL( deleteTodoSignal( Todo * ) ),
mMainView, SLOT( deleteTodo( Todo * ) ) );
connect( mTodoView, SIGNAL( purgeCompletedSignal() ),
mMainView, SLOT( purgeCompleted() ) );
connect( mTodoView, SIGNAL( incidenceSelected( Incidence * ) ),
mMainView, SLOT( processMainViewSelection( Incidence * ) ) );
connect( mMainView, SIGNAL( configChanged() ), mTodoView,
SLOT( updateConfig() ) );
connect( mMainView, SIGNAL( todoModified( Todo *, int )), mTodoView,
SLOT( updateTodo( Todo *, int ) ) );
connect( mTodoView, SIGNAL( todoModifiedSignal( Todo *, int ) ),
mMainView, SIGNAL ( todoModified( Todo *, int ) ) );
connect( mTodoView, SIGNAL( cloneTodoSignal( Incidence * ) ),
mMainView, SLOT ( cloneIncidence( Incidence * ) ) );
connect( mTodoView, SIGNAL( cancelTodoSignal( Incidence * ) ),
mMainView, SLOT ( cancelIncidence( Incidence * ) ) );
connect( mTodoView, SIGNAL( unparentTodoSignal( Todo * ) ),
mMainView, SLOT ( todo_unsub( Todo * ) ) );
connect( mTodoView, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ),
mMainView, SLOT ( todo_resub( Todo *, Todo *) ) );
connect( mTodoView, SIGNAL( moveTodoSignal( Incidence * ) ),
mMainView, SLOT ( moveIncidence( Incidence * ) ) );
connect( mTodoView, SIGNAL( beamTodoSignal( Incidence * ) ),
mMainView, SLOT ( beamIncidence( Incidence * ) ) );
KConfig *config = KOGlobals::config();
mTodoView->restoreLayout(config,"Todo View");
mTodoView->setNavigator( mMainView->dateNavigator() );
}
globalFlagBlockAgenda = 1;
showView( mTodoView, true );
}
void KOViewManager::showJournalView()
{
//mFlagShowNextxDays = false;
if (!mJournalView) {
mJournalView = new KOJournalView(mMainView->calendar(),mMainView->viewStack(),
"KOViewManager::JournalView");
connect( mMainView, SIGNAL( configChanged() ), mJournalView,
SLOT( updateConfig() ) );
connect(mJournalView, SIGNAL(deleteJournal(Journal *) ), mMainView,SLOT(deleteJournal(Journal *)) );
addView(mJournalView);
}
showView(mJournalView);
}
void KOViewManager::showTimeSpanView()
{
//mFlagShowNextxDays = false;
if (!mTimeSpanView) {
mTimeSpanView = new KOTimeSpanView(mMainView->calendar(),mMainView->viewStack(),
"KOViewManager::TimeSpanView");
addView(mTimeSpanView);
mTimeSpanView->readSettings();
}
showView(mTimeSpanView);
}
Incidence *KOViewManager::currentSelection()
{
if (!mCurrentView) return 0;
if ( mCurrentView == mListView ) {
if ( mListView->currentItem() )
return mListView->currentItem();
}
return mCurrentView->selectedIncidences().first();
}
QDate KOViewManager::currentSelectionDate()
{
QDate qd;
if (mCurrentView) {
DateList qvl = mCurrentView->selectedDates();
if (!qvl.isEmpty()) qd = qvl.first();
}
return qd;
}
void KOViewManager::addView(KOrg::BaseView *view)
{
-#if QT_VERSION >= 300
+#if QT_VERSION >= 0x030000
mMainView->viewStack()->addWidget( view );
#else
mMainView->viewStack()->addWidget( view, 1 );
#endif
}
void KOViewManager::setDocumentId( const QString &id )
{
if (mTodoView) mTodoView->setDocumentId( id );
}
diff --git a/korganizer/searchdialog.cpp b/korganizer/searchdialog.cpp
index 72ee1d2..39966b5 100644
--- a/korganizer/searchdialog.cpp
+++ b/korganizer/searchdialog.cpp
@@ -141,257 +141,257 @@ SearchDialog::~SearchDialog()
}
void SearchDialog::accept()
{
doSearch();
}
void SearchDialog::updateList()
{
//listView->updateList();
if ( isVisible() ) {
updateView();
//qDebug("SearchDialog::updated ");
}
else {
listView->clear();
//qDebug("SearchDialog::cleared ");
}
}
void SearchDialog::searchTextChanged( const QString &_text )
{
enableButton( KDialogBase::User1, !_text.isEmpty() );
}
void SearchDialog::doSearch()
{
QRegExp re;
re.setWildcard(true); // most people understand these better.
re.setCaseSensitive(false);
re.setPattern(searchEdit->text());
if (!re.isValid() ) {
KMessageBox::sorry(this,
i18n("Invalid search expression,\ncannot perform "
"the search.\nPlease enter a search expression\n"
"using the wildcard characters\n '*' and '?'"
"where needed."));
return;
}
search(re);
listView->setStartDate( mStartDate->date() );
listView->showEvents(mMatchedEvents);
listView->addTodos(mMatchedTodos);
listView->addJournals(mMatchedJournals);
if (mMatchedEvents.count() + mMatchedJournals.count() + mMatchedTodos.count() == 0) {
KMessageBox::information(this,
i18n("No event/todo were found matching\nyour search expression.\nUse the wildcard characters\n ' * ' and ' ? ' where needed."));
#ifndef DESKTOP_VERSION
setCaption(i18n("Click OK to search ->"));
#else
setCaption(i18n("KO/Pi Find "));
#endif
} else {
QString mess;
mess = mess.sprintf( i18n("%d item(s) found."), mMatchedEvents.count()+ mMatchedJournals.count() + mMatchedTodos.count() );
setCaption( i18n("KO/Pi Find: ") + mess);
}
}
void SearchDialog::updateConfig()
{
listView->updateConfig();
}
void SearchDialog::updateView()
{
QRegExp re;
re.setWildcard(true); // most people understand these better.
re.setCaseSensitive(false);
re.setPattern(searchEdit->text());
if (re.isValid()) {
search(re);
} else {
mMatchedEvents.clear();
mMatchedTodos.clear();
mMatchedJournals.clear();
}
listView->setStartDate( mStartDate->date() );
listView->showEvents(mMatchedEvents);
listView->addTodos(mMatchedTodos);
listView->addJournals(mMatchedJournals);
}
void SearchDialog::search(const QRegExp &re)
{
QPtrList<Event> events = mCalendar->events( mStartDate->date(),
mEndDate->date(),
false /*mInclusiveCheck->isChecked()*/ );
mMatchedEvents.clear();
if ( mSearchEvent->isChecked() ) {
Event *ev;
for(ev=events.first();ev;ev=events.next()) {
if (mSummaryCheck->isChecked()) {
-#if QT_VERSION >= 300
+#if QT_VERSION >= 0x030000
if (re.search(ev->summary()) != -1)
#else
if (re.match(ev->summary()) != -1)
#endif
{
mMatchedEvents.append(ev);
continue;
}
}
if (mDescriptionCheck->isChecked()) {
-#if QT_VERSION >= 300
+#if QT_VERSION >= 0x030000
if (re.search(ev->description()) != -1)
#else
if (re.match(ev->description()) != -1)
#endif
{
mMatchedEvents.append(ev);
continue;
}
}
if (mCategoryCheck->isChecked()) {
-#if QT_VERSION >= 300
+#if QT_VERSION >= 0x030000
if (re.search(ev->categoriesStr()) != -1)
#else
if (re.match(ev->categoriesStr()) != -1)
#endif
{
mMatchedEvents.append(ev);
continue;
}
}
if ( mSearchAName->isChecked() || mSearchAEmail->isChecked() ) {
QPtrList<Attendee> tmpAList = ev->attendees();
Attendee *a;
for (a = tmpAList.first(); a; a = tmpAList.next()) {
if (mSearchAName->isChecked()) {
-#if QT_VERSION >= 300
+#if QT_VERSION >= 0x030000
if (re.search(a->name()) != -1)
#else
if (re.match(a->name()) != -1)
#endif
{
mMatchedEvents.append(ev);
break;
}
}
if (mSearchAEmail->isChecked()) {
-#if QT_VERSION >= 300
+#if QT_VERSION >= 0x030000
if (re.search(a->email()) != -1)
#else
if (re.match(a->email()) != -1)
#endif
{
mMatchedEvents.append(ev);
break;
}
}
}
}
}
}
QPtrList<Todo> todos = mCalendar->todos( );
mMatchedTodos.clear();
if ( mSearchTodo->isChecked() ) {
Todo *tod;
for(tod=todos.first();tod;tod=todos.next()) {
if (mSummaryCheck->isChecked()) {
-#if QT_VERSION >= 300
+#if QT_VERSION >= 0x030000
if (re.search(tod->summary()) != -1)
#else
if (re.match(tod->summary()) != -1)
#endif
{
mMatchedTodos.append(tod);
continue;
}
}
if (mDescriptionCheck->isChecked()) {
-#if QT_VERSION >= 300
+#if QT_VERSION >= 0x030000
if (re.search(tod->description()) != -1)
#else
if (re.match(tod->description()) != -1)
#endif
{
mMatchedTodos.append(tod);
continue;
}
}
if (mCategoryCheck->isChecked()) {
-#if QT_VERSION >= 300
+#if QT_VERSION >= 0x030000
if (re.search(tod->categoriesStr()) != -1)
#else
if (re.match(tod->categoriesStr()) != -1)
#endif
{
mMatchedTodos.append(tod);
continue;
}
}
if ( mSearchAName->isChecked() || mSearchAEmail->isChecked() ) {
QPtrList<Attendee> tmpAList = tod->attendees();
Attendee *a;
for (a = tmpAList.first(); a; a = tmpAList.next()) {
if (mSearchAName->isChecked()) {
-#if QT_VERSION >= 300
+#if QT_VERSION >= 0x030000
if (re.search(a->name()) != -1)
#else
if (re.match(a->name()) != -1)
#endif
{
mMatchedTodos.append(tod);
break;
}
}
if (mSearchAEmail->isChecked()) {
-#if QT_VERSION >= 300
+#if QT_VERSION >= 0x030000
if (re.search(a->email()) != -1)
#else
if (re.match(a->email()) != -1)
#endif
{
mMatchedTodos.append(tod);
break;
}
}
}
}
}
}
mMatchedJournals.clear();
if (mSearchJournal->isChecked() ) {
QPtrList<Journal> journals = mCalendar->journals( );
Journal* journ;
for(journ=journals.first();journ;journ=journals.next()) {
if ( journ->dtStart().date() <= mEndDate->date()
&&journ->dtStart().date() >= mStartDate->date()) {
-#if QT_VERSION >= 300
+#if QT_VERSION >= 0x030000
if (re.search(journ->description()) != -1)
#else
if (re.match(journ->description()) != -1)
#endif
{
mMatchedJournals.append(journ);
continue;
}
}
}
}
}
/*
void SearchDialog::keyPressEvent ( QKeyEvent *e)
{
e->ignore();
}
*/
//mMatchedJournals;
diff --git a/korganizer/timespanview.cpp b/korganizer/timespanview.cpp
index 67a3811..df8ff88 100644
--- a/korganizer/timespanview.cpp
+++ b/korganizer/timespanview.cpp
@@ -12,146 +12,146 @@
#include <klocale.h>
#include <kdebug.h>
#include "lineview.h"
#include "timeline.h"
#include "timespanview.h"
TimeSpanView::TimeSpanView( QWidget *parent, const char *name ) :
QWidget( parent, name )
{
QBoxLayout *topLayout = new QVBoxLayout( this );
#ifndef DESKTOP_VERSION
mSplitter = new QKSplitter( this );
#else
mSplitter = new QSplitter( this );
#endif
topLayout->addWidget( mSplitter );
mList = new QListView( mSplitter );
mList->addColumn( i18n("Summary") );
QWidget *rightPane = new QWidget( mSplitter );
QBoxLayout *rightPaneLayout = new QVBoxLayout( rightPane );
mTimeLine = new TimeLine( rightPane );
mTimeLine->setFixedHeight( mList->header()->height() );
rightPaneLayout->addWidget( mTimeLine );
mLineView = new LineView( rightPane );
rightPaneLayout->addWidget( mLineView );
QBoxLayout *buttonLayout = new QHBoxLayout( rightPaneLayout );
QPushButton *zoomInButton = new QPushButton( i18n("Zoom In"), rightPane );
connect( zoomInButton, SIGNAL( clicked() ), SLOT( zoomIn() ) );
buttonLayout->addWidget( zoomInButton );
QPushButton *zoomOutButton = new QPushButton( i18n("Zoom Out"), rightPane );
connect( zoomOutButton, SIGNAL( clicked() ), SLOT( zoomOut() ) );
buttonLayout->addWidget( zoomOutButton );
QPushButton *centerButton = new QPushButton( i18n("Center View"), rightPane );
connect( centerButton, SIGNAL( clicked() ), SLOT( centerView() ) );
buttonLayout->addWidget( centerButton );
connect(mLineView->horizontalScrollBar(),SIGNAL(valueChanged(int)),
mTimeLine,SLOT(setContentsPos(int)));
}
TimeSpanView::~TimeSpanView()
{
}
QValueList<int> TimeSpanView::splitterSizes()
{
return mSplitter->sizes();
}
void TimeSpanView::setSplitterSizes( QValueList<int> sizes )
{
mSplitter->setSizes( sizes );
}
void TimeSpanView::addItem( KCal::Event *event )
{
new QListViewItem( mList, event->summary() );
QDateTime startDt = event->dtStart();
QDateTime endDt = event->dtEnd();
// kdDebug() << "TimeSpanView::addItem(): start: " << startDt.toString()
// << " end: " << endDt.toString() << endl;
int startSecs = mStartDate.secsTo( startDt );
int durationSecs = startDt.secsTo( endDt );
// kdDebug() << "--- startSecs: " << startSecs << " dur: " << durationSecs << endl;
int startX = mStartDate.secsTo( startDt ) / mSecsPerPixel;
int endX = startX + startDt.secsTo( endDt ) / mSecsPerPixel;
// kdDebug() << "TimeSpanView::addItem(): s: " << startX << " e: " << endX << endl;
mLineView->addLine( startX, endX );
}
void TimeSpanView::clear()
{
mList->clear();
mLineView->clear();
}
void TimeSpanView::updateView()
{
-#if QT_VERSION >= 300
+#if QT_VERSION >= 0x030000
mLineView->updateContents();
mTimeLine->updateContents();
#else
#endif
}
void TimeSpanView::setDateRange( const QDateTime &start, const QDateTime &end )
{
mStartDate = start;
mEndDate = end;
mTimeLine->setDateRange( start, end );
mSecsPerPixel = mStartDate.secsTo( mEndDate ) / mLineView->pixelWidth();
}
QDateTime TimeSpanView::startDateTime()
{
return mStartDate;
}
QDateTime TimeSpanView::endDateTime()
{
return mEndDate;
}
void TimeSpanView::zoomIn()
{
int span = mStartDate.daysTo( mEndDate );
setDateRange( mStartDate.addDays( span / 4 ), mEndDate.addDays( span / -4 ) );
emit dateRangeChanged();
}
void TimeSpanView::zoomOut()
{
int span = mStartDate.daysTo( mEndDate );
setDateRange( mStartDate.addDays( span / -4 ), mEndDate.addDays( span / 4 ) );
emit dateRangeChanged();
}
void TimeSpanView::centerView()
{
QScrollBar *scrollBar = mLineView->horizontalScrollBar();
int min = scrollBar->minValue();
int max = scrollBar->maxValue();
scrollBar->setValue( min + (max-min) / 2 );
}