mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-26 06:56:37 +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
 |