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
+8 -9
View File
@@ -1,10 +1,13 @@
#include "account.hpp"
#include <tuple>
namespace chatterino {
namespace controllers {
namespace accounts {
Account::Account(const QString &category)
Account::Account(const QString &_category)
: category(_category)
{
}
@@ -15,14 +18,10 @@ const QString &Account::getCategory() const
bool Account::operator<(const Account &other) const
{
if (this->category < other.category) {
return true;
} else if (this->category == other.category) {
if (this->toString() < other.toString()) {
return true;
}
}
return false;
QString a = this->toString();
QString b = other.toString();
return std::tie(this->category, a) < std::tie(other.category, b);
}
} // namespace accounts
@@ -10,6 +10,11 @@ AccountController::AccountController()
{
}
void AccountController::load()
{
this->Twitch.load();
}
AccountModel *AccountController::createModel(QObject *parent)
{
AccountModel *model = new AccountModel(parent);
@@ -3,6 +3,7 @@
#include <QObject>
#include "controllers/accounts/account.hpp"
#include "providers/twitch/twitchaccountmanager.hpp"
#include "util/sharedptrelementless.hpp"
#include "util/signalvector2.hpp"
@@ -19,6 +20,10 @@ public:
AccountModel *createModel(QObject *parent);
void load();
providers::twitch::TwitchAccountManager Twitch;
private:
util::SortedSignalVector<std::shared_ptr<Account>, util::SharedPtrElementLess<Account>>
accounts;
+3 -2
View File
@@ -10,9 +10,10 @@ AccountModel::AccountModel(QObject *parent)
}
// turn a vector item into a model row
std::shared_ptr<Account> AccountModel::getItemFromRow(std::vector<QStandardItem *> &row)
std::shared_ptr<Account> AccountModel::getItemFromRow(std::vector<QStandardItem *> &,
const std::shared_ptr<Account> &original)
{
return nullptr;
return original;
}
// turns a row in the model into a vector item
+2 -1
View File
@@ -16,7 +16,8 @@ public:
protected:
// turn a vector item into a model row
virtual std::shared_ptr<Account> getItemFromRow(std::vector<QStandardItem *> &row) override;
virtual std::shared_ptr<Account> getItemFromRow(
std::vector<QStandardItem *> &row, const std::shared_ptr<Account> &original) override;
// turns a row in the model into a vector item
virtual void getRowFromItem(const std::shared_ptr<Account> &item,
@@ -1,12 +1,12 @@
#include "commandcontroller.hpp"
#include "application.hpp"
#include "controllers/accounts/accountcontroller.hpp"
#include "controllers/commands/command.hpp"
#include "controllers/commands/commandmodel.hpp"
#include "messages/messagebuilder.hpp"
#include "providers/twitch/twitchchannel.hpp"
#include "providers/twitch/twitchserver.hpp"
#include "singletons/accountmanager.hpp"
#include "singletons/pathmanager.hpp"
#include "util/signalvector2.hpp"
+1 -1
View File
@@ -11,7 +11,7 @@ CommandModel::CommandModel(QObject *parent)
}
// turn a vector item into a model row
Command CommandModel::getItemFromRow(std::vector<QStandardItem *> &row)
Command CommandModel::getItemFromRow(std::vector<QStandardItem *> &row, const Command &original)
{
return Command(row[0]->data(Qt::EditRole).toString(), row[1]->data(Qt::EditRole).toString());
}
+2 -1
View File
@@ -17,7 +17,8 @@ class CommandModel : public util::SignalVectorModel<Command>
protected:
// turn a vector item into a model row
virtual Command getItemFromRow(std::vector<QStandardItem *> &row) override;
virtual Command getItemFromRow(std::vector<QStandardItem *> &row,
const Command &command) override;
// turns a row in the model into a vector item
virtual void getRowFromItem(const Command &item, std::vector<QStandardItem *> &row) override;
@@ -22,7 +22,6 @@ void HighlightController::initialize()
}
this->phrases.delayedItemsChanged.connect([this] { //
int xd = this->phrases.getVector().size();
this->highlightsSetting.setValue(this->phrases.getVector());
});
}
@@ -15,7 +15,8 @@ HighlightModel::HighlightModel(QObject *parent)
}
// turn a vector item into a model row
HighlightPhrase HighlightModel::getItemFromRow(std::vector<QStandardItem *> &row)
HighlightPhrase HighlightModel::getItemFromRow(std::vector<QStandardItem *> &row,
const HighlightPhrase &original)
{
// key, alert, sound, regex
@@ -17,7 +17,8 @@ class HighlightModel : public util::SignalVectorModel<HighlightPhrase>
protected:
// turn a vector item into a model row
virtual HighlightPhrase getItemFromRow(std::vector<QStandardItem *> &row) override;
virtual HighlightPhrase getItemFromRow(std::vector<QStandardItem *> &row,
const HighlightPhrase &original) override;
// turns a row in the model into a vector item
virtual void getRowFromItem(const HighlightPhrase &item,
+2 -1
View File
@@ -15,7 +15,8 @@ IgnoreModel::IgnoreModel(QObject *parent)
}
// turn a vector item into a model row
IgnorePhrase IgnoreModel::getItemFromRow(std::vector<QStandardItem *> &row)
IgnorePhrase IgnoreModel::getItemFromRow(std::vector<QStandardItem *> &row,
const IgnorePhrase &original)
{
// key, regex
+2 -1
View File
@@ -17,7 +17,8 @@ class IgnoreModel : public util::SignalVectorModel<IgnorePhrase>
protected:
// turn a vector item into a model row
virtual IgnorePhrase getItemFromRow(std::vector<QStandardItem *> &row) override;
virtual IgnorePhrase getItemFromRow(std::vector<QStandardItem *> &row,
const IgnorePhrase &original) override;
// turns a row in the model into a vector item
virtual void getRowFromItem(const IgnorePhrase &item,
@@ -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