public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
        {
            var cell = tableView.DequeueReusableCell(PublicationSortingCell.Key) as PublicationSortingCell;

            if (cell == null)
            {
                cell = new PublicationSortingCell();
            }

            // TODO: populate the cell with the appropriate data based on the indexPath
            int         publicationIndex = (int)indexPath.LongRow;
            Publication curPublication   = cachedPublications[publicationIndex];

            cell.TextLabel.Text  = curPublication.Name;
            cell.TextLabel.Font  = UIFont.SystemFontOfSize(14);
            cell.PublicationId   = curPublication.BookId;
            cell.TextLabel.Lines = 0;
            CGSize expectedLableSize = TextDisplayUtil.GetStringBoundRect(curPublication.Name, UIFont.SystemFontOfSize(14), new CGSize(200, 600));

            if (expectedLableSize.Height > 21)
            {
                cell.TextLabel.Frame = new CGRect(cell.TextLabel.Frame.X, cell.TextLabel.Frame.Y, 200, expectedLableSize.Height);
            }

            return(cell);
        }
        public async override void MoveRow(UITableView tableView, NSIndexPath sourceIndexPath, NSIndexPath destinationIndexPath)
        {
            List <int> publicationIds = new List <int> ();

            foreach (var publication in cachedPublications)
            {
                publicationIds.Add(publication.BookId);
            }
            PublicationSortingCell sourceCell  = (PublicationSortingCell)tableView.CellAt(sourceIndexPath);
            PublicationSortingCell desCell     = (PublicationSortingCell)tableView.CellAt(destinationIndexPath);
            int sourceIndexAtPublicationIdList = publicationIds.IndexOf(sourceCell.PublicationId);

            int desIndexAtPublicationIdList = publicationIds.IndexOf(desCell.PublicationId);

            publicationIds.RemoveAt(sourceIndexAtPublicationIdList);
            publicationIds.Insert(desIndexAtPublicationIdList, sourceCell.PublicationId);

            await PublicationUtil.Instance.OrganiseDlsOrder(publicationIds);

            cachedPublications = PublicationUtil.Instance.GetPublicationOffline();
            curViewController.ReloadPublicationList();
        }