Ejemplo n.º 1
0
        /// <summary>
        /// Resolve Selected Conflicts
        /// </summary>
        /// <param name="localChangesWin">true if localchanges</param>
        private void ResolveSelectedConflicts(bool localChangesWin)
        {
            TreeModel tModel;
            Queue     iterQueue;

            iterQueue = new Queue();
            TreeSelection tSelect   = ConflictTreeView.Selection;
            Array         treePaths = tSelect.GetSelectedRows(out tModel);

            // We can't remove anything while getting the iters
            // because it will change the paths and we'll remove
            // the wrong stuff.
            foreach (TreePath tPath in treePaths)
            {
                TreeIter iter;

                if (tModel.GetIter(out iter, tPath))
                {
                    iterQueue.Enqueue(iter);
                }
            }

            if (iterQueue.Count > 0)
            {
                // Now that we have all of the TreeIters, loop and
                // remove them all
                while (iterQueue.Count > 0)
                {
                    TreeIter iter = (TreeIter)iterQueue.Dequeue();

                    ConflictHolder ch = (ConflictHolder)tModel.GetValue(iter, 0);
                    if (!ch.IsNameConflict)
                    {
                        try
                        {
                            ifws.ResolveFileConflict(
                                ch.FileConflict.iFolderID,
                                ch.FileConflict.ConflictID,
                                localChangesWin);

                            ConflictTreeStore.Remove(ref iter);
                        }
                        catch
                        {}
                    }
                }
                UpdateFields(null, false);
            }
        }