diff options
author | Andrew <forkk@forkk.net> | 2013-12-15 15:01:34 -0600 |
---|---|---|
committer | Andrew <forkk@forkk.net> | 2013-12-15 15:01:34 -0600 |
commit | 9d8006b597aead06f1d51dacbdb346ebab3d5e8f (patch) | |
tree | 1f99ca1da321be32930198e3d72b2fc9d3bf53de /logic/auth/MojangAccountList.cpp | |
parent | 0ee8f90d40f5b3ddb177286c9066a4e59748c681 (diff) | |
parent | b0e8037feb5b9d48defe6b8263d068f87bdb141c (diff) | |
download | MultiMC-9d8006b597aead06f1d51dacbdb346ebab3d5e8f.tar MultiMC-9d8006b597aead06f1d51dacbdb346ebab3d5e8f.tar.gz MultiMC-9d8006b597aead06f1d51dacbdb346ebab3d5e8f.tar.lz MultiMC-9d8006b597aead06f1d51dacbdb346ebab3d5e8f.tar.xz MultiMC-9d8006b597aead06f1d51dacbdb346ebab3d5e8f.zip |
Merge branch 'develop' of github.com:MultiMC/MultiMC5 into feature_news
Conflicts:
CMakeLists.txt
Diffstat (limited to 'logic/auth/MojangAccountList.cpp')
-rw-r--r-- | logic/auth/MojangAccountList.cpp | 64 |
1 files changed, 61 insertions, 3 deletions
diff --git a/logic/auth/MojangAccountList.cpp b/logic/auth/MojangAccountList.cpp index 0d13cd34..70bc0cf2 100644 --- a/logic/auth/MojangAccountList.cpp +++ b/logic/auth/MojangAccountList.cpp @@ -22,10 +22,12 @@ #include <QJsonArray> #include <QJsonObject> #include <QJsonParseError> +#include <QDir> #include "logger/QsLog.h" #include "logic/auth/MojangAccount.h" +#include <pathutils.h> #define ACCOUNT_LIST_FORMAT_VERSION 2 @@ -148,9 +150,6 @@ QVariant MojangAccountList::data(const QModelIndex &index, int role) const case Qt::DisplayRole: switch (index.column()) { - case ActiveColumn: - return account == m_activeAccount; - case NameColumn: return account->username(); @@ -164,6 +163,13 @@ QVariant MojangAccountList::data(const QModelIndex &index, int role) const case PointerRole: return qVariantFromValue(account); + case Qt::CheckStateRole: + switch (index.column()) + { + case ActiveColumn: + return account == m_activeAccount; + } + default: return QVariant(); } @@ -212,6 +218,36 @@ int MojangAccountList::columnCount(const QModelIndex &parent) const return 2; } +Qt::ItemFlags MojangAccountList::flags(const QModelIndex &index) const +{ + if (index.row() < 0 || index.row() >= rowCount(index) || !index.isValid()) + { + return Qt::NoItemFlags; + } + + return Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable; +} + +bool MojangAccountList::setData(const QModelIndex &index, const QVariant &value, int role) +{ + if (index.row() < 0 || index.row() >= rowCount(index) || !index.isValid()) + { + return false; + } + + if(role == Qt::CheckStateRole) + { + if(value == Qt::Checked) + { + MojangAccountPtr account = this->at(index.row()); + this->setActiveAccount(account->username()); + } + } + + emit dataChanged(index, index); + return true; +} + void MojangAccountList::updateListData(QList<MojangAccountPtr> versions) { beginResetModel(); @@ -311,6 +347,18 @@ bool MojangAccountList::saveList(const QString &filePath) return false; } + // make sure the parent folder exists + if(!ensureFilePathExists(path)) + return false; + + // make sure the file wasn't overwritten with a folder before (fixes a bug) + QFileInfo finfo(path); + if(finfo.isDir()) + { + QDir badDir(path); + badDir.removeRecursively(); + } + QLOG_INFO() << "Writing account list to" << path; QLOG_DEBUG() << "Building JSON data structure."; @@ -366,3 +414,13 @@ void MojangAccountList::setListFilePath(QString path, bool autosave) m_listFilePath = path; m_autosave = autosave; } + +bool MojangAccountList::anyAccountIsValid() +{ + for(auto account:m_accounts) + { + if(account->accountStatus() != NotVerified) + return true; + } + return false; +} |