Example #1
0
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());
}
Example #2
0
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);
    }
}
Example #3
0
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);
    }
}
Example #4
0
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);
    }
}
Example #5
0
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);
	}
}
Example #6
0
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);
        }
    }
}