File indexing completed on 2024-04-28 16:24:37
0001 /* This file is part of the KDE project 0002 * Copyright (C) 2009, 2012 Dag Andersen <danders@get2net.dk> 0003 * 0004 * This library is free software; you can redistribute it and/or 0005 * modify it under the terms of the GNU Library General Public 0006 * License as published by the Free Software Foundation; either 0007 * version 2 of the License, or (at your option) any later version. 0008 * 0009 * This library is distributed in the hope that it will be useful, 0010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0012 * Library General Public License for more details. 0013 * 0014 * You should have received a copy of the GNU Library General Public License 0015 * along with this library; see the file COPYING.LIB. If not, write to 0016 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 0017 * Boston, MA 02110-1301, USA. 0018 */ 0019 0020 // clazy:excludeall=qstring-arg 0021 #include "kptschedulesdocker.h" 0022 0023 #include "kptschedule.h" 0024 #include <kptdebug.h> 0025 0026 #include <KLocalizedString> 0027 0028 #include <QAbstractItemView> 0029 #include <QModelIndex> 0030 #include <QModelIndexList> 0031 #include <QTreeView> 0032 0033 0034 namespace KPlato 0035 { 0036 0037 SchedulesDocker::SchedulesDocker() 0038 { 0039 setWindowTitle(i18n("Schedule Selector")); 0040 m_view = new QTreeView(this); 0041 m_sfModel.setSourceModel(&m_model); 0042 m_view->setModel(&m_sfModel); 0043 m_sfModel.setFilterKeyColumn (ScheduleModel::ScheduleScheduled); 0044 m_sfModel.setFilterRole(Qt::EditRole); 0045 m_sfModel.setFilterFixedString("true"); 0046 m_sfModel.setDynamicSortFilter (true); 0047 0048 for(int c = 1; c < m_model.columnCount(); ++c) { 0049 m_view->setColumnHidden(c, true); 0050 } 0051 m_view->setHeaderHidden(true); 0052 m_view->setSelectionMode(QAbstractItemView::SingleSelection); 0053 m_view->setSelectionBehavior(QAbstractItemView::SelectRows); 0054 0055 setWidget(m_view); 0056 0057 connect(m_view->selectionModel(), &QItemSelectionModel::selectionChanged, this, &SchedulesDocker::slotSelectionChanged); 0058 } 0059 0060 SchedulesDocker::~SchedulesDocker() 0061 { 0062 } 0063 0064 void SchedulesDocker::slotSelectionChanged() 0065 { 0066 emit selectionChanged(selectedSchedule()); 0067 } 0068 0069 void SchedulesDocker::setProject(Project *project) 0070 { 0071 debugPlan<<project; 0072 m_model.setProject(project); 0073 } 0074 0075 ScheduleManager *SchedulesDocker::selectedSchedule() const 0076 { 0077 QModelIndexList lst = m_view->selectionModel()->selectedRows(); 0078 Q_ASSERT(lst.count() <= 1); 0079 ScheduleManager *sm = 0; 0080 if (! lst.isEmpty()) { 0081 sm = m_model.manager(m_sfModel.mapToSource(lst.first())); 0082 } 0083 return sm; 0084 } 0085 0086 void SchedulesDocker::setSelectedSchedule(ScheduleManager *sm) 0087 { 0088 qDebug()<<"setSelectedSchedule:"<<sm<<m_model.index(sm); 0089 QModelIndex idx = m_sfModel.mapFromSource(m_model.index(sm)); 0090 if (sm) { 0091 Q_ASSERT(idx.isValid()); 0092 } 0093 m_view->selectionModel()->select(idx, QItemSelectionModel::ClearAndSelect); 0094 qDebug()<<"setSelectedSchedule:"<<sm<<idx; 0095 } 0096 0097 //-------------------- 0098 SchedulesDockerFactory::SchedulesDockerFactory() 0099 { 0100 } 0101 0102 QString SchedulesDockerFactory::id() const 0103 { 0104 return QString("KPlatoSchedulesDocker"); 0105 } 0106 0107 QDockWidget* SchedulesDockerFactory::createDockWidget() 0108 { 0109 return new SchedulesDocker(); 0110 } 0111 0112 } //namespace KPlato