Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
itinerary
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
8
Issues
8
List
Boards
Labels
Milestones
Merge Requests
3
Merge Requests
3
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
KDE
itinerary
Commits
20ea201c
Commit
20ea201c
authored
Jan 17, 2019
by
Volker Krause
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use a real model for the journey results
parent
1258e37e
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
64 additions
and
40 deletions
+64
-40
src/app/CMakeLists.txt
src/app/CMakeLists.txt
+1
-1
src/app/TrainJourneyQueryPage.qml
src/app/TrainJourneyQueryPage.qml
+5
-5
src/app/journeyquerymodel.cpp
src/app/journeyquerymodel.cpp
+38
-19
src/app/journeyquerymodel.h
src/app/journeyquerymodel.h
+15
-10
src/app/main.cpp
src/app/main.cpp
+5
-5
No files found.
src/app/CMakeLists.txt
View file @
20ea201c
...
...
@@ -47,7 +47,7 @@ set(itinerary_app_srcs
${
qml_srcs
}
brightnessmanager.cpp
livedatamanager.cpp
journeyquery
controller
.cpp
journeyquery
model
.cpp
publictransport.cpp
)
if
(
ANDROID
)
...
...
src/app/TrainJourneyQueryPage.qml
View file @
20ea201c
...
...
@@ -29,7 +29,7 @@ Kirigami.ScrollablePage {
id
:
root
title
:
i18n
(
"
Alternative Connections
"
)
Component.onCompleted
:
_journeyQuery
Controller
.
queryJourney
(
batchId
);
Component.onCompleted
:
_journeyQuery
Model
.
queryJourney
(
batchId
);
Component
{
id
:
sectionDelegate
...
...
@@ -147,7 +147,7 @@ Kirigami.ScrollablePage {
id
:
journeyDelegate
Kirigami.Card
{
id
:
top
property
var
journey
:
model
Data
property
var
journey
:
model
.
journey
header
:
Rectangle
{
id
:
headerBackground
...
...
@@ -201,17 +201,17 @@ Kirigami.ScrollablePage {
anchors.fill
:
parent
clip
:
true
delegate
:
journeyDelegate
model
:
_journeyQuery
Controller
.
journeys
model
:
_journeyQuery
Model
QQC2.BusyIndicator
{
anchors.centerIn
:
parent
running
:
_journeyQuery
Controller
.
loading
running
:
_journeyQuery
Model
.
loading
}
QQC2.Label
{
anchors.centerIn
:
parent
width
:
parent
.
width
text
:
_journeyQuery
Controller
.
errorMessage
text
:
_journeyQuery
Model
.
errorMessage
color
:
Kirigami
.
Theme
.
negativeTextColor
wrapMode
:
Text
.
Wrap
}
...
...
src/app/journeyquery
controller
.cpp
→
src/app/journeyquery
model
.cpp
View file @
20ea201c
...
...
@@ -15,7 +15,7 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include "journeyquery
controller
.h"
#include "journeyquery
model
.h"
#include "logging.h"
#include "reservationmanager.h"
#include "publictransport.h"
...
...
@@ -32,44 +32,38 @@
using
namespace
KItinerary
;
JourneyQuery
Controller
::
JourneyQueryController
(
QObject
*
parent
)
:
Q
Object
(
parent
)
JourneyQuery
Model
::
JourneyQueryModel
(
QObject
*
parent
)
:
Q
AbstractListModel
(
parent
)
{
}
JourneyQuery
Controller
::~
JourneyQueryController
()
=
default
;
JourneyQuery
Model
::~
JourneyQueryModel
()
=
default
;
void
JourneyQuery
Controller
::
setReservationManager
(
ReservationManager
*
mgr
)
void
JourneyQuery
Model
::
setReservationManager
(
ReservationManager
*
mgr
)
{
m_resMgr
=
mgr
;
}
void
JourneyQuery
Controller
::
setPublicTransportManager
(
KPublicTransport
::
Manager
*
mgr
)
void
JourneyQuery
Model
::
setPublicTransportManager
(
KPublicTransport
::
Manager
*
mgr
)
{
m_ptMgr
=
mgr
;
}
bool
JourneyQuery
Controller
::
isLoading
()
const
bool
JourneyQuery
Model
::
isLoading
()
const
{
return
m_isLoading
;
}
QString
JourneyQuery
Controller
::
errorMessage
()
const
QString
JourneyQuery
Model
::
errorMessage
()
const
{
return
m_errorMsg
;
}
QVariantList
JourneyQueryController
::
journeys
()
const
void
JourneyQueryModel
::
queryJourney
(
const
QString
&
batchId
)
{
QVariantList
l
;
l
.
reserve
(
m_journeys
.
size
());
std
::
transform
(
m_journeys
.
begin
(),
m_journeys
.
end
(),
std
::
back_inserter
(
l
),
[](
const
auto
&
journey
)
{
return
QVariant
::
fromValue
(
journey
);
});
return
l
;
}
void
JourneyQueryController
::
queryJourney
(
const
QString
&
batchId
)
{
qDebug
()
<<
batchId
;
beginResetModel
();
m_journeys
.
clear
();
endResetModel
();
const
auto
res
=
m_resMgr
->
reservation
(
batchId
);
if
(
!
JsonLd
::
isA
<
TrainReservation
>
(
res
))
{
...
...
@@ -91,11 +85,36 @@ void JourneyQueryController::queryJourney(const QString &batchId)
m_isLoading
=
false
;
emit
loadingChanged
();
if
(
reply
->
error
()
==
KPublicTransport
::
JourneyReply
::
NoError
)
{
beginResetModel
();
m_journeys
=
reply
->
takeResult
();
e
mit
journeysChanged
();
e
ndResetModel
();
}
else
{
m_errorMsg
=
reply
->
errorString
();
emit
errorMessageChanged
();
}
});
}
int
JourneyQueryModel
::
rowCount
(
const
QModelIndex
&
parent
)
const
{
if
(
parent
.
isValid
())
{
return
0
;
}
return
m_journeys
.
size
();
}
QVariant
JourneyQueryModel
::
data
(
const
QModelIndex
&
index
,
int
role
)
const
{
switch
(
role
)
{
case
JourneyRole
:
return
QVariant
::
fromValue
(
m_journeys
[
index
.
row
()]);
}
return
{};
}
QHash
<
int
,
QByteArray
>
JourneyQueryModel
::
roleNames
()
const
{
auto
r
=
QAbstractListModel
::
roleNames
();
r
.
insert
(
JourneyRole
,
"journey"
);
return
r
;
}
src/app/journeyquery
controller
.h
→
src/app/journeyquery
model
.h
View file @
20ea201c
...
...
@@ -15,10 +15,10 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#ifndef JOURNEYQUERY
CONTROLLER
_H
#define JOURNEYQUERY
CONTROLLER
_H
#ifndef JOURNEYQUERY
MODEL
_H
#define JOURNEYQUERY
MODEL
_H
#include <Q
Object
>
#include <Q
AbstractListModel
>
#include <QString>
#include <vector>
...
...
@@ -31,16 +31,19 @@ class Manager;
class
ReservationManager
;
/** Alternative train connection query handling. */
class
JourneyQuery
Controller
:
public
QObject
class
JourneyQuery
Model
:
public
QAbstractListModel
{
Q_OBJECT
Q_PROPERTY
(
bool
loading
READ
isLoading
NOTIFY
loadingChanged
)
Q_PROPERTY
(
QString
errorMessage
READ
errorMessage
NOTIFY
errorMessageChanged
)
Q_PROPERTY
(
QVariantList
journeys
READ
journeys
NOTIFY
journeysChanged
)
enum
Role
{
JourneyRole
=
Qt
::
UserRole
};
public:
explicit
JourneyQuery
Controller
(
QObject
*
parent
=
nullptr
);
~
JourneyQuery
Controller
();
explicit
JourneyQuery
Model
(
QObject
*
parent
=
nullptr
);
~
JourneyQuery
Model
();
void
setReservationManager
(
ReservationManager
*
mgr
);
void
setPublicTransportManager
(
KPublicTransport
::
Manager
*
mgr
);
...
...
@@ -49,12 +52,14 @@ public:
bool
isLoading
()
const
;
QString
errorMessage
()
const
;
QVariantList
journeys
()
const
;
int
rowCount
(
const
QModelIndex
&
parent
)
const
override
;
QVariant
data
(
const
QModelIndex
&
index
,
int
role
)
const
override
;
QHash
<
int
,
QByteArray
>
roleNames
()
const
override
;
Q_SIGNALS:
void
loadingChanged
();
void
errorMessageChanged
();
void
journeysChanged
();
private:
ReservationManager
*
m_resMgr
;
...
...
@@ -65,4 +70,4 @@ private:
};
#endif // JOURNEYQUERY
CONTROLLER
_H
#endif // JOURNEYQUERY
MODEL
_H
src/app/main.cpp
View file @
20ea201c
...
...
@@ -22,7 +22,7 @@
#include "brightnessmanager.h"
#include "countryinformation.h"
#include "countrymodel.h"
#include "journeyquery
controller
.h"
#include "journeyquery
model
.h"
#include "livedatamanager.h"
#include "localizer.h"
#include "pkpassmanager.h"
...
...
@@ -151,9 +151,9 @@ int main(int argc, char **argv)
liveDataMgr
.
setPollingEnabled
(
settings
.
queryLiveData
());
QObject
::
connect
(
&
settings
,
&
Settings
::
queryLiveDataChanged
,
&
liveDataMgr
,
&
LiveDataManager
::
setPollingEnabled
);
JourneyQuery
Controller
journeyQueryController
;
journeyQuery
Controller
.
setReservationManager
(
&
resMgr
);
journeyQuery
Controller
.
setPublicTransportManager
(
&
ptMgr
);
JourneyQuery
Model
journeyQueryModel
;
journeyQuery
Model
.
setReservationManager
(
&
resMgr
);
journeyQuery
Model
.
setPublicTransportManager
(
&
ptMgr
);
#ifndef Q_OS_ANDROID
QObject
::
connect
(
&
service
,
&
KDBusService
::
activateRequested
,
[
&
parser
,
&
appController
](
const
QStringList
&
args
,
const
QString
&
workingDir
)
{
...
...
@@ -220,7 +220,7 @@ int main(int argc, char **argv)
engine
.
rootContext
()
->
setContextProperty
(
QStringLiteral
(
"_weatherForecastManager"
),
&
weatherForecastMgr
);
engine
.
rootContext
()
->
setContextProperty
(
QStringLiteral
(
"_brightnessManager"
),
&
brightnessManager
);
engine
.
rootContext
()
->
setContextProperty
(
QStringLiteral
(
"_liveDataManager"
),
&
liveDataMgr
);
engine
.
rootContext
()
->
setContextProperty
(
QStringLiteral
(
"_journeyQuery
Controller"
),
&
journeyQueryController
);
engine
.
rootContext
()
->
setContextProperty
(
QStringLiteral
(
"_journeyQuery
Model"
),
&
journeyQueryModel
);
engine
.
load
(
QStringLiteral
(
"qrc:/main.qml"
));
handlePositionalArguments
(
&
appController
,
parser
.
positionalArguments
());
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment