summaryrefslogtreecommitdiffabout
path: root/korganizer/timespanview.cpp
Side-by-side diff
Diffstat (limited to 'korganizer/timespanview.cpp') (more/less context) (show whitespace changes)
-rw-r--r--korganizer/timespanview.cpp158
1 files changed, 158 insertions, 0 deletions
diff --git a/korganizer/timespanview.cpp b/korganizer/timespanview.cpp
new file mode 100644
index 0000000..f8314e7
--- a/dev/null
+++ b/korganizer/timespanview.cpp
@@ -0,0 +1,158 @@
+
+#ifndef DESKTOP_VERSION
+#include <qksplitter.h>
+#else
+#include <qsplitter.h>
+#endif
+#include <qlistview.h>
+#include <qlayout.h>
+#include <qheader.h>
+#include <qpushbutton.h>
+
+#include <klocale.h>
+#include <kdebug.h>
+
+#include "lineview.h"
+#include "timeline.h"
+
+#include "timespanview.h"
+#include "timespanview.moc"
+
+
+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
+ 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 );
+}