From 583e5946f4cd29f0a18bcc4fad5608de739aa113 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 18 Aug 2015 19:10:17 -0400 Subject: GH-1047 World management for instances. Removal only currently. --- logic/minecraft/WorldList.h | 101 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 logic/minecraft/WorldList.h (limited to 'logic/minecraft/WorldList.h') diff --git a/logic/minecraft/WorldList.h b/logic/minecraft/WorldList.h new file mode 100644 index 00000000..3f337c72 --- /dev/null +++ b/logic/minecraft/WorldList.h @@ -0,0 +1,101 @@ +/* + * Copyright 2015 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#pragma once + +#include +#include +#include +#include +#include "minecraft/World.h" + +class QFileSystemWatcher; + +class WorldList : public QAbstractListModel +{ + Q_OBJECT +public: + enum Columns { + NameColumn + }; + + WorldList ( const QString &dir ); + + virtual QVariant data ( const QModelIndex &index, int role = Qt::DisplayRole ) const; + + virtual int rowCount ( const QModelIndex &parent = QModelIndex() ) const { + return size(); + } + ; + virtual QVariant headerData ( int section, Qt::Orientation orientation, + int role = Qt::DisplayRole ) const; + virtual int columnCount ( const QModelIndex &parent ) const; + + size_t size() const { + return worlds.size(); + } + ; + bool empty() const { + return size() == 0; + } + World &operator[] ( size_t index ) { + return worlds[index]; + } + + /// Reloads the mod list and returns true if the list changed. + virtual bool update(); + + /// Deletes the mod at the given index. + virtual bool deleteWorld ( int index ); + + /// Deletes all the selected mods + virtual bool deleteWorlds ( int first, int last ); + + /// get data for drag action + virtual QMimeData *mimeData ( const QModelIndexList &indexes ) const; + /// get the supported mime types + virtual QStringList mimeTypes() const; + + void startWatching(); + void stopWatching(); + + virtual bool isValid(); + + QDir dir() { + return m_dir; + } + + const QList & allWorlds() { + return worlds; + } + +private: + void internalSort ( QList & what ); + private +slots: + void directoryChanged ( QString path ); + +signals: + void changed(); + +protected: + QFileSystemWatcher *m_watcher; + bool is_watching; + QDir m_dir; + QList worlds; +}; + -- cgit v1.2.3