ContactPresenceActivity.java
上传用户:szyujian
上传日期:2016-09-20
资源大小:320k
文件大小:5k
源码类别:

android开发

开发平台:

C/C++

  1. /*
  2.  * Copyright (C) 2007-2008 Esmertec AG.
  3.  * Copyright (C) 2007-2008 The Android Open Source Project
  4.  *
  5.  * Licensed under the Apache License, Version 2.0 (the "License");
  6.  * you may not use this file except in compliance with the License.
  7.  * You may obtain a copy of the License at
  8.  *
  9.  *      http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */
  17. package com.android.im.app;
  18. import android.app.Activity;
  19. import android.content.ContentResolver;
  20. import android.content.Intent;
  21. import android.content.res.Resources;
  22. import android.database.Cursor;
  23. import android.graphics.drawable.Drawable;
  24. import android.net.Uri;
  25. import android.os.Bundle;
  26. import android.provider.Im;
  27. import android.text.SpannableString;
  28. import android.text.TextUtils;
  29. import android.text.style.ImageSpan;
  30. import android.util.Log;
  31. import android.view.View;
  32. import android.widget.ImageView;
  33. import android.widget.TextView;
  34. import com.android.im.R;
  35. import com.android.im.plugin.BrandingResourceIDs;
  36. public class ContactPresenceActivity extends Activity {
  37.     @Override
  38.     public void onCreate(Bundle icicle) {
  39.         super.onCreate(icicle);
  40.         setTheme(android.R.style.Theme_Dialog);
  41.         setContentView(R.layout.contact_presence_activity);
  42.         ImageView imgAvatar = (ImageView) findViewById(R.id.imgAvatar);
  43.         TextView labelName = (TextView) findViewById(R.id.labelName);
  44.         TextView txtName = (TextView) findViewById(R.id.txtName);
  45.         TextView txtStatus = (TextView) findViewById(R.id.txtStatus);
  46.         TextView txtClientType = (TextView) findViewById(R.id.txtClientType);
  47.         TextView txtCustomStatus = (TextView) findViewById(R.id.txtStatusText);
  48.         Intent i = getIntent();
  49.         Uri uri = i.getData();
  50.         if(uri == null) {
  51.             warning("No data to show");
  52.             finish();
  53.             return;
  54.         }
  55.         ContentResolver cr = getContentResolver();
  56.         Cursor c = cr.query(uri, null, null, null, null);
  57.         if(c == null) {
  58.             warning("Database error when query " + uri);
  59.             finish();
  60.             return;
  61.         }
  62.         if(c.moveToFirst()) {
  63.             long providerId = c.getLong(c.getColumnIndexOrThrow(Im.Contacts.PROVIDER));
  64.             String username = c.getString(c.getColumnIndexOrThrow(Im.Contacts.USERNAME));
  65.             String nickname   = c.getString(c.getColumnIndexOrThrow(Im.Contacts.NICKNAME));
  66.             int status    = c.getInt(c.getColumnIndexOrThrow(Im.Contacts.PRESENCE_STATUS));
  67.             int clientType = c.getInt(c.getColumnIndexOrThrow(Im.Contacts.CLIENT_TYPE));
  68.             String customStatus = c.getString(c.getColumnIndexOrThrow(Im.Contacts.PRESENCE_CUSTOM_STATUS));
  69.             ImApp app = ImApp.getApplication(this);
  70.             BrandingResources brandingRes = app.getBrandingResource(providerId);
  71.             setTitle(brandingRes.getString(BrandingResourceIDs.STRING_CONTACT_INFO_TITLE));
  72.             Drawable avatar = DatabaseUtils.getAvatarFromCursor(c,
  73.                     c.getColumnIndexOrThrow(Im.Contacts.AVATAR_DATA));
  74.             if (avatar != null) {
  75.                 imgAvatar.setImageDrawable(avatar);
  76.             } else {
  77.                 imgAvatar.setImageResource(R.drawable.avatar_unknown);
  78.             }
  79.             labelName.setText(brandingRes.getString(
  80.                     BrandingResourceIDs.STRING_LABEL_USERNAME));
  81.             txtName.setText(ImpsAddressUtils.getDisplayableAddress(username));
  82.             String statusString = brandingRes.getString(
  83.                     PresenceUtils.getStatusStringRes(status));
  84.             SpannableString s = new SpannableString("+ " + statusString);
  85.             ImageSpan imageSpan = new ImageSpan(
  86.                     brandingRes.getDrawable(PresenceUtils.getStatusIconId(status)));
  87.             s.setSpan(imageSpan, 0, 1, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
  88.             txtStatus.setText(s);
  89.             txtClientType.setText(getClientTypeString(clientType));
  90.             if (!TextUtils.isEmpty(customStatus)) {
  91.                 txtCustomStatus.setVisibility(View.VISIBLE);
  92.                 txtCustomStatus.setText(""" + customStatus + """);
  93.             } else {
  94.                 txtCustomStatus.setVisibility(View.GONE);
  95.             }
  96.         }
  97.         c.close();
  98.     }
  99.     private String getClientTypeString(int clientType) {
  100.         Resources res = getResources();
  101.         switch (clientType) {
  102.             case Im.Contacts.CLIENT_TYPE_MOBILE:
  103.                 return res.getString(R.string.client_type_mobile);
  104.             default:
  105.                 return res.getString(R.string.client_type_computer);
  106.         }
  107.     }
  108.     private static void warning(String msg) {
  109.         Log.w(ImApp.LOG_TAG, "<ContactPresenceActivity> " + msg);
  110.     }
  111. }