diff options
Diffstat (limited to 'android/experimental/LOAndroid3/src/java/org/libreoffice')
6 files changed, 148 insertions, 21 deletions
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/DocumentPartView.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/DocumentPartView.java new file mode 100644 index 000000000000..436e37e8c460 --- /dev/null +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/DocumentPartView.java @@ -0,0 +1,14 @@ +package org.libreoffice; + + +public class DocumentPartView { + private String partName; + + public DocumentPartView(String partName) { + this.partName = partName; + } + + public String getPartName() { + return partName; + } +} diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/DocumentPartViewListAdpater.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/DocumentPartViewListAdpater.java new file mode 100644 index 000000000000..5ec49e13e4b4 --- /dev/null +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/DocumentPartViewListAdpater.java @@ -0,0 +1,41 @@ +package org.libreoffice; + +import android.app.Activity; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ImageView; +import android.widget.TextView; + +import java.util.List; + +public class DocumentPartViewListAdpater extends ArrayAdapter<DocumentPartView> { + private static final String LOGTAG = DocumentPartViewListAdpater.class.getSimpleName(); + + private final Activity activity; + + public DocumentPartViewListAdpater(Activity activity, int resource, List<DocumentPartView> objects) { + super(activity, resource, objects); + this.activity = activity; + } + + @Override + public View getView(int position, View view, ViewGroup parent) { + if (view == null) { + LayoutInflater layoutInflater = activity.getLayoutInflater(); + view = layoutInflater.inflate(R.layout.document_part_list_layout, null); + } + + DocumentPartView documentPartView = getItem(position); + TextView textView = (TextView) view.findViewById(R.id.text); + textView.setText(documentPartView.getPartName()); + Log.i(LOGTAG, "getView - " + documentPartView.getPartName()); + + ImageView imageView = (ImageView) view.findViewById(R.id.image); + imageView.setImageResource(R.drawable.writer); + + return view; + } +} diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java index 4ceeddc99275..0d44d66f0a2c 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitShell.java @@ -1,6 +1,7 @@ package org.libreoffice; +import android.os.Handler; import android.util.DisplayMetrics; public class LOKitShell { @@ -32,4 +33,9 @@ public class LOKitShell { public static void scheduleResumeComposition() { } + + // Get a Handler for the main java thread + public static Handler getMainHandler() { + return LibreOfficeMainActivity.mAppContext.mMainHandler; + } } diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java index c5e2621a0cb5..4758b70838f0 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitTileProvider.java @@ -55,6 +55,22 @@ public class LOKitTileProvider implements TileProvider { if (parts >= 1) { mDocument.setPart(0); } + for (int i = 0; i < parts; i++) { + String partName = mDocument.getPartName(i); + if (partName.isEmpty()) { + partName = "Part " + (i + 1); + } + Log.i(LOGTAG, "Document part " + i + " name:'" + partName + "'"); + final DocumentPartView partView = new DocumentPartView(partName); + LibreOfficeMainActivity.mAppContext.getDocumentPartView().add(partView); + } + + LibreOfficeMainActivity.mAppContext.mMainHandler.post(new Runnable() { + @Override + public void run() { + LibreOfficeMainActivity.mAppContext.getDocumentPartViewListAdpater().notifyDataSetChanged(); + } + }); } } diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java index 888db323fe43..c50fba4b6a9d 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java @@ -2,35 +2,53 @@ package org.libreoffice; import android.app.Activity; import android.os.Bundle; -import android.os.SystemClock; +import android.os.Handler; +import android.support.v4.widget.DrawerLayout; import android.util.DisplayMetrics; import android.util.Log; import android.view.Menu; import android.view.MenuItem; -import android.widget.LinearLayout; +import android.widget.ListView; import android.widget.RelativeLayout; import org.mozilla.gecko.gfx.GeckoLayerClient; import org.mozilla.gecko.gfx.LayerController; +import java.util.ArrayList; +import java.util.List; + public class LibreOfficeMainActivity extends Activity { private static final String LOGTAG = "LibreOfficeMainActivity"; private static final String DEFAULT_DOC_PATH = "/assets/test1.odt"; - private LinearLayout mMainLayout; - private RelativeLayout mGeckoLayout; + public static LibreOfficeMainActivity mAppContext; + private static LayerController mLayerController; private static GeckoLayerClient mLayerClient; private static LOKitThread sLOKitThread; - public static LibreOfficeMainActivity mAppContext; + public Handler mMainHandler; + + private DrawerLayout mDrawerLayout; + private RelativeLayout mGeckoLayout; + private ListView mDrawerList; + private List<DocumentPartView> mDocumentPartView = new ArrayList<DocumentPartView>(); + private DocumentPartViewListAdpater mDocumentPartViewListAdpater; + + public static GeckoLayerClient getLayerClient() { + return mLayerClient; + } + + public static LayerController getLayerController() { + return mLayerController; + } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); - return true; + return super.onCreateOptionsMenu(menu); } @Override @@ -45,36 +63,47 @@ public class LibreOfficeMainActivity extends Activity { return super.onOptionsItemSelected(item); } + @Override + public boolean onPrepareOptionsMenu(Menu menu) { + // If the nav drawer is open, hide action items related to the content view + boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList); + menu.findItem(R.id.action_list).setVisible(!drawerOpen); + return super.onPrepareOptionsMenu(menu); + } + public DisplayMetrics getDisplayMetrics() { DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); return metrics; } - /** - * Called when the activity is first created. - */ @Override public void onCreate(Bundle savedInstanceState) { mAppContext = this; + mMainHandler = new Handler(); + super.onCreate(savedInstanceState); - Log.w(LOGTAG, "zerdatime " + SystemClock.uptimeMillis() + " - onCreate"); + String inputFile; - String inputFile = new String(); if (getIntent().getData() != null) { inputFile = getIntent().getData().getEncodedPath(); - } - else { + } else { inputFile = DEFAULT_DOC_PATH; } setContentView(R.layout.activity_main); - // setup gecko layout + getActionBar().setDisplayHomeAsUpEnabled(false); + getActionBar().setHomeButtonEnabled(false); + mGeckoLayout = (RelativeLayout) findViewById(R.id.gecko_layout); - mMainLayout = (LinearLayout) findViewById(R.id.main_layout); + mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); + mDrawerList = (ListView) findViewById(R.id.left_drawer); + + mDocumentPartViewListAdpater = new DocumentPartViewListAdpater(this, R.layout.document_part_list_layout, mDocumentPartView); + mDrawerList.setAdapter(mDocumentPartViewListAdpater); if (mLayerController == null) { mLayerController = new LayerController(this); @@ -90,19 +119,28 @@ public class LibreOfficeMainActivity extends Activity { sLOKitThread = new LOKitThread(inputFile); sLOKitThread.start(); - Log.w(LOGTAG, "zerdatime " + SystemClock.uptimeMillis() + " - UI almost up"); + Log.w(LOGTAG, "UI almost up"); + } + + @Override + protected void onResume() { + super.onResume(); + } + + @Override + protected void onPause() { + super.onPause(); } public LOKitThread getLOKitThread() { return sLOKitThread; } - public static GeckoLayerClient getLayerClient() { - return mLayerClient; + public List<DocumentPartView> getDocumentPartView() { + return mDocumentPartView; } - - public static LayerController getLayerController() { - return mLayerController; + public DocumentPartViewListAdpater getDocumentPartViewListAdpater() { + return mDocumentPartViewListAdpater; } } diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java index 1515d9ccd334..e7ced82c4fd6 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/MockTileProvider.java @@ -15,6 +15,18 @@ public class MockTileProvider implements TileProvider { public MockTileProvider(LayerController layerController, String inputFile) { this.layerController = layerController; this.inputFile = inputFile; + + for (int i = 0; i < 5; i++) { + String partName = "Part " + i; + DocumentPartView partView = new DocumentPartView(partName); + LibreOfficeMainActivity.mAppContext.getDocumentPartViewListAdpater().add(partView); + } + LibreOfficeMainActivity.mAppContext.mMainHandler.post(new Runnable() { + @Override + public void run() { + LibreOfficeMainActivity.mAppContext.getDocumentPartViewListAdpater().notifyDataSetChanged(); + } + }); } @Override |