Better way to store expanded elements in roster, several clean ups, translations

This commit is contained in:
Blue 2022-08-17 19:25:35 +03:00
parent 7e9eed2075
commit d162494ec8
Signed by untrusted user: blue
GPG key ID: 9B203B252A63EE38
18 changed files with 874 additions and 252 deletions

View file

@ -60,7 +60,8 @@ Squawk::Squawk(Models::Roster& p_rosterModel, QWidget *parent) :
connect(m_ui->comboBox, qOverload<int>(&QComboBox::activated), this, &Squawk::onComboboxActivated);
//connect(m_ui->roster, &QTreeView::doubleClicked, this, &Squawk::onRosterItemDoubleClicked);
connect(m_ui->roster, &QTreeView::customContextMenuRequested, this, &Squawk::onRosterContextMenu);
connect(m_ui->roster, &QTreeView::collapsed, this, &Squawk::onItemCollepsed);
connect(m_ui->roster, &QTreeView::collapsed, this, &Squawk::itemCollapsed);
connect(m_ui->roster, &QTreeView::expanded, this, &Squawk::itemExpanded);
connect(m_ui->roster->selectionModel(), &QItemSelectionModel::currentRowChanged, this, &Squawk::onRosterSelectionChanged);
connect(rosterModel.accountsModel, &Models::Accounts::changed, this, &Squawk::onAccountsChanged);
@ -491,49 +492,7 @@ void Squawk::writeSettings()
settings.endGroup();
settings.setValue("splitter", m_ui->splitter->saveState());
settings.remove("roster");
settings.beginGroup("roster");
int size = rosterModel.accountsModel->rowCount(QModelIndex());
for (int i = 0; i < size; ++i) {
QModelIndex acc = rosterModel.index(i, 0, QModelIndex());
Models::Account* account = rosterModel.accountsModel->getAccount(i);
QString accName = account->getName();
settings.beginGroup(accName);
settings.setValue("expanded", m_ui->roster->isExpanded(acc));
std::deque<QString> groups = rosterModel.groupList(accName);
for (const QString& groupName : groups) {
settings.beginGroup(groupName);
QModelIndex gIndex = rosterModel.getGroupIndex(accName, groupName);
settings.setValue("expanded", m_ui->roster->isExpanded(gIndex));
settings.endGroup();
}
settings.endGroup();
}
settings.endGroup();
settings.endGroup();
settings.sync();
}
void Squawk::onItemCollepsed(const QModelIndex& index)
{
QSettings settings;
Models::Item* item = static_cast<Models::Item*>(index.internalPointer());
switch (item->type) {
case Models::Item::account:
settings.setValue("ui/roster/" + item->getName() + "/expanded", false);
break;
case Models::Item::group: {
QModelIndex accInd = rosterModel.parent(index);
Models::Account* account = rosterModel.accountsModel->getAccount(accInd.row());
settings.setValue("ui/roster/" + account->getName() + "/" + item->getName() + "/expanded", false);
}
break;
default:
break;
}
}
void Squawk::onRosterSelectionChanged(const QModelIndex& current, const QModelIndex& previous)