Browse Source

pulled developer

Arison 9 years ago
parent
commit
762efb7e2a
27 changed files with 682 additions and 236 deletions
  1. 20 21
      WeiChat/src/main/AndroidManifest.xml
  2. 47 30
      WeiChat/src/main/java/com/xzjmyk/pm/activity/sortlist/BaseSortModel.java
  3. 6 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java
  4. 1 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/BaseInfoActivity.java
  5. 23 19
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/CommonFragmentActivity.java
  6. 4 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AddLogActivity.java
  7. 7 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AddMeetTaskActivity.java
  8. 6 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MeetDetailsActivity.java
  9. 3 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OutLogListActivity.java
  10. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/ContactFragment.java
  11. 19 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/SigninFragment.java
  12. 14 12
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/CreateRoomUtil.java
  13. 4 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/StringUtils.java
  14. 7 24
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/AlarmManage.java
  15. 48 10
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/AlarmReceiver.java
  16. 267 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/groupchat/CreateGroupActivity.java
  17. 32 27
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/groupchat/GroupChatFragment.java
  18. 98 68
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/groupchat/SelectContactsActivity.java
  19. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java
  20. 7 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/StringUtils.java
  21. 3 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/view/crouton/Crouton.java
  22. 4 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/volley/Result.java
  23. 53 0
      WeiChat/src/main/res/layout/activity_create_group.xml
  24. 1 1
      WeiChat/src/main/res/layout/fragment_works.xml
  25. 2 0
      WeiChat/src/main/res/layout/row_select_contacts.xml
  26. 1 1
      WeiChat/src/main/res/values/dimens.xml
  27. 2 1
      WeiChat/src/main/res/values/gpm_values.xml

+ 20 - 21
WeiChat/src/main/AndroidManifest.xml

@@ -8,7 +8,7 @@
     <uses-sdk
         android:minSdkVersion="11"
         android:targetSdkVersion="23" />
-    <!-- share umeng -->
+    <!--share umeng-->
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
@@ -102,20 +102,20 @@
         android:icon="@drawable/uuu"
         android:label="@string/app_name"
         android:largeHeap="true"
-        android:theme="@style/AppTheme" >
+        android:theme="@style/AppTheme">
+
         <meta-data
             android:name="UMENG_CHANNEL"
             android:value="baidu" />
         <!-- 启动页面 -->
         <activity
             android:name=".ui.SplashActivity"
-            android:theme="@style/SplashTheme" >
+            android:theme="@style/SplashTheme">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
                 <category android:name="android.intent.category.LAUNCHER" />
-
-                <action android:name="cat.ereza.customactivityoncrash.RESTART" />
+                <action android:name="cat.ereza.customactivityoncrash.RESTART"/>
             </intent-filter>
         </activity>
         <!-- 异常跳转页面 -->
@@ -308,7 +308,7 @@
             android:exported="true"
             android:icon="@drawable/ic_chooser"
             android:label="@string/choose_file"
-            android:theme="@style/ChooserTheme" >
+            android:theme="@style/ChooserTheme">
             <intent-filter>
                 <action android:name="android.intent.action.GET_CONTENT" />
 
@@ -325,13 +325,13 @@
             android:enabled="@bool/use_provider"
             android:exported="true"
             android:grantUriPermissions="true"
-            android:permission="android.permission.MANAGE_DOCUMENTS" >
+            android:permission="android.permission.MANAGE_DOCUMENTS">
             <intent-filter>
                 <action android:name="android.content.action.DOCUMENTS_PROVIDER" />
             </intent-filter>
         </provider>
 
-        <receiver android:name=".broadcast.ScrenLockedBroadCastReceiver" >
+        <receiver android:name=".broadcast.ScrenLockedBroadCastReceiver">
             <intent-filter>
                 <action android:name="android.intent.action.SCREEN_OFF" />
                 <action android:name="android.intent.action.SCREEN_ON" />
@@ -358,7 +358,7 @@
         <!-- 用于接收系统消息以保证PushService正常运行 -->
         <receiver
             android:name="com.baidu.android.pushservice.PushServiceReceiver"
-            android:process=":bdservice_v1" >
+            android:process=":bdservice_v1">
             <intent-filter>
                 <action android:name="android.intent.action.BOOT_COMPLETED" />
                 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
@@ -376,7 +376,7 @@
         <!-- Push服务接收客户端发送的各种请求 -->
         <receiver
             android:name="com.baidu.android.pushservice.RegistrationReceiver"
-            android:process=":bdservice_v1" >
+            android:process=":bdservice_v1">
             <intent-filter>
                 <action android:name="com.baidu.android.pushservice.action.METHOD" />
                 <action android:name="com.baidu.android.pushservice.action.BIND_SYNC" />
@@ -395,7 +395,7 @@
             android:name="com.baidu.android.pushservice.PushService"
             android:exported="true"
             android:persistent="true"
-            android:process=":bdservice_v1" >
+            android:process=":bdservice_v1">
             <intent-filter>
                 <action android:name="com.baidu.android.pushservice.action.PUSH_SERVICE" />
             </intent-filter>
@@ -409,7 +409,7 @@
 
 
         <!-- 此处Receiver名字修改为当前包名路径 -->
-        <receiver android:name=".ui.PushNetMessageReceiver" >
+        <receiver android:name=".ui.PushNetMessageReceiver">
             <intent-filter>
 
                 <!-- 接收push消息 -->
@@ -430,7 +430,7 @@
             </intent-filter>
         </activity>
         -->
-        <activity android:name=".ui.message.SelectCardActivity" >
+        <activity android:name=".ui.message.SelectCardActivity">
             <intent-filter>
                 <action android:name="com.xzjmyk.pm.activity.ui.message.SelectCardActivity" />
             </intent-filter>
@@ -459,7 +459,7 @@
 
         <receiver
             android:name="com.baidu.autoupdatesdk.receiver.BDBroadcastReceiver"
-            android:exported="false" >
+            android:exported="false">
             <intent-filter>
                 <action android:name="com.baidu.autoupdatesdk.ACTION_NEW_UPDATE" />
                 <action android:name="com.baidu.autoupdatesdk.ACTION_DOWNLOAD_COMPLETE" />
@@ -638,8 +638,7 @@
         <!-- umeng api key -->
         <meta-data
             android:name="UMENG_APPKEY"
-            android:value="57ea27bb67e58e088c003bbf" >
-        </meta-data>
+            android:value="57ea27bb67e58e088c003bbf"></meta-data>
         <!-- weixin -->
         <activity
             android:name=".wxapi.WXEntryActivity"
@@ -651,7 +650,7 @@
         <activity
             android:name="com.tencent.tauth.AuthActivity"
             android:launchMode="singleTask"
-            android:noHistory="true" >
+            android:noHistory="true">
             <intent-filter>
                 <action android:name="android.intent.action.VIEW" />
 
@@ -669,7 +668,7 @@
         <activity
             android:name=".WBShareActivity"
             android:configChanges="keyboardHidden|orientation"
-            android:screenOrientation="portrait" >
+            android:screenOrientation="portrait">
             <intent-filter>
                 <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
 
@@ -680,8 +679,7 @@
             android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"
             android:configChanges="keyboardHidden|orientation"
             android:exported="false"
-            android:windowSoftInputMode="adjustResize" >
-        </activity>
+            android:windowSoftInputMode="adjustResize"></activity>
         <activity android:name=".ui.erp.activity.oa.SelectActivity" />
         <activity
             android:name=".ui.erp.activity.oa.ChangeMobileActivity"
@@ -690,10 +688,11 @@
             android:name="com.umeng.socialize.editorpage.ShareActivity"
             android:excludeFromRecents="true"
             android:theme="@style/Theme.UMDefault" />
+        <activity android:name=".ui.groupchat.CreateGroupActivity"></activity>
         <activity
             android:name=".ui.erp.activity.message.ProcessMsgActivity"
             android:label="@string/title_activity_process_msg">
         </activity>
     </application>
 
-</manifest>
+</manifest>

+ 47 - 30
WeiChat/src/main/java/com/xzjmyk/pm/activity/sortlist/BaseSortModel.java

@@ -1,33 +1,50 @@
 package com.xzjmyk.pm.activity.sortlist;
 
-public class BaseSortModel <T>{
-	public T bean;
-	public String firstLetter;// 首字母
-	public String wholeSpell;// 全拼
-	public String simpleSpell;// 首字母简拼
-	public String getFirstLetter() {
-		return firstLetter;
-	}
-	public void setFirstLetter(String firstLetter) {
-		this.firstLetter = firstLetter;
-	}
-	public String getWholeSpell() {
-		return wholeSpell;
-	}
-	public void setWholeSpell(String wholeSpell) {
-		this.wholeSpell = wholeSpell;
-	}
-	public String getSimpleSpell() {
-		return simpleSpell;
-	}
-	public void setSimpleSpell(String simpleSpell) {
-		this.simpleSpell = simpleSpell;
-	}
-	public T getBean() {
-		return bean;
-	}
-	public void setBean(T bean) {
-		this.bean = bean;
-	}
-	
+public class BaseSortModel<T> {
+    public T bean;
+    public String firstLetter;// 首字母
+    public String wholeSpell;// 全拼
+    public String simpleSpell;// 首字母简拼
+    public boolean isClick = false;
+
+    public boolean isClick() {
+        return isClick;
+    }
+
+    public void setClick(boolean click) {
+        isClick = click;
+    }
+
+    public String getFirstLetter() {
+        return firstLetter;
+    }
+
+    public void setFirstLetter(String firstLetter) {
+        this.firstLetter = firstLetter;
+    }
+
+    public String getWholeSpell() {
+        return wholeSpell;
+    }
+
+    public void setWholeSpell(String wholeSpell) {
+        this.wholeSpell = wholeSpell;
+    }
+
+    public String getSimpleSpell() {
+        return simpleSpell;
+    }
+
+    public void setSimpleSpell(String simpleSpell) {
+        this.simpleSpell = simpleSpell;
+    }
+
+    public T getBean() {
+        return bean;
+    }
+
+    public void setBean(T bean) {
+        this.bean = bean;
+    }
+
 }

+ 6 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java

@@ -134,6 +134,9 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
     };
     private int mImStatus = AuthStateListener.AUTH_STATE_NOT;
 
+    public int getmImStatus() {
+        return mImStatus;
+    }
 
     private ServiceConnection mXmppServiceConnection = new ServiceConnection() {
         @Override
@@ -384,14 +387,13 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
             mXmppService = ((CoreService.CoreServiceBinder) service).getService();
         }
     };
-    private IntentFilter fiter;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         getSupportActionBar().setDisplayShowHomeEnabled(false);
         getSupportActionBar().setDisplayHomeAsUpEnabled(false);
-      
+
         setContentView(R.layout.activity_main);
         SIP_USERNAME = MyApplication.getInstance().mLoginUser.getUserId();
         String host = mConfig.MeetingHost;
@@ -463,8 +465,8 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
                 Log.d("wang", "MainActivity....解锁");
             }
         });
-        
-        
+
+
         //查询数据库,取出中文名:
 //        DBManager  dbManager = new DBManager(ct);
 //        List<EmployeesEntity> db = dbManager.select_getEmployee(

+ 1 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/BaseInfoActivity.java

@@ -424,7 +424,6 @@ public class BaseInfoActivity extends BaseActivity implements View.OnClickListen
         params.put("access_token", MyApplication.getInstance().mAccessToken);
         if (!mUser.getNickName().equals(mTempData.getNickName())) {
             params.put("nickname", mTempData.getNickName());
-
         }
         if (mUser.getSex() != mTempData.getSex()) {
             params.put("sex", String.valueOf(mTempData.getSex()));
@@ -448,6 +447,7 @@ public class BaseInfoActivity extends BaseActivity implements View.OnClickListen
         StringJsonObjectRequest<Void> request = new StringJsonObjectRequest<Void>(mConfig.USER_UPDATE, new Response.ErrorListener() {
             @Override
             public void onErrorResponse(VolleyError arg0) {
+                Log.i("gongepngming","arg0="+arg0.getMessage());
                 ProgressDialogUtil.dismiss(mProgressDialog);
                 ToastUtil.showErrorNet(BaseInfoActivity.this);
             }
@@ -458,7 +458,6 @@ public class BaseInfoActivity extends BaseActivity implements View.OnClickListen
                 boolean success = Result.defaultParser(mContext, result, true);
                 if (success) {
                     saveData();
-
                 } else {
                     ProgressDialogUtil.dismiss(mProgressDialog);
                 }

+ 23 - 19
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/CommonFragmentActivity.java

@@ -20,12 +20,13 @@ public class CommonFragmentActivity extends BaseActivity {
     @ViewInject(R.id.fl_content)
     private FrameLayout fl_content;
     private int type;
+    private int imStatus;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_common_fragment);
-
+        imStatus = getIntent().getIntExtra("imStatus", -1);
         ViewUtils.inject(this);
         initView();
     }
@@ -35,30 +36,33 @@ public class CommonFragmentActivity extends BaseActivity {
      * @author:Administrator on 2016/2/17 10:34
      */
     public void initView() {
-        type=getIntent().getIntExtra("type", Constants.TYPE_CHAT_All);
-        switch (type){
+        type = getIntent().getIntExtra("type", Constants.TYPE_CHAT_All);
+        switch (type) {
 
-          case Constants.TYPE_CHAT_All:
-              GroupChatFragment groupChatFrament = new GroupChatFragment();
-              FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
-              fragmentTransaction.replace(R.id.fl_content, groupChatFrament);
-              fragmentTransaction.commit();
-              getSupportActionBar().setTitle("商务群");
-              break;
-         case Constants.TYPE_CHAT_MANAGE:
-             AutoCreateChatFragment manageChatFrament = new AutoCreateChatFragment();
-             fragmentTransaction = getSupportFragmentManager().beginTransaction();
-             fragmentTransaction.replace(R.id.fl_content, manageChatFrament);
-             fragmentTransaction.commit();
-             getSupportActionBar().setTitle("管理群");
-            break;
-       }
+            case Constants.TYPE_CHAT_All:
+                GroupChatFragment groupChatFrament = new GroupChatFragment();
+                FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
+                fragmentTransaction.replace(R.id.fl_content, groupChatFrament);
+                fragmentTransaction.commit();
+                getSupportActionBar().setTitle("商务群");
+                break;
+            case Constants.TYPE_CHAT_MANAGE:
+                AutoCreateChatFragment manageChatFrament = new AutoCreateChatFragment();
+                fragmentTransaction = getSupportFragmentManager().beginTransaction();
+                fragmentTransaction.replace(R.id.fl_content, manageChatFrament);
+                fragmentTransaction.commit();
+                getSupportActionBar().setTitle("管理群");
+                break;
+        }
     }
 
+    public int getImStatus() {
+        return imStatus;
+    }
 
     @Override
     public boolean onKeyDown(int keyCode, KeyEvent event) {
-        if(keyCode == KeyEvent.KEYCODE_BACK) { //监控/拦截/屏蔽返回键
+        if (keyCode == KeyEvent.KEYCODE_BACK) { //监控/拦截/屏蔽返回键
             startActivity(new Intent(CommonFragmentActivity.this, MainActivity.class));
             return false;
         }

+ 4 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AddLogActivity.java

@@ -151,7 +151,7 @@ public class AddLogActivity extends BaseActivity {
             return;
         }
         isSbmit = true;
-        sendWorkLogByErp(sum_tv.getText().toString());
+        sendWorkLogByErp(sum_tv.getText().toString(), plan_tv.getText().toString(), learned_tv.getText().toString());
         sendWorkLog(builder.deleteCharAt(builder.length() - 1).toString());
     }
 
@@ -194,11 +194,13 @@ public class AddLogActivity extends BaseActivity {
         ViewUtil.httpSendRequest(this, mConfig.MSG_ADD_URL, params, handler, null, 0x11, null, null, "get");
     }
 
-    private void sendWorkLogByErp(String text) {
+    private void sendWorkLogByErp(String text, String plan, String experience) {
         String url = CommonUtil.getSharedPreferences(ct, "erp_baseurl") + "mobile/addWorkReport.action";
         Map<String, Object> formStoreMap = new HashMap<>();
         formStoreMap.put("wd_empcode", CommonUtil.getSharedPreferences(ct, "erp_username"));
         formStoreMap.put("wd_comment", text);
+        formStoreMap.put("wd_plan", plan);
+        formStoreMap.put("wd_experience", experience);
         String formStore = StringUtils.mapToJson(formStoreMap);
         HashMap<String, Object> params = new HashMap<>();
         params.put("caller", "WorkDaily");

+ 7 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AddMeetTaskActivity.java

@@ -50,6 +50,8 @@ public class AddMeetTaskActivity extends BaseActivity {
                     if (validator.validate(message)) {
                         JSONObject object1 = JSON.parseObject(message);
                         Crouton.makeText(ct, StringUtils.isEmpty(object1.getString("exceptionInfo")) ? "程序错误" : object1.getString("exceptionInfo"));
+                    } else {
+                        Crouton.makeText(ct, StringUtils.isEmpty(message) ? "程序错误" : StringUtils.getChinese(message));
                     }
                     break;
             }
@@ -70,7 +72,7 @@ public class AddMeetTaskActivity extends BaseActivity {
     public boolean onOptionsItemSelected(MenuItem item) {
         if (R.id.add_item == item.getItemId()) {
             Intent intent = new Intent(ct, TaskAddActivity.class);
-            intent.putExtra("reid",R.style.OAThemeMeet);
+            intent.putExtra("reid", R.style.OAThemeMeet);
             intent.putExtra("type", 2);
             intent.putExtra("meetname", meetName);
             startActivityForResult(intent, 0x11);
@@ -143,14 +145,18 @@ public class AddMeetTaskActivity extends BaseActivity {
 
     class AddMeetTaskAdapter extends BaseAdapter {
         private JSONArray array;
+
         public AddMeetTaskAdapter() {
         }
+
         public AddMeetTaskAdapter(JSONArray array) {
             this.array = array;
         }
+
         public JSONArray getArray() {
             return array;
         }
+
         public void setArray(JSONArray array) {
             this.array = array;
             notifyDataSetChanged();

+ 6 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MeetDetailsActivity.java

@@ -33,6 +33,8 @@ import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
+import static u.aly.av.m;
+
 public class MeetDetailsActivity extends BaseActivity implements View.OnClickListener {
     @ViewInject(R.id.name_tv)
     private TextView name_tv;
@@ -315,7 +317,10 @@ public class MeetDetailsActivity extends BaseActivity implements View.OnClickLis
                 startActivity(intent);
                 break;
             case R.id.meet_save://会议纪要
-                if (!user_tv.getText().toString().trim().equals(MyApplication.getInstance().mLoginUser.getNickName().trim())) {
+                String myname = CommonUtil.getSharedPreferences(ct, "erp_emname");
+             if (StringUtils.isEmpty(myname))
+                    myname = MyApplication.getInstance().mLoginUser.getNickName();
+                if (!user_tv.getText().toString().trim().equals(myname)) {
                     Crouton.makeText(ct, "你不是会议管理员,没有权限编写会议纪要");
                     return;
                 }

+ 3 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OutLogListActivity.java

@@ -91,7 +91,9 @@ public class OutLogListActivity extends BaseActivity {
         mEmptyLayout.setShowEmptyButton(false);
         mEmptyLayout.setShowErrorButton(false);
         rili_tv.setText(StringUtils.isEmpty(date) ? "" : date);
-        String name = MyApplication.getInstance().mLoginUser.getNickName();
+        String name = CommonUtil.getSharedPreferences(ct, "erp_emname");
+        if (StringUtils.isEmpty(name))
+            name = MyApplication.getInstance().mLoginUser.getNickName();
         name_tv.setText(StringUtils.isEmpty(name) ? "" : name);
         prot_tv.setText("");
         double latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();

+ 2 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/ContactFragment.java

@@ -34,6 +34,7 @@ import com.xzjmyk.pm.activity.sortlist.BaseComparator;
 import com.xzjmyk.pm.activity.sortlist.BaseSortModel;
 import com.xzjmyk.pm.activity.sortlist.PingYinUtil;
 import com.xzjmyk.pm.activity.sortlist.SideBar;
+import com.xzjmyk.pm.activity.ui.MainActivity;
 import com.xzjmyk.pm.activity.ui.base.EasyFragment;
 import com.xzjmyk.pm.activity.ui.circle.BasicInfoActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.CommonFragmentActivity;
@@ -76,8 +77,6 @@ public class ContactFragment extends EasyFragment implements View.OnClickListene
     private TextView text_dialog;
     @ViewInject(R.id.pull_refresh_list)
     private PullToRefreshListView refreshListView;
-
-
     private FriendSortAdapter adapter;
     private DBManager manager;
     private String loginUserId;
@@ -545,6 +544,7 @@ public class ContactFragment extends EasyFragment implements View.OnClickListene
                 break;
             case R.id.group://群
                 intent = new Intent(ct, CommonFragmentActivity.class);
+                intent.putExtra("imStatus",((MainActivity) getActivity()).getmImStatus());
                 intent.putExtra("type", Constants.TYPE_CHAT_All);
                 ct.startActivity(intent);
                 break;

+ 19 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/SigninFragment.java

@@ -39,6 +39,7 @@ import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CodeUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.JsonValidator;
+import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.WifiReceiverUtil;
 import com.xzjmyk.pm.activity.ui.tool.ThreadUtil;
@@ -223,6 +224,11 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
         this.ct = (BaseActivity) ct;
     }
 
+    @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+    }
+
     @Override
     public void onStop() {
         super.onStop();
@@ -482,6 +488,10 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
             Crouton.makeText(ct, ct.getString(R.string.networks_out));
             return false;
         }
+        if (ListUtils.isEmpty(getDataByAdapter())) {
+            Crouton.makeText(ct, R.string.not_work_message);
+            return false;
+        }
         if (!StringUtils.isEmpty(macError)) {
             Crouton.makeText(ct, macError);
             return false;
@@ -490,6 +500,7 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
             Crouton.makeText(ct, R.string.not_signin_agin);
             return false;
         }
+
         if (companyDistance == -1) {
             Crouton.makeText(ct, R.string.not_addr_message);
             return false;
@@ -564,7 +575,8 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
             chche = getEndSignin(chche, false);
             b.setEndTime(chche);
         }
-        beans.add(b);
+        if (!StringUtils.isEmpty(b.getWorkTime()) && !b.getWorkTime().equals("00:00"))
+            beans.add(b);
 
         //下午
         b = new SigninBean();
@@ -580,7 +592,12 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
             chche = getEndSignin(chche, false);
             b.setEndTime(chche);
         }
-        beans.add(b);
+        if (!StringUtils.isEmpty(b.getWorkTime()) && !b.getWorkTime().equals("00:00"))
+            beans.add(b);
+        //没有排班情况
+        if (ListUtils.isEmpty(beans)) {
+            Crouton.makeText(ct,R.string.not_work_message);
+        }
         setDataForAdapter(beans);
     }
 

+ 14 - 12
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/CreateRoomUtil.java

@@ -44,7 +44,7 @@ public class CreateRoomUtil {
     private static final String TAG = "CreateRoomUtil";
     private static CreateRoomUtil instance = null;
     private CoreService mXmppService = null;
-    private ArrayList<MeetUserEntity> entities = null;
+    private List<MeetUserEntity> entities = null;
     private String roomName = null;
     private String doc = null;
     private Context context = null;
@@ -105,7 +105,7 @@ public class CreateRoomUtil {
         }
         if (TextUtils.isEmpty(roomJid)) {
             ToastUtil.showToast(context, R.string.create_room_failed);
-            result(false);
+            result(false, null);
             return;
         }
         Map<String, String> params = new HashMap<String, String>();
@@ -138,7 +138,7 @@ public class CreateRoomUtil {
                 new Response.ErrorListener() {
                     @Override
                     public void onErrorResponse(VolleyError arg0) {
-                        result(false);
+                        result(false, null);
                     }
                 }, new StringJsonObjectRequest.Listener<MucRoom>() {
             @Override
@@ -147,8 +147,8 @@ public class CreateRoomUtil {
                 if (parserResult && result.getData() != null) {
                     list.add(0, MyApplication.getInstance().mLoginUser.getUserId());
                     RoomImageUtil.getInstance().uploadAvatar(context, list, roomJid);//上传头像
-                    result(true);
                     joinRoom(context, result.getData());
+
                 }
             }
         }, MucRoom.class, params);
@@ -181,8 +181,7 @@ public class CreateRoomUtil {
         }, new StringJsonArrayRequest.Listener<Void>() {
             @Override
             public void onResponse(ArrayResult<Void> result) {
-                boolean success = Result.defaultParser(context,
-                        result, true);
+                boolean success = Result.defaultParser(context, result, true);
                 if (success) {
                     Friend friend = new Friend();// 将房间也存为好友
                     friend.setOwnerId(loginUserId);
@@ -196,7 +195,10 @@ public class CreateRoomUtil {
                     friend.setTimeSend(TimeUtils.sk_time_current_time());
                     friend.setStatus(Friend.STATUS_FRIEND);
                     FriendDao.getInstance().createOrUpdateFriend(friend);//创建或者更新好友...
-                    sendMucChatMessage();//发送一条信息到群里去
+//                    sendMucChatMessage();//发送一条信息到群里去
+                    result(true, roomJid);
+                } else {
+                    result(false, null);
                 }
             }
         }, Void.class, params);
@@ -224,9 +226,9 @@ public class CreateRoomUtil {
         }
     }
 
-    private void result(boolean isOk) {
+    private void result(boolean isOk, String jid) {
         if (listener != null)
-            listener.result(isOk);
+            listener.result(isOk, jid);
     }
 
     private void send(ChatMessage message) {
@@ -256,7 +258,7 @@ public class CreateRoomUtil {
     }
 
     //创建群(不获取成功回调)
-    public void createRoom(Context context, ArrayList<MeetUserEntity> entities, String name, String doc) {
+    public void createRoom(Context context, List<MeetUserEntity> entities, String name, String doc) {
         this.entities = entities;
         this.roomName = name;
         this.doc = doc;
@@ -265,7 +267,7 @@ public class CreateRoomUtil {
     }
 
     //创建群(要求获取成功回调)
-    public void createRoom(Context context, ArrayList<MeetUserEntity> entities, String name, String doc, OnCreateRoomListener listener) {
+    public void createRoom(Context context, List<MeetUserEntity> entities, String name, String doc, OnCreateRoomListener listener) {
         this.listener = listener;
         createRoom(context, entities, name, doc);
     }
@@ -273,6 +275,6 @@ public class CreateRoomUtil {
     private OnCreateRoomListener listener = null;
 
     public interface OnCreateRoomListener {
-        void result(boolean isOk);
+        void result(boolean isOk, String jid);
     }
 }

+ 4 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/StringUtils.java

@@ -1,7 +1,5 @@
 package com.xzjmyk.pm.activity.ui.erp.util;
 
-import android.util.Log;
-
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
@@ -59,6 +57,10 @@ public class StringUtils {
         }
     }
 
+    public static String getChinese(String chche) {
+        String reg = "[^\u4e00-\u9fa5]";
+        return chche.replaceAll(reg, "");
+    }
     /**
      * 判断指定字符是否被包含
      *

+ 7 - 24
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/AlarmManage.java

@@ -17,7 +17,6 @@ import java.util.Calendar;
 import java.util.List;
 
 import static android.content.Context.ALARM_SERVICE;
-import static com.xzjmyk.pm.activity.util.TimeUtils.f_str_2_long;
 
 /**
  * 提醒管理器
@@ -41,7 +40,7 @@ public class AlarmManage {
         List<SigninBean> beans = SigninDao.getInstance(ct).queryByEmcode();
         int u = CommonUtil.getSharedPreferencesInt(ct, "ALARM_WORK_TIME", 5);//上班提前xx分钟
         int d = CommonUtil.getSharedPreferencesInt(ct, "ALARM_OFFWORK_TIME", 5);//下班延迟xx分钟
-        boolean isToday = true;
+        boolean isToday = false;
         long time = System.currentTimeMillis();
         long minTime = 0;
         long minute = 1000 * 60;
@@ -51,8 +50,11 @@ public class AlarmManage {
             //***************上班开始***************************
             //上班情况下,必然存在 ==》 上班打卡提醒 <= 上班自动签到   所以。。。。
             alarmTime = getTimeByHHmm(e.getWorkTime()) - u * minute;//上班时间减去上班提前时间==上班提醒时间
-            setMinTime(minTime, alarmTime);
+            if (minTime == 0 || minTime > alarmTime) {//保存一天中最小时间,当当日时间都不符合时候使用明天的最小时间
+                minTime = alarmTime;
+            }
             if (isAlarm && alarmTime > time) {//符合上班提醒
+                //判断是否打卡了?
                 setNextAlarm(ct, WORK_ALARM_ACTION, alarmTime);
                 isToday = true;
                 break;
@@ -81,39 +83,20 @@ public class AlarmManage {
             //***************下班结束***************************
         }
         if (minTime != 0 && !isToday) {
-            setNextAlarm(ct, WORK_ALARM_ACTION, minTime);
-        }
-    }
-
-    private void setMinTime(long minTime, long alarmTime) {
-        if (minTime == 0 || minTime > alarmTime) {
-            minTime = alarmTime;
+            setNextAlarm(ct, WORK_ALARM_ACTION, minTime + 3600 * 24 * 1000);
         }
     }
 
-
     private long getTimeByHHmm(String time) {
         String che = TimeUtils.s_long_2_str(System.currentTimeMillis()) + " " + time + ":00";//当天下班时间
         Log.i("gongpengming", "che=" + che);
         return TimeUtils.f_str_2_long(che);
     }
 
-    /**
-     * 该时间符合提醒时间
-     *
-     * @param ct
-     * @param action
-     * @param time   HH:mm
-     */
-    private void allowAlarm(Context ct, String action, String time) {
-        String che = TimeUtils.s_long_2_str(System.currentTimeMillis()) + " " + time + ":00";
-        long l = f_str_2_long(che);
-        CommonUtil.setSharedPreferences(ct, "old_action", action);
-        setNextAlarm(ct, action, l);
-    }
 
     private void setNextAlarm(Context ct, String action, long time) {
         String str = TimeUtils.f_long_2_str(time);
+        if (time < System.currentTimeMillis()) return;
         Toast.makeText(ct, "提醒时间为:" + str, Toast.LENGTH_SHORT).show();
         Intent intent = new Intent(ct, AlarmReceiver.class);
         intent.setAction(StringUtils.isEmpty(action) ? WORK_ALARM_ACTION : action);

+ 48 - 10
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/AlarmReceiver.java

@@ -12,15 +12,20 @@ import android.widget.Toast;
 import com.xzjmyk.pm.activity.BdLocationHelper;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.bean.oa.SigninBean;
+import com.xzjmyk.pm.activity.db.dao.SigninDao;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.SigninActivity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CodeUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.util.BaiduMapUtil;
+import com.xzjmyk.pm.activity.util.TimeUtils;
 
 import java.util.HashMap;
 import java.util.LinkedHashMap;
+import java.util.List;
 import java.util.Map;
 
 
@@ -31,25 +36,59 @@ import java.util.Map;
 public class AlarmReceiver extends BroadcastReceiver {
 
     @Override
-    public void onReceive(Context context, Intent intent) {
+    public void onReceive(final Context context, Intent intent) {
+        new Handler().postAtTime(new Runnable() {//延迟两秒
+            @Override
+            public void run() {
+                AlarmManage manage = new AlarmManage();
+                manage.setSigninAlarm(context);
+            }
+        }, 2000);
         String action = intent.getAction();
-        AlarmManage manage = new AlarmManage();
-        manage.setSigninAlarm(context);
-        if (StringUtils.isEmpty(action)) {
-
+        if (StringUtils.isEmpty(action))
             return;
-        }
         NotificationManage notificationManage = new NotificationManage();
         if (AlarmManage.AUTO_SIGNIN_ACTION.equals(action)) {//自动打卡
             AutoSignin(context);
         } else if (AlarmManage.WORK_ALARM_ACTION.equals(action)) {//上班提醒
-            notificationManage.sendNotification(context, "请按时上班打卡", SigninActivity.class);
+            //TODO 判断是否打卡了
+            if (!isSigninOk(context, true))
+                notificationManage.sendNotification(context, "请按时上班打卡", SigninActivity.class);
         } else if (AlarmManage.OFFWORK_ALARM_ACTION.equals(action)) {//下班提醒
-            notificationManage.sendNotification(context, "请按时下班打卡", SigninActivity.class);
+            //TODO 判断是否打卡了
+            if (!isSigninOk(context, false))
+                notificationManage.sendNotification(context, "请按时下班打卡", SigninActivity.class);
         } else {
             AutoSignin(context);
         }
-//        Toast.makeText(context, "这个是" + action + "的提醒", Toast.LENGTH_SHORT).show();
+    }
+
+
+    /**
+     * 判断是否已经打卡了
+     *
+     * @param ct
+     * @param isU 是否是上班
+     * @return 已经打卡成功
+     */
+    private boolean isSigninOk(Context ct, boolean isU) {
+        List<SigninBean> beans = SigninDao.getInstance(ct).queryByEmcode();
+        if (ListUtils.isEmpty(beans)) return false;
+        String thisTime = TimeUtils.long2str(System.currentTimeMillis(), "HH:mm");
+        for (SigninBean e : beans) {
+            if (thisTime.compareTo(e.getStartTime()) > 0 && thisTime.compareTo(e.getEndTime()) < 0) {//在当前时间段
+                if (isU && !StringUtils.isEmpty(e.getWorkSignin()) && e.getWorkSignin().compareTo(e.getWorkTime()) < 0) {
+                    //上班签到符合
+                    return true;
+                }
+                if (!isU && !StringUtils.isEmpty(e.getOffSignin()) && e.getOffSignin().compareTo(e.getOffTime()) > 0) {
+                    //下班签到符合
+                    return true;
+                }
+                return false;
+            }
+        }
+        return false;
     }
 
     private void AutoSignin(final Context ct) {
@@ -61,7 +100,6 @@ public class AlarmReceiver extends BroadcastReceiver {
         });
     }
 
-
     //签到
     private void doSignin(Context ct, String code) {
         Map<String, Object> param = new HashMap<>();

+ 267 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/groupchat/CreateGroupActivity.java

@@ -0,0 +1,267 @@
+package com.xzjmyk.pm.activity.ui.groupchat;
+
+import android.app.AlertDialog;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AbsListView;
+import android.widget.AdapterView;
+import android.widget.BaseAdapter;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.lidroid.xutils.ViewUtils;
+import com.lidroid.xutils.view.annotation.ViewInject;
+import com.xzjmyk.pm.activity.AppConstant;
+import com.xzjmyk.pm.activity.MyApplication;
+import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.bean.Friend;
+import com.xzjmyk.pm.activity.bean.oa.MeetUserEntity;
+import com.xzjmyk.pm.activity.broadcast.MucgroupUpdateUtil;
+import com.xzjmyk.pm.activity.db.dao.FriendDao;
+import com.xzjmyk.pm.activity.helper.AvatarHelper;
+import com.xzjmyk.pm.activity.sortlist.BaseSortModel;
+import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.erp.util.CreateRoomUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
+import com.xzjmyk.pm.activity.ui.message.MucChatActivity;
+import com.xzjmyk.pm.activity.util.Constants;
+import com.xzjmyk.pm.activity.util.DisplayUtil;
+import com.xzjmyk.pm.activity.util.ToastUtil;
+import com.xzjmyk.pm.activity.view.ClearEditText;
+import com.xzjmyk.pm.activity.view.HorizontalListView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 创建群
+ * create by Bitliker 2016/11/2
+ */
+public class CreateGroupActivity extends BaseActivity {
+    @ViewInject(R.id.ok_btn)
+    private Button ok_btn;
+    @ViewInject(R.id.recycler)
+    private RecyclerView recycler;
+    @ViewInject(R.id.h_listview)
+    private HorizontalListView h_listview;
+
+    private String loginUserId = null;
+    private List<Friend> selectFriend;
+    private List<BaseSortModel<Friend>> beans;
+    private HorListViewAdapter hAdapter;
+    private RecycAdapter adapter;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_create_group);
+        ViewUtils.inject(this);
+        init();
+        initView();
+        initEvent();
+    }
+
+    private void initEvent() {
+        ok_btn.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                showCreateGroupDialog();
+            }
+        });
+        h_listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
+                for (int i = 0; i < beans.size(); i++) {
+                    if (beans.get(i).getBean().getUserId().equals(selectFriend.get(position).getUserId())) {
+                        beans.get(i).setClick(!beans.get(i).isClick);
+                        adapter.notifyItemChanged(i);
+                        break;
+                    }
+                }
+                selectFriend.remove(position);
+                hAdapter.notifyDataSetChanged();
+                ok_btn.setText(getOkText());
+            }
+        });
+    }
+
+
+    private void init() {
+        loginUserId = MyApplication.getInstance().mLoginUser.getUserId();
+        //获取好友
+        List<Friend> friends = FriendDao.getInstance().getFriends(loginUserId);
+        selectFriend = new ArrayList<>();
+        beans = new ArrayList<>();
+        BaseSortModel<Friend> bean = null;
+        for (Friend e : friends) {
+            bean = new BaseSortModel<>();
+            bean.setBean(e);
+            beans.add(bean);
+        }
+    }
+
+    private void initView() {
+        recycler.setLayoutManager(new LinearLayoutManager(ct));
+        adapter = new RecycAdapter();
+        recycler.setAdapter(adapter);
+        hAdapter = new HorListViewAdapter();
+        h_listview.setAdapter(hAdapter);
+        ok_btn.setText(getOkText());
+    }
+
+    /*计算人数*/
+    public String getOkText() {
+        return "确定 ( " + selectFriend.size() + " )";
+    }
+
+    /*弹出创建群窗口*/
+    private void showCreateGroupDialog() {
+        View rootView = LayoutInflater.from(mContext).inflate(R.layout.dialog_create_muc_room, null);
+        final ClearEditText roomNameEdit = (ClearEditText) rootView.findViewById(R.id.room_name_edit);
+        TextView tvName = (TextView) rootView.findViewById(R.id.creater_name);
+        TextView tvNum = (TextView) rootView.findViewById(R.id.tv_num);
+        tvNum.setText(selectFriend.size() + "/1000");
+        tvName.setText(MyApplication.getInstance().mLoginUser.getNickName());
+        final ClearEditText roomDescEdit = (ClearEditText) rootView.findViewById(R.id.room_desc_edit);
+
+        ToastUtil.addEditTextNumChanged(ct, roomNameEdit, 8);// 设置EditText的字数限制
+        ToastUtil.addEditTextNumChanged(ct, roomDescEdit, 20);
+
+        final AlertDialog dialog = new AlertDialog.Builder(this).setTitle(R.string.create_room).setView(rootView).create();
+        rootView.findViewById(R.id.sure_btn).setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(final View v) {
+                final String roomName = roomNameEdit.getText().toString().trim();//防止空,或者输入空格
+                if (TextUtils.isEmpty(roomName)) {
+                    ToastUtil.showToast(mContext, R.string.room_name_empty_error);
+                    return;
+                }
+                String roomDesc = roomDescEdit.getText().toString();
+                if (TextUtils.isEmpty(roomName)) {
+                    ToastUtil.showToast(mContext, R.string.room_des_empty_error);
+                    return;
+                }
+                ArrayList<MeetUserEntity> entities = new ArrayList<>();
+                MeetUserEntity entity = null;
+                final String[] noticeFriendList = new String[selectFriend.size()];
+                for (int i = 0; i < selectFriend.size(); i++) {
+                    entity = new MeetUserEntity();
+                    noticeFriendList[i] = selectFriend.get(i).getUserId();
+                    entity.setImId(selectFriend.get(i).getUserId());
+                    entity.setName(selectFriend.get(i).getNickName());
+                    entity.setEmCode(selectFriend.get(i).getEmCode());
+                    entities.add(entity);
+                }
+                CreateRoomUtil.getInstance().createRoom(ct, entities, roomName, roomDesc, new CreateRoomUtil.OnCreateRoomListener() {
+                    @Override
+                    public void result(boolean isOk, String jid) {
+                        if (isOk) {
+                            ToastUtil.showToast(ct, "已经为您的会议建立群组");
+                            Intent intent = new Intent(ct, MucChatActivity.class);
+                            intent.putExtra(AppConstant.EXTRA_USER_ID, jid);
+                            intent.putExtra(AppConstant.EXTRA_NICK_NAME, roomName);
+                            intent.putExtra(AppConstant.EXTRA_IS_GROUP_CHAT, true);
+                            intent.putExtra(Constants.GROUP_JOIN_NOTICE, noticeFriendList);
+                            startActivity(intent);
+                            sendBroadcast(new Intent(MucgroupUpdateUtil.ACTION_UPDATE));
+                            finish();
+                        }
+                    }
+                });
+                dialog.dismiss();
+            }
+        });
+        dialog.show();
+    }
+
+
+    public class RecycAdapter extends RecyclerView.Adapter<RecycAdapter.ViewHolder> {
+        @Override
+        public RecycAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+            View v = LayoutInflater.from(ct).inflate(R.layout.row_select_contacts, parent, false);
+            return new ViewHolder(v);
+        }
+
+        @Override
+        public void onBindViewHolder(final RecycAdapter.ViewHolder holder, final int position) {
+            final BaseSortModel<Friend> bean = beans.get(position);
+            AvatarHelper.getInstance().displayAvatar(bean.getBean().getUserId(), holder.avatarImg, true);
+            holder.userNameTv.setText(bean.getBean().getNickName());
+            holder.checkBox.setChecked(bean.isClick);
+            holder.checkBox.setFocusable(false);
+            holder.itemView.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View view) {
+                    beans.get(position).setClick(!beans.get(position).isClick);
+                    notifyItemChanged(position);
+                    if (beans.get(position).isClick)
+                        selectFriend.add(beans.get(position).getBean());
+                    else
+                        selectFriend.remove(beans.get(position).getBean());
+                    hAdapter.notifyDataSetChanged();
+                    ok_btn.setText(getOkText());
+                }
+            });
+        }
+
+        class ViewHolder extends RecyclerView.ViewHolder {
+            ImageView avatarImg;
+            TextView userNameTv;
+            CheckBox checkBox;
+
+            public ViewHolder(View itemView) {
+                super(itemView);
+                avatarImg = (ImageView) itemView.findViewById(R.id.avatar_img);
+                userNameTv = (TextView) itemView.findViewById(R.id.user_name_tv);
+                checkBox = (CheckBox) itemView.findViewById(R.id.check_box);
+            }
+        }
+
+        @Override
+        public int getItemCount() {
+            return ListUtils.isEmpty(beans) ? 0 : beans.size();
+        }
+    }
+
+    public class HorListViewAdapter extends BaseAdapter {
+        @Override
+        public int getCount() {
+            return ListUtils.isEmpty(selectFriend) ? 1 : selectFriend.size() + 1;
+        }
+
+        @Override
+        public Object getItem(int position) {
+            return selectFriend.get(position);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return position;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            if (convertView == null) {
+                convertView = new ImageView(mContext);
+                int size = DisplayUtil.dip2px(mContext, 37);
+                AbsListView.LayoutParams param = new AbsListView.LayoutParams(size, size);
+                convertView.setLayoutParams(param);
+            }
+            ImageView imageView = (ImageView) convertView;
+            if (getCount() == 1 || position == selectFriend.size()) {
+                imageView.setImageResource(R.drawable.dot_avatar);
+            } else {
+                AvatarHelper.getInstance().displayAvatar(selectFriend.get(position).getUserId(), imageView, true);
+            }
+            return convertView;
+        }
+    }
+}

+ 32 - 27
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/groupchat/GroupChatFragment.java

@@ -34,12 +34,14 @@ import com.xzjmyk.pm.activity.db.dao.FriendDao;
 import com.xzjmyk.pm.activity.helper.AvatarHelper;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.base.EasyFragment;
+import com.xzjmyk.pm.activity.ui.erp.activity.CommonFragmentActivity;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.ui.message.MucChatActivity;
 import com.xzjmyk.pm.activity.util.ProgressDialogUtil;
 import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.util.ToastUtil;
 import com.xzjmyk.pm.activity.util.ViewHolder;
+import com.xzjmyk.pm.activity.view.crouton.Crouton;
 import com.xzjmyk.pm.activity.volley.ArrayResult;
 import com.xzjmyk.pm.activity.volley.Result;
 import com.xzjmyk.pm.activity.volley.StringJsonArrayRequest;
@@ -67,7 +69,7 @@ public class GroupChatFragment extends EasyFragment {
             }
         }
     };
-    private AppConfig mConfig;
+    private int imStatus;
 
     public GroupChatFragment() {
         mMucRooms = new ArrayList<MucRoom>();
@@ -98,8 +100,8 @@ public class GroupChatFragment extends EasyFragment {
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         if (item.getItemId() == R.id.add_item) {
-            startActivity(new Intent(getActivity(),
-                    SelectContactsActivity.class));
+//            startActivity(new Intent(getActivity(), SelectContactsActivity.class));
+            startActivity(new Intent(getActivity(), CreateGroupActivity.class));
         }
         return super.onOptionsItemSelected(item);
     }
@@ -112,13 +114,13 @@ public class GroupChatFragment extends EasyFragment {
     @Override
     protected void onCreateView(Bundle savedInstanceState, boolean createView) {
         if (createView) {
+            imStatus = ((CommonFragmentActivity) getActivity()).getImStatus();
             initView();
             init();
         }
     }
 
     private void init() {
-        mConfig = MyApplication.getInstance().getConfig();
         for (int i = 0; i < mMucRooms.size(); i++) {
             mMucRooms.get(i).getJid();
         }
@@ -128,32 +130,27 @@ public class GroupChatFragment extends EasyFragment {
     boolean b = false;
 
 
-
     @SuppressLint("InflateParams")
     private void initView() {
         mPullToRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);
-
-
         View emptyView = LayoutInflater.from(getActivity()).inflate(
                 R.layout.layout_list_empty_view, null);
         mPullToRefreshListView.setEmptyView(emptyView);
 
         mPullToRefreshListView.getRefreshableView().setAdapter(mAdapter);
 
-        mPullToRefreshListView
-                .setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
-                    @Override
-                    public void onPullDownToRefresh(
-                            PullToRefreshBase<ListView> refreshView) {
-                        requestData(true);
-                    }
+        mPullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
+            @Override
+            public void onPullDownToRefresh(
+                    PullToRefreshBase<ListView> refreshView) {
+                requestData(true);
+            }
 
-                    @Override
-                    public void onPullUpToRefresh(
-                            PullToRefreshBase<ListView> refreshView) {
-                        requestData(false);
-                    }
-                });
+            @Override
+            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
+                requestData(false);
+            }
+        });
 
         /**@注释:点击进入房间的逻辑 */
         mPullToRefreshListView.getRefreshableView().setOnItemClickListener(
@@ -241,6 +238,10 @@ public class GroupChatFragment extends EasyFragment {
             mPullToRefreshListView.post(new Runnable() {
                 @Override
                 public void run() {
+                    if (imStatus != 3) {
+                        Crouton.makeText(ct, R.string.service_start_failed);
+                        return;
+                    }
                     mPullToRefreshListView.setPullDownRefreshing(200);
                 }
             });
@@ -254,6 +255,10 @@ public class GroupChatFragment extends EasyFragment {
     }
 
     private void requestData(final boolean isPullDwonToRefersh) {
+        if (imStatus != 3) {
+            Crouton.makeText(ct,  R.string.service_start_failed,2000);
+            return;
+        }
         if (isPullDwonToRefersh) {
             mPageIndex = 0;
         }
@@ -261,9 +266,11 @@ public class GroupChatFragment extends EasyFragment {
         params.put("pageIndex", String.valueOf(mPageIndex));
         params.put("pageSize", String.valueOf(AppConfig.PAGE_SIZE));
         params.put("access_token", MyApplication.getInstance().mAccessToken);
-        Log.i("Arison", "mAccessToken:" + MyApplication.getInstance().mAccessToken);
-        Log.i("Arison","PAGE_SIZE:"+String.valueOf(AppConfig.PAGE_SIZE));
-        Log.i("Arison","mPageIndex:"+String.valueOf(mPageIndex));
+        if (AppConfig.DEBUG) {
+            Log.i("Arison", "mAccessToken:" + MyApplication.getInstance().mAccessToken);
+            Log.i("Arison", "PAGE_SIZE:" + String.valueOf(AppConfig.PAGE_SIZE));
+            Log.i("Arison", "mPageIndex:" + String.valueOf(mPageIndex));
+        }
         StringJsonArrayRequest<MucRoom> request = new StringJsonArrayRequest<MucRoom>(
                 mActivity.mConfig.ROOM_LIST_HIS, new ErrorListener() {
             @Override
@@ -296,7 +303,6 @@ public class GroupChatFragment extends EasyFragment {
                 if (!b) {
                     b = true;
 //                    uploadAvatar();
-
                 }
 
                 mPullToRefreshListView.onRefreshComplete();
@@ -336,12 +342,11 @@ public class GroupChatFragment extends EasyFragment {
             TextView time_tv = ViewHolder.get(convertView, R.id.time_tv);
 
             final MucRoom room = mMucRooms.get(position);
-            if (!StringUtils.isEmpty(room.getSubject()))
-            {
+            if (!StringUtils.isEmpty(room.getSubject())) {
                 //合成图像下载
                 AvatarHelper.getInstance().displayAvatarPng(room.getSubject(),
                         avatar_img, false);
-            }else{
+            } else {
                 AvatarHelper.getInstance().displayAvatar(room.getUserId(),
                         avatar_img, false);
             }

+ 98 - 68
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/groupchat/SelectContactsActivity.java

@@ -11,6 +11,7 @@ import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Message;
+import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -22,7 +23,6 @@ import android.widget.BaseAdapter;
 import android.widget.Button;
 import android.widget.CheckBox;
 import android.widget.ImageView;
-import android.widget.ListView;
 import android.widget.TextView;
 
 import com.alibaba.fastjson.JSON;
@@ -60,7 +60,6 @@ import com.xzjmyk.pm.activity.util.ImageUtil;
 import com.xzjmyk.pm.activity.util.ProgressDialogUtil;
 import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.util.ToastUtil;
-import com.xzjmyk.pm.activity.util.ViewHolder;
 import com.xzjmyk.pm.activity.view.ClearEditText;
 import com.xzjmyk.pm.activity.view.HorizontalListView;
 import com.xzjmyk.pm.activity.volley.ObjectResult;
@@ -94,12 +93,12 @@ public class SelectContactsActivity extends BaseActivity {
 
     private final int LAST_ICON = -1;
 
-    private ListView mListView;
+    private RecyclerView mListView;
     private HorizontalListView mHorizontalListView;
     private Button mOkBtn;
 
     private List<Friend> mFriendList;
-    private ListViewAdapter mAdapter;
+    private RecycAdapter mAdapter;
     private List<Integer> mSelectPositions;
     private HorListViewAdapter mHorAdapter;
     public ProgressDialog mProgressDialog;
@@ -113,8 +112,8 @@ public class SelectContactsActivity extends BaseActivity {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_select_contacts);
         mFriendList = new ArrayList<Friend>();
-        mAdapter = new ListViewAdapter();
-        mSelectPositions = new ArrayList<Integer>();
+        mAdapter = new RecycAdapter();
+        mSelectPositions = new ArrayList<>();
         mSelectPositions.add(LAST_ICON);// 增加一个虚线框的位置
         mHorAdapter = new HorListViewAdapter();
         mLoginUserId = MyApplication.getInstance().mLoginUser.getUserId();
@@ -145,23 +144,23 @@ public class SelectContactsActivity extends BaseActivity {
 
     private void initView() {
         getSupportActionBar().setTitle(R.string.select_contacts);
-        mListView = (ListView) findViewById(R.id.list_view);
+        mListView = (RecyclerView) findViewById(R.id.list_view);
         mHorizontalListView = (HorizontalListView) findViewById(R.id.horizontal_list_view);
         mOkBtn = (Button) findViewById(R.id.ok_btn);
         mListView.setAdapter(mAdapter);
         mHorizontalListView.setAdapter(mHorAdapter);
-        mOkBtn.setText(getString(R.string.add_chat_ok_btn, mSelectPositions.size() - 1));
-
-        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-            @Override
-            public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
-                if (hasSelected(position)) {
-                    removeSelect(position);
-                } else {
-                    addSelect(position);
-                }
-            }
-        });
+        //TODO     mOkBtn.setText(getString(R.string.add_chat_ok_btn, mSelectPositions.size() - 1));
+        //TODO
+//        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+//            @Override
+//            public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
+//                if (hasSelected(position)) {
+//                    removeSelect(position);
+//                } else {
+//                    addSelect(position);
+//                }
+//            }
+//        });
 
         mHorizontalListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
             @Override
@@ -170,9 +169,9 @@ public class SelectContactsActivity extends BaseActivity {
                     return;
                 }
                 mSelectPositions.remove(position);
-                mAdapter.notifyDataSetInvalidated();
+                mAdapter.notifyDataSetChanged();
                 mHorAdapter.notifyDataSetInvalidated();
-                mOkBtn.setText(getString(R.string.add_chat_ok_btn, mSelectPositions.size() - 1));
+//TODO                mOkBtn.setText(getString(R.string.add_chat_ok_btn, mSelectPositions.size() - 1));
             }
         });
 
@@ -212,9 +211,9 @@ public class SelectContactsActivity extends BaseActivity {
     private void addSelect(int position) {
         if (!hasSelected(position)) {
             mSelectPositions.add(0, position);
-            mAdapter.notifyDataSetInvalidated();
+            mAdapter.notifyDataSetChanged();
             mHorAdapter.notifyDataSetInvalidated();
-            mOkBtn.setText(getString(R.string.add_chat_ok_btn, mSelectPositions.size() - 1));
+            //TODO         mOkBtn.setText(getString(R.string.add_chat_ok_btn, mSelectPositions.size() - 1));
         }
     }
 
@@ -231,47 +230,86 @@ public class SelectContactsActivity extends BaseActivity {
 
     private void removeSelect(int position) {
         mSelectPositions.remove(Integer.valueOf(position));
-        mAdapter.notifyDataSetInvalidated();
+        mAdapter.notifyDataSetChanged();
         mHorAdapter.notifyDataSetInvalidated();
-        mOkBtn.setText(getString(R.string.add_chat_ok_btn, mSelectPositions.size() - 1));
+        //TODO    mOkBtn.setText(getString(R.string.add_chat_ok_btn, mSelectPositions.size() - 1));
     }
 
 
-    private class ListViewAdapter extends BaseAdapter {
+    private class RecycAdapter extends RecyclerView.Adapter<RecycAdapter.ViewHolder> {
         @Override
-        public int getCount() {
-            return mFriendList.size();
+        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+            View v = LayoutInflater.from(mContext).inflate(R.layout.row_select_contacts, parent, false);
+            return new ViewHolder(v);
         }
 
         @Override
-        public Object getItem(int position) {
-            return mFriendList.get(position);
+        public void onBindViewHolder(ViewHolder holder, int position) {
+            AvatarHelper.getInstance().displayAvatar(mFriendList.get(position).getUserId(), holder.avatarImg, true);
+            holder.userNameTv.setText(mFriendList.get(position).getNickName());
+            if (mSelectPositions.contains(Integer.valueOf(position))) {
+                holder.checkBox.setChecked(true);
+            } else {
+                holder.checkBox.setChecked(false);
+
+            }
         }
 
         @Override
-        public long getItemId(int position) {
-            return position;
+        public int getItemCount() {
+            return mFriendList.size();
         }
 
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-            if (convertView == null) {
-                convertView = LayoutInflater.from(mContext).inflate(R.layout.row_select_contacts, parent, false);
-            }
-            ImageView avatarImg = ViewHolder.get(convertView, R.id.avatar_img);
-            TextView userNameTv = ViewHolder.get(convertView, R.id.user_name_tv);
-            CheckBox checkBox = ViewHolder.get(convertView, R.id.check_box);
-            AvatarHelper.getInstance().displayAvatar(mFriendList.get(position).getUserId(), avatarImg, true);
-            userNameTv.setText(mFriendList.get(position).getNickName());
-            checkBox.setChecked(false);
-            if (mSelectPositions.contains(Integer.valueOf(position))) {
-                checkBox.setChecked(true);
+        class ViewHolder extends RecyclerView.ViewHolder {
+            ImageView avatarImg;
+            TextView userNameTv;
+            CheckBox checkBox;
+
+            public ViewHolder(View itemView) {
+                super(itemView);
+                avatarImg = (ImageView) itemView.findViewById(R.id.avatar_img);
+                userNameTv = (TextView) itemView.findViewById(R.id.user_name_tv);
+                checkBox = (CheckBox) itemView.findViewById(R.id.check_box);
             }
-            return convertView;
         }
-
     }
 
+
+//    private class ListViewAdapter extends BaseAdapter {
+//        @Override
+//        public int getCount() {
+//            return mFriendList.size();
+//        }
+//
+//        @Override
+//        public Object getItem(int position) {
+//            return mFriendList.get(position);
+//        }
+//
+//        @Override
+//        public long getItemId(int position) {
+//            return position;
+//        }
+//
+//        @Override
+//        public View getView(int position, View convertView, ViewGroup parent) {
+//            if (convertView == null) {
+//                convertView = LayoutInflater.from(mContext).inflate(R.layout.row_select_contacts, parent, false);
+//            }
+//            ImageView avatarImg = ViewHolder.get(convertView, R.id.avatar_img);
+//            TextView userNameTv = ViewHolder.get(convertView, R.id.user_name_tv);
+//            CheckBox checkBox = ViewHolder.get(convertView, R.id.check_box);
+//            AvatarHelper.getInstance().displayAvatar(mFriendList.get(position).getUserId(), avatarImg, true);
+//            userNameTv.setText(mFriendList.get(position).getNickName());
+//            checkBox.setChecked(false);
+//            if (mSelectPositions.contains(Integer.valueOf(position))) {
+//                checkBox.setChecked(true);
+//            }
+//            return convertView;
+//        }
+//
+//    }
+
     private class HorListViewAdapter extends BaseAdapter {
         @Override
         public int getCount() {
@@ -317,7 +355,6 @@ public class SelectContactsActivity extends BaseActivity {
      * @return:
      */
     private void showCreateGroupChatDialog() {
-
         if (mXmppService == null || !mXmppService.isMucEnable()) {
             ToastUtil.showToast(mContext, R.string.service_start_failed);
             return;
@@ -406,20 +443,19 @@ public class SelectContactsActivity extends BaseActivity {
             inviteUsers.add(userId);
         }
         //开启线程处理合成群头像操作
-        final Thread uploadImageTask =
-                new Thread(new Runnable() {
-                    @Override
-                    public void run() {
-                        uploadIsEnd = false;//开始上传任务
-                        photoId = NumberUtils.generateNumber2();//八位不重复随机数
-                        inviteUsers.add(0, MyApplication.getInstance().mLoginUser.getUserId());
-                        image = createChatImage(inviteUsers);
-                        Message msg = mhandler.obtainMessage();
-                        msg.getData().putString("roomjId", roomJid);
-                        msg.what = uploadFile;
-                        mhandler.sendMessage(msg);
-                    }
-                });
+        final Thread uploadImageTask = new Thread(new Runnable() {
+            @Override
+            public void run() {
+                uploadIsEnd = false;//开始上传任务
+                photoId = NumberUtils.generateNumber2();//八位不重复随机数
+                inviteUsers.add(0, MyApplication.getInstance().mLoginUser.getUserId());
+                image = createChatImage(inviteUsers);
+                Message msg = mhandler.obtainMessage();
+                msg.getData().putString("roomjId", roomJid);
+                msg.what = uploadFile;
+                mhandler.sendMessage(msg);
+            }
+        });
         uploadImageTask.start();
         params.put("text", JSON.toJSONString(inviteUsers));
 
@@ -624,22 +660,17 @@ public class SelectContactsActivity extends BaseActivity {
      * @return:
      */
     public void updateIMChatImageId(String roomjId, String photoId) {
-//        this.uploadIsEnd=true;
         String url = MyApplication.getInstance().getConfig().apiUrl + "room/setRelationGroupPhoto";
         final String requestTag = "loginManagerSystem";
         Map<String, String> params = new HashMap<String, String>();
         params.put("access_token", MyApplication.getInstance().mAccessToken);
         params.put("roomId", roomjId);
         params.put("photoid", photoId);
-//		final ProgressDialog dialog = ProgressDialogUtil.init(mContext, null, getString(R.string.please_wait), true);
-//		ProgressDialogUtil.show(dialog);
         StringJsonObjectRequest<String> mRequest = new StringJsonObjectRequest<String>(
                 Request.Method.GET, url,
                 new Response.ErrorListener() {
                     @Override
                     public void onErrorResponse(VolleyError volleyError) {
-//						ProgressDialogUtil.dismiss(dialog);
-//						ToastUtil.showErrorNet(mContext);
                     }
                 },
                 new StringJsonObjectRequest.Listener<String>() {
@@ -674,7 +705,6 @@ public class SelectContactsActivity extends BaseActivity {
         List<MyBitmapEntity> mList = new LinkedList<MyBitmapEntity>();
         String value = PropertiesUtil.readData(this, String.valueOf(count),
                 R.raw.data);
-//        LogUtil.d("value=>" + value);
         String[] arr1 = value.split(";");
         int length = arr1.length;
         for (int i = 0; i < length; i++) {

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java

@@ -97,7 +97,7 @@ public class MeFragment extends EasyFragment implements View.OnClickListener {
     private Context ct;
     public MasterDialog mDialog;
 
-    private Handler mhandler = new Handler() {
+    private Handler mhandler =  new Handler() {
         @Override
         public void handleMessage(Message msg) {
             switch (msg.what) {

+ 7 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/StringUtils.java

@@ -3,7 +3,6 @@ package com.xzjmyk.pm.activity.util;
 import android.content.Context;
 import android.text.Html;
 import android.text.TextUtils;
-import android.util.Log;
 
 import java.util.Map;
 import java.util.regex.Matcher;
@@ -49,6 +48,7 @@ public class StringUtils {
         return mat.matches();
     }
 
+
     public static boolean isSearchNickName(String nickName) {
         if (nickName == null) {// 防止异常
             return false;
@@ -57,6 +57,11 @@ public class StringUtils {
         return mat.matches();
     }
 
+    public static String getChinese(String chche) {
+        String reg = "[^\u4e00-\u9fa5]";
+        return chche.replaceAll(reg, "");
+    }
+
     public static boolean isCompanyName(String name) {
         if (TextUtils.isEmpty(name)) {
             return false;
@@ -138,7 +143,7 @@ public class StringUtils {
             }
         }
         builder.deleteCharAt(builder.length() - 1);
-        builder.deleteCharAt(builder.length()-1);
+        builder.deleteCharAt(builder.length() - 1);
         builder.append("\n}");
         return builder.toString();
     }

+ 3 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/crouton/Crouton.java

@@ -181,6 +181,9 @@ public final class Crouton {
     public static void makeText(Context ct, int id) {
         makeText((Activity) ct, id, ct.getResources().getColor(R.color.light_green), 1000).show();
     }
+    public static void makeText(Context ct, int id,int time) {
+        makeText((Activity) ct, id, ct.getResources().getColor(R.color.light_green), time).show();
+    }
 
     public static void makeText(Context ct, String message) {
         makeText((Activity) ct, message, ct.getResources().getColor(R.color.light_green), 1000).show();

+ 4 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/volley/Result.java

@@ -2,7 +2,6 @@ package com.xzjmyk.pm.activity.volley;
 
 import android.content.Context;
 import android.text.TextUtils;
-import android.util.Log;
 import android.widget.Toast;
 
 import com.alibaba.fastjson.JSON;
@@ -18,6 +17,7 @@ import com.xzjmyk.pm.activity.helper.LoginHelper;
 import com.xzjmyk.pm.activity.sp.UserSp;
 import com.xzjmyk.pm.activity.util.DeviceInfoUtil;
 import com.xzjmyk.pm.activity.util.Md5Util;
+import com.xzjmyk.pm.activity.view.crouton.Crouton;
 
 import java.util.HashMap;
 
@@ -72,9 +72,11 @@ public class Result {
             if (showToast)
                 showResultToast(context, result);
             return false;
+        } else if (result.resultCode == CODE_INTERNAL_ERROR) {//接口内部异常
+            Crouton.makeText(context, R.string.service_start_failed, 2000);
+            return false;
         } else {
             if (showToast) {
-                //TODO 返回错误
                 showResultToast(context, result);
             }
             return false;

+ 53 - 0
WeiChat/src/main/res/layout/activity_create_group.xml

@@ -0,0 +1,53 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@drawable/bg_main">
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/recycler"
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent"
+        android:layout_above="@+id/added_layout"
+        android:cacheColorHint="#00000000"
+        android:gravity="fill"
+        android:scrollbars="none" />
+
+    <RelativeLayout
+        android:id="@+id/added_layout"
+        android:layout_width="fill_parent"
+        android:layout_height="55dp"
+        android:layout_alignParentBottom="true"
+        android:background="@color/item_color1"
+        android:paddingBottom="7dp"
+        android:paddingLeft="7dp"
+        android:paddingRight="1dp"
+        android:paddingTop="7dp">
+
+        <Button
+            android:id="@+id/ok_btn"
+            android:layout_width="100dp"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:layout_centerVertical="true"
+            android:background="@drawable/bg_btn"
+            android:focusable="true"
+            android:gravity="center"
+            android:minHeight="40dp"
+            android:minWidth="75.0dip"
+            android:padding="5dp"
+            android:textColor="@color/white"
+            android:textSize="@dimen/text_hine" />
+
+        <com.xzjmyk.pm.activity.view.HorizontalListView
+            xmlns:widget="http://schemas.android.com/apk/res-auto"
+            android:id="@+id/h_listview"
+            android:layout_width="fill_parent"
+            android:layout_height="37dp"
+            android:layout_centerVertical="true"
+            android:layout_toLeftOf="@id/ok_btn"
+            android:divider="@color/transparent"
+            widget:dividerWidth="5dp" />
+    </RelativeLayout>
+
+</RelativeLayout>

+ 1 - 1
WeiChat/src/main/res/layout/fragment_works.xml

@@ -118,7 +118,7 @@
                 android:drawableLeft="@drawable/my_shangwu"
                 android:drawablePadding="10dp"
                 android:gravity="center"
-                android:text="B2B商务"
+                android:text="商务管理"
                 android:textColor="@color/text_main"
                 android:textSize="14sp" />
 

+ 2 - 0
WeiChat/src/main/res/layout/row_select_contacts.xml

@@ -41,6 +41,8 @@
         android:layout_height="wrap_content"
         android:layout_alignParentRight="true"
         android:layout_centerVertical="true"
+        android:button="@null"
+        android:drawableLeft="@drawable/oa_rb_button_bg"
         android:clickable="false"
         android:focusable="false" />
 

+ 1 - 1
WeiChat/src/main/res/values/dimens.xml

@@ -1,6 +1,6 @@
 <resources>
     <!--OA\-->
-        <!--end OA-->
+    <!--end OA-->
     <!--view show-->
     <dimen name="default_corner_radius">4dp</dimen>
     <dimen name="default_shadow_radius">4dp</dimen>

+ 2 - 1
WeiChat/src/main/res/values/gpm_values.xml

@@ -6,7 +6,8 @@
     <string name="signin_error">签到失败</string>
     <string name="not_signin_agin">请不要频繁打卡</string>
     <string name="other_phone_error">请在常用手机签到!若手机更换请先填写手机变更单再来签到</string>
-    <string name="not_addr_message">您当前账号没有设置打卡地址信息,请联系管理员</string>
+    <string name="not_addr_message">系统尚未找到您的打卡地址信息,请联系管理员</string>
+    <string name="not_work_message">系统尚未找到您的班次,请联系管理员设置班次</string>
     <string name="too_long">您当前位置距离考勤地点太远,请移往目标或重新定位</string>
     <string name="not_today">当前所在日期无法签到</string>
     <string name="not_workdata">系统尚未找到您的班次,请联系管理员设置班次</string>