private void OnUserAddApp(int id, ActivityInfo app) { FolderModel folder = MFolders.Get(id); folder.Apps.Add(app); ResizeToGridAndSave(id, -1); }
private void OnUserRemoveApp(int id, ActivityInfo app) { RemoveAppFromView(id, app); FolderModel folder = MFolders.Get(id); folder.Apps.Remove(app); ResizeToGridAndSave(id, -1); }
//JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET: //ORIGINAL LINE: private void resizeToGridAndSave(final int id, final int cols) private void ResizeToGridAndSave(int id, int cols) { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final wei.mark.standout.ui.Window window = getWindow(id); Window window = getWindow(id); window.Post(() => { FlowLayout flow = (FlowLayout)window.FindViewById(Resource.Id.flow); FolderModel folder = MFolders.Get(id); int count = folder.Apps.Count; int columns = cols; if (cols == -1) { columns = flow.GetCols(); } if (columns < 2) { columns = 2; } int rows = count / columns; if (count % columns > 0) { rows++; } if (rows < 1) { rows = 1; } int width = flow.Left + (((ViewGroup)flow.Parent).Width - flow.Right) + columns * SquareWidth; int height = width; if (count > 0) { height = flow.Top + (((ViewGroup)flow.Parent).Height - flow.Bottom) + rows * flow.GetChildHeight(); } StandOutLayoutParams @params = window.GetLayoutParams(); @params.Width = width; @params.Height = height; updateViewLayout(id, @params); folder.Width = width; folder.Height = height; SaveFolder(folder); }); }
public override void onReceiveData(int id, int requestCode, Bundle data, Type fromCls, int fromId) { switch (requestCode) { case APP_SELECTOR_CODE: if (APP_SELECTOR_ID == id) { // app selector receives data Window window2 = show(APP_SELECTOR_ID); window2.data.PutInt("fromId", fromId); } break; case APP_SELECTOR_FINISHED_CODE: //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final Android.Content.pm.ActivityInfo app = data.getParcelable("app"); ActivityInfo app = (ActivityInfo)data.GetParcelable("app"); Log.Debug("FloatingFolder", "Received app: " + app); Window window = getWindow(id); if (window == null) { return; } ViewGroup flow = (ViewGroup)window.FindViewById(Resource.Id.flow); AddAppToFolder(id, app, flow); OnUserAddApp(id, app); break; case STARTUP_CODE: LoadAllFolders(); if (MFolders.Size() == 0) { MFolders.Put(DEFAULT_ID, new FolderModel()); show(DEFAULT_ID); } else { for (int i = 0; i < MFolders.Size(); i++) { FolderModel folder = MFolders.Get(MFolders.KeyAt(i)); if (folder.Shown) { show(folder.Id); } } } break; } }
//JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET: //ORIGINAL LINE: @Override public boolean onTouchBody(final int id, final wei.mark.standout.ui.Window window, final Android.Views.View view, Android.Views.MotionEvent event) public bool OnTouchBody(int id, Window window, View view, MotionEvent @event) { if (id != APP_SELECTOR_ID && @event.Action == Android.Views.MotionEventActions.Move) { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final StandOutLayoutParams params = (StandOutLayoutParams) window.getLayoutParams(); StandOutLayoutParams @params = window.GetLayoutParams(); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final Android.Views.View folderView = window.findViewById(Resource.id.folder); View folderView = window.FindViewById(Resource.Id.folder); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final Android.widget.ImageView screenshot = (Android.widget.ImageView) window.findViewById(Resource.id.preview); ImageView screenshot = (ImageView)window.FindViewById(Resource.Id.preview); FolderModel folder = MFolders.Get(id); // if touch edge if (@params.X <= 0) { // first time touch edge if (folder.FullSize) { folder.FullSize = false; //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final Android.graphics.drawable.Drawable drawable = getResources().getDrawable(Resource.drawable.ic_menu_archive); Drawable drawable = Resources.GetDrawable(Resource.Drawable.ic_menu_archive); screenshot.SetImageDrawable(drawable); MFadeOut.SetAnimationListener(new AnimationListenerAnonymousInnerClass(this, id, @params, folderView, screenshot, drawable)); folderView.StartAnimation(MFadeOut); } } else { // not touch edge // first time not touch edge if (!folder.FullSize) { folder.FullSize = true; MFadeOut.SetAnimationListener(new AnimationListenerAnonymousInnerClass2(this, id, window, @params, folderView, screenshot)); screenshot.StartAnimation(MFadeOut); } } } return(false); }
private void SaveFolder(FolderModel folder) { System.IO.FileStream @out = null; try { @out = (System.IO.FileStream)OpenFileOutput(string.Format("folder{0:D}", folder.Id), Android.Content.FileCreationMode.Private); @out.WriteByte(byte.Parse(string.Format("{0:D}\n", folder.Width))); @out.WriteByte(byte.Parse(string.Format("{0:D}\n", folder.Height))); foreach (ActivityInfo appInFolder in folder.Apps) { ComponentName name = new ComponentName(appInFolder.PackageName, appInFolder.Name); @out.WriteByte(byte.Parse((name.FlattenToString() + "\n"))); } } catch (FileNotFoundException e) { System.Console.WriteLine(e.Message); System.Console.Write(e.StackTrace); } catch (IOException e) { System.Console.WriteLine(e.ToString()); System.Console.Write(e.StackTrace); } finally { if (@out != null) { try { @out.Close(); } catch (IOException e) { System.Console.WriteLine(e.ToString()); System.Console.Write(e.StackTrace); } } } }
public override StandOutLayoutParams getParams(int id, Window window) { if (APP_SELECTOR_ID == id) { return(new StandOutLayoutParams(this, id, 400, ViewGroup.LayoutParams.MatchParent, StandOutLayoutParams.CENTER, StandOutLayoutParams.TOP)); } else { FolderModel folder = MFolders.Get(id); int width = folder.Width; int height = folder.Height; if (width == 0) { width = 400; } if (height == 0) { height = 400; } return(new StandOutLayoutParams(this, id, width, height, 50, 50)); } }
//JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET: //ORIGINAL LINE: @Override public void createAndAttachView(final int id, Android.widget.FrameLayout frame) public override void CreateAndAttachView(int id, FrameLayout frame) { LayoutInflater inflater = LayoutInflater.From(this); // choose which type of window to show if (APP_SELECTOR_ID == id) { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final Android.Views.View view = inflater.inflate(Resource.layout.app_selector, frame, true); View view = inflater.Inflate(Resource.Layout.app_selector, frame, true); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final Android.widget.ListView listView = (Android.widget.ListView) view.findViewById(Resource.id.list); ListView listView = (ListView)view.FindViewById(Resource.Id.list); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final java.util.List<Android.Content.pm.ActivityInfo> apps = new java.util.ArrayList<Android.Content.pm.ActivityInfo>(); IList <ActivityInfo> apps = new List <ActivityInfo>(); listView.Clickable = (true); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final AppAdapter adapter = new AppAdapter(this, Resource.layout.app_row, apps); AppAdapter adapter = new AppAdapter(this, Resource.Layout.app_row, apps); listView.Adapter = (adapter); listView.OnItemClickListener = (new OnItemClickListenerAnonymousInnerClass(this, id, view)); (new Thread(() => { Intent mainIntent = new Intent(Intent.ActionMain, null); mainIntent.AddCategory(Intent.CategoryLauncher); List <ResolveInfo> resolveApps = (List <ResolveInfo>)PackageManager.QueryIntentActivities(mainIntent, 0); resolveApps.Sort(new ComparatorAnonymousInnerClass(this)); foreach (ResolveInfo resolveApp in resolveApps) { apps.Add(resolveApp.ActivityInfo); } Log.Debug("FloatingFolder", "before"); view.Post(() => { Log.Debug("FloatingFolder", "after"); adapter.NotifyDataSetChanged(); }); })).Start(); View cancel = view.FindViewById(Resource.Id.cancel); cancel.SetOnClickListener(new OnClickListenerAnonymousInnerClass(this, id)); } else { // id is not app selector View view = inflater.Inflate(Resource.Layout.folder, frame, true); FlowLayout flow = (FlowLayout)view.FindViewById(Resource.Id.flow); if (MFolders == null) { LoadAllFolders(); } FolderModel folder = MFolders.Get(id); if (folder != null) { foreach (ActivityInfo app in folder.Apps) { AddAppToFolder(id, app, flow); } } } }
private void LoadAllFolders() { MFolders = new SparseArray <FolderModel>(); string[] folders = FileList(); foreach (string folderFileName in folders) { System.IO.FileStream @in = null; try { if (folderFileName.StartsWith("folder", StringComparison.Ordinal)) { FolderModel folder = new FolderModel(); folder.Id = int.Parse(folderFileName.Substring("folder".Length)); @in = (System.IO.FileStream)OpenFileInput(folderFileName); System.IO.MemoryStream bos = new System.IO.MemoryStream(); byte[] b = new byte[1024]; int bytesRead; while ((bytesRead = @in.Read(b, 0, b.Length)) != -1) { bos.Write(b, 0, bytesRead); } byte[] bytes = bos.ToArray(); string appNames = StringHelperClass.NewString((sbyte[])(Array)bytes); int i = 0; foreach (string appName in appNames.Split("\n", true)) { if (i < 2) { // width and height try { if (i == 0) { folder.Width = int.Parse(appName); } else if (i == 1) { folder.Height = int.Parse(appName); } } catch (System.FormatException) { string msg = "Please uninstall Floating Folders and reinstall it. The folder format has changed."; Log.Debug("FloatingFolder", msg); Toast.MakeText(this, msg, ToastLength.Short).Show(); break; } i++; } else { if (appName.Length > 0) { ComponentName name = ComponentName.UnflattenFromString(appName); try { ActivityInfo app = MPackageManager.GetActivityInfo(name, 0); folder.Apps.Add(app); MFolders.Put(folder.Id, folder); } catch (PackageManager.NameNotFoundException e) { System.Console.WriteLine(e.ToString()); System.Console.Write(e.StackTrace); } } } } } } catch (FileNotFoundException e) { System.Console.WriteLine(e.ToString()); System.Console.Write(e.StackTrace); } catch (IOException e) { System.Console.WriteLine(e.ToString()); System.Console.Write(e.StackTrace); } finally { if (@in != null) { try { @in.Close(); } catch (IOException e) { System.Console.WriteLine(e.ToString()); System.Console.Write(e.StackTrace); } } } } }