/******************************************************************************
 * Copyright (C) 2018-2019 QMatrixClient Project
 *
 * This program is free software; you can redistribute it and/or          *
 * modify it under the terms of the GNU General Public License            *
 * as published by the Free Software Foundation; either version 3         *
 * of the License, or (at your option) any later version.                 *
 *                                                                        *
 * This program is distributed in the hope that it will be useful,        *
 * but WITHOUT ANY WARRANTY; without even the implied warranty of         *
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
 * GNU General Public License for more details.                           *
 *                                                                        *
 * You should have received a copy of the GNU General Public License      *
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.  *
 */

#include "abstractroomordering.h"

#include "roomlistmodel.h"

#include <functional>
using namespace std::placeholders;

AbstractRoomOrdering::AbstractRoomOrdering(RoomListModel* m)
    : QObject(m)
{ }

AbstractRoomOrdering::groupLessThan_closure_t
AbstractRoomOrdering::groupLessThanFactory() const
{
    return std::bind(&AbstractRoomOrdering::groupLessThan, this, _1, _2);
}

AbstractRoomOrdering::roomLessThan_closure_t
AbstractRoomOrdering::roomLessThanFactory(const QVariant& group) const
{
    return std::bind(&AbstractRoomOrdering::roomLessThan, this, group, _1, _2);
}

void AbstractRoomOrdering::updateGroups(Room* room)
{
    model()->updateGroups(room);
}

RoomListModel* AbstractRoomOrdering::model() const
{
    return static_cast<RoomListModel*>(parent());
}
