protected virtual List <ExplorerObject> CreateAndroidDrives( Transform transform, Action <ExplorerObject> onInitialize = null) { if (FolderObject) { List <ExplorerObject> objects = new List <ExplorerObject>(); string[] drives = new string[] { //Environment.GetFolderPath(Environment.SpecialFolder.Personal), AndroidUtilities.GetAndroidExternalStoragePath() }; Debug.LogFormat("Found Drive count: {0}", drives.Length); foreach (string d in drives) { Debug.LogFormat("Processing Drive: {0}", d); ExplorerObject newObject = CreateObject(d, FolderObject, ContentContainer, onInitialize, false); if (newObject != null) { objects.Add(newObject); } } return(objects); } return(null); }
protected override void InitBindings() { MainActivity.CurrentContext.RequestedOrientation = ScreenOrientation.Portrait; Bindings = new List <Binding>(); Bindings.Add(this.SetBinding(() => ViewModel.UserNameInput, () => UsernameInput.Text, BindingMode.TwoWay)); Bindings.Add(this.SetBinding(() => ViewModel.Authenticating, () => LoginPageLoadingSpinner.Visibility, BindingMode.OneWay) .ConvertSourceToTarget(Converters.BoolToVisibility)); Bindings.Add(this.SetBinding(() => ViewModel.PasswordInput, () => PasswordInput.Text, BindingMode.TwoWay)); Bindings.Add( this.SetBinding(() => ViewModel.LogOutButtonVisibility, () => LoginPageLogOutButton.Visibility).ConvertSourceToTarget(Converters.BoolToVisibility)); PasswordInput.SetOnEditorActionListener(new OnEditorActionListener(action => { if (action == ImeAction.Done) { ViewModel.LogInCommand.Execute(null); } AndroidUtilities.HideKeyboard(); })); LoginPageRegisterButton.SetOnClickListener(new OnClickListener(v => ViewModel.NavigateRegister.Execute(null))); LoginPageProblemsButton.SetOnClickListener(new OnClickListener(v => ViewModel.ProblemsCommand.Execute(null))); SignInButton.SetOnClickListener(new OnClickListener(v => { ViewModel.LogInCommand.Execute(null); AndroidUtilities.HideKeyboard(); })); LoginPageLogOutButton.SetOnClickListener(new OnClickListener(v => ViewModel.LogOutCommand.Execute(null))); }
private void CleanupDialog() { AndroidUtilities.HideKeyboard(); _tagsDialogBindings?.ForEach(binding => binding.Detach()); _tagsDialog?.Dismiss(); MainActivity.CurrentContext.DialogToCollapseOnBack = null; }
private void InstallSdkToolsIfNeeded() { string prjDir = GetAndroidProjectInCompiledDir(); string packages = "\"build-tools;30.0.3\" \"ndk;21.3.6528147\" \"platforms;android-29\""; AndroidUtilities.RunSdkManager(packages, prjDir); }
private bool IsProjectSane(CompileMessages errors) { foreach (string error in AndroidUtilities.GetPreferencesErrors()) { errors.Add(new CompileError("Android Build: " + error)); } return(errors.Count == 0); }
public EmojiSpan(EmojiDrawable d, int verticalAlignment, int s, Paint.FontMetricsInt original) : base(d) { fontMetrics = original; if (original != null) { size = System.Math.Abs(fontMetrics.Descent) + System.Math.Abs(fontMetrics.Ascent); if (size == 0) { size = AndroidUtilities.dp(20); } } }
private static void CleanupForumPostTextInputDialog(bool success) { if (_forumTextInputDialog == null) { return; } AndroidUtilities.HideKeyboard(); _success = success; _semaphoreForumTextInput.Release(); _forumTextInputDialog.Dismiss(); _forumTextInputDialog.Dispose(); _forumTextInputDialog = null; }
private static void CleanupTextInputDialog(bool success) { if (_textInputDialog == null) { return; } _success = success; AndroidUtilities.HideKeyboard(); ViewModelLocator.NavMgr.ResetOneTimeOverride(); _semaphoreTextInput.Release(); _textInputDialog.Dismiss(); _textInputDialog.Dispose(); _textInputDialog = null; }
private static void CleanupWatchedDialog() { if (_watchedDialog != null) { AndroidUtilities.HideKeyboard(); _watchedDialog.Dismiss(); } _watchedDialogBindings.ForEach(binding => binding.Detach()); _watchedDialogBindings = new List <Binding>(); _watchedDialog = null; _watchedDialogContext = null; _watchedDialogAction = null; MainActivity.CurrentContext.DialogToCollapseOnBack = null; }
private void StopGradle() { if (!UseGradleDaemon) { return; } string prjDir = GetAndroidProjectInCompiledDir(); string gradle_path = Path.Combine(prjDir, "gradlew.bat"); if (!Directory.Exists(prjDir) || !File.Exists(gradle_path)) { return; } AndroidUtilities.RunGradlewStop(prjDir); }
private void buttonGenerate_Click(object sender, EventArgs e) { string errors = String.Join("\n", AndroidUtilities.GetKeystoreErrors(_ks)); if (!string.IsNullOrEmpty(errors)) { string intro = "We found errors that have to be fixed before keystore geneation:"; MessageBox.Show(intro + "\n\n" + errors); return; } if (AndroidUtilities.RunGenerateKeystore(_ks)) { _lastGeneratedKS = _ks.Copy(); buttonOK.Enabled = true; } }
private static void CleanupGoPageDialog(DialogResult success) { if (_goPageDialog == null) { return; } AndroidUtilities.HideKeyboard(); switch (success) { case DialogResult.Cancel: _result = null; break; case DialogResult.LastPage: _result = -2; break; case DialogResult.FirstPage: _result = -1; break; case DialogResult.InputPage: var text = _goPageDialog.HolderView.FindViewById <EditText>(Resource.Id.ForumGoToPageDialogTextBox) .Text; if (int.TryParse(text, NumberStyles.Any, CultureInfo.InvariantCulture, out int page)) { _result = page; } else { _result = null; } break; default: throw new ArgumentOutOfRangeException(nameof(success), success, null); } GoPageSemaphore.Release(); _goPageDialog.Dismiss(); _goPageDialog.Dispose(); _goPageDialog = null; }
public override int GetSize(Paint paint, ICharSequence text, int start, int end, Paint.FontMetricsInt fm) { if (fm == null) { fm = new Paint.FontMetricsInt(); } if (fontMetrics == null) { int sz = base.GetSize(paint, text, start, end, fm); int offset = AndroidUtilities.dp(8); int w = AndroidUtilities.dp(10); fm.Top = -w - offset; fm.Bottom = w - offset; fm.Ascent = -w - offset; fm.Leading = 0; fm.Descent = w - offset; return(sz); } else { if (fm != null) { fm.Ascent = fontMetrics.Ascent; fm.Descent = fontMetrics.Descent; fm.Top = fontMetrics.Top; fm.Bottom = fontMetrics.Bottom; } if (Drawable != null) { Drawable.SetBounds(0, 0, size, size); } return(size); } }
private void javaHomeCheck() { labelJdkOk.Visible = AndroidUtilities.IsJdkFound(_settings.AndroidJavaHome); }
private static void loadEmoji(int page) { try { float scale = 1.0f; int imageResize = 1; if (AndroidUtilities.density <= 1.0f) { scale = 2.0f; imageResize = 2; } else if (AndroidUtilities.density <= 1.5f) { scale = 3.0f; imageResize = 2; } else if (AndroidUtilities.density <= 2.0f) { scale = 2.0f; } else { scale = 3.0f; } var imageName = String.Format("emoji%.01fx_%d.jpg", scale, page); var imageFile = Application.Context.ApplicationContext.GetFileStreamPath(imageName); if (!imageFile.Exists()) { var iss = Application.Context.ApplicationContext.Assets.Open("emoji/" + imageName); AndroidUtilities.copyFile(iss, imageFile); iss.Close(); } BitmapFactory.Options opts = new BitmapFactory.Options(); opts.InJustDecodeBounds = true; BitmapFactory.DecodeFile(imageFile.AbsolutePath, opts); int width = opts.OutWidth / imageResize; int height = opts.OutHeight / imageResize; int stride = width * 4; var bitmap = Bitmap.CreateBitmap(width, height, Bitmap.Config.Argb8888); AndroidUtilities.loadBitmap(imageFile.AbsolutePath, bitmap, imageResize, width, height, stride); imageName = String.Format("emoji%.01fx_a_%d.jpg", scale, page); imageFile = Application.Context.ApplicationContext.GetFileStreamPath(imageName); if (!imageFile.Exists()) { var iss = Start.getInstance().Assets.Open("emoji/" + imageName); AndroidUtilities.copyFile(iss, imageFile); iss.Close(); } AndroidUtilities.loadBitmap(imageFile.AbsolutePath, bitmap, imageResize, width, height, stride); AndroidUtilities.runOnUIThread(new Runnable(() => { emojiBmp[page] = bitmap; //NotificationCenter.getInstance().postNotificationName(NotificationCenter.emojiDidLoaded); })); } catch (Java.Lang.Exception ex) { var erro = ex; } }
public override bool Build(CompileMessages errors, bool forceRebuild) { if (!base.Build(errors, forceRebuild)) { return(false); } UseGradleDaemon = Factory.AGSEditor.Settings.AndroidBuildGradleDaemon; string andProjDir = GetAndroidProjectInCompiledDir(); if (!IsProjectSane(errors)) { return(false); } InstallSdkToolsIfNeeded(); AndroidBuildFormat buildFormat = Factory.AGSEditor.CurrentGame.Settings.AndroidBuildFormat; string appName = GetFinalAppName(); string assetsDir = GetAssetsDir(); if (!Directory.Exists(assetsDir)) { Directory.CreateDirectory(assetsDir); } ClearInvalidAssetDirIfNeeded(); foreach (string fileName in Directory.GetFiles(Path.Combine(AGSEditor.OUTPUT_DIRECTORY, AGSEditor.DATA_OUTPUT_DIRECTORY))) { if ((File.GetAttributes(fileName) & (FileAttributes.Hidden | FileAttributes.System | FileAttributes.Temporary)) != 0) { continue; } if ((!fileName.EndsWith(".dll", StringComparison.OrdinalIgnoreCase)) && (!Path.GetFileName(fileName).Equals("winsetup.exe", StringComparison.OrdinalIgnoreCase)) && (!Path.GetFileName(fileName).Equals(AGSEditor.CONFIG_FILE_NAME, StringComparison.OrdinalIgnoreCase))) { string dest_filename = Path.Combine(assetsDir, Path.GetFileName(fileName)); Utilities.HardlinkOrCopy(dest_filename, fileName, true); } } // Update config file with current game parameters Factory.AGSEditor.WriteConfigFile(assetsDir); WriteAndroidCfg(assetsDir); foreach (KeyValuePair <string, string> pair in GetRequiredLibraryPaths()) { string fileName = pair.Key; string originDir = pair.Value; string dest = GetCompiledPath(ANDROID_DIR, Path.GetDirectoryName(fileName)); if (!Directory.Exists(dest)) { // doesn't exist, let's create it Directory.CreateDirectory(dest); } string destFile = GetCompiledPath(ANDROID_DIR, fileName); string originFile = Path.Combine(originDir, fileName); string destFileName = Utilities.ResolveSourcePath(destFile); string sourceFileName = Utilities.ResolveSourcePath(originFile); if (fileName.EndsWith(".so")) { Utilities.HardlinkOrCopy(destFile, originFile, true); } else { File.Copy(sourceFileName, destFileName, true); } } string destDir = GetCompiledPath(ANDROID_DIR, "mygame"); WriteProjectProperties(destDir); WriteLocalStaticProperties(destDir); WriteProjectXml(destDir); IconAssetType iconType = GetGameIconType(); if (iconType != IconAssetType.NoIconFiles) { SetGameIcons(iconType, destDir); } GradleTasks gradleTask = GradleTasks.bundleRelease; if (buildFormat == AndroidBuildFormat.ApkEmbedded) { gradleTask = GradleTasks.assembleRelease; } if (!AndroidUtilities.RunGradlewTask(gradleTask, andProjDir, use_daemon: UseGradleDaemon)) { errors.Add(new CompileError("There was an error running gradle to build the Android App.")); return(false); } string appFinalFile = GetFinalAppName(); string appSrcDir = GetOutputDir(); string generatedAppFile = Path.Combine(appSrcDir, appFinalFile); if (File.Exists(generatedAppFile)) { try { Utilities.HardlinkOrCopy(GetCompiledPath(ANDROID_DIR, appFinalFile), generatedAppFile, true); } catch { } return(true); } errors.Add(new CompileError("Failed to generate Android App.")); return(false); }
private void androidHomeCheck() { labelSdkOk.Visible = AndroidUtilities.IsSdkFound(_settings.AndroidHome); }
private void SearchViewOnQueryTextSubmit(object sender, SearchView.QueryTextSubmitEventArgs queryTextSubmitEventArgs) { AndroidUtilities.HideKeyboard(); ViewModel.SearchCommand.Execute(null); }