mirror of
https://bitbucket.org/smil3y/kde-playground.git
synced 2025-02-24 10:52:52 +00:00
130 lines
4 KiB
C++
130 lines
4 KiB
C++
/*
|
|
Copyright (C) 2010 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.net
|
|
Author: Kevin Krammer, krake@kdab.com
|
|
|
|
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.,
|
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#include "mainwindow.h"
|
|
|
|
#include "settings.h"
|
|
|
|
#include "agenda.h"
|
|
#include "agendaview.h"
|
|
#include "month/monthview.h"
|
|
#include "multiagenda/multiagendaview.h"
|
|
#include "timeline/timelineview.h"
|
|
#include "prefs.h"
|
|
|
|
#include <calendarsupport/collectionselection.h>
|
|
|
|
#include <Akonadi/Calendar/IncidenceChanger>
|
|
#include <KCalCore/Event>
|
|
|
|
#include <Akonadi/Collection>
|
|
#include <Akonadi/Control>
|
|
|
|
#include <KCheckableProxyModel>
|
|
|
|
using namespace Akonadi;
|
|
using namespace CalendarSupport;
|
|
using namespace EventViews;
|
|
|
|
MainWindow::MainWindow( const QStringList &viewNames )
|
|
: QMainWindow(),
|
|
mViewNames( viewNames ),
|
|
mIncidenceChanger( 0 ),
|
|
mSettings( 0 ),
|
|
mViewPreferences( 0 )
|
|
{
|
|
mUi.setupUi( this );
|
|
mUi.tabWidget->clear();
|
|
|
|
connect( mUi.addViewMenu, SIGNAL(triggered(QAction*)), this, SLOT(addViewTriggered(QAction*)) );
|
|
|
|
Akonadi::Control::widgetNeedsAkonadi( this );
|
|
|
|
setGeometry( 0, 0, 800, 600 );
|
|
QMetaObject::invokeMethod( this, "delayedInit", Qt::QueuedConnection );
|
|
}
|
|
|
|
MainWindow::~MainWindow()
|
|
{
|
|
delete mViewPreferences;
|
|
delete mSettings;
|
|
}
|
|
|
|
void MainWindow::addView( const QString &viewName )
|
|
{
|
|
EventView *eventView = 0;
|
|
|
|
const KDateTime start = KDateTime::currentLocalDateTime().addDays( -1 );
|
|
const KDateTime end = KDateTime::currentLocalDateTime().addDays( 1 );
|
|
|
|
if ( viewName == QLatin1String( "agenda" ) ) {
|
|
eventView = new AgendaView( start.date(), end.date(), true, false, this );
|
|
} else if ( viewName == QLatin1String( "multiagenda" ) ) {
|
|
eventView = new MultiAgendaView( this );
|
|
} else if ( viewName == QLatin1String( "month" ) ) {
|
|
eventView = new MonthView( MonthView::Visible, this );
|
|
} else if ( viewName == QLatin1String( "timeline" ) ) {
|
|
eventView = new TimelineView( this );
|
|
}
|
|
|
|
if ( eventView ) {
|
|
eventView->setPreferences( *mViewPreferences );
|
|
eventView->setCalendar( mCalendar );
|
|
eventView->setIncidenceChanger( mIncidenceChanger );
|
|
eventView->setDateRange( start, end );
|
|
eventView->updateConfig();
|
|
mUi.tabWidget->addTab( eventView, viewName );
|
|
} else {
|
|
kError() << "Cannot create view" << viewName;
|
|
}
|
|
}
|
|
|
|
void MainWindow::delayedInit()
|
|
{
|
|
// create our application settings
|
|
mSettings = new Settings;
|
|
|
|
// create view preferences so that matching values are retrieved from
|
|
// application settings
|
|
mViewPreferences = new PrefsPtr( new Prefs( mSettings ) );
|
|
|
|
mCalendar = Akonadi::ETMCalendar::Ptr( new Akonadi::ETMCalendar() );
|
|
KCheckableProxyModel *checkableProxy = mCalendar->checkableProxyModel();
|
|
QItemSelectionModel *selectionModel = checkableProxy->selectionModel();
|
|
|
|
CalendarSupport::CollectionSelection *collectionSelection = new CalendarSupport::CollectionSelection( selectionModel );
|
|
EventViews::EventView::setGlobalCollectionSelection( collectionSelection );
|
|
|
|
mIncidenceChanger = new IncidenceChanger( this );
|
|
mCalendar->setCollectionFilteringEnabled( false );
|
|
|
|
Q_FOREACH( const QString &viewName, mViewNames ) {
|
|
addView( viewName );
|
|
}
|
|
}
|
|
|
|
void MainWindow::addViewTriggered( QAction *action )
|
|
{
|
|
QString viewName = action->text().toLower();
|
|
viewName.remove( QLatin1Char( '&' ) );
|
|
addView( viewName );
|
|
}
|
|
|
|
|
|
// kate: space-indent on; indent-width 2; replace-tabs on;
|