<classpathentry kind="lib" path="lib/commons-logging-1.1.1.jar"/>
<classpathentry kind="lib" path="lib/commons-httpclient-3.0.1.jar"/>
<classpathentry kind="lib" path="lib/commons-io-2.0.1.jar"/>
- <classpathentry kind="lib" path="lib/android-support-v4.jar"/>
<classpathentry kind="lib" path="lib/commons-httpclient-contrib-3.0.jar"/>
<classpathentry kind="lib" path="lib/httpclient-4.1.2.jar"/>
<classpathentry kind="lib" path="lib/httpcore-4.1.2.jar"/>
<classpathentry kind="lib" path="lib/httpmime-4.1.2.jar"/>
<classpathentry kind="lib" path="lib/httpclient-cache-4.1.2.jar"/>
+ <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>
android:name="android.permission.READ_SYNC_SETTINGS" />\r
<uses-permission\r
android:name="android.permission.WRITE_SYNC_SETTINGS" />\r
- <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="10" />\r
+ <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="13" />\r
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>\r
\r
<application android:icon="@drawable/icon" android:label="@string/app_name">\r
</service>\r
<activity android:name=".ui.activity.FileDetailActivity"></activity>\r
<activity android:name=".ui.activity.LandingActivity"\r
- android:theme="@android:style/Theme.NoTitleBar"\r
+ android:theme="@style/Theme.ownCloud"\r
android:label="@string/app_name">\r
<intent-filter>\r
<action android:name="android.intent.action.MAIN" />\r
# project structure.
# Project target.
-target=android-7
+target=android-13
+android.library.reference.1=actionbarsherlock/library
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+ android:layout_width="fill_parent"\r
+ android:layout_height="fill_parent" >\r
+\r
+ <ImageView\r
+ android:id="@+id/gridImage"\r
+ android:layout_width="wrap_content"\r
+ android:layout_height="wrap_content"\r
+ android:layout_alignParentTop="true"\r
+ android:layout_centerHorizontal="true"\r
+ android:src="@drawable/action_item_btn" />
+\r\r\r
+ <TextView\r
+ android:id="@+id/gridText"\r
+ android:layout_width="wrap_content"\r
+ android:layout_height="wrap_content"\r
+ android:layout_below="@+id/gridImage"\r
+ android:layout_centerHorizontal="true"\r
+ android:text="Medium Text"\r
+ android:textAppearance="?android:attr/textAppearanceMedium"\r
+ android:textColor="@color/setup_text_hint" />\r
+\r
+</RelativeLayout>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+ android:layout_width="fill_parent"\r
+ android:layout_height="fill_parent"\r
+ android:orientation="vertical" >\r
+ \r
+ <GridView\r
+ android:id="@+id/homeScreenGrid"\r
+ android:layout_width="fill_parent"\r
+ android:layout_height="fill_parent"\r
+ android:layout_gravity="center_horizontal"\r
+ android:columnWidth="90dp"\r
+ android:gravity="center"\r
+ android:horizontalSpacing="10dp"\r
+ android:numColumns="2"\r
+ android:stretchMode="columnWidth"\r
+ android:verticalSpacing="10dp" >\r
+ </GridView>\r
+\r
+ \r
+\r
+</LinearLayout>
\ No newline at end of file
android:layout_height="wrap_content"\r
android:orientation="vertical" >\r
\r
- <ImageView\r
- android:id="@+id/ocLogo"\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:layout_gravity="center_horizontal"\r
- android:paddingTop="10dip"\r
- android:src="@drawable/owncloud_logo" />\r
-\r
- <TextView\r
- android:id="@+id/textView0"\r
- android:layout_width="wrap_content"\r
- android:layout_height="wrap_content"\r
- android:layout_gravity="center_horizontal"\r
- android:layout_marginBottom="15dip"\r
- android:layout_marginTop="15dip"\r
- android:text="@string/main_welcome"\r
- android:textColor="@android:color/black"\r
- android:textSize="7pt"\r
- android:textStyle="bold" />\r
-\r
- <GridView\r
- android:id="@+id/gridview"\r
+ <ListView\r
+ android:id="@+id/homeScreenList"\r
android:layout_width="fill_parent"\r
android:layout_height="fill_parent"\r
android:layout_gravity="center_horizontal"\r
- android:columnWidth="90dp"\r
- android:gravity="center"\r
- android:horizontalSpacing="10dp"\r
- android:numColumns="2"\r
- android:stretchMode="columnWidth"\r
- android:verticalSpacing="10dp" >\r
- </GridView>\r
+ android:stretchMode="columnWidth" \r
+ android:divider="@android:color/black">\r
+ </ListView>\r
\r
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>\r
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
- android:background="#F7F7F7"\r
android:layout_width="fill_parent"\r
android:layout_height="fill_parent" >\r
-\r
- <ImageView\r
+ \r
+ <ImageView \r
android:id="@+id/gridImage"\r
android:layout_width="wrap_content"\r
android:layout_height="wrap_content"\r
android:layout_alignParentTop="true"\r
- android:layout_centerHorizontal="true"\r
- android:src="@drawable/action_item_btn" />
-\r\r\r
+ android:layout_centerVertical="true"\r
+ android:src="@drawable/action_item_btn"\r
+ />\r
+ \r
<TextView\r
android:id="@+id/gridText"\r
android:layout_width="wrap_content"\r
android:layout_height="wrap_content"\r
- android:layout_below="@+id/gridImage"\r
- android:layout_centerHorizontal="true"\r
+ android:layout_toRightOf="@+id/gridImage"\r
+ android:layout_centerVertical="true"\r
android:text="Medium Text"\r
android:textAppearance="?android:attr/textAppearanceMedium"\r
android:textColor="@color/setup_text_hint" />\r
+ \r
\r
</RelativeLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>\r
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
- android:layout_width="fill_parent"\r
- android:layout_height="fill_parent"\r
- android:background="#F7F7F7"\r
- android:orientation="vertical" >
+ android:layout_width="match_parent"\r
+ android:layout_height="match_parent"\r
+ android:orientation="vertical" >\r
\r
- <fragment\r
- android:id="@+id/actionBar"\r
- android:layout_width="fill_parent"\r
- android:layout_height="wrap_content"\r
- class="eu.alefzero.owncloud.ui.fragment.ActionBar" >
- <!-- Preview: layout=@layout/action_bar -->
- </fragment>\r
- \r
- <fragment\r
- android:id="@+id/landingPage"\r
- android:layout_width="fill_parent"\r
- android:layout_height="wrap_content"\r
- class="eu.alefzero.owncloud.ui.fragment.LandingPageFragment" >\r
- <!-- Preview: layout=@layout/landing_page_fragment -->\r
- </fragment>\r
+ <LinearLayout\r
+ android:id="@+id/linearLayout1"\r
+ android:layout_width="match_parent"\r
+ android:layout_height="match_parent"\r
+ android:orientation="horizontal" >\r
\r
- \r
+ <fragment\r
+ android:id="@+id/landingPage"\r
+ android:layout_width="fill_parent"\r
+ android:layout_height="wrap_content"\r
+ class="eu.alefzero.owncloud.ui.fragment.LandingPageFragment" >\r
+\r
+ <!-- Preview: layout=@layout/landing_page_fragment -->\r
+ </fragment>\r
+ </LinearLayout>\r
\r
</LinearLayout>
\ No newline at end of file
<resources>
<style name="Animations" />
+ <!-- Default ownCloud app style -->
+ <style name="Theme.ownCloud" parent="style/Theme.Sherlock.Light">
+ <item name="abBackground">@drawable/main_header_bg</item>
+ <item name="abTitleTextStyle">@style/ocActionBarTextStyle</item>
+ </style>
+
+ <style name="ocActionBarTextStyle">
+ <item name="android:textColor">#ffffff</item>
+ </style>
+
+
+
<!-- PopDownMenu -->
<style name="Animations.PopDownMenu" />
import android.os.Environment;\r
import android.support.v4.app.FragmentActivity;\r
import android.support.v4.app.FragmentTransaction;\r
+import android.support.v4.view.Menu;\r
+import android.support.v4.view.MenuItem;\r
import android.text.TextUtils;\r
import android.util.Log;\r
-import android.view.Menu;\r
import android.view.MenuInflater;\r
-import android.view.MenuItem;\r
import android.view.View;\r
import android.view.Window;\r
import android.widget.ImageView;\r
import android.app.AlertDialog;\r
import android.app.Dialog;\r
import android.content.DialogInterface;\r
-import android.content.Intent;\r
import android.content.DialogInterface.OnClickListener;\r
+import android.content.Intent;\r
import android.os.Bundle;\r
import android.support.v4.app.FragmentActivity;\r
+import android.view.View;\r
+import android.widget.AdapterView;\r
+import android.widget.AdapterView.OnItemClickListener;\r
+import android.widget.GridView;\r
+import android.widget.Toast;\r
import eu.alefzero.owncloud.R;\r
import eu.alefzero.owncloud.authenticator.AccountAuthenticator;\r
+import eu.alefzero.owncloud.ui.adapter.LandingScreenAdapter;\r
\r
/**\r
* This activity is used as a landing page when the user first opens this app.\r
* @author Lennart Rosam\r
* \r
*/\r
-public class LandingActivity extends FragmentActivity implements OnClickListener {\r
+public class LandingActivity extends FragmentActivity implements OnClickListener, OnItemClickListener {\r
\r
public static final int DIALOG_SETUP_ACCOUNT = 1;\r
\r
super.onCreate(savedInstanceState);\r
setContentView(R.layout.main);\r
\r
+ // Fill the grid view that is only available in portrait mode\r
+ GridView landingScreenItems = (GridView) findViewById(R.id.homeScreenGrid);\r
+ if(landingScreenItems != null){\r
+ landingScreenItems.setAdapter(new LandingScreenAdapter(this));\r
+ landingScreenItems.setOnItemClickListener(this);\r
+ }\r
+ \r
// Check, if there are ownCloud accounts\r
if(!accountsAreSetup()){\r
showDialog(DIALOG_SETUP_ACCOUNT);\r
\r
}\r
\r
+ @Override\r
+ /**\r
+ * Start an activity based on the selection\r
+ * the user made\r
+ */\r
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {\r
+ Intent intent;\r
+ intent = (Intent) parent.getAdapter().getItem(position);\r
+ if(intent != null ){\r
+ startActivity(intent);\r
+ } else {\r
+ Toast toast = Toast.makeText(this, "Not yet implemented!", Toast.LENGTH_SHORT);\r
+ toast.show();\r
+ } \r
+ }\r
+ \r
/**\r
* Checks, whether or not there are any ownCloud accounts \r
* setup. \r
.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE); \r
return accounts.length > 0;\r
}\r
- \r
\r
+ \r
}\r
mContext = context;\r
}\r
\r
+ @Override\r
public int getCount() {\r
return mLandingScreenIcons.length;\r
}\r
\r
+ @Override\r
/**\r
* Returns the Intent associated with this object\r
* or null if the functionality is not yet implemented\r
return intent;\r
}\r
\r
+ @Override\r
public long getItemId(int position) {\r
return position;\r
}\r
\r
+ @Override\r
public View getView(int position, View convertView, ViewGroup parent) {\r
if (convertView == null) {\r
LayoutInflater inflator = LayoutInflater.from(mContext);\r
*/\r
package eu.alefzero.owncloud.ui.fragment;\r
\r
-import eu.alefzero.owncloud.R;\r
-import android.app.Activity;\r
import android.os.Bundle;\r
import android.support.v4.app.Fragment;\r
+import android.support.v4.app.SupportActivity;\r
import android.view.LayoutInflater;\r
import android.view.View;\r
import android.view.ViewGroup;\r
+import eu.alefzero.owncloud.R;\r
\r
/**\r
* A custom ActionBar implementation used in the FileDisplayActivity\r
}\r
\r
@Override\r
- public void onAttach(Activity activity) {\r
+ public void onAttach(SupportActivity activity) {\r
super.onAttach(activity);\r
}\r
\r
*/\r
package eu.alefzero.owncloud.ui.fragment;\r
\r
-import android.content.Context;\r
-import android.content.Intent;\r
import android.os.Bundle;\r
import android.support.v4.app.Fragment;\r
import android.view.LayoutInflater;\r
import android.view.View;\r
import android.view.ViewGroup;\r
-import android.widget.AdapterView;\r
-import android.widget.BaseAdapter;\r
-import android.widget.GridView;\r
-import android.widget.ImageView;\r
-import android.widget.TextView;\r
-import android.widget.Toast;\r
-import android.widget.AdapterView.OnItemClickListener;\r
+import android.widget.ListView;\r
import eu.alefzero.owncloud.R;\r
-import eu.alefzero.owncloud.ui.activity.FileDisplayActivity;\r
-import eu.alefzero.owncloud.ui.activity.Preferences;\r
+import eu.alefzero.owncloud.ui.activity.LandingActivity;\r
+import eu.alefzero.owncloud.ui.adapter.LandingScreenAdapter;\r
\r
/**\r
* Used on the Landing page to display what Components of \r
* @author Lennart Rosam\r
*\r
*/\r
-public class LandingPageFragment extends Fragment implements OnItemClickListener {\r
+public class LandingPageFragment extends Fragment {\r
\r
@Override\r
public View onCreateView(LayoutInflater inflater, ViewGroup container,\r
@Override\r
public void onActivityCreated(Bundle savedInstanceState) {\r
super.onActivityCreated(savedInstanceState);\r
- GridView grid = (GridView) getView().findViewById(R.id.gridview);\r
- grid.setAdapter(new LandingScreenAdapter(getActivity()));\r
- grid.setOnItemClickListener(this);\r
+ \r
+ ListView landingScreenItems = (ListView) getView().findViewById(R.id.homeScreenList);\r
+ landingScreenItems.setAdapter(new LandingScreenAdapter(getActivity()));\r
+ landingScreenItems.setOnItemClickListener((LandingActivity) getActivity());\r
}\r
\r
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {\r
- /*\r
- * Start an activity based on the selection\r
- * the user made\r
- */\r
- Intent intent;\r
- intent = (Intent) parent.getAdapter().getItem(position);\r
- if(intent != null ){\r
- startActivity(intent);
- } else {\r
- Toast toast = Toast.makeText(getActivity(), "Not yet implemented!", Toast.LENGTH_SHORT);\r
- toast.show();\r
- } \r
- }\r
-\r
- /**\r
- * Used to populate the landing page grid.\r
- * Defined this one right in here as private class\r
- * as it is unlikely that this Adapter can be useful\r
- * anywhere else.\r
- * \r
- * @author Lennart Rosam\r
- *\r
- */\r
- private class LandingScreenAdapter extends BaseAdapter {\r
-\r
- private Context mContext;\r
-\r
- private final Integer[] mLandingScreenIcons = { R.drawable.home,\r
- R.drawable.music, R.drawable.contacts,\r
- android.R.drawable.ic_menu_today,\r
- android.R.drawable.ic_menu_agenda,\r
- android.R.drawable.ic_menu_preferences };\r
-\r
- private final Integer[] mLandingScreenTexts = { R.string.main_files,\r
- R.string.main_music, R.string.main_contacts,\r
- R.string.main_calendar, R.string.main_bookmarks,\r
- R.string.main_settings };\r
-\r
- public LandingScreenAdapter(Context context) {\r
- mContext = context;\r
- }\r
-\r
- public int getCount() {\r
- return mLandingScreenIcons.length;\r
- }\r
-\r
- /**\r
- * Returns the Intent associated with this object\r
- * or null if the functionality is not yet implemented\r
- */\r
- public Object getItem(int position) {\r
- Intent intent = new Intent();\r
- switch (position) {\r
- case 0:\r
- intent.setClass(mContext, FileDisplayActivity.class);\r
- break;\r
- case 5:\r
- intent.setClass(mContext, Preferences.class);\r
- break;\r
- default:\r
- intent = null;\r
- }\r
- return intent;\r
- }\r
-\r
- public long getItemId(int position) {\r
- return position;\r
- }\r
-\r
- public View getView(int position, View convertView, ViewGroup parent) {\r
- if (convertView == null) {\r
- LayoutInflater inflator = LayoutInflater.from(mContext);\r
- convertView = inflator\r
- .inflate(R.layout.landing_page_item, null);\r
-\r
- ImageView icon = (ImageView) convertView\r
- .findViewById(R.id.gridImage);\r
- TextView iconText = (TextView) convertView\r
- .findViewById(R.id.gridText);\r
-\r
- icon.setImageResource(mLandingScreenIcons[position]);\r
- iconText.setText(mLandingScreenTexts[position]);\r
- }\r
- return convertView;
- }\r
- }\r
-\r
- \r
- \r
+ \r
}\r