mirror-chatterino2/src/singletons/windowmanager.cpp

105 lines
2.2 KiB
C++
Raw Normal View History

2017-06-11 09:31:45 +02:00
#include "windowmanager.hpp"
#include "appdatapath.hpp"
2017-12-31 00:50:07 +01:00
#include "singletons/thememanager.hpp"
2017-01-15 16:38:30 +01:00
#include <QDebug>
#include <QStandardPaths>
#include <boost/foreach.hpp>
2017-01-18 21:30:23 +01:00
namespace chatterino {
2017-12-31 00:50:07 +01:00
WindowManager &WindowManager::getInstance()
{
static WindowManager instance(ThemeManager::getInstance());
return instance;
}
2017-04-13 19:25:33 +02:00
2017-12-31 00:50:07 +01:00
WindowManager::WindowManager(ThemeManager &_themeManager)
: themeManager(_themeManager)
2017-04-13 19:25:33 +02:00
{
2017-12-31 00:50:07 +01:00
_themeManager.repaintVisibleChatWidgets.connect([this] { this->repaintVisibleChatWidgets(); });
2017-04-13 19:25:33 +02:00
}
2017-01-18 21:30:23 +01:00
2017-12-14 00:25:06 +01:00
void WindowManager::initMainWindow()
{
2017-12-31 00:50:07 +01:00
this->selectedWindow = this->mainWindow = new widgets::Window("main", this->themeManager, true);
2017-12-14 00:25:06 +01:00
}
2017-04-12 17:46:44 +02:00
static const std::string &getSettingsPath()
{
static std::string path = (Path::getAppdataPath() + "uilayout.json").toStdString();
return path;
}
2017-04-12 17:46:44 +02:00
void WindowManager::layoutVisibleChatWidgets(Channel *channel)
2017-01-15 16:38:30 +01:00
{
this->layout();
}
2017-04-12 17:46:44 +02:00
void WindowManager::repaintVisibleChatWidgets(Channel *channel)
{
if (this->mainWindow != nullptr) {
this->mainWindow->repaintVisibleChatWidgets(channel);
2017-01-26 04:26:40 +01:00
}
2017-01-15 16:38:30 +01:00
}
2017-01-26 21:04:01 +01:00
2017-04-12 17:46:44 +02:00
void WindowManager::repaintGifEmotes()
2017-02-07 00:03:15 +01:00
{
2017-09-17 02:13:57 +02:00
this->repaintGifs();
2017-02-07 00:03:15 +01:00
}
// void WindowManager::updateAll()
//{
// if (this->mainWindow != nullptr) {
// this->mainWindow->update();
// }
//}
2017-02-02 01:23:26 +01:00
2017-11-12 17:21:50 +01:00
widgets::Window &WindowManager::getMainWindow()
2017-04-13 19:25:33 +02:00
{
return *this->mainWindow;
2017-04-13 19:25:33 +02:00
}
2017-12-14 00:25:06 +01:00
widgets::Window &WindowManager::getSelectedWindow()
2017-11-12 17:21:50 +01:00
{
2017-12-14 00:25:06 +01:00
return *this->selectedWindow;
2017-11-12 17:21:50 +01:00
}
widgets::Window &WindowManager::createWindow()
{
2017-12-31 00:50:07 +01:00
auto *window = new widgets::Window("external", this->themeManager, false);
window->getNotebook().addNewPage();
2017-11-12 17:21:50 +01:00
this->windows.push_back(window);
return *window;
}
2017-12-14 00:25:06 +01:00
int WindowManager::windowCount()
{
return this->windows.size();
}
widgets::Window *WindowManager::windowAt(int index)
{
if (index < 0 || (size_t)index >= this->windows.size()) {
2017-12-14 00:25:06 +01:00
return nullptr;
}
qDebug() << "getting window at bad index" << index;
return this->windows.at(index);
}
2017-04-12 17:46:44 +02:00
void WindowManager::save()
2017-01-26 21:04:01 +01:00
{
assert(this->mainWindow);
this->mainWindow->save();
for (widgets::Window *window : this->windows) {
window->save();
}
2017-01-26 21:04:01 +01:00
}
2017-04-14 17:52:22 +02:00
} // namespace chatterino