Fix parsing of lilypond URLs

This commit is contained in:
Martin T. H. Sandsmark 2016-07-24 20:27:04 +02:00
parent 3bcfb63d5c
commit a6ec5ea9de

View file

@ -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 )