void IrcUserModelPrivate::setUsers(const QList<IrcUser*>& users, bool reset) { Q_Q(IrcUserModel); bool wasEmpty = userList.isEmpty(); if (reset) q->beginResetModel(); userList = users; if (sortMethod != Irc::SortByHand) { if (sortOrder == Qt::AscendingOrder) qSort(userList.begin(), userList.end(), IrcUserLessThan(q, sortMethod)); else qSort(userList.begin(), userList.end(), IrcUserGreaterThan(q, sortMethod)); } updateTitles(); if (reset) q->endResetModel(); QStringList names; if (channel) names = IrcChannelPrivate::get(channel)->names; emit q->namesChanged(names); emit q->titlesChanged(titles); emit q->usersChanged(userList); emit q->countChanged(userList.count()); if (wasEmpty != userList.isEmpty()) emit q->emptyChanged(userList.isEmpty()); }
void IrcUserModelPrivate::insertUser(int index, IrcUser* user, bool notify) { Q_Q(IrcUserModel); if (index == -1) index = userList.count(); if (sortMethod != Irc::SortByHand) { QList<IrcUser*>::iterator it; if (sortOrder == Qt::AscendingOrder) it = qUpperBound(userList.begin(), userList.end(), user, IrcUserLessThan(q, sortMethod)); else it = qUpperBound(userList.begin(), userList.end(), user, IrcUserGreaterThan(q, sortMethod)); index = it - userList.begin(); } if (notify) emit q->aboutToBeAdded(user); q->beginInsertRows(QModelIndex(), index, index); userList.insert(index, user); updateTitles(); q->endInsertRows(); if (notify) { emit q->added(user); emit q->namesChanged(IrcChannelPrivate::get(channel)->names); emit q->titlesChanged(titles); emit q->usersChanged(userList); emit q->countChanged(userList.count()); if (userList.count() == 1) emit q->emptyChanged(false); } }
void IrcUserModelPrivate::promoteUser(IrcUser* user) { Q_Q(IrcUserModel); if (sortMethod == Irc::SortByActivity) { const bool notify = false; removeUser(user, notify); insertUser(0, user, notify); if (updateTitles()) emit q->titlesChanged(titles); emit q->usersChanged(userList); } }
void IrcUserModelPrivate::renameUser(IrcUser* user) { Q_Q(IrcUserModel); if (updateUser(user) && sortMethod != Irc::SortByHand) { QList<IrcUser*> users = userList; const bool notify = false; removeUser(user, notify); insertUser(-1, user, notify); if (updateTitles()) emit q->titlesChanged(titles); if (users != userList) emit q->usersChanged(userList); } }
void PlotterSettings::readConfig() { QSettings s; int size = s.beginReadArray("plotters"); foreach(PlotterConfig *pc, plotterConfigs) { delete pc; } plotterConfigs.clear(); for(int i = 0; i < tabs->count(); i++) { tabs->removeTab(0); } foreach(PlotterConfigWidget * w, plotterConfigWidgets) { delete w; } plotterConfigWidgets.clear(); for(int i = 0; i < size; ++i) { s.setArrayIndex(i); PlotterConfig *pc = new PlotterConfig; pc->readConfig(&s); plotterConfigs << pc; PlotterConfigWidget *pcw = new PlotterConfigWidget(pc); tabs->addTab(pcw, ""); plotterConfigWidgets << pcw; connect(pcw, SIGNAL(titleChanged()), this, SLOT(updateTitles())); pcw->reloadConfig(); } s.endArray(); if(plotterConfigs.size() == 1) { tabs->setTabsClosable(false); } else { tabs->setTabsClosable(true); } }
void IrcUserModelPrivate::removeUser(IrcUser* user, bool notify) { Q_Q(IrcUserModel); int idx = userList.indexOf(user); if (idx != -1) { if (notify) emit q->aboutToBeRemoved(user); q->beginRemoveRows(QModelIndex(), idx, idx); userList.removeAt(idx); updateTitles(); q->endRemoveRows(); if (notify) { emit q->removed(user); emit q->namesChanged(IrcChannelPrivate::get(channel)->names); emit q->titlesChanged(titles); emit q->usersChanged(userList); emit q->countChanged(userList.count()); if (userList.isEmpty()) emit q->emptyChanged(true); } } }