void CourseFilterModel::setView(CourseFilterModel::CourseResourceView view)
{
    if (view == m_view) {
        return;
    }
    m_view = view;
    invalidateFilter();
    emit viewChanged();
    emit filteredCountChanged();
}
void LoginSessionModel::removeSession(const QString &id)
{
	for(int i=0;i<m_sessions.size();++i) {
		if(m_sessions.at(i).id == id) {
			m_sessions.removeAt(i);
			break;
		}
	}
	removeFiltered(id);
	emit filteredCountChanged();
}
void LoginSessionModel::updateSession(const LoginSession &session)
{
	// If the session is already listed, update it in place
	for(int i=0;i<m_sessions.size();++i) {
		if(m_sessions.at(i).id == session.id) {
			m_sessions[i] = session;
			if(session.nsfm && m_hideNsfm)
				removeFiltered(session.id);
			else
				updateFiltered(session);
			emit filteredCountChanged();
			return;
		}
	}

	// Add a new session to the end of the list
	m_sessions << session;

	if(!m_hideNsfm || !session.nsfm)
		updateFiltered(session);
	emit filteredCountChanged();
}
void LoginSessionModel::setHideNsfm(bool hide)
{
	if(hide != m_hideNsfm) {
		m_hideNsfm  = hide;
		beginResetModel();
		if(hide) {
			m_filtered.clear();
			for(const LoginSession &ls : m_sessions)
				if(!ls.nsfm)
					m_filtered << ls;

		} else {
			m_filtered = m_sessions;
		}
		endResetModel();
		emit filteredCountChanged();
	}
}
void CourseFilterModel::setCourseModel(CourseModel *courseModel)
{
    if (courseModel == m_courseModel) {
        return;
    }
    if (m_courseModel) {
        disconnect(m_courseModel, &CourseModel::languageChanged,
                this, &CourseFilterModel::filteredCountChanged);
        disconnect(m_courseModel, &CourseModel::rowCountChanged,
                this, &CourseFilterModel::filteredCountChanged);
    }
    m_courseModel = courseModel;
    connect(m_courseModel, &CourseModel::languageChanged,
            this, &CourseFilterModel::filteredCountChanged);
    connect(m_courseModel, &CourseModel::rowCountChanged,
            this, &CourseFilterModel::filteredCountChanged);

    setSourceModel(m_courseModel);
    sort(0);
    emit courseModelChanged();
    emit filteredCountChanged();
}