android/app/.gitignore | 1 android/app/src/main/AndroidManifest.xml | 14 android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java | 418 ++++------ android/app/src/main/java/org/libreoffice/androidapp/ui/RecentFilesAdapter.java | 20 android/app/src/main/res/drawable/drawer_header.png |binary android/app/src/main/res/layout/activity_directory_browser.xml | 6 android/app/src/main/res/layout/activity_document_browser.xml | 399 +++++---- android/app/src/main/res/layout/file_list_item.xml | 17 android/app/src/main/res/layout/navigation_header.xml | 14 android/app/src/main/res/menu/navigation_menu.xml | 87 +- android/app/src/main/res/menu/view_menu.xml | 55 - android/app/src/main/res/values/strings.xml | 2 android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java | 54 - android/lib/src/main/res/layout/lolib_activity_main.xml | 21 loleaflet/Makefile.am | 1 15 files changed, 534 insertions(+), 575 deletions(-)
New commits: commit bc53677f188d82a80f7bf7be5d400d19697f015c Author: Jan Holesovsky <ke...@collabora.com> AuthorDate: Fri Feb 21 13:39:38 2020 +0100 Commit: Jan Holesovsky <ke...@collabora.com> CommitDate: Fri Feb 21 13:51:54 2020 +0100 android: Show the 'assets' progressbar only when we are going to copy. And use for that the dialog that we already have for Saving... or Loading... the presentation. Change-Id: I005b81514f778d13a0ab485ccdf85845f87edc6e diff --git a/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java b/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java index 9b6c5d168..8fe8636c7 100644 --- a/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java +++ b/android/lib/src/main/java/org/libreoffice/androidlib/LOActivity.java @@ -245,15 +245,6 @@ public class LOActivity extends AppCompatActivity { return true; } - private void updatePreferences() { - if (!sPrefs.getString(ASSETS_EXTRACTED_GIT_COMMIT, "").equals(BuildConfig.GIT_COMMIT)) { - if (copyFromAssets(getAssets(), "unpack", getApplicationInfo().dataDir) && - copyFonts("/system/fonts", getApplicationInfo().dataDir + "/user/fonts")) { - sPrefs.edit().putString(ASSETS_EXTRACTED_GIT_COMMIT, BuildConfig.GIT_COMMIT).apply(); - } - } - } - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -264,26 +255,37 @@ public class LOActivity extends AppCompatActivity { init(); } + /** Initialize the app - copy the assets and create the UI. */ private void init() { + if (sPrefs.getString(ASSETS_EXTRACTED_GIT_COMMIT, "").equals(BuildConfig.GIT_COMMIT)) { + // all is fine, we have already copied the assets + initUI(); + return; + } + + final AlertDialog assetsProgress = createProgressDialog(R.string.preparing_for_the_first_start_after_an_update); + assetsProgress.show(); + new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... voids) { - updatePreferences(); + // copy the new assets + if (copyFromAssets(getAssets(), "unpack", getApplicationInfo().dataDir) && copyFonts("/system/fonts", getApplicationInfo().dataDir + "/user/fonts")) { + sPrefs.edit().putString(ASSETS_EXTRACTED_GIT_COMMIT, BuildConfig.GIT_COMMIT).apply(); + } return null; } @Override protected void onPostExecute(Void aVoid) { + assetsProgress.dismiss(); initUI(); } }.execute(); } + /** Actual initialization of the UI. */ private void initUI() { - TextView assetsTextView = findViewById(R.id.assetsTextView); - ProgressBar assetsProgressbar = findViewById(R.id.assetsProgressbar); - assetsProgressbar.setVisibility(View.GONE); - assetsTextView.setVisibility(View.GONE); isDocDebuggable = sPrefs.getBoolean(KEY_ENABLE_SHOW_DEBUG_INFO, false) && BuildConfig.DEBUG; if (getIntent().getData() != null) { @@ -501,10 +503,6 @@ public class LOActivity extends AppCompatActivity { protected void onResume() { super.onResume(); Log.i(TAG, "onResume.."); - - // check for config change - if (documentLoaded) - updatePreferences(); } @Override @@ -603,17 +601,23 @@ public class LOActivity extends AppCompatActivity { return null; } - /** Show the Saving progress and finish the app. */ - private void finishWithProgress() { + /** Create the progress dialog. */ + private AlertDialog createProgressDialog(int id) { LayoutInflater inflater = this.getLayoutInflater(); + View loadingView = inflater.inflate(R.layout.lolib_dialog_loading, null); TextView loadingText = loadingView.findViewById(R.id.lolib_loading_dialog_text); - loadingText.setText(getText(R.string.saving)); - final AlertDialog savingProgress = new AlertDialog.Builder(LOActivity.this) + loadingText.setText(getText(id)); + + return new AlertDialog.Builder(LOActivity.this) .setView(loadingView) .setCancelable(true) .create(); + } + /** Show the Saving progress and finish the app. */ + private void finishWithProgress() { + final AlertDialog savingProgress = createProgressDialog(R.string.saving); savingProgress.show(); // The 'BYE' takes a considerable amount of time, we need to post it @@ -904,11 +908,7 @@ public class LOActivity extends AppCompatActivity { } private void initiateSlideShow() { - final AlertDialog slideShowProgress = new AlertDialog.Builder(this) - .setCancelable(false) - .setView(R.layout.lolib_dialog_loading) - .create(); - + final AlertDialog slideShowProgress = createProgressDialog(R.string.loading); slideShowProgress.show(); nativeHandler.post(new Runnable() { diff --git a/android/lib/src/main/res/layout/lolib_activity_main.xml b/android/lib/src/main/res/layout/lolib_activity_main.xml index 9d9524dc5..8d1f1d9ff 100644 --- a/android/lib/src/main/res/layout/lolib_activity_main.xml +++ b/android/lib/src/main/res/layout/lolib_activity_main.xml @@ -11,25 +11,6 @@ android:layout_width="match_parent" android:layout_height="match_parent" tools:layout_editor_absoluteX="0dp" - tools:layout_editor_absoluteY="-6dp" /> - - <ProgressBar - android:id="@+id/assetsProgressbar" - style="?android:attr/progressBarStyle" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> - - <TextView - android:id="@+id/assetsTextView" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/preparing_for_the_first_start_after_an_update" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/assetsProgressbar" /> + tools:layout_editor_absoluteY="0dp" /> </androidx.constraintlayout.widget.ConstraintLayout> commit 328f12effd4c35fe16810454cd86d4338ab59c42 Author: Jan Holesovsky <ke...@collabora.com> AuthorDate: Fri Feb 21 11:55:09 2020 +0100 Commit: Jan Holesovsky <ke...@collabora.com> CommitDate: Fri Feb 21 13:51:40 2020 +0100 android shell: Clean up the file list view of the recent files. Change-Id: If882adf0e7fedcdf003fcd3a1690d5d765ccf3aa diff --git a/android/app/src/main/java/org/libreoffice/androidapp/ui/RecentFilesAdapter.java b/android/app/src/main/java/org/libreoffice/androidapp/ui/RecentFilesAdapter.java index fc05d38b3..7c098af80 100644 --- a/android/app/src/main/java/org/libreoffice/androidapp/ui/RecentFilesAdapter.java +++ b/android/app/src/main/java/org/libreoffice/androidapp/ui/RecentFilesAdapter.java @@ -59,7 +59,8 @@ class RecentFilesAdapter extends RecyclerView.Adapter<RecentFilesAdapter.ViewHol String filename = ""; long length = 0; - Date date = null; // TODO get it at least for files + // TODO Date not avaiable now + //Date date = null; // Try to get it from the content resolver first, fallback to path Cursor cursor = mActivity.getContentResolver().query(uri, null, null, null, null); @@ -108,20 +109,26 @@ class RecentFilesAdapter extends RecyclerView.Adapter<RecentFilesAdapter.ViewHol // Date and Size field only exist when we are displaying items in a list. if (mActivity.isViewModeList()) { String size; + String unit = "B"; if (length < KB) { - size = Long.toString(length) + "B"; + size = Long.toString(length); } else if (length < MB) { - size = Long.toString(length / KB) + "KB"; + size = Long.toString(length / KB); + unit = "KB"; } else { - size = Long.toString(length / MB) + "MB"; + size = Long.toString(length / MB); + unit = "MB"; } holder.fileSizeView.setText(size); + holder.fileSizeUnitView.setText(unit); + /* TODO Date not avaiable now if (date != null) { SimpleDateFormat df = new SimpleDateFormat("dd MMM yyyy hh:ss"); //TODO format date holder.fileDateView.setText(df.format(date)); } + */ } } @@ -137,7 +144,7 @@ class RecentFilesAdapter extends RecyclerView.Adapter<RecentFilesAdapter.ViewHol class ViewHolder extends RecyclerView.ViewHolder { - TextView filenameView, fileSizeView, fileDateView; + TextView filenameView, fileSizeView, fileSizeUnitView/*, fileDateView*/; ImageView imageView; ViewHolder(View itemView) { @@ -147,7 +154,8 @@ class RecentFilesAdapter extends RecyclerView.Adapter<RecentFilesAdapter.ViewHol // Check if view mode is List, only then initialise Size and Date field if (mActivity.isViewModeList()) { fileSizeView = itemView.findViewById(R.id.file_item_size); - fileDateView = itemView.findViewById(R.id.file_item_date); + fileSizeUnitView = itemView.findViewById(R.id.file_item_size_unit); + //fileDateView = itemView.findViewById(R.id.file_item_date); } } } diff --git a/android/app/src/main/res/layout/file_list_item.xml b/android/app/src/main/res/layout/file_list_item.xml index 518885d4b..6164a6189 100644 --- a/android/app/src/main/res/layout/file_list_item.xml +++ b/android/app/src/main/res/layout/file_list_item.xml @@ -37,14 +37,23 @@ android:layout_weight="2" android:ellipsize="end" android:maxLines="1"/> + <TextView android:id="@+id/file_item_size" - tools:text="filesize" style="@style/ListItemText" + android:layout_width="50dp" android:layout_height="match_parent" - android:layout_width="0dp" - android:layout_weight="1" /> + android:layout_marginEnd="4dp" + android:textAlignment="textEnd" + tools:text="0" /> + <TextView + android:id="@+id/file_item_size_unit" + style="@style/ListItemText" + android:layout_width="30dp" + android:layout_height="match_parent" + tools:text="B" /> + <!--TextView android:id="@+id/file_item_date" tools:text="date/time" style="@style/ListItemText" @@ -53,6 +62,6 @@ android:layout_weight="2" android:ellipsize="end" android:gravity="end" - android:maxLines="1"/> + android:maxLines="1"/--> </LinearLayout> </LinearLayout> commit da38fbb77cd78922176ba1970934d7b8bd441084 Author: Jan Holesovsky <ke...@collabora.com> AuthorDate: Fri Feb 21 11:27:25 2020 +0100 Commit: Jan Holesovsky <ke...@collabora.com> CommitDate: Fri Feb 21 13:51:40 2020 +0100 android shell: Don't overshoot the FAB, it looks strange. Also collapse it when the user has chosen one of the choices + code reorg / cleanup. Change-Id: Ifc5f6a12442022496dd8d9a66bccc6785ff2cc6e diff --git a/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java b/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java index d27a164db..dff39f242 100644 --- a/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java +++ b/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java @@ -86,7 +86,7 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -public class LibreOfficeUIActivity extends AppCompatActivity implements SettingsListenerModel.OnSettingsPreferenceChangedListener, View.OnClickListener { +public class LibreOfficeUIActivity extends AppCompatActivity implements SettingsListenerModel.OnSettingsPreferenceChangedListener { private String LOGTAG = LibreOfficeUIActivity.class.getSimpleName(); private SharedPreferences prefs; private int filterMode = FileUtilities.ALL; @@ -339,9 +339,7 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings supportInvalidateOptionsMenu(); navigationDrawer.requestFocus(); // Make keypad navigation easier - if (isFabMenuOpen) { - collapseFabMenu(); //Collapse FAB Menu when drawer is opened - } + collapseFabMenu(); } @Override @@ -367,17 +365,7 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings actionBar.setDisplayHomeAsUpEnabled(true); } - editFAB = findViewById(R.id.editFAB); - editFAB.setOnClickListener(this); - impressFAB = findViewById(R.id.newImpressFAB); - impressFAB.setOnClickListener(this); - writerFAB = findViewById(R.id.newWriterFAB); - writerFAB.setOnClickListener(this); - calcFAB = findViewById(R.id.newCalcFAB); - calcFAB.setOnClickListener(this); - writerLayout = findViewById(R.id.writerLayout); - impressLayout = findViewById(R.id.impressLayout); - calcLayout = findViewById(R.id.calcLayout); + setupFloatingActionButton(); recentRecyclerView = findViewById(R.id.list_recent); noRecentItemsTextView = findViewById(R.id.no_recent_items_msg); @@ -400,9 +388,54 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings setupNavigationDrawer(); } + /** Initialize the FloatingActionButton. */ + private void setupFloatingActionButton() { + editFAB = findViewById(R.id.editFAB); + editFAB.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + if (isFabMenuOpen) + collapseFabMenu(); + else + expandFabMenu(); + } + }); + + writerFAB = findViewById(R.id.newWriterFAB); + writerFAB.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + createNewFileInputDialog(getString(R.string.new_textdocument) + FileUtilities.DEFAULT_WRITER_EXTENSION, "application/vnd.oasis.opendocument.text", CREATE_DOCUMENT_REQUEST_CODE); + } + }); + + calcFAB = findViewById(R.id.newCalcFAB); + calcFAB.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + createNewFileInputDialog(getString(R.string.new_spreadsheet) + FileUtilities.DEFAULT_SPREADSHEET_EXTENSION, "application/vnd.oasis.opendocument.spreadsheet", CREATE_SPREADSHEET_REQUEST_CODE); + } + }); + + impressFAB = findViewById(R.id.newImpressFAB); + impressFAB.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + createNewFileInputDialog(getString(R.string.new_presentation) + FileUtilities.DEFAULT_IMPRESS_EXTENSION, "application/vnd.oasis.opendocument.presentation", CREATE_PRESENTATION_REQUEST_CODE); + } + }); + + writerLayout = findViewById(R.id.writerLayout); + impressLayout = findViewById(R.id.impressLayout); + calcLayout = findViewById(R.id.calcLayout); + } + /** Expand the Floating action button. */ private void expandFabMenu() { - ViewCompat.animate(editFAB).rotation(45.0F).withLayer().setDuration(300).setInterpolator(new OvershootInterpolator(10.0F)).start(); + if (isFabMenuOpen) + return; + + ViewCompat.animate(editFAB).rotation(45f).withLayer().setDuration(300).setInterpolator(new OvershootInterpolator(0f)).start(); impressLayout.startAnimation(fabOpenAnimation); writerLayout.startAnimation(fabOpenAnimation); calcLayout.startAnimation(fabOpenAnimation); @@ -414,7 +447,10 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings /** Collapse the Floating action button. */ private void collapseFabMenu() { - ViewCompat.animate(editFAB).rotation(0.0F).withLayer().setDuration(300).setInterpolator(new OvershootInterpolator(10.0F)).start(); + if (!isFabMenuOpen) + return; + + ViewCompat.animate(editFAB).rotation(0f).withLayer().setDuration(300).setInterpolator(new OvershootInterpolator(0f)).start(); writerLayout.startAnimation(fabCloseAnimation); impressLayout.startAnimation(fabCloseAnimation); calcLayout.startAnimation(fabCloseAnimation); @@ -437,18 +473,14 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings // close drawer if it was open drawerLayout.closeDrawer(navigationDrawer); - if (isFabMenuOpen) { - collapseFabMenu(); - } + collapseFabMenu(); } @Override public void onBackPressed() { if (drawerLayout.isDrawerOpen(navigationDrawer)) { drawerLayout.closeDrawer(navigationDrawer); - if (isFabMenuOpen) { - collapseFabMenu(); - } + collapseFabMenu(); } else if (isFabMenuOpen) { collapseFabMenu(); } else { @@ -511,6 +543,8 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings /** Opens an Input dialog to get the name of new file. */ private void createNewFileInputDialog(final String defaultFileName, final String mimeType, final int requestCode) { + collapseFabMenu(); + Intent i = new Intent(Intent.ACTION_CREATE_DOCUMENT); // The mime type and category must be set @@ -621,6 +655,8 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings /** Start an ACTION_OPEN_DOCUMENT Intent to trigger opening a document. */ private void openDocument() { + collapseFabMenu(); + Intent i = new Intent(Intent.ACTION_OPEN_DOCUMENT); i.addCategory(Intent.CATEGORY_OPENABLE); @@ -965,29 +1001,6 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings } } - @Override - public void onClick(View v) { - int id = v.getId(); - switch (id) { - case R.id.editFAB: - if (isFabMenuOpen) { - collapseFabMenu(); - } else { - expandFabMenu(); - } - break; - case R.id.newWriterFAB: - createNewFileInputDialog(getString(R.string.new_textdocument) + FileUtilities.DEFAULT_WRITER_EXTENSION, "application/vnd.oasis.opendocument.text", CREATE_DOCUMENT_REQUEST_CODE); - break; - case R.id.newImpressFAB: - createNewFileInputDialog(getString(R.string.new_presentation) + FileUtilities.DEFAULT_IMPRESS_EXTENSION, "application/vnd.oasis.opendocument.presentation", CREATE_PRESENTATION_REQUEST_CODE); - break; - case R.id.newCalcFAB: - createNewFileInputDialog(getString(R.string.new_spreadsheet) + FileUtilities.DEFAULT_SPREADSHEET_EXTENSION, "application/vnd.oasis.opendocument.spreadsheet", CREATE_SPREADSHEET_REQUEST_CODE); - break; - } - } - private void setEditFABVisibility(final int visibility) { LibreOfficeApplication.getMainHandler().post(new Runnable() { @Override commit 94d4a27d65d8c3e2e9e1d24106f6e7b60c33b5fb Author: Jan Holesovsky <ke...@collabora.com> AuthorDate: Fri Feb 21 10:42:46 2020 +0100 Commit: Jan Holesovsky <ke...@collabora.com> CommitDate: Fri Feb 21 13:51:40 2020 +0100 android shell: Move ~all the functionality from menu to navigation drawer. And so far disable the various sorting possibilities, they are not working for the recent files (yet). Change-Id: I233f6cd05d15cf0c3f9f2bf940a8233ee5300cb7 diff --git a/android/app/.gitignore b/android/app/.gitignore index 827faa729..8a20c82dd 100644 --- a/android/app/.gitignore +++ b/android/app/.gitignore @@ -3,6 +3,7 @@ /build /appSettings.gradle /src/main/res/drawable/ic_launcher_brand.xml +/src/main/res/drawable/drawer_header_brand.png /src/main/res/mipmap-anydpi-v26/ic_launcher_brand.xml /src/main/res/mipmap-hdpi/ic_launcher_brand.png /src/main/res/mipmap-mdpi/ic_launcher_brand.png diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 74fc8b904..25109c11f 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -108,20 +108,6 @@ <data android:mimeType="image/svg+xml" /> </intent-filter> </activity> - <!-- Document Provider Settings Activity --> - <activity - android:name=".storage.DocumentProviderSettingsActivity" - android:label="@string/storage_provider_settings" - android:theme="@style/Theme.AppCompat.Light"> - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - </intent-filter> - </activity> - <activity android:name=".storage.external.BrowserSelectorActivity" /> - <activity - android:name=".storage.external.DirectoryBrowserActivity" - android:label="@string/directory_browser_label" - android:windowSoftInputMode="stateHidden" /> <activity android:name=".ShowHTMLActivity" android:label="@string/title_activity_show_html" /> diff --git a/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java b/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java index 91c71116f..d27a164db 100644 --- a/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java +++ b/android/app/src/main/java/org/libreoffice/androidapp/ui/LibreOfficeUIActivity.java @@ -210,6 +210,151 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings recentRecyclerView.setAdapter(new RecentFilesAdapter(this, recentUris)); } + /** Create the Navigation menu and set up the actions and everything there. */ + public void setupNavigationDrawer() { + drawerLayout = findViewById(R.id.drawer_layout); + navigationDrawer = findViewById(R.id.navigation_drawer); + navigationDrawer.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { + @Override + public boolean onNavigationItemSelected(@NonNull MenuItem item) { + switch (item.getItemId()) { + /* TODO Currently we don't support sorting of the recent files + case R.id.menu_filter_everything: + item.setChecked(true); + filterMode = FileUtilities.ALL; + //openDirectory(currentDirectory); + break; + + case R.id.menu_filter_documents: + item.setChecked(true); + filterMode = FileUtilities.DOC; + //openDirectory(currentDirectory); + break; + + case R.id.menu_filter_spreadsheets: + item.setChecked(true); + filterMode = FileUtilities.CALC; + //openDirectory(currentDirectory); + break; + + case R.id.menu_filter_presentations: + item.setChecked(true); + filterMode = FileUtilities.IMPRESS; + //openDirectory(currentDirectory); + break; + + case R.id.menu_sort_size_asc: + sortMode = FileUtilities.SORT_SMALLEST; + this.onResume(); + break; + + case R.id.menu_sort_size_desc: + sortMode = FileUtilities.SORT_LARGEST; + this.onResume(); + break; + + case R.id.menu_sort_az: + sortMode = FileUtilities.SORT_AZ; + this.onResume(); + break; + + case R.id.menu_sort_za: + sortMode = FileUtilities.SORT_ZA; + this.onResume(); + break; + + case R.id.menu_sort_modified_newest: + sortMode = FileUtilities.SORT_NEWEST; + this.onResume(); + break; + + case R.id.menu_sort_modified_oldest: + sortMode = FileUtilities.SORT_OLDEST; + this.onResume(); + break; + */ + + case R.id.action_about: + AboutDialogFragment aboutDialogFragment = new AboutDialogFragment(); + aboutDialogFragment.show(getSupportFragmentManager(), "AboutDialogFragment"); + return true; + + /*case R.id.action_settings: + startActivity(new Intent(getApplicationContext(), SettingsActivity.class)); + return true;*/ + } + return false; + } + }); + drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.document_locations, R.string.close_document_locations) { + @Override + public void onDrawerOpened(View drawerView) { + super.onDrawerOpened(drawerView); + + /* TODO Currently we don't support sorting of the recent files + switch (sortMode) { + case FileUtilities.SORT_SMALLEST: + menu.findItem(R.id.menu_sort_size_asc).setChecked(true); + break; + + case FileUtilities.SORT_LARGEST: + menu.findItem(R.id.menu_sort_size_desc).setChecked(true); + break; + + case FileUtilities.SORT_AZ: + menu.findItem(R.id.menu_sort_az).setChecked(true); + break; + + case FileUtilities.SORT_ZA: + menu.findItem(R.id.menu_sort_za).setChecked(true); + break; + + case FileUtilities.SORT_NEWEST: + menu.findItem(R.id.menu_sort_modified_newest).setChecked(true); + break; + + case FileUtilities.SORT_OLDEST: + menu.findItem(R.id.menu_sort_modified_oldest).setChecked(true); + break; + } + + switch (filterMode) { + case FileUtilities.ALL: + menu.findItem(R.id.menu_filter_everything).setChecked(true); + break; + + case FileUtilities.DOC: + menu.findItem(R.id.menu_filter_documents).setChecked(true); + break; + + case FileUtilities.CALC: + menu.findItem(R.id.menu_filter_presentations).setChecked(true); + break; + + case FileUtilities.IMPRESS: + menu.findItem(R.id.menu_filter_presentations).setChecked(true); + break; + } + */ + + supportInvalidateOptionsMenu(); + navigationDrawer.requestFocus(); // Make keypad navigation easier + if (isFabMenuOpen) { + collapseFabMenu(); //Collapse FAB Menu when drawer is opened + } + } + + @Override + public void onDrawerClosed(View drawerView) { + super.onDrawerClosed(drawerView); + supportInvalidateOptionsMenu(); + } + }; + drawerToggle.setDrawerIndicatorEnabled(true); + drawerLayout.addDrawerListener(drawerToggle); + drawerToggle.syncState(); + } + public void createUI() { setContentView(R.layout.activity_document_browser); @@ -249,78 +394,13 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings updateRecentFiles(); + // TODO allow context menu for the various files - for Open and Share //registerForContextMenu(fileRecyclerView); - //Setting up navigation drawer - drawerLayout = findViewById(R.id.drawer_layout); - navigationDrawer = findViewById(R.id.navigation_drawer); - - navigationDrawer.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { - @Override - public boolean onNavigationItemSelected(@NonNull MenuItem item) { - - switch (item.getItemId()) { - case R.id.menu_storage_preferences: { - //startActivity(new Intent(LibreOfficeUIActivity.this, DocumentProviderSettingsActivity.class)); - return true; - } - - case R.id.menu_provider_documents: { - //switchToDocumentProvider(0); - return true; - } - - case R.id.menu_provider_filesystem: { - //switchToDocumentProvider(1); - return true; - } - - case R.id.menu_provider_extsd: { - //switchToDocumentProvider(DocumentProviderFactory.EXTSD_PROVIDER_INDEX); - return true; - } - - case R.id.menu_provider_otg: { - //switchToDocumentProvider(3); - return true; - } - - case R.id.menu_provider_owncloud: { - //switchToDocumentProvider(4); - return true; - } - - default: - return false; - } - - - } - }); - drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, - R.string.document_locations, R.string.close_document_locations) { - - @Override - public void onDrawerOpened(View drawerView) { - super.onDrawerOpened(drawerView); - supportInvalidateOptionsMenu(); - navigationDrawer.requestFocus(); // Make keypad navigation easier - if (isFabMenuOpen) { - collapseFabMenu(); //Collapse FAB Menu when drawer is opened - } - } - - @Override - public void onDrawerClosed(View drawerView) { - super.onDrawerClosed(drawerView); - supportInvalidateOptionsMenu(); - } - }; - drawerToggle.setDrawerIndicatorEnabled(true); - drawerLayout.addDrawerListener(drawerToggle); - drawerToggle.syncState(); + setupNavigationDrawer(); } + /** Expand the Floating action button. */ private void expandFabMenu() { ViewCompat.animate(editFAB).rotation(45.0F).withLayer().setDuration(300).setInterpolator(new OvershootInterpolator(10.0F)).start(); impressLayout.startAnimation(fabOpenAnimation); @@ -332,6 +412,7 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings isFabMenuOpen = true; } + /** Collapse the Floating action button. */ private void collapseFabMenu() { ViewCompat.animate(editFAB).rotation(0.0F).withLayer().setDuration(300).setInterpolator(new OvershootInterpolator(10.0F)).start(); writerLayout.startAnimation(fabCloseAnimation); @@ -529,61 +610,12 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings */ } + /** Setup the toolbar's menu. */ @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.view_menu, menu); - switch (sortMode) { - case FileUtilities.SORT_SMALLEST: { - menu.findItem(R.id.menu_sort_size_asc).setChecked(true); - } - break; - - case FileUtilities.SORT_LARGEST: { - menu.findItem(R.id.menu_sort_size_desc).setChecked(true); - } - break; - - case FileUtilities.SORT_AZ: { - menu.findItem(R.id.menu_sort_az).setChecked(true); - } - break; - - case FileUtilities.SORT_ZA: { - menu.findItem(R.id.menu_sort_za).setChecked(true); - } - break; - - case FileUtilities.SORT_NEWEST: { - menu.findItem(R.id.menu_sort_modified_newest).setChecked(true); - } - break; - - case FileUtilities.SORT_OLDEST: { - menu.findItem(R.id.menu_sort_modified_oldest).setChecked(true); - } - break; - } - - switch (filterMode) { - case FileUtilities.ALL: - menu.findItem(R.id.menu_filter_everything).setChecked(true); - break; - - case FileUtilities.DOC: - menu.findItem(R.id.menu_filter_documents).setChecked(true); - break; - - case FileUtilities.CALC: - menu.findItem(R.id.menu_filter_presentations).setChecked(true); - break; - - case FileUtilities.IMPRESS: - menu.findItem(R.id.menu_filter_presentations).setChecked(true); - break; - } - return true; } @@ -668,79 +700,6 @@ public class LibreOfficeUIActivity extends AppCompatActivity implements Settings openDocument(); break; - case android.R.id.home: - // TODO probably kill - break; - - case R.id.menu_filter_everything: - item.setChecked(true); - filterMode = FileUtilities.ALL; - //openDirectory(currentDirectory); - break; - - case R.id.menu_filter_documents: - item.setChecked(true); - filterMode = FileUtilities.DOC; - //openDirectory(currentDirectory); - break; - - case R.id.menu_filter_spreadsheets: - item.setChecked(true); - filterMode = FileUtilities.CALC; - //openDirectory(currentDirectory); - break; - - case R.id.menu_filter_presentations: - item.setChecked(true); - filterMode = FileUtilities.IMPRESS; - //openDirectory(currentDirectory); - break; - - case R.id.menu_sort_size_asc: { - sortMode = FileUtilities.SORT_SMALLEST; - this.onResume(); - } - break; - - case R.id.menu_sort_size_desc: { - sortMode = FileUtilities.SORT_LARGEST; - this.onResume(); - } - break; - - case R.id.menu_sort_az: { - sortMode = FileUtilities.SORT_AZ; - this.onResume(); - } - break; - - case R.id.menu_sort_za: { - sortMode = FileUtilities.SORT_ZA; - this.onResume(); - } - break; - - case R.id.menu_sort_modified_newest: { - sortMode = FileUtilities.SORT_NEWEST; - this.onResume(); - } - break; - - case R.id.menu_sort_modified_oldest: { - sortMode = FileUtilities.SORT_OLDEST; - this.onResume(); - } - break; - - case R.id.action_about: { - AboutDialogFragment aboutDialogFragment = new AboutDialogFragment(); - aboutDialogFragment.show(getSupportFragmentManager(), "AboutDialogFragment"); - } - return true; - case R.id.action_settings: - startActivity(new Intent(getApplicationContext(), SettingsActivity.class)); - return true; - default: return super.onOptionsItemSelected(item); } diff --git a/android/app/src/main/res/drawable/drawer_header.png b/android/app/src/main/res/drawable/drawer_header.png new file mode 100644 index 000000000..2786fd4ec Binary files /dev/null and b/android/app/src/main/res/drawable/drawer_header.png differ diff --git a/android/app/src/main/res/layout/activity_directory_browser.xml b/android/app/src/main/res/layout/activity_directory_browser.xml deleted file mode 100644 index b03c6bbb1..000000000 --- a/android/app/src/main/res/layout/activity_directory_browser.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/fragment_container" - android:layout_width="match_parent" android:layout_height="match_parent"> - -</FrameLayout> \ No newline at end of file diff --git a/android/app/src/main/res/layout/activity_document_browser.xml b/android/app/src/main/res/layout/activity_document_browser.xml index 3e4fb298a..17b358fc0 100644 --- a/android/app/src/main/res/layout/activity_document_browser.xml +++ b/android/app/src/main/res/layout/activity_document_browser.xml @@ -253,6 +253,7 @@ android:layout_gravity="start" android:background="@color/background_normal" android:theme="@style/LibreOfficeTheme.NavigationView" + app:headerLayout="@layout/navigation_header" app:menu="@menu/navigation_menu" /> </androidx.drawerlayout.widget.DrawerLayout> diff --git a/android/app/src/main/res/layout/navigation_header.xml b/android/app/src/main/res/layout/navigation_header.xml new file mode 100644 index 000000000..79889c36b --- /dev/null +++ b/android/app/src/main/res/layout/navigation_header.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="#ff000000"> + + <ImageView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:adjustViewBounds="true" + android:src="@drawable/drawer_header_brand"/> + +</LinearLayout> diff --git a/android/app/src/main/res/menu/navigation_menu.xml b/android/app/src/main/res/menu/navigation_menu.xml index 5d78aaf11..55f86fcab 100644 --- a/android/app/src/main/res/menu/navigation_menu.xml +++ b/android/app/src/main/res/menu/navigation_menu.xml @@ -1,35 +1,58 @@ <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> - <group - android:checkableBehavior="single" - android:id="@+id/group_providers"> - - <item android:id="@+id/menu_provider_documents" - android:title="@string/local_documents" - android:icon="@drawable/ic_folder_black_24dp" /> - - <item android:id="@+id/menu_provider_filesystem" - android:title="@string/local_file_system" - android:icon="@drawable/ic_storage_black_24dp"/> - - <item android:id="@+id/menu_provider_extsd" - android:title="@string/external_sd_file_system" - android:icon="@drawable/ic_sd_card_black_24dp"/> - - <item android:id="@+id/menu_provider_otg" - android:title="@string/otg_file_system" - android:icon="@drawable/ic_usb_black_24dp"/> - - <item android:id="@+id/menu_provider_owncloud" - android:title="@string/remote_server" - android:icon="@drawable/ic_cloud_black_24dp"/> - - - </group> - - <group android:orderInCategory="100"> - <item android:id="@+id/menu_storage_preferences" - android:title="@string/storage_provider_settings" - android:icon="@drawable/ic_settings_black_24dp"/> - </group> + <!--item + android:id="@+id/menu_filter" + android:title="@string/filter" + android:icon="@drawable/ic_filter_list_black_24dp"> + <menu> + <group + android:checkableBehavior="single"> + <item + android:id="@+id/menu_filter_everything" + android:title="@string/filter_everything" /> + <item + android:id="@+id/menu_filter_documents" + android:title="@string/filter_documents" /> + <item + android:id="@+id/menu_filter_spreadsheets" + android:title="@string/filter_spreadsheets" /> + <item + android:id="@+id/menu_filter_presentations" + android:title="@string/filter_presentations" /> + </group> + </menu> + </item> + + <item + android:id="@+id/menu_sort" + android:title="@string/sort" + android:icon="@drawable/ic_sort_by_alpha_black_24dp"> + <menu> + <group android:checkableBehavior="single"> + <item android:id="@+id/menu_sort_size_asc" + android:title="@string/sort_smallest" /> + + <item android:id="@+id/menu_sort_size_desc" + android:title="@string/sort_largest" /> + + <item android:id="@+id/menu_sort_az" + android:title="@string/sort_az"/> + + <item android:id="@+id/menu_sort_za" + android:title="@string/sort_za"/> + + <item android:id="@+id/menu_sort_modified_newest" + android:title="@string/sort_newest"/> + + <item android:id="@+id/menu_sort_modified_oldest" + android:title="@string/sort_oldest"/> + </group> + </menu> + </item> + + <item android:id="@+id/action_settings" + android:title="@string/action_settings"/--> + + <item android:id="@+id/action_about" + android:title="@string/action_about"/> </menu> diff --git a/android/app/src/main/res/menu/view_menu.xml b/android/app/src/main/res/menu/view_menu.xml index baf29ac58..fb6fe599a 100644 --- a/android/app/src/main/res/menu/view_menu.xml +++ b/android/app/src/main/res/menu/view_menu.xml @@ -7,59 +7,4 @@ app:showAsAction="always" android:icon="@drawable/ic_folder_black_24dp"/> - <item - android:id="@+id/menu_filter" - android:title="@string/filter" - android:icon="@drawable/ic_filter_list_black_24dp"> - <menu> - <group - android:checkableBehavior="single"> - <item - android:id="@+id/menu_filter_everything" - android:title="@string/filter_everything" /> - <item - android:id="@+id/menu_filter_documents" - android:title="@string/filter_documents" /> - <item - android:id="@+id/menu_filter_spreadsheets" - android:title="@string/filter_spreadsheets" /> - <item - android:id="@+id/menu_filter_presentations" - android:title="@string/filter_presentations" /> - </group> - </menu> - </item> - - <item - android:id="@+id/menu_sort" - android:title="@string/sort" - android:icon="@drawable/ic_sort_by_alpha_black_24dp"> - <menu> - <group android:checkableBehavior="single"> - <item android:id="@+id/menu_sort_size_asc" - android:title="@string/sort_smallest" /> - - <item android:id="@+id/menu_sort_size_desc" - android:title="@string/sort_largest" /> - - <item android:id="@+id/menu_sort_az" - android:title="@string/sort_az"/> - - <item android:id="@+id/menu_sort_za" - android:title="@string/sort_za"/> - - <item android:id="@+id/menu_sort_modified_newest" - android:title="@string/sort_newest"/> - - <item android:id="@+id/menu_sort_modified_oldest" - android:title="@string/sort_oldest"/> - </group> - </menu> - </item> - <item android:id="@+id/action_settings" - android:title="@string/action_settings" - android:orderInCategory="100"/> - <item android:id="@+id/action_about" - android:title="@string/action_about" - android:orderInCategory="100"/> </menu> diff --git a/loleaflet/Makefile.am b/loleaflet/Makefile.am index ea6e31621..182e39768 100644 --- a/loleaflet/Makefile.am +++ b/loleaflet/Makefile.am @@ -190,6 +190,7 @@ if ENABLE_ANDROIDAPP @if test -d "$(APP_BRANDING_DIR)" ; then cp -a "$(APP_BRANDING_DIR)/images/toolbar-bg-logo.svg" $(abs_top_srcdir)/android/lib/src/main/assets/dist/images/toolbar-bg.svg ; fi @if test -d "$(APP_BRANDING_DIR)/android" ; then for I in `cd "$(APP_BRANDING_DIR)/android" && find . -type f` ; do mkdir -p $(abs_top_srcdir)/android/lib/src/main/res/`dirname $$I` ; cp -a "$(APP_BRANDING_DIR)/android/$$I" "$(abs_top_srcdir)/android/app/src/main/res/$$I" ; done ; fi @if test -d "$(APP_BRANDING_DIR)/online-theme" ; then mkdir -p $(abs_top_srcdir)/android/lib/src/main/assets/share/theme_definitions ; cp -a "$(APP_BRANDING_DIR)/online-theme" "$(abs_top_srcdir)/android/lib/src/main/assets/share/theme_definitions/online" ; fi + @if test ! -e "$(abs_top_srcdir)/android/app/src/main/res/drawable/drawer_header_brand.png" ; then cp -a "$(abs_top_srcdir)/android/app/src/main/res/drawable/drawer_header.png" "$(abs_top_srcdir)/android/app/src/main/res/drawable/drawer_header_brand.png" ; fi @touch "$(abs_top_srcdir)/android/app/src/main/res/drawable/ic_launcher_brand.xml" # to avoid problems with a missing resource in the non-branded builds @echo @echo "Copied JS, HTML and CSS to the Android project (android/lib/src/main/assets/dist)." commit db201f81d95516ebd99773f6df00588e879b4e0c Author: Jan Holesovsky <ke...@collabora.com> AuthorDate: Thu Feb 20 21:35:57 2020 +0100 Commit: Jan Holesovsky <ke...@collabora.com> CommitDate: Fri Feb 21 13:51:40 2020 +0100 android shell: Clean up the navigation menu's appearance. And add a hint to the user what to do when there are no recent files. Change-Id: Ic9e560b782a67b0a3f3bf622f16883cd1673c8df diff --git a/android/app/src/main/res/layout/activity_document_browser.xml b/android/app/src/main/res/layout/activity_document_browser.xml index 0611557fe..3e4fb298a 100644 --- a/android/app/src/main/res/layout/activity_document_browser.xml +++ b/android/app/src/main/res/layout/activity_document_browser.xml @@ -7,110 +7,243 @@ file, You can obtain one at http://mozilla.org/MPL/2.0/. --> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> - - <!-- The toolbar --> - <androidx.appcompat.widget.Toolbar - android:id="@+id/toolbar" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:elevation="3dp" - android:background="@color/toolbar_background" - app:theme="@style/LibreOfficeTheme.Toolbar" - tools:theme="@style/LibreOfficeTheme.Toolbar" - app:popupTheme="@style/LibreOfficeTheme" - tools:layout_constraintTop_creator="1" - tools:layout_constraintRight_creator="1" - app:layout_constraintRight_toRightOf="parent" - tools:layout_constraintLeft_creator="1" - app:layout_constraintLeft_toLeftOf="parent" - app:layout_constraintTop_toTopOf="parent"> - - </androidx.appcompat.widget.Toolbar> - - <androidx.drawerlayout.widget.DrawerLayout android:id="@+id/drawer_layout" - android:layout_width="0dp" - android:layout_height="0dp" - tools:layout_constraintTop_creator="1" - tools:layout_constraintRight_creator="1" - tools:layout_constraintBottom_creator="1" + android:layout_width="match_parent" + android:layout_height="match_parent" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintRight_toRightOf="parent" - app:layout_constraintTop_toBottomOf="@+id/toolbar" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + tools:layout_constraintBottom_creator="1" tools:layout_constraintLeft_creator="1" - app:layout_constraintLeft_toLeftOf="parent"> + tools:layout_constraintRight_creator="1" + tools:layout_constraintTop_creator="1"> <!-- The content --> - <androidx.core.widget.NestedScrollView + + <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="match_parent" + android:layout_weight="1"> - <LinearLayout + <androidx.appcompat.widget.Toolbar + android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="vertical" - android:divider="@color/doorhanger_divider_light" - android:showDividers="middle"> + android:background="@color/toolbar_background" + android:elevation="3dp" + app:layout_constraintTop_toTopOf="parent" + app:popupTheme="@style/LibreOfficeTheme" + app:theme="@style/LibreOfficeTheme.Toolbar" + tools:layout_constraintLeft_creator="1" + tools:layout_constraintRight_creator="1" + tools:layout_constraintTop_creator="1" + tools:theme="@style/LibreOfficeTheme.Toolbar"> + + </androidx.appcompat.widget.Toolbar> + + <ScrollView + android:layout_width="match_parent" + android:layout_height="0dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@+id/toolbar"> <LinearLayout android:layout_width="match_parent" - android:layout_height="match_parent" - android:orientation="horizontal"> + android:layout_height="0dp" + android:orientation="vertical"> - <TextView - android:id="@+id/header_recents" + <LinearLayout android:layout_width="match_parent" - android:layout_height="48dp" - android:layout_weight="1" - android:gravity="center_vertical" - android:padding="16dp" - android:text="@string/title_recents" - android:textSize="14sp" - android:textStyle="bold" /> - - <ImageView - android:id="@+id/recent_list_or_grid" - android:layout_width="96dp" - android:layout_height="match_parent" - android:layout_weight="1" - android:scaleType="centerInside" - app:srcCompat="@drawable/ic_list_black_24dp" /> + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <TextView + android:id="@+id/header_recents" + android:layout_width="match_parent" + android:layout_height="48dp" + android:layout_weight="1" + android:gravity="center_vertical" + android:padding="16dp" + android:text="@string/title_recents" + android:textSize="14sp" + android:textStyle="bold" /> + + <ImageView + android:id="@+id/recent_list_or_grid" + android:layout_width="96dp" + android:layout_height="match_parent" + android:layout_weight="1" + android:scaleType="centerInside" + app:srcCompat="@drawable/ic_list_black_24dp" /> + </LinearLayout> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/list_recent" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginBottom="8dp" > + + </androidx.recyclerview.widget.RecyclerView> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="16dp" + android:orientation="horizontal"> + + <Space + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="3" /> + + <TextView + android:id="@+id/no_recent_items_msg" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="2" + android:text="@string/no_recent_items" + android:textAlignment="center" + android:textSize="14sp" /> + + <Space + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="3" /> + </LinearLayout> + + </FrameLayout> + </LinearLayout> + </ScrollView> - <!--Recent files--> - <FrameLayout - android:layout_width="match_parent" - android:layout_height="wrap_content"> + <com.google.android.material.floatingactionbutton.FloatingActionButton + android:id="@+id/editFAB" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:clickable="true" + android:focusable="true" + android:visibility="invisible" + app:backgroundTint="@color/background_normal" + app:fabSize="normal" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintRight_toRightOf="parent" + app:srcCompat="@drawable/ic_add_black_24dp" + app:useCompatPadding="true" /> - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/list_recent" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:layout_marginBottom="8dp" /> + <LinearLayout + android:id="@+id/writerLayout" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal" + android:visibility="invisible" + app:layout_constraintBottom_toTopOf="@id/editFAB" + app:layout_constraintRight_toRightOf="@id/editFAB" + tools:visibility="visible"> + + <TextView + android:id="@+id/newWriterTextView" + style="@style/NewDocumentTextView" + android:layout_marginTop="@dimen/new_doc_fab_tweak_top" + android:layout_marginBottom="@dimen/new_doc_fab_tweak_bottom" + android:text="@string/new_textdocument" /> + + <com.google.android.material.floatingactionbutton.FloatingActionButton + android:id="@+id/newWriterFAB" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/new_doc_fab_tweak_top" + android:layout_marginBottom="@dimen/new_doc_fab_tweak_bottom" + android:clickable="true" + android:focusable="true" + app:backgroundTint="@color/background_normal" + app:fabSize="mini" + app:srcCompat="@drawable/writer" + app:useCompatPadding="true" /> - <TextView - android:id="@+id/no_recent_items_msg" - android:layout_width="wrap_content" - android:layout_height="48dp" - android:layout_gravity="center" - android:gravity="center" - android:textSize="14sp" - android:text="@string/no_recent_items" /> + </LinearLayout> - </FrameLayout> + <LinearLayout + android:id="@+id/impressLayout" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal" + android:visibility="invisible" + app:layout_constraintBottom_toTopOf="@+id/writerLayout" + app:layout_constraintRight_toRightOf="@id/editFAB" + tools:visibility="visible"> + + <TextView + android:id="@+id/newImpressTextView" + style="@style/NewDocumentTextView" + android:layout_marginTop="@dimen/new_doc_fab_tweak_top" + android:layout_marginBottom="@dimen/new_doc_fab_tweak_bottom" + android:text="@string/new_presentation" /> + + <com.google.android.material.floatingactionbutton.FloatingActionButton + android:id="@+id/newImpressFAB" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/new_doc_fab_tweak_top" + android:layout_marginBottom="@dimen/new_doc_fab_tweak_bottom" + android:clickable="true" + android:focusable="true" + app:backgroundTint="@color/background_normal" + app:fabSize="mini" + app:srcCompat="@drawable/impress" + app:useCompatPadding="true" /> </LinearLayout> - </androidx.core.widget.NestedScrollView> + <LinearLayout + android:id="@+id/calcLayout" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal" + android:visibility="invisible" + app:layout_constraintBottom_toTopOf="@+id/impressLayout" + app:layout_constraintRight_toRightOf="@id/editFAB" + tools:visibility="visible"> + + <TextView + android:id="@+id/newCalcTextView" + style="@style/NewDocumentTextView" + android:layout_marginTop="@dimen/new_doc_fab_tweak_top" + android:layout_marginBottom="@dimen/new_doc_fab_tweak_bottom" + android:text="@string/new_spreadsheet" /> + + <com.google.android.material.floatingactionbutton.FloatingActionButton + android:id="@+id/newCalcFAB" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/new_doc_fab_tweak_top" + android:layout_marginBottom="@dimen/new_doc_fab_tweak_bottom" + android:clickable="true" + android:focusable="true" + app:backgroundTint="@color/background_normal" + app:fabSize="mini" + app:srcCompat="@drawable/calc" + app:useCompatPadding="true" /> + + </LinearLayout> + + </androidx.constraintlayout.widget.ConstraintLayout> <!-- The navigation drawer --> <com.google.android.material.navigation.NavigationView @@ -119,118 +252,9 @@ android:layout_height="match_parent" android:layout_gravity="start" android:background="@color/background_normal" - app:menu="@menu/navigation_menu" - android:theme="@style/LibreOfficeTheme.NavigationView" /> + android:theme="@style/LibreOfficeTheme.NavigationView" + app:menu="@menu/navigation_menu" /> </androidx.drawerlayout.widget.DrawerLayout> - <com.google.android.material.floatingactionbutton.FloatingActionButton - android:id="@+id/editFAB" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:clickable="true" - android:visibility="invisible" - app:backgroundTint="@color/background_normal" - app:fabSize="normal" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintRight_toRightOf="parent" - app:srcCompat="@drawable/ic_add_black_24dp" - app:useCompatPadding="true" /> - - <LinearLayout - android:id="@+id/writerLayout" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:gravity="center_vertical" - android:orientation="horizontal" - android:visibility="invisible" - app:layout_constraintBottom_toTopOf="@id/editFAB" - app:layout_constraintRight_toRightOf="@id/editFAB" - tools:visibility="visible"> - - <TextView - android:id="@+id/newWriterTextView" - style="@style/NewDocumentTextView" - android:layout_marginBottom="@dimen/new_doc_fab_tweak_bottom" - android:layout_marginTop="@dimen/new_doc_fab_tweak_top" - android:text="@string/new_textdocument" /> - - <com.google.android.material.floatingactionbutton.FloatingActionButton - android:id="@+id/newWriterFAB" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginBottom="@dimen/new_doc_fab_tweak_bottom" - android:layout_marginTop="@dimen/new_doc_fab_tweak_top" - android:clickable="true" - app:backgroundTint="@color/background_normal" - app:fabSize="mini" - app:srcCompat="@drawable/writer" - app:useCompatPadding="true" /> - - </LinearLayout> - - <LinearLayout - android:id="@+id/impressLayout" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:gravity="center_vertical" - android:orientation="horizontal" - android:visibility="invisible" - app:layout_constraintBottom_toTopOf="@+id/writerLayout" - app:layout_constraintRight_toRightOf="@id/editFAB" - tools:visibility="visible"> - - <TextView - android:id="@+id/newImpressTextView" - style="@style/NewDocumentTextView" - android:layout_marginBottom="@dimen/new_doc_fab_tweak_bottom" - android:layout_marginTop="@dimen/new_doc_fab_tweak_top" - android:text="@string/new_presentation" /> - - <com.google.android.material.floatingactionbutton.FloatingActionButton - android:id="@+id/newImpressFAB" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginBottom="@dimen/new_doc_fab_tweak_bottom" - android:layout_marginTop="@dimen/new_doc_fab_tweak_top" - android:clickable="true" - app:backgroundTint="@color/background_normal" - app:fabSize="mini" - app:srcCompat="@drawable/impress" - app:useCompatPadding="true" /> - - </LinearLayout> - - <LinearLayout - android:id="@+id/calcLayout" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:gravity="center_vertical" - android:orientation="horizontal" - android:visibility="invisible" - tools:visibility="visible" - app:layout_constraintBottom_toTopOf="@+id/impressLayout" - app:layout_constraintRight_toRightOf="@id/editFAB"> - - <TextView - android:id="@+id/newCalcTextView" - style="@style/NewDocumentTextView" - android:layout_marginBottom="@dimen/new_doc_fab_tweak_bottom" - android:layout_marginTop="@dimen/new_doc_fab_tweak_top" - android:text="@string/new_spreadsheet" /> - - <com.google.android.material.floatingactionbutton.FloatingActionButton - android:id="@+id/newCalcFAB" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginBottom="@dimen/new_doc_fab_tweak_bottom" - android:layout_marginTop="@dimen/new_doc_fab_tweak_top" - android:clickable="true" - app:backgroundTint="@color/background_normal" - app:fabSize="mini" - app:srcCompat="@drawable/calc" - app:useCompatPadding="true" /> - - </LinearLayout> - -</androidx.constraintlayout.widget.ConstraintLayout> +</LinearLayout> diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 4776a5b97..663779278 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -6,7 +6,7 @@ <string name="app_description">$APP_NAME is a modern, easy-to-use, open source productivity suite for word processing, spreadsheets, presentations and more.</string> <string name="app_vendor">This release was supplied by $VENDOR.</string> - <string name="no_recent_items">No recent items</string> + <string name="no_recent_items">Please open a file using the folder icon in the toolbar.</string> <string name="no_items">No items</string> <string name="temp_file_saving_disabled">This file is read-only, saving is disabled.</string> <string name="file_exists_warning">A file with this name already exists, and will be overwritten.</string> _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits