private List <MenuItem> EditGroup(List <ExtendedItem> items) { var groupItems = new List <MenuItem>(); //Check Out var checkOutItems = items.Where(i => i.ChangeType == ChangeType.None || i.ChangeType == ChangeType.Lock || i.ItemType == ItemType.Folder).ToList(); if (checkOutItems.Any()) { MenuItem checkOutItem = new MenuItem(GettextCatalog.GetString("Check out items")); checkOutItem.Activated += (sender, e) => { CheckOutDialog.Open(checkOutItems, _currentWorkspace); FireFilesChanged(checkOutItems); RefreshList(items); }; groupItems.Add(checkOutItem); } //Lock var lockItems = items.Where(i => !i.IsLocked).ToList(); if (lockItems.Any()) { MenuItem lockItem = new MenuItem(GettextCatalog.GetString("Lock")); lockItem.Activated += (sender, e) => { LockDialog.Open(lockItems, _currentWorkspace); FireFilesChanged(lockItems); RefreshList(items); }; groupItems.Add(lockItem); } //UnLock var unLockItems = items.Where(i => i.IsLocked && !i.HasOtherPendingChange).ToList(); if (unLockItems.Any()) { MenuItem unLockItem = new MenuItem(GettextCatalog.GetString("UnLock")); unLockItem.Activated += (sender, e) => { var folders = new List <string>(unLockItems.Where(i => i.ItemType == ItemType.Folder).Select(i => (string)i.ServerPath)); var files = new List <string>(unLockItems.Where(i => i.ItemType == ItemType.File).Select(i => (string)i.ServerPath)); _currentWorkspace.LockFolders(folders, LockLevel.None); _currentWorkspace.LockFiles(files, LockLevel.None); FireFilesChanged(unLockItems); RefreshList(items); }; groupItems.Add(unLockItem); } //Rename var ableToRename = items.FirstOrDefault(i => !i.ChangeType.HasFlag(ChangeType.Delete)); if (ableToRename != null) { MenuItem renameItem = new MenuItem(GettextCatalog.GetString("Rename")); renameItem.Activated += (sender, e) => { RenameDialog.Open(ableToRename, _currentWorkspace); FireFilesChanged(new List <ExtendedItem> { ableToRename }); RefreshList(items); }; groupItems.Add(renameItem); } //Delete var ableToDelete = items.Where(i => !i.ChangeType.HasFlag(ChangeType.Delete)).ToList(); if (ableToDelete.Any()) { MenuItem deleteItem = new MenuItem(GettextCatalog.GetString("Delete")); deleteItem.Activated += (sender, e) => DeleteItems(ableToDelete); groupItems.Add(deleteItem); } //Undo var undoItems = items.Where(i => !i.ChangeType.HasFlag(ChangeType.None) || i.ItemType == ItemType.Folder).ToList(); if (undoItems.Any()) { MenuItem revertItem = new MenuItem(GettextCatalog.GetString("Undo Changes")); revertItem.Activated += (sender, e) => { UndoDialog.Open(undoItems, _currentWorkspace); FireFilesChanged(undoItems); RefreshList(items); }; groupItems.Add(revertItem); MenuItem checkinItem = new MenuItem(GettextCatalog.GetString("Check In pending changes")); checkinItem.Activated += (sender, e) => { CheckInDialog.Open(undoItems, _currentWorkspace); FireFilesChanged(undoItems); RefreshList(items); }; groupItems.Add(checkinItem); } return(groupItems); }
protected override void OnCreate(Bundle savedInstanceState) { RequestWindowFeature(WindowFeatures.NoTitle); Window.AddFlags(WindowManagerFlags.KeepScreenOn); base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.activity_screen_slide); PharmacyUUID = Intent.GetStringExtra("UUID"); if (string.IsNullOrEmpty(PharmacyUUID)) { return; } AttendanceLast = MainDatabase.GetAttendaces(PharmacyUUID).OrderByDescending(i => i.When).FirstOrDefault(); var attendanceLastUUID = AttendanceLast == null ? string.Empty : AttendanceLast.UUID; Materials = MainDatabase.GetItems <Material>(); FragmentTitle = FindViewById <TextView>(Resource.Id.aaTitleTV); FragmentTitle.Text = @"АПТЕКА"; Pager = FindViewById <ViewPager>(Resource.Id.aaContainerVP); Pager.AddOnPageChangeListener(this); Pager.OffscreenPageLimit = 3; Pager.Adapter = new AttendancePagerAdapter(SupportFragmentManager, PharmacyUUID, attendanceLastUUID); var btnStartStop = FindViewById <Button>(Resource.Id.aaStartOrStopAttendanceB); btnStartStop.Click += (sender, e) => { if (!IsLocationActive() || !IsInternetActive()) { return; } if (AttendanceStart == null) { AttendanceStart = DateTimeOffset.Now; // Location Locations = new List <Location>(); LocMgr = GetSystemService(LocationService) as LocationManager; var locationCriteria = new Criteria(); locationCriteria.Accuracy = Accuracy.Coarse; locationCriteria.PowerRequirement = Power.Medium; string locationProvider = LocMgr.GetBestProvider(locationCriteria, true); System.Diagnostics.Debug.Print("Starting location updates with " + locationProvider); LocMgr.RequestLocationUpdates(locationProvider, 5000, 1, this); // !Location if (Pager.CurrentItem == 2) { FragmentTitle.Text = @"СОБИРАЕМАЯ ИНФОРМАЦИЯ"; } if (Pager.CurrentItem == 3) { FragmentTitle.Text = @"ФОТО НА ВИЗИТЕ"; } for (int f = 0; f < C_NUM_PAGES; f++) { var fragment = GetFragment(f); if (fragment is IAttendanceControl) { (fragment as IAttendanceControl).OnAttendanceStart(AttendanceStart); } } Close.Visibility = ViewStates.Invisible; Contracts.Visibility = ViewStates.Visible; Finance.Visibility = ViewStates.Visible; var financeParams = Finance.LayoutParameters as RelativeLayout.LayoutParams; financeParams.AddRule(LayoutRules.LeftOf, Resource.Id.aaContractsIV); History.Visibility = ViewStates.Visible; var historyParams = History.LayoutParameters as RelativeLayout.LayoutParams; historyParams.AddRule(LayoutRules.LeftOf, Resource.Id.aaFinanceIV); Material.Visibility = ViewStates.Visible; var materialParams = Material.LayoutParameters as RelativeLayout.LayoutParams; materialParams.AddRule(LayoutRules.LeftOf, Resource.Id.aaHistoryIV); var button = sender as Button; button.SetBackgroundResource(Resource.Color.Deep_Orange_500); button.Text = "ЗАКОНЧИТЬ ВИЗИТ"; return; } if ((DateTimeOffset.Now - AttendanceStart.Value).TotalSeconds < 30) { return; } if (CurrentFocus != null) { var imm = (InputMethodManager)GetSystemService(InputMethodService); imm.HideSoftInputFromWindow(CurrentFocus.WindowToken, HideSoftInputFlags.None); } var fragmentTransaction = SupportFragmentManager.BeginTransaction(); var prev = SupportFragmentManager.FindFragmentByTag(LockDialog.TAG); if (prev != null) { fragmentTransaction.Remove(prev); } fragmentTransaction.AddToBackStack(null); var lockDialog = LockDialog.Create("Идет сохранение данных...", Resource.Color.Deep_Orange_500); lockDialog.Cancelable = false; lockDialog.Show(fragmentTransaction, LockDialog.TAG); LocMgr.RemoveUpdates(this); new Task(() => { Thread.Sleep(2000); // иначе не успеет показаться диалог RunOnUiThread(() => { var transaction = MainDatabase.BeginTransaction(); var attendance = MainDatabase.Create2 <Attendance>(); attendance.Pharmacy = PharmacyUUID; attendance.When = AttendanceStart.Value; attendance.Duration = (DateTimeOffset.Now - AttendanceStart.Value).TotalMilliseconds; foreach (var location in Locations) { var gps = MainDatabase.Create2 <GPSData>(); gps.Attendance = attendance.UUID; gps.Accuracy = location.Accuracy; gps.Altitude = location.Altitude; gps.Bearing = location.Bearing; gps.ElapsedRealtimeNanos = location.ElapsedRealtimeNanos; gps.IsFromMockProvider = location.IsFromMockProvider; gps.Latitude = location.Latitude; gps.Longitude = location.Longitude; gps.Provider = location.Provider; gps.Speed = location.Speed; } // Оповещаем фрагменты о завершении визита for (int f = 0; f < C_NUM_PAGES; f++) { var fragment = GetFragment(f); if (fragment is IAttendanceControl) { (fragment as IAttendanceControl).OnAttendanceStop(transaction, attendance); } } transaction.Commit(); //if (lockDialog != null) { // lockDialog.DismissAllowingStateLoss(); //} Finish(); }); }).Start(); }; // TODO: uncomment if (AttendanceLast != null) { if (AttendanceLast.When.Date == DateTimeOffset.UtcNow.Date) { btnStartStop.Visibility = ViewStates.Gone; } } Close = FindViewById <Button>(Resource.Id.aaCloseB); Close.Click += (sender, e) => { Finish(); }; Contracts = FindViewById <ImageView>(Resource.Id.aaContractsIV); Contracts.Click += (sender, e) => { var contractActivity = new Intent(this, typeof(ContractActivity)); contractActivity.PutExtra(ContractActivity.C_PHARMACY_UUID, PharmacyUUID); StartActivity(contractActivity); }; Finance = FindViewById <ImageView>(Resource.Id.aaFinanceIV); Finance.Click += (sender, e) => { var financeActivity = new Intent(this, typeof(FinanceActivity)); financeActivity.PutExtra(@"UUID", PharmacyUUID); financeActivity.PutExtra(FinanceActivity.C_IS_CAN_ADD, false); StartActivity(financeActivity); }; History = FindViewById <ImageView>(Resource.Id.aaHistoryIV); History.Click += (sender, e) => { var historyActivity = new Intent(this, typeof(HistoryActivity)); historyActivity.PutExtra(@"UUID", PharmacyUUID); StartActivity(historyActivity); }; Material = FindViewById <ImageView>(Resource.Id.aaMaterialIV); Material.Click += (sender, e) => { if (Materials.Count == 0) { return; } var materialItems = new List <MaterialItem>(); var materialFiles = MainDatabase.GetItems <MaterialFile>(); foreach (var mf in materialFiles) { var file = new Java.IO.File(Helper.MaterialDir, mf.fileName); if (file.Exists()) { var found = Materials.FirstOrDefault(m => m.uuid == mf.material); if (found != null) { materialItems.Add(new MaterialItem(found.name, file)); } } } if (materialItems.Count == 0) { return; } new AlertDialog.Builder(this) .SetTitle("Выберите материал для показа:") .SetCancelable(true) .SetItems( materialItems.Select(item => item.MaterialName).ToArray(), (caller, arguments) => { var intent = new Intent(Intent.ActionView); var uri = Android.Net.Uri.FromFile(materialItems[arguments.Which].FilePath); intent.SetDataAndType(uri, "application/pdf"); intent.SetFlags(ActivityFlags.NoHistory); StartActivity(intent); }) .Show(); }; }
public override void OnExecute(CommandEventArgs e) { IEnumerable <SvnItem> items = e.Argument as IEnumerable <SvnItem>; if (e.Command == AnkhCommand.SccLock && items == null) { return; } if (items == null) { List <SvnItem> choices = new List <SvnItem>(); foreach (SvnItem item in e.Selection.GetSelectedSvnItems(false)) { if (item.IsFile && item.IsVersioned && !item.IsNewAddition && !item.IsLocked) { choices.Add(item); } } items = choices; } if (EnumTools.IsEmpty(items)) { return; } bool stealLocks = false; string comment = ""; AnkhConfig config = e.GetService <IAnkhConfigurationService>().Instance; if (!e.DontPrompt && (e.PromptUser || !(Shift || config.SuppressLockingUI))) { using (LockDialog dlg = new LockDialog()) { dlg.Context = e.Context; dlg.LoadItems(items); if (dlg.ShowDialog(e.Context) != DialogResult.OK) { return; } items = new List <SvnItem>(dlg.GetCheckedItems()); stealLocks = dlg.StealLocks; comment = dlg.Message; } } ICollection <string> files = SvnItem.GetPaths(items); if (files.Count == 0) { return; } SortedList <string, string> alreadyLockedFiles = new SortedList <string, string>(StringComparer.OrdinalIgnoreCase); e.GetService <IProgressRunner>().RunModal( CommandStrings.LockingTitle, delegate(object sender, ProgressWorkerArgs ee) { SvnLockArgs la = new SvnLockArgs(); la.StealLock = stealLocks; la.Comment = comment; la.AddExpectedError(SvnErrorCode.SVN_ERR_FS_PATH_ALREADY_LOCKED); la.Notify += delegate(object nSender, SvnNotifyEventArgs notifyArgs) { if (notifyArgs.Action == SvnNotifyAction.LockFailedLock) { string userName; if (notifyArgs.Lock != null && !string.IsNullOrEmpty(notifyArgs.Lock.Owner)) { userName = notifyArgs.Lock.Owner; } else { userName = GuessUserFromError(notifyArgs.Error.Message) ?? "?"; } alreadyLockedFiles.Add(notifyArgs.FullPath, userName); } }; ee.Client.Lock(files, la); }); if (alreadyLockedFiles.Count == 0) { return; } StringBuilder msg = new StringBuilder(); msg.AppendLine(CommandStrings.ItemsAlreadyLocked); msg.AppendLine(); foreach (KeyValuePair <string, string> kv in alreadyLockedFiles) { if (!string.IsNullOrEmpty(kv.Value)) { msg.AppendFormat(CommandStrings.ItemFileLocked, kv.Key, kv.Value); } else { msg.Append(kv.Key); } msg.AppendLine(); } // TODO: Create a dialog where the user can select what locks to steal, and also what files are already locked. AnkhMessageBox box = new AnkhMessageBox(e.Context); DialogResult rslt = box.Show( msg.ToString().TrimEnd(), "", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); if (rslt == DialogResult.Yes) { e.GetService <IProgressRunner>().RunModal( CommandStrings.LockingTitle, delegate(object sender, ProgressWorkerArgs ee) { SvnLockArgs la = new SvnLockArgs(); la.StealLock = true; la.Comment = comment; ee.Client.Lock(files, la); }); } }