mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-11-04 00:26:39 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			146 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
	
		
			3.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef DATAFILESPAGE_H
 | 
						|
#define DATAFILESPAGE_H
 | 
						|
 | 
						|
#include "ui_datafilespage.h"
 | 
						|
#include <QWidget>
 | 
						|
 | 
						|
 | 
						|
#include <QDir>
 | 
						|
#include <QFile>
 | 
						|
 | 
						|
class QSortFilterProxyModel;
 | 
						|
class QAbstractItemModel;
 | 
						|
class QMenu;
 | 
						|
 | 
						|
namespace Files { struct ConfigurationManager; }
 | 
						|
namespace ContentSelectorView { class ContentSelector; }
 | 
						|
namespace Config { class GameSettings;
 | 
						|
                   class LauncherSettings; }
 | 
						|
 | 
						|
namespace Launcher
 | 
						|
{
 | 
						|
    class TextInputDialog;
 | 
						|
    class ProfilesComboBox;
 | 
						|
 | 
						|
    class DataFilesPage : public QWidget
 | 
						|
    {
 | 
						|
        Q_OBJECT
 | 
						|
 | 
						|
        ContentSelectorView::ContentSelector *mSelector;
 | 
						|
        Ui::DataFilesPage ui;
 | 
						|
 | 
						|
    public:
 | 
						|
        explicit DataFilesPage (Files::ConfigurationManager &cfg, Config::GameSettings &gameSettings,
 | 
						|
                                Config::LauncherSettings &launcherSettings, QWidget *parent = 0);
 | 
						|
 | 
						|
        QAbstractItemModel* profilesModel() const;
 | 
						|
 | 
						|
        int profilesIndex() const;
 | 
						|
 | 
						|
        //void writeConfig(QString profile = QString());
 | 
						|
        void saveSettings(const QString &profile = "");
 | 
						|
        bool loadSettings();
 | 
						|
 | 
						|
    signals:
 | 
						|
        void signalProfileChanged (int index);
 | 
						|
 | 
						|
    public slots:
 | 
						|
        void slotProfileChanged (int index);
 | 
						|
 | 
						|
    private slots:
 | 
						|
 | 
						|
        void slotProfileChangedByUser(const QString &previous, const QString ¤t);
 | 
						|
        void slotProfileRenamed(const QString &previous, const QString ¤t);
 | 
						|
        void slotProfileDeleted(const QString &item);
 | 
						|
 | 
						|
        void updateOkButton(const QString &text);
 | 
						|
 | 
						|
        void on_newProfileAction_triggered();
 | 
						|
        void on_deleteProfileAction_triggered();
 | 
						|
 | 
						|
    public:
 | 
						|
        /// Content List that is always present
 | 
						|
        const static char *mDefaultContentListName;
 | 
						|
 | 
						|
    private:
 | 
						|
 | 
						|
        TextInputDialog *mProfileDialog;
 | 
						|
 | 
						|
        Files::ConfigurationManager &mCfgMgr;
 | 
						|
 | 
						|
        Config::GameSettings &mGameSettings;
 | 
						|
        Config::LauncherSettings &mLauncherSettings;
 | 
						|
 | 
						|
        QString mPreviousProfile;
 | 
						|
 | 
						|
        QString mDataLocal;
 | 
						|
 | 
						|
        void setPluginsCheckstates(Qt::CheckState state);
 | 
						|
 | 
						|
        void buildView();
 | 
						|
        void setupConfig();
 | 
						|
        void readConfig();
 | 
						|
        void setProfile (int index, bool savePrevious);
 | 
						|
        void setProfile (const QString &previous, const QString ¤t, bool savePrevious);
 | 
						|
        void removeProfile (const QString &profile);
 | 
						|
        bool showDeleteMessageBox (const QString &text);
 | 
						|
        void addProfile (const QString &profile, bool setAsCurrent);
 | 
						|
        void checkForDefaultProfile();
 | 
						|
        void populateFileViews(const QString& contentModelName);
 | 
						|
 | 
						|
        class PathIterator
 | 
						|
        {
 | 
						|
            QStringList::ConstIterator mCitEnd;
 | 
						|
            QStringList::ConstIterator mCitCurrent;
 | 
						|
            QStringList::ConstIterator mCitBegin;
 | 
						|
            QString mFile;
 | 
						|
            QString mFilePath;
 | 
						|
 | 
						|
        public:
 | 
						|
            PathIterator (const QStringList &list)
 | 
						|
            {
 | 
						|
                mCitBegin = list.constBegin();
 | 
						|
                mCitCurrent = mCitBegin;
 | 
						|
                mCitEnd = list.constEnd();
 | 
						|
            }
 | 
						|
 | 
						|
            QString findFirstPath (const QString &file)
 | 
						|
            {
 | 
						|
                mCitCurrent = mCitBegin;
 | 
						|
                mFile = file;
 | 
						|
                return path();
 | 
						|
            }
 | 
						|
 | 
						|
            QString findNextPath () { return path(); }
 | 
						|
 | 
						|
        private:
 | 
						|
 | 
						|
            QString path ()
 | 
						|
            {
 | 
						|
                bool success = false;
 | 
						|
                QDir dir;
 | 
						|
                QFileInfo file;
 | 
						|
 | 
						|
                while (!success)
 | 
						|
                {
 | 
						|
                    if (mCitCurrent == mCitEnd)
 | 
						|
                        break;
 | 
						|
 | 
						|
                    dir.setPath (*(mCitCurrent++));
 | 
						|
                    file.setFile (dir.absoluteFilePath (mFile));
 | 
						|
 | 
						|
                    success = file.exists();
 | 
						|
                }
 | 
						|
 | 
						|
                if (success)
 | 
						|
                    return file.absoluteFilePath();
 | 
						|
 | 
						|
                return "";
 | 
						|
            }
 | 
						|
 | 
						|
        };
 | 
						|
 | 
						|
        QStringList filesInProfile(const QString& profileName, PathIterator& pathIterator);
 | 
						|
    };
 | 
						|
}
 | 
						|
#endif
 |