changed AccountManager to AccountController

This commit is contained in:
fourtf
2018-05-26 20:25:00 +02:00
parent b016f0fb88
commit 8c9be20f9b
41 changed files with 364 additions and 118 deletions
@@ -0,0 +1,24 @@
#include "taggeduser.hpp"
#include <tuple>
namespace chatterino {
namespace controllers {
namespace taggedusers {
TaggedUser::TaggedUser(ProviderId _provider, const QString &_name, const QString &_id)
: provider(_provider)
, name(_name)
, id(_id)
{
}
bool TaggedUser::operator<(const TaggedUser &other) const
{
return std::tie(this->provider, this->name, this->id) <
std::tie(other.provider, other.name, other.id);
}
} // namespace taggedusers
} // namespace controllers
} // namespace chatterino
@@ -0,0 +1,24 @@
#pragma once
#include <QString>
#include <providerid.hpp>
namespace chatterino {
namespace controllers {
namespace taggedusers {
class TaggedUser
{
public:
TaggedUser(ProviderId provider, const QString &name, const QString &id);
bool operator<(const TaggedUser &other) const;
ProviderId provider;
QString name;
QString id;
};
} // namespace taggedusers
} // namespace controllers
} // namespace chatterino
@@ -0,0 +1,23 @@
#include "taggeduserscontroller.hpp"
#include "controllers/taggedusers/taggedusersmodel.hpp"
namespace chatterino {
namespace controllers {
namespace taggedusers {
TaggedUsersController::TaggedUsersController()
{
}
TaggedUsersModel *TaggedUsersController::createModel(QObject *parent)
{
TaggedUsersModel *model = new TaggedUsersModel(parent);
model->init(&this->users);
return model;
}
} // namespace taggedusers
} // namespace controllers
} // namespace chatterino
@@ -0,0 +1,24 @@
#pragma once
#include "controllers/taggedusers/taggeduser.hpp"
#include "util/signalvector2.hpp"
namespace chatterino {
namespace controllers {
namespace taggedusers {
class TaggedUsersModel;
class TaggedUsersController
{
public:
TaggedUsersController();
util::SortedSignalVector<TaggedUser, std::less<TaggedUser>> users;
TaggedUsersModel *createModel(QObject *parent = nullptr);
};
} // namespace taggedusers
} // namespace controllers
} // namespace chatterino
@@ -0,0 +1,66 @@
#include "taggedusersmodel.hpp"
#include "application.hpp"
#include "util/standarditemhelper.hpp"
namespace chatterino {
namespace controllers {
namespace taggedusers {
// commandmodel
TaggedUsersModel::TaggedUsersModel(QObject *parent)
: util::SignalVectorModel<TaggedUser>(1, parent)
{
}
// turn a vector item into a model row
TaggedUser TaggedUsersModel::getItemFromRow(std::vector<QStandardItem *> &row,
const TaggedUser &original)
{
return original;
}
// turns a row in the model into a vector item
void TaggedUsersModel::getRowFromItem(const TaggedUser &item, std::vector<QStandardItem *> &row)
{
util::setStringItem(row[0], item.name);
}
void TaggedUsersModel::afterInit()
{
// std::vector<QStandardItem *> row = this->createRow();
// util::setBoolItem(row[0], getApp()->settings->enableHighlightsSelf.getValue(), true,
// false); row[0]->setData("Your username (automatic)", Qt::DisplayRole);
// util::setBoolItem(row[1], getApp()->settings->enableHighlightTaskbar.getValue(), true,
// false); util::setBoolItem(row[2], getApp()->settings->enableHighlightSound.getValue(),
// true, false); row[3]->setFlags(0); this->insertCustomRow(row, 0);
}
// void TaggedUserModel::customRowSetData(const std::vector<QStandardItem *> &row, int column,
// const QVariant &value, int role)
//{
// switch (column) {
// case 0: {
// if (role == Qt::CheckStateRole) {
// getApp()->settings->enableHighlightsSelf.setValue(value.toBool());
// }
// } break;
// case 1: {
// if (role == Qt::CheckStateRole) {
// getApp()->settings->enableHighlightTaskbar.setValue(value.toBool());
// }
// } break;
// case 2: {
// if (role == Qt::CheckStateRole) {
// getApp()->settings->enableHighlightSound.setValue(value.toBool());
// }
// } break;
// case 3: {
// // empty element
// } break;
// }
//}
} // namespace taggedusers
} // namespace controllers
} // namespace chatterino
@@ -0,0 +1,34 @@
#pragma once
#include "controllers/taggedusers/taggeduser.hpp"
#include "util/signalvectormodel.hpp"
namespace chatterino {
namespace controllers {
namespace taggedusers {
class TaggedUsersController;
class TaggedUsersModel : public util::SignalVectorModel<TaggedUser>
{
explicit TaggedUsersModel(QObject *parent);
protected:
// turn a vector item into a model row
virtual TaggedUser getItemFromRow(std::vector<QStandardItem *> &row,
const TaggedUser &original) override;
// turns a row in the model into a vector item
virtual void getRowFromItem(const TaggedUser &item, std::vector<QStandardItem *> &row) override;
virtual void afterInit() override;
// virtual void customRowSetData(const std::vector<QStandardItem *> &row, int column,
// const QVariant &value, int role) override;
friend class TaggedUsersController;
};
} // namespace taggedusers
} // namespace controllers
} // namespace chatterino