Beispiel #1
0
void MainWindow::openLastFiles()
{
    const QStringList files = recentFiles();

    mSettings.beginGroup(QLatin1String("recentFiles"));

    int openCount = mSettings.value(QLatin1String("recentOpenedFiles"), 1).toInt();

    QStringList mapScales = mSettings.value(
                            QLatin1String("mapScale")).toStringList();
    QStringList scrollX = mSettings.value(
                          QLatin1String("scrollX")).toStringList();
    QStringList scrollY = mSettings.value(
                          QLatin1String("scrollY")).toStringList();
    QStringList selectedLayer = mSettings.value(
                                QLatin1String("selectedLayer")).toStringList();

    for (int i = 0; i < openCount; i++) {
        if (!(i < files.size()))
            break;
        if (!(i < mapScales.size()))
            continue;
        if (!(i < scrollX.size()))
            continue;
        if (!(i < scrollY.size()))
            continue;
        if (!(i < selectedLayer.size()))
            continue;

        if (openFile(files.at(i))) {
            MapView *mapView = mDocumentManager->currentMapView();

            // Restore camera to the previous position
            qreal scale = mapScales.at(i).toDouble();
            if (scale > 0)
                mapView->zoomable()->setScale(scale);

            const int hor = scrollX.at(i).toInt();
            const int ver = scrollY.at(i).toInt();
            mapView->horizontalScrollBar()->setSliderPosition(hor);
            mapView->verticalScrollBar()->setSliderPosition(ver);

            int layer = selectedLayer.at(i).toInt();
            if (layer > 0 && layer < mMapDocument->map()->layerCount())
                mMapDocument->setCurrentLayerIndex(layer);
        }
    }
    QString lastActiveDocument =
            mSettings.value(QLatin1String("lastActive")).toString();
    int documentIndex = mDocumentManager->findDocument(lastActiveDocument);
    if (documentIndex != -1)
        mDocumentManager->switchToDocument(documentIndex);

    mSettings.endGroup();
}