Bläddra i källkod

1.完成Android Apex Drivers首页Header。

Pen Li 7 år sedan
förälder
incheckning
f14a82ce6c

+ 4 - 0
ApexDrivers/app/src/main/AndroidManifest.xml

@@ -120,6 +120,10 @@
         </activity>
         <activity android:name=".Signature.SignatureActivity">
         </activity>
+        <activity android:name=".Message.MessageActivity">
+        </activity>
+        <activity android:name=".Setting.SettingActivity">
+        </activity>
     </application>
 
 </manifest>

+ 12 - 0
ApexDrivers/app/src/main/java/com/usai/redant/apexdrivers/BadgeView/BadgeView.java

@@ -10,6 +10,8 @@ import android.util.AttributeSet;
 import android.util.TypedValue;
 import android.view.Gravity;
 import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AbsoluteLayout;
 
 
 public class BadgeView extends android.support.v7.widget.AppCompatTextView {
@@ -92,6 +94,8 @@ public class BadgeView extends android.support.v7.widget.AppCompatTextView {
         } else {
             setVisibility(View.VISIBLE);
         }
+
+
         super.setText(text, type);
 
         clear();
@@ -99,6 +103,14 @@ public class BadgeView extends android.support.v7.widget.AppCompatTextView {
     }
 
     private void clear() {
+
+
+        if (getLayoutParams() != null) {
+            getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT;
+            getLayoutParams().width = ViewGroup.LayoutParams.WRAP_CONTENT;
+            setLayoutParams(getLayoutParams());
+        }
+
         mTextW = 0;
         mTextH = 0;
     }

+ 97 - 1
ApexDrivers/app/src/main/java/com/usai/redant/apexdrivers/Home/HomeFragment.java

@@ -4,6 +4,7 @@ import android.app.Activity;
 import android.app.ProgressDialog;
 import android.content.BroadcastReceiver;
 import android.content.Context;
+import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.graphics.Color;
@@ -33,7 +34,11 @@ import android.widget.TextView;
 import com.usai.redant.apexdrivers.ApexDriverApplication;
 import com.usai.redant.apexdrivers.BadgeView.BadgeView;
 import com.usai.redant.apexdrivers.Detail.DetailActivity;
+import com.usai.redant.apexdrivers.MainActivity;
+import com.usai.redant.apexdrivers.Message.MessageActivity;
 import com.usai.redant.apexdrivers.R;
+import com.usai.redant.apexdrivers.Setting.SettingActivity;
+import com.usai.redant.apexdrivers.Utils.OperationQueue;
 import com.usai.redant.rautils.Utils.Network;
 
 import org.json.JSONArray;
@@ -43,7 +48,7 @@ import org.json.JSONObject;
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 
-public class HomeFragment extends Fragment {
+public class HomeFragment extends Fragment implements HomeHeaderView.HomeHeaderDelegate {
 
     public final static String HomeReloadBroadcastAction = "com.usai.redant.apexdriver.home_refresh";
     private final static String HomeSaveDataKey = "HomeSaveDataKey";
@@ -61,6 +66,7 @@ public class HomeFragment extends Fragment {
     private JSONObject mJson;
     private HomeOrderModel mSelectedModel;
     private TextView mEmptyView;
+    private HomeHeaderView mHeaderView;
 
     @Nullable
     @Override
@@ -133,6 +139,11 @@ public class HomeFragment extends Fragment {
             }
         });
         mListView.setEmptyView(view.findViewById(R.id.home_empty_view));
+
+        // header
+        mHeaderView = HomeHeaderView.headerView(mCtx);
+        mHeaderView.setDelegate(this);
+        mListView.addHeaderView(mHeaderView);
     }
 
     @Override
@@ -268,6 +279,7 @@ public class HomeFragment extends Fragment {
 
         Message msg = new Message();
         msg.what = HomeHandler.HomeActionReloadData;
+        msg.obj = json;
         mHandler.sendMessage(msg);
     }
 
@@ -343,6 +355,82 @@ public class HomeFragment extends Fragment {
 
     }
 
+    private void updateDriverAvailable(final boolean available) {
+
+        showProgressDialog();
+        ApexDriverApplication.sharedApplication().getNetworkQueue().addOperationTask(new OperationQueue.OperationBackgroundCallBack() {
+            @Override
+            public Object operationDoInBackground() {
+
+                return com.usai.redant.apexdrivers.Network.Network.updateDriverAvailable(available);
+            }
+        }, new OperationQueue.OperationCompletionCallBack() {
+            @Override
+            public void operationCompletion(Object object) {
+
+                dismissProgressDialog();
+
+                JSONObject json = (JSONObject)object;
+
+                if (json != null) {
+
+                    int result = json.optInt("result");
+                    if (result == Network.RESULT_TRUE) {
+
+                        mHeaderView.setAvailable(available);
+
+                    } else {
+                        String errMsg = json.optString("err_msg");
+                        if (errMsg == null || errMsg.length() == 0) {
+                            errMsg = "Sorry,there is something wrong";
+                        }
+                        showWarningMsg(errMsg);
+                    }
+                } else {
+                    String errMsg = "Sorry,there is something wrong";
+
+                    showWarningMsg(errMsg);
+                }
+
+
+            }
+        },null);
+    }
+
+    @Override
+    public void signoutClick() {
+        ((MainActivity)getActivity()).logout();
+    }
+
+    @Override
+    public void settingClick() {
+        SettingActivity.startSettingActivity(mCtx);
+    }
+
+    @Override
+    public void availableClick() {
+
+        final boolean available = mHeaderView.isAvailable();
+        String msg = "are you sure to change status to " + (available ? "Unavailable" : "Available");
+        new AlertDialog.Builder(mCtx)
+                .setTitle("Warning")
+                .setMessage(msg)
+                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+                        updateDriverAvailable(!available);
+                    }
+                })
+                .setNegativeButton("Cancel",null)
+                .show();
+
+    }
+
+    @Override
+    public void messageClick() {
+        MessageActivity.startMessageActivity(mCtx);
+    }
+
     private static final class HomeHandler extends Handler {
 
         static final int HomeActionReloadData = 0;
@@ -376,6 +464,14 @@ public class HomeFragment extends Fragment {
                     }
 
                     fragment.mAdapter.notifyDataSetChanged();
+
+                    JSONObject json = (JSONObject) msg.obj;
+                    if (json != null) {
+                        boolean driver_available = json.optBoolean("driver_available");
+                        if (fragment.mHeaderView != null) {
+                            fragment.mHeaderView.setAvailable(driver_available);
+                        }
+                    }
                 }
                 break;
                 case HomeActionError: {

+ 32 - 19
ApexDrivers/app/src/main/java/com/usai/redant/apexdrivers/MainActivity.java

@@ -185,20 +185,28 @@ public class MainActivity extends AppCompatActivity implements LoginFragment.Log
         invalidateOptionsMenu();
     }
 
-    @Override
-    public boolean onPrepareOptionsMenu(Menu menu) {
-        super.onPrepareOptionsMenu(menu);
-
-        menu.clear();
-
-        if (ApexDriverApplication.sharedApplication().isLogin()) {
-
-            menu.add(0, 0, 0, "Upload List");
-            menu.add(0, 1, 0, "Logout");
+//    @Override
+//    public boolean onPrepareOptionsMenu(Menu menu) {
+//        super.onPrepareOptionsMenu(menu);
+//
+//        menu.clear();
+//
+//        if (ApexDriverApplication.sharedApplication().isLogin()) {
+//
+//            menu.add(0, 0, 0, "Upload List");
+////            menu.add(0, 1, 0, "Logout");
+//
+//        } else {
+//
+//        }
+//
+//        return true;
+//    }
 
-        } else {
 
-        }
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.home_menu,menu);
 
         return true;
     }
@@ -207,16 +215,21 @@ public class MainActivity extends AppCompatActivity implements LoginFragment.Log
     public boolean onOptionsItemSelected(MenuItem item) {
 
         switch (item.getItemId()) {
-            case 0: {
-
+//            case 0: {
+//
+//                Intent intent = new Intent(this, TaskActivity.class);
+//                startActivity(intent);
+//            }
+//            break;
+//            case 1: {
+//                logout();
+//            }
+//            break;
+            case R.id.home_upload_list: {
                 Intent intent = new Intent(this, TaskActivity.class);
                 startActivity(intent);
             }
             break;
-            case 1: {
-                logout();
-            }
-            break;
         }
 
         return true;
@@ -239,7 +252,7 @@ public class MainActivity extends AppCompatActivity implements LoginFragment.Log
         mProgressDialog = null;
     }
 
-    private void logout() {
+    public void logout() {
 
         showProgressDialog();
         new Thread(new Runnable() {

+ 12 - 0
ApexDrivers/app/src/main/java/com/usai/redant/apexdrivers/Network/Network.java

@@ -32,6 +32,7 @@ public class Network extends com.usai.redant.rautils.Utils.Network {
     public static final String URL_LOGOUT = URL_HOST + "/j/mobile/loginOut.mo/";
     public static final String URL_REPORT_LOCATION = URL_HOST + "/j/mobile/uploadDriverLocation.mo/";
     public static final String URL_RETRIVED_PASSWORD = URL_HOST + "/j/mobile/resetPassword.mo/";
+    public static final String URL_DRIVER_AVAILABLE = URL_HOST + "/j/mobile/updateDriverAvailable.mo/";
 
     private static void prepareParams(Bundle params) {
         if (params == null) {
@@ -253,6 +254,17 @@ public class Network extends com.usai.redant.rautils.Utils.Network {
         getJson(URL_REPORT_LOCATION,params);
     }
 
+    public static JSONObject updateDriverAvailable(boolean available) {
+
+        Bundle params = new Bundle();
+        params.putBoolean("available",available);
+
+        prepareParams(params);
+        String jsonStr = getJson(URL_DRIVER_AVAILABLE,params);
+
+        return handleJson(jsonStr);
+    }
+
     public static JSONObject loadFakeData(Context context, int rawId) {
 
         try

+ 13 - 3
ApexDrivers/app/src/main/java/com/usai/redant/apexdrivers/Update/UpdateActivity.java

@@ -560,7 +560,7 @@ public class UpdateActivity extends AppCompatActivity implements UpdateAdapter.U
         }
 
         final ArrayList<UpdateImageBaseModel> photoArr = photos;
-
+        final String serial = json.optString("serial");
         new Thread(new Runnable() {
             @Override
             public void run() {
@@ -569,7 +569,7 @@ public class UpdateActivity extends AppCompatActivity implements UpdateAdapter.U
                 for (int i = 0; i < photoArr.size(); i++) {
 
                     UpdateImageBaseModel model = photoArr.get(i);
-                    String serial = json.optString(model.key);
+
                     if (serial != null && serial.length() > 0) {
 
                         Bundle fileParams = new Bundle();
@@ -577,6 +577,10 @@ public class UpdateActivity extends AppCompatActivity implements UpdateAdapter.U
                         if (mOrderType2 != null) {
                             fileParams.putString("orderType2",mOrderType2);
                         }
+                        if (model.key != null) {
+                            fileParams.putString("key",model.key);
+                        }
+                        fileParams.putInt("type",model.type);
 
                         JSONObject jsonObj = com.usai.redant.apexdrivers.Network.Network.uploadFile(model.getImagePath(),fileParams);
                         if (jsonObj != null) {
@@ -670,10 +674,12 @@ public class UpdateActivity extends AppCompatActivity implements UpdateAdapter.U
         SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/YYYY HH:mm");
         String dateString = formatter.format(currentTime);
 
+        final String serial = json.optString("serial");
+
         for (int i = 0; i < photoArr.size(); i++) {
 
             UpdateImageBaseModel model = photoArr.get(i);
-            String serial = json.optString(model.key);
+
             if (serial != null && serial.length() > 0) {
 
                 Bundle task = new Bundle();
@@ -694,6 +700,10 @@ public class UpdateActivity extends AppCompatActivity implements UpdateAdapter.U
                 if (mOrderType2 != null) {
                     params.putString("orderType2",mOrderType2);
                 }
+                if (model.key != null) {
+                    params.putString("key",model.key);
+                }
+                params.putInt("type",model.type);
 
                 task.putBundle("params",params);
                 taskArr.add(task);

+ 49 - 42
ApexDrivers/app/src/main/res/layout/section_header.xml

@@ -2,60 +2,67 @@
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                 android:layout_width="match_parent"
                 android:layout_height="50dp"
-                android:background="#cccccc"
+                android:background="#00000000"
+                android:gravity="center"
     >
 
-    <Button
-        android:id="@+id/section_switch_btn"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:layout_alignParentRight="true"
-        android:layout_margin="5dp"
-        android:textSize="17sp"
-        android:textColor="#ffffff"
-        android:text="Hide"
-        android:textAllCaps="false"
-        />
-
-    <!--<TextView-->
-        <!--android:id="@+id/header_title_tv"-->
-        <!--android:layout_width="match_parent"-->
-        <!--android:layout_height="wrap_content"-->
-        <!--android:layout_centerVertical="true"-->
-        <!--android:layout_marginLeft="5dp"-->
-        <!--android:layout_toLeftOf="@id/section_switch_btn"-->
-        <!--android:textSize="25sp"-->
-        <!--android:textColor="#000000"-->
-        <!--android:text="New Order"-->
-        <!--/>-->
-
-
     <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="50dp"
         android:layout_marginLeft="5dp"
-        android:layout_toLeftOf="@id/section_switch_btn"
+        android:layout_marginRight="5dp"
+        android:background="@drawable/section_header_round_corner"
         >
 
-        <TextView
-            android:id="@+id/header_title_tv"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+        <Button
+            android:id="@+id/section_switch_btn"
+            android:layout_width="40dp"
+            android:layout_height="40dp"
+            android:layout_alignParentRight="true"
+            android:layout_marginRight="10dp"
             android:layout_centerVertical="true"
-            android:textSize="20sp"
-            android:textColor="#000000"
-            android:text="New Order"
+            android:textSize="17sp"
+            android:background="@drawable/clear_bg"
+            android:textColor="@color/ApexDriverOrange"
+            android:text="Hide"
+            android:textAllCaps="false"
             />
 
-        <com.usai.redant.apexdrivers.BadgeView.BadgeView
-            android:id="@+id/header_badge_tv"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_centerVertical="true"
-            android:layout_toRightOf="@id/header_title_tv"
-            android:layout_marginLeft="5dp"
-        />
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="50dp"
+            android:layout_toLeftOf="@id/section_switch_btn"
+            android:background="@drawable/clear_bg"
+            android:layout_centerInParent="true"
+            >
+
+            <TextView
+                android:id="@+id/header_title_tv"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:background="@drawable/clear_bg"
+                android:layout_marginLeft="2dp"
+                android:textSize="20sp"
+                android:textColor="#ffffff"
+                android:text="New Order"
+                />
+
+            <com.usai.redant.apexdrivers.BadgeView.BadgeView
+                android:id="@+id/header_badge_tv"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:layout_toRightOf="@id/header_title_tv"
+                android:layout_marginLeft="5dp"
+                />
+
+        </RelativeLayout>
+
 
     </RelativeLayout>
 
+
+
 </RelativeLayout>

+ 4 - 0
ApexDrivers/app/src/main/res/values/colors.xml

@@ -20,4 +20,8 @@
 
     <color name="blue">#2172ff</color>
 
+    <color name="ApexDriverOrange">#EC6C23</color>
+    <color name="ApexDriverGray">#4f5356</color>
+    <color name="ApexDriverWhite">#ffffff</color>
+
 </resources>