mirror of
https://invent.kde.org/graphics/okular
synced 2024-10-05 23:49:20 +00:00
Fix parsing of lilypond URLs
This commit is contained in:
parent
3bcfb63d5c
commit
a6ec5ea9de
|
@ -59,33 +59,40 @@ int SourceReference::column() const
|
|||
|
||||
bool Okular::extractLilyPondSourceReference( const QUrl &url, QString *file, int *row, int *col )
|
||||
{
|
||||
// Example URL is: textedit:///home/foo/bar.ly:42:42:42
|
||||
// The three numbers are apparently: line:beginning of column:end of column
|
||||
|
||||
if ( url.scheme() != QStringLiteral("textedit") )
|
||||
return false;
|
||||
|
||||
#pragma message("KF5 fix LilyPond references")
|
||||
return false;
|
||||
// There can be more, in case the filename contains :
|
||||
if (url.fileName().count(':') < 3) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// *row = 0;
|
||||
// *col = 0;
|
||||
// int lilyChar = 0;
|
||||
// typedef int *IntPtr;
|
||||
// const IntPtr int_data[] = { row, &lilyChar, col };
|
||||
// int int_index = sizeof( int_data ) / sizeof( int* ) - 1;
|
||||
// int index_last = -1;
|
||||
// int index = url.lastIndexOf( QLatin1Char( ':' ), index_last );
|
||||
// while ( index != -1 && int_index >= 0 )
|
||||
// {
|
||||
// // read the current "chunk"
|
||||
// const QStringRef ref = url.midRef( index + 1, index_last - index - 1 );
|
||||
// *int_data[ int_index ] = QString::fromRawData( ref.data(), ref.count() ).toInt();
|
||||
// // find the previous "chunk"
|
||||
// index_last = index;
|
||||
// index = url.lastIndexOf( QLatin1Char( ':' ), index_last - 1 );
|
||||
// --int_index;
|
||||
// }
|
||||
// // NOTE: 11 is the length of "textedit://"
|
||||
// *file = QUrl::fromPercentEncoding( url.mid( 11, index_last != -1 ? index_last - 11 : -1 ).toUtf8() );
|
||||
// return true;
|
||||
QStringList parts(url.path().split(':'));
|
||||
|
||||
bool ok;
|
||||
// Take out the things we need
|
||||
int columnEnd = parts.takeLast().toInt(&ok); // apparently we don't use this
|
||||
Q_UNUSED(columnEnd);
|
||||
if (!ok) {
|
||||
return false;
|
||||
}
|
||||
|
||||
*col = parts.takeLast().toInt(&ok);
|
||||
if (!ok) {
|
||||
return false;
|
||||
}
|
||||
|
||||
*row = parts.takeLast().toInt(&ok);
|
||||
if (!ok) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// In case the path itself contains :, we need to reconstruct it after removing all the numbers
|
||||
*file = parts.join(':');
|
||||
return (!file->isEmpty());
|
||||
}
|
||||
|
||||
QString Okular::sourceReferenceToolTip( const QString &source, int row, int col )
|
||||
|
|
Loading…
Reference in a new issue