diff options
author | Jacobo Aragunde Pérez <jaragunde@igalia.com> | 2015-01-20 19:01:28 +0100 |
---|---|---|
committer | Jacobo Aragunde Pérez <jaragunde@igalia.com> | 2015-02-10 09:40:26 +0000 |
commit | bc8cb4e3b2a1fc4b84bf366945dd72e9ebeb00ce (patch) | |
tree | a32db24ec0332644c216d001ada7745d8ece90f0 /android | |
parent | ca022d5047fe252e4164008535cdc2ff156dbe7e (diff) |
Android: run openDirectory() in a different thread.
The Document Provider framework will implement access to network
services in the future, and network operations must be run in separate
threads.
Diffstat (limited to 'android')
-rw-r--r-- | android/experimental/LOAndroid3/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java | 78 |
1 files changed, 40 insertions, 38 deletions
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java index efd4105ad39f..5606b1c1b395 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/ui/LibreOfficeUIActivity.java @@ -182,6 +182,25 @@ public class LibreOfficeUIActivity extends LOAbout implements ActionBar.OnNaviga } + private void refreshView() { + // enable home icon as "up" if required + if (!currentDirectory.equals(homeDirectory)) { + getActionBar().setDisplayHomeAsUpEnabled(true); + } else { + getActionBar().setDisplayHomeAsUpEnabled(false); + } + // refresh view + if (viewMode == GRID_VIEW) { + gv.setAdapter(new GridItemAdapter(getApplicationContext(), + currentDirectory, filePaths)); + } else { + lv.setAdapter(new ListItemAdapter(getApplicationContext(), + filePaths)); + } + // close drawer if it was open + drawerLayout.closeDrawer(drawerList); + } + @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { @@ -224,49 +243,32 @@ public class LibreOfficeUIActivity extends LOAbout implements ActionBar.OnNaviga @Override protected void onPostExecute(Void result) { - // enable home icon as "up" if required - if (!currentDirectory.equals(homeDirectory)) { - getActionBar().setDisplayHomeAsUpEnabled(true); - } - // refresh view - if (viewMode == GRID_VIEW) { - gv.setAdapter(new GridItemAdapter(getApplicationContext(), - currentDirectory, filePaths)); - } else { - lv.setAdapter(new ListItemAdapter(getApplicationContext(), - filePaths)); - } - // close drawer - drawerLayout.closeDrawer(drawerList); + refreshView(); } }.execute(provider); } public void openDirectory(IFile dir) { - currentDirectory = dir; - if( !currentDirectory.equals( homeDirectory )){ - ActionBar actionBar = getActionBar(); - actionBar.setDisplayHomeAsUpEnabled(true); - }else{ - ActionBar actionBar = getActionBar(); - actionBar.setDisplayHomeAsUpEnabled( false ); - } - filePaths = currentDirectory.listFiles(FileUtilities.getFileFilter(filterMode)); - // FileUtilities.sortFiles( filePaths, sortMode ); - /* - for( int i = 0; i < fileNames.length; i++){ - fileNames[ i ] = filePaths[ i ].getName(); - if( !FileUtilities.hasThumbnail( filePaths[ i ] ) ) - { - new ThumbnailGenerator( filePaths[ i ] ); - } - } - */ - if( viewMode == GRID_VIEW){ - gv.setAdapter( new GridItemAdapter(getApplicationContext(), currentDirectory, filePaths ) ); - }else{ - lv.setAdapter( new ListItemAdapter(getApplicationContext(), filePaths) ); - } + if (dir == null) + return; + + new AsyncTask<IFile, Void, Void>() { + @Override + protected Void doInBackground(IFile... dir) { + // get list of files: + // this operation may imply network access and must be run in + // a different thread + currentDirectory = dir[0]; + filePaths = currentDirectory.listFiles(FileUtilities + .getFileFilter(filterMode)); + return null; + } + + @Override + protected void onPostExecute(Void result) { + refreshView(); + } + }.execute(dir); } public void open(IFile document) { |