Pages

Tuesday, 27 December 2016

Avatar Grabber Palringo, Nimbuzz & Facebook using Picasso Library for Android



################ Avatar Grabber FB Nimbuzz Palringo ################

- Download Profile Images into ImageView 
- Picasso Image Library for Loading Images 
- Pass the Target URL to default Download Manager
- Save/Write Images to External Device Storage (specified path)


Download APK


Download source from Github
Following are the classes used for downloading Avatars via Default Android's Download Manager:

package com.blogspot.dbh4ck.avatargrabberdb.Fragments;
import android.app.DownloadManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import com.blogspot.dbh4ck.avatargrabberdb.R;
import com.squareup.picasso.Picasso;
import java.io.File;
public class FacebookFragment extends Fragment implements View.OnClickListener{
public EditText getTarFb;
private Button btn_ok_fb, btnSave_Fb;
public ImageView imgFb;
private Bitmap bmpFb;
public FacebookFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_facebook, container, false);
getTarFb = (EditText) v.findViewById(R.id.txtUserFb);
btn_ok_fb = (Button) v.findViewById(R.id.btnokFb);
btnSave_Fb = (Button) v.findViewById(R.id.btnsaveFb);
imgFb = (ImageView) v.findViewById(R.id.imgviewFb);
btn_ok_fb.setOnClickListener(this);
btnSave_Fb.setOnClickListener(new View.OnClickListener() {
boolean success = false;
@Override
public void onClick(View view) {
File direct = new File(Environment.getExternalStorageDirectory() + "/Facebook_Avatars");
if (!direct.exists()) {
direct.mkdirs();
}
DownloadManager mgr = (DownloadManager) getActivity().getSystemService(Context.DOWNLOAD_SERVICE);
Uri downloadUri = Uri.parse("http://graph.facebook.com/"+getTarFb.getText().toString()+"/picture");
DownloadManager.Request request = new DownloadManager.Request(downloadUri);
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(false)
.setTitle("AvatarGrabberByDB")
.setDescription("coded by db~@nc")
.setDestinationInExternalPublicDir("/Facebook_Avatars", getTarFb.getText().toString()+".jpg");
mgr.enqueue(request);
success = true;
if(success){
Toast.makeText(getActivity(),"Imaged Saved!", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(getActivity(),"Error!", Toast.LENGTH_SHORT).show();
}
}
});
return v;
}
@Override
public void onClick(View view) {
Picasso.with(getContext())
.load("http://graph.facebook.com/"+getTarFb.getText().toString()+"/picture")
.resize(350,350)
.into(imgFb);
}
}


package com.blogspot.dbh4ck.avatargrabberdb.Fragments;
import android.app.DownloadManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import com.blogspot.dbh4ck.avatargrabberdb.R;
import com.squareup.picasso.Picasso;
import java.io.File;
public class NimbuzzFragment extends Fragment implements View.OnClickListener{
public EditText getTarNimb;
private Button btn_ok_nimb, btnSave_Nimb;
public ImageView imgNimb;
private Bitmap bmpNimb;
public NimbuzzFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_nimbuzz, container, false);
getTarNimb = (EditText) v.findViewById(R.id.txtUserNimb);
btn_ok_nimb = (Button) v.findViewById(R.id.btnokNimb);
btnSave_Nimb = (Button) v.findViewById(R.id.btnsaveNimb);
imgNimb = (ImageView) v.findViewById(R.id.imgviewNimb);
btn_ok_nimb.setOnClickListener(this);
btnSave_Nimb.setOnClickListener(new View.OnClickListener() {
boolean success = false;
@Override
public void onClick(View view) {
File direct = new File(Environment.getExternalStorageDirectory() + "/Nimbuzz_Avatars");
if (!direct.exists()) {
direct.mkdirs();
}
DownloadManager mgr = (DownloadManager) getActivity().getSystemService(Context.DOWNLOAD_SERVICE);
Uri downloadUri = Uri.parse("http://avatar.nimbuzz.com/getAvatar?jid="+getTarNimb.getText().toString()+"%40nimbuzz.com");
DownloadManager.Request request = new DownloadManager.Request(downloadUri);
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(false)
.setTitle("AvatarGrabberByDB")
.setDescription("coded by db~@nc")
.setDestinationInExternalPublicDir("/Nimbuzz_Avatars", getTarNimb.getText().toString()+".jpg");
mgr.enqueue(request);
success = true;
if(success){
Toast.makeText(getActivity(),"Imaged Saved!", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(getActivity(),"Error!", Toast.LENGTH_SHORT).show();
}
}
});
return v;
}
@Override
public void onClick(View view) {
switch(view.getId()){
case R.id.btnokNimb:
Picasso.with(getContext())
.load("http://avatar.nimbuzz.com/getAvatar?jid="+getTarNimb.getText().toString()+"%40nimbuzz.com")
.into(imgNimb);
}
}
}


package com.blogspot.dbh4ck.avatargrabberdb.Fragments;
import android.app.DownloadManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import com.blogspot.dbh4ck.avatargrabberdb.R;
import com.squareup.picasso.Picasso;
import java.io.File;
public class PalringoFragment extends Fragment implements View.OnClickListener{
public EditText getTarPal;
private Button btn_ok_pal, btnSave_Pal;
public ImageView imgPal;
private Bitmap bmpPal;
public PalringoFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v= inflater.inflate(R.layout.fragment_palringo, container, false);
getTarPal = (EditText) v.findViewById(R.id.txtUserPal);
btn_ok_pal = (Button) v.findViewById(R.id.btnokPal);
btnSave_Pal = (Button) v.findViewById(R.id.btnsavePal);
imgPal = (ImageView) v.findViewById(R.id.imgviewPal);
btn_ok_pal.setOnClickListener(this);
btnSave_Pal.setOnClickListener(new View.OnClickListener() {
boolean success = false;
@Override
public void onClick(View view) {
File direct = new File(Environment.getExternalStorageDirectory() + "/Palringo_Avatars");
if (!direct.exists()) {
direct.mkdirs();
}
DownloadManager mgr = (DownloadManager) getActivity().getSystemService(Context.DOWNLOAD_SERVICE);
Uri downloadUri = Uri.parse("http://www.palringo.com/showavatar.php?id="+getTarPal.getText().toString()+"&type=g");
DownloadManager.Request request = new DownloadManager.Request(downloadUri);
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(false)
.setTitle("AvatarGrabberByDB")
.setDescription("coded by db~@nc")
.setDestinationInExternalPublicDir("/Palringo_Avatars", getTarPal.getText().toString()+".jpg");
mgr.enqueue(request);
success = true;
if(success){
Toast.makeText(getActivity(),"Imaged Saved!", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(getActivity(),"Error!", Toast.LENGTH_SHORT).show();
}
}
});
return v;
}
@Override
public void onClick(View v) {
Picasso.with(getContext())
.load("http://www.palringo.com/showavatar.php?id="+getTarPal.getText().toString())
.into(imgPal);
}
}


MainActivity Layout:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main_layout"
android:orientation="vertical"
tools:context=".MainActivity"
android:fitsSystemWindows="true">
<!-- toolbar -->
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
<!-- tablayout to display tabs -->
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
app:tabGravity="fill"
app:tabMode="fixed"
app:tabIndicatorColor="@color/white"
app:tabSelectedTextColor="@color/white"
app:tabTextColor="@color/white"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimaryDark"
android:minHeight="?attr/actionBarSize"
android:theme="@style/AppTheme.NoActionBar" />
<!-- View pager to swipe views -->
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="fill_parent"/>
</LinearLayout>


Identical Layouts for each Fragment:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:transcriptMode="normal"
android:fillViewport="true"
xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fragmentfacebook"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_alignParentTop="true">
<Space android:layout_width="match_parent"
android:layout_height="2dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtview3"
android:text="Facebook Avatar Grabber"
android:typeface="serif"
android:textAlignment="center"
android:textStyle="normal|bold"
tools:textColor="@color/colorPrimary"
android:textSize="18sp" />
<Space android:layout_width="match_parent"
android:layout_height="10dp" />
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/txtUserFb"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Facebook ID"
android:inputType="text"
android:layout_below="@+id/txtview3"
android:textColor="@color/colorPrimaryDark" />
</android.support.design.widget.TextInputLayout>
<Button
android:layout_height="wrap_content"
android:text="OK"
android:textSize="16sp"
android:id="@+id/btnokFb"
android:layout_below="@+id/txtUserFb"
style="@style/Widget.AppCompat.Button.Colored"
android:textAllCaps="false"
android:textAlignment="center"
android:layout_width="93dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Download"
android:textSize="16sp"
android:id="@+id/btnsaveFb"
style="@style/Widget.AppCompat.Button.Colored"
android:textAllCaps="false"
android:textAlignment="center"
tools:gravity="center_horizontal" />
<TextView android:layout_height="wrap_content"
android:layout_width="match_parent"
android:textAlignment="center"
android:id="@+id/notefb"
android:text="Note: Image will be saved to: /sdcard/Facebook_Avatars"
android:textColor="@color/colorPrimaryDark" />
<ImageView android:layout_gravity="fill"
android:paddingLeft="16dp"
android:paddingBottom="16dp"
android:layout_width="match_parent"
android:layout_height="350dp"
android:layout_below="@+id/notefb"
android:id="@+id/imgviewFb"
android:scaleType="fitCenter" />
</LinearLayout>
</RelativeLayout>
</ScrollView>

Saturday, 3 December 2016

Xamarin Android (C#) Sample Xmpp Nimbuzz using Socket Connection (TcpClient)


################ Basic Requirements: ################

-  Xamarin Studio 6.1.6 (Latest)
-  SDK Tools Version: 25.2.3
-  SDK Platform Tools Version: 25.0.1
-  SDK Build Tools Version: 23.0.1
-  Android NDK
-  SDK Platform:
4.0.3 (API level 15)
4.2   (API level 17)
4.4   (API level 19)
6.0   (API level 23)
7.0   (API level 24)
-  Microsoft .NET 4.0.30319.42000
-  Xamarin.Android Version: 7.0.1.6
-  GTK# 2.12.38

################ Key Features: ################

- Xamarin Xmpp Client Sample (C#) For Android
- Socket Connection

################ Feedback: ################

- For any kind of further queries or bugs, kindly do not hesistate to write me at: dbh4ck@gmail.com
- http://dbh4ck.blogspot.in


Download Full Source Code From My Github

Download Apk


using Android.App;
using Android.Widget;
using Android.OS;
using System.Net.Sockets;
using System;
using System.Text;
using System.Threading;
using Android.Content;
using Android.Views;
namespace Nimbuzz_Xamarin_Android_Db
{
[Activity(Label = "Nimbuzz Xamarin Android By Db~@NC", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity
{
// Make Socket Universal throughout App (Make Use socket anywhere in any Activity of this App)
public static TcpClient client;
public static string passid;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
Button btnSignIn = FindViewById<Button>(Resource.Id.btnSignin);
btnSignIn.Click += delegate
{
login();
};
}
void login()
{
// Get UserName and PassWord From User
EditText userName = FindViewById<EditText>(Resource.Id.txtUser);
EditText userPwd = FindViewById<EditText>(Resource.Id.txtPwd);
var usrid = userName.Text;
var usrpwd = userPwd.Text;
// Initialize New TcpClient Connection
try
{
client = new TcpClient() { NoDelay = true };
client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
client.Client.Connect("o.nimbuzz.com", 5222);
Toast.MakeText(this, "Connecting...", ToastLength.Short).Show();
NetworkStream stream = client.GetStream();
if (client.Client.Connected)
{
client.Client.Send(Encoding.UTF8.GetBytes("<stream:stream xmlns='jabber:client' to='nimbuzz.com' version='1.0' xmlns:stream='http://etherx.jabber.org/streams' xml:lang='en' >"));
string str = Convert.ToBase64String(Encoding.UTF8.GetBytes("\0" + usrid + "\0" + usrpwd));
client.Client.Send(Encoding.UTF8.GetBytes("<auth id='sasl2' xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='PLAIN'>" + str + "</auth>"));
}
// Start Thread On Successfull Connection
Thread rec = new Thread(new ThreadStart(dbThread));
rec.IsBackground = true;
rec.Start();
}
catch (SocketException ex) {
}
}
void dbThread()
{
try
{
while (client.Connected)
{
byte[] buffbyte = new byte[client.ReceiveBufferSize];
int i = client.Client.Receive(buffbyte);
if (i != 0)
{
if (i < buffbyte.Length)
{
byte[] buffbyte2 = new byte[i];
for (int b = 0; b < i; b++)
{
buffbyte2[b] = buffbyte[b];
}
buffbyte = buffbyte2;
}
// Handles the incoming data received from Server side
string xml = Encoding.UTF8.GetString(buffbyte);
DataArrival(xml);
// Ping Server every 60 seconds to avoiding auto-disconnect
int startin = 60 - DateTime.Now.Second;
var t = new System.Threading.Timer(o => client.Client.Send(Encoding.UTF8.GetBytes("<iq to='nimbuzz.com' type='get' id='db1_a2'><ping xmlns='urn:xmpp:ping' /></iq>")), null, startin * 1000, 60000);
}
}
}
catch (Exception ex)
{
//Toast.MakeText(this, ex.ToString(), ToastLength.Short).Show();
}
}
void DataArrival(string xml)
{
xml = xml.Replace("\"", "'");
if (xml.IndexOf("<success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/>", System.StringComparison.OrdinalIgnoreCase) + 1 != 0)
{
// Register Client
// Bind Resource
// Open session
client.Client.Send(Encoding.UTF8.GetBytes("<stream:stream xmlns='jabber:client' to='nimbuzz.com' version='1.0' xmlns:stream='http://etherx.jabber.org/streams' xml:lang='en' >"));
client.Client.Send(Encoding.UTF8.GetBytes("<iq type='set'><bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'><resource>dbhere</resource></bind></iq>"));
client.Client.Send(Encoding.UTF8.GetBytes("<iq id='jcl_2' type='set'><session xmlns='urn:ietf:params:xml:ns:xmpp-session'/></iq>"));
}
if (xml.IndexOf("<bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'>", System.StringComparison.OrdinalIgnoreCase) + 1 != 0)
{
//Toast.MakeText(this, "Logged in Successfully!", ToastLength.Short).Show();
client.Client.Send(Encoding.UTF8.GetBytes("<presence><status>Online Via Xamarin C# (Android)</status><priority>1</priority><show>Online</show><nick xmlns='http://jabber.org/protocol/nick'>XamarinDb</nick></presence>"));
EditText userName = FindViewById<EditText>(Resource.Id.txtUser);
passid = userName.Text;
var LoggedInt = new Intent(this, typeof(LoggedActivity));
LoggedInt.PutExtra("usrid", passid); //pass value to Logged Activity
StartActivity(LoggedInt);
}
if (xml.Contains("<failure xmlns="))
{
//Toast.MakeText(this, "Invalid Username & Password", ToastLength.Short).Show();
client.Client.Close(); // close socket
}
}
public override bool OnCreateOptionsMenu(IMenu menu)
{
base.OnCreateOptionsMenu(menu);
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = this.MenuInflater;
inflater.Inflate(Resource.Menu.menuoption, menu);
return true;
}
public override bool OnOptionsItemSelected(IMenuItem item)
{
base.OnOptionsItemSelected(item);
switch (item.ItemId) {
case Resource.Id.about:
aboutDialog();
break;
case Resource.Id.exit:
Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
break;
default:
break;
}
return true;
}
void aboutDialog()
{
/*
var myalert = new AlertDialog.Builder(this);
myalert.SetTitle("About App");
myalert.SetMessage("This is Xamarin Android App Coded in C# based on Socket Programming");
myalert.SetNeutralButton("OK", (senderAlert, args) =>
{
this.Dispose();
});
Dialog dialog = myalert.Create();
dialog.Show();
**/
Toast.MakeText(this, "Xamarin Android Coded By Db~@NC", ToastLength.Long).Show();
}
}
}
view raw MainActivity.cs hosted with ❤ by GitHub


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
namespace Nimbuzz_Xamarin_Android_Db
{
[Activity(Label = "LoggedActivity")]
public class LoggedActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the layout resource
SetContentView(Resource.Layout.LoggedLayout);
TextView jidlbl = FindViewById<TextView>(Resource.Id.textView5);
TextView jidUser = FindViewById<TextView>(Resource.Id.textView6);
jidUser.Text = Intent.GetStringExtra("usrid") + "@nimbuzz.com";
//MainActivity.client.Client.Send(Encoding.UTF8.GetBytes("<message to='db~@nimbuzz.com' type='chat' id='-4587545787'><body>im Online</body><active xmlns ='http://jabber.org/protocol/chatstates' /><request xmlns='urn:xmpp:receipts' /></message>"));
MainActivity.client.Client.Send(Encoding.UTF8.GetBytes("<presence to='db~@nimbuzz.com' type='subscribe' />"));
Button logout_btn = FindViewById<Button>(Resource.Id.logoutbtn);
logout_btn.Click += delegate
{
if (MainActivity.client.Client.Connected == true) {
MainActivity.client.Client.Dispose();
MainActivity.client.Client.Close();
// Throw back to MainACtivity after Logout Connection Closing
StartActivity(typeof(MainActivity));
}
};
}
public override bool OnCreateOptionsMenu(IMenu menu)
{
base.OnCreateOptionsMenu(menu);
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = this.MenuInflater;
inflater.Inflate(Resource.Menu.loggedmenuoption, menu);
return true;
}
public override bool OnOptionsItemSelected(IMenuItem item)
{
base.OnOptionsItemSelected(item);
string strinfo = "You are currently Logged as: " + Intent.GetStringExtra("usrid") + "@nimbuzz.com";
switch (item.ItemId)
{
case Resource.Id.info:
Toast.MakeText(this, strinfo , ToastLength.Long).Show();
break;
case Resource.Id.exit:
Android.OS.Process.KillProcess(Android.OS.Process.MyPid());
break;
default:
break;
}
return true;
}
}
}


<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:transcriptMode="normal"
android:fillViewport="true">
<RelativeLayout xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="561.5dp"
android:orientation="vertical"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginBottom="0.0dp">
<TextView
android:textSize="20dp"
android:textColor="#fb0564"
android:id="@+id/lbldb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="46dp"
android:text="@string/hello_db"
android:textAlignment="center"
android:gravity="center_horizontal" />
<TextView
android:textSize="20sp"
android:textColor="#fce907ed"
android:id="@+id/textView2"
android:layout_width="345.5dp"
android:layout_height="wrap_content"
android:text="@string/login"
android:layout_marginTop="16dp"
android:layout_below="@+id/lbldb"
android:textAlignment="center"
android:gravity="left" />
<Space
android:layout_width="338.0dp"
android:layout_height="10dp" />
<EditText
android:id="@+id/txtUser"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Your Username"
android:inputType="text"
android:layout_below="@+id/textView2"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="22dp"
android:textColor="@color/colorPrimaryDark" />
<Space
android:layout_width="match_parent"
android:layout_height="20dp" />
<EditText
android:id="@+id/txtPwd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Your Password"
android:inputType="textPassword"
android:layout_below="@+id/txtUser"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="21dp"
android:textColor="@color/colorPrimaryDark" />
<ProgressBar
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBar"
android:layout_above="@+id/btnSignin"
android:layout_centerHorizontal="false"
android:indeterminate="false"
android:visibility="invisible"
android:layout_gravity="center" />
<Button
android:textColor="#0b42f6"
android:id="@+id/btnSignin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/btn_login"
android:layout_marginBottom="44dp"
android:layout_above="@+id/textViewDbLink"
android:layout_centerHorizontal="true" />
<TextView
android:textColor="#fc4108"
android:autoLink="web"
android:id="@+id/textViewDbLink"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/lbl_dbh4ck"
android:textAlignment="center"
android:layout_marginBottom="14dp"
android:layout_above="@+id/textViewDbEmail"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:gravity="center_horizontal" />
<TextView
android:textColor="#198104"
android:id="@+id/textViewDbEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/lbl_dbmail"
android:layout_marginBottom="20dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:textAlignment="center"
android:gravity="center_horizontal" />
</LinearLayout>
</RelativeLayout>
</ScrollView>
view raw Main.axml hosted with ❤ by GitHub


<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:transcriptMode="normal"
android:fillViewport="true">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:elevation="1dp">
<!-- TODO: Update blank fragment layout -->
<TextView
android:id="@+id/textView5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="44dp"
android:text="@string/botid"
android:textStyle="normal|bold"
android:textSize="18sp"
android:textAlignment="center"
android:textColor="@color/colorPrimaryDark"
android:gravity="center_horizontal" />
<TextView
android:text="TextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="36dp"
android:id="@+id/textView6"
android:textSize="20sp"
android:textColor="@color/colorPrimaryDark"
android:textStyle="normal|bold"
android:fontFamily="monospace"
android:layout_below="@+id/textView5"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:textAlignment="center"
android:gravity="center_horizontal" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/logout"
android:id="@+id/logoutbtn"
android:textSize="20sp"
android:textColor="#ff1ca6f4"
android:textAllCaps="false"
android:gravity="center"
android:typeface="serif"
android:textStyle="bold"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" />
</RelativeLayout>
</ScrollView>

Tuesday, 1 November 2016

Nimbuzz MUC Banbot For Android with Navigation Drawer, Swipeable Tabs, Fragments Coded in JAVA using Android Material Design


################ Nimbuzz MUC BanBot For Android By DB~@NC ################


################ What's NEW: ################

- Coded Using Full Android Material Design
- Swipeable Tabs
- Navigation Drawer (Full Width)
- Fragment Activities


################ Fixed Bugs: ################

- Fixed Network Stability
- Support For Auto-Reconnection Added


################ Key Features: ################

- kick
- ban
- member
- greetings wc
- ipban
- add/remove master
- show master
- visitor/mute
- grant owner
- grant admin
- grant owner

################ Feedback: ################

- For any kind of further queries or bugs, kindly do not hesistate to write me at: dbh4ck@gmail.com
- http://dbh4ck.blogspot.in

Saturday, 2 April 2016

wxPython GUI Sqlite3 Insert, Update, Delete


Use These Credentials:

-- username :  admin
-- pwd :  password


Source: Download Here


#---------------------------------------------------------------------
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# -*- SQLITE3 GUI DEMO APP -*-
# -*- Python (2.7.11) -*-
# -*- wxPython (2.8) -*-
# -*- Author : DB <dbh4ck@gmail.com> aka <db~@NC> -*-
# -*- GUI wxPython -*-
# -*- coded by db~@NC -*-
# -*- Mar., 2016 -*-
#---------------------------------------------------------------------
import os
import sys
from wx.lib import sized_controls
import wx
if "2.8" in wx.version():
import wx.lib.pubsub.setupkwargs
from wx.lib.pubsub import pub
else:
from wx.lib.pubsub import pub
import wx.lib.agw.hyperlink as hl
import wx, wx.html
import wx.lib.scrolledpanel
import wx.grid as grid
from ctypes import *
gdi32= WinDLL("gdi32.dll")
font_path = os.path.abspath("Lato-Medium.ttf")
print font_path
print gdi32.AddFontResourceA(font_path)
class LoginDialog(wx.Dialog):
def __init__(SELF):
face = "ProggySquareTT"
prog_font = wx.TheFontList.FindOrCreateFont(18, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, face)
prog_font2 = wx.TheFontList.FindOrCreateFont(12, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, face)
prog_label = wx.TheFontList.FindOrCreateFont(10, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, face)
prog_btn = wx.TheFontList.FindOrCreateFont(11, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, face)
"""Constructor"""
wx.Dialog.__init__(SELF, None, title="Admin Panel",size=(320,250))
SELF.SetBackgroundColour('#F2EDD8')
SELF.gb = wx.StaticBox(SELF, -1, 'Admin Panel:' , pos =(5,3),size=(300,200))
SELF.gb.SetForegroundColour(wx.BLACK)
SELF.gb.SetFont(prog_font2)
SELF.gb_sizer = wx.StaticBoxSizer(SELF.gb, wx.VERTICAL)
# user info
user_sizer = wx.BoxSizer(wx.HORIZONTAL)
user_lbl = wx.StaticText(SELF, label="Username:")
user_sizer.Add(user_lbl, 0, wx.ALL|wx.LEFT, 10)
user_lbl.SetFont(prog_label)
SELF.user = wx.TextCtrl(SELF)
user_sizer.Add(SELF.user, 0, wx.ALL, 5)
SELF.gb_sizer.Add(user_lbl,0,wx.ALL|wx.CENTER,5)
# pass info
p_sizer = wx.BoxSizer(wx.HORIZONTAL)
p_lbl = wx.StaticText(SELF, label="Password:")
p_sizer.Add(p_lbl, 0, wx.ALL|wx.LEFT, 10)
p_lbl.SetFont(prog_label)
SELF.password = wx.TextCtrl(SELF, style=wx.TE_PASSWORD|wx.TE_PROCESS_ENTER)
p_sizer.Add(SELF.password, 0, wx.ALL, 5)
SELF.gb_sizer.Add(p_lbl,0,wx.ALL|wx.CENTER,5)
main_sizer = wx.BoxSizer(wx.VERTICAL)
main_sizer.Add(user_sizer, 0, wx.TOP, 40)
main_sizer.Add(p_sizer, 0, wx.TOP, 15)
btn = wx.Button(SELF, label="Login", style=wx.BORDER_NONE)
btn.Bind(wx.EVT_BUTTON, SELF.onLogin)
btn.SetFont(prog_btn)
btn.SetBackgroundColour('#5D4C46')
btn.SetForegroundColour(wx.WHITE)
main_sizer.Add(btn, 0, wx.ALL|wx.CENTER, 2)
cancel = wx.Button(SELF, wx.ID_CANCEL, style=wx.BORDER_NONE)
cancel.SetFont(prog_btn)
cancel.SetBackgroundColour('#5D4C46')
cancel.SetForegroundColour(wx.WHITE)
main_sizer.Add(cancel, 0, wx.ALL|wx.CENTER, 5)
SELF.SetSizer(main_sizer)
SELF.Center()
#----------------------------------------------------------------------
def onLogin(SELF, event):
"""
Check credentials and login
"""
stupid_user = "admin"
user_name = SELF.user.GetValue()
stupid_password = "password"
user_password = SELF.password.GetValue()
if user_password == stupid_password and user_name == stupid_user:
print "You are now Logged in!"
pub.sendMessage("frameListener", message="show")
SELF.Destroy()
else:
SELF.Close()
print "Username or password is Incorrect!"
########################################################################
############################### // Main Frame // ######################################
class MyFrame(wx.Frame):
def __init__(SELF):
wx.Frame.__init__(SELF, None,-1,"Welcome To Sqlite3 GUI",size=(970,770),style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER ^ wx.MAXIMIZE_BOX)
SELF.SetBackgroundColour(wx.WHITE)
pub.subscribe(SELF.myListener, "frameListener")
SELF.initialize()
dlg = LoginDialog()
res = dlg.ShowModal()
if res == wx.ID_CANCEL:
dlg.Destroy()
SELF.Close()
def myListener(SELF, message, arg2=None):
SELF.Show()
SELF.Center()
def initialize(SELF):
face = "ProggySquareTT"
prog_font = wx.TheFontList.FindOrCreateFont(18, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, face)
prog_font2 = wx.TheFontList.FindOrCreateFont(12, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, face)
prog_label = wx.TheFontList.FindOrCreateFont(10, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL, False, face)
prog_btn = wx.TheFontList.FindOrCreateFont(11, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD, False, face)
def_font = wx.Font(12, wx.MODERN, wx.NORMAL, wx.NORMAL)
panelsarj = wx.Panel(SELF,-1,pos =(0,2),size=(1250,42))
panelsarj.SetBackgroundColour('#5D4C46')
font_lbl= wx.Font(10, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
sarjfont_lbl= wx.Font(15, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
sarj_sizer = wx.BoxSizer(wx.HORIZONTAL)
sarj_lbl = wx.StaticText(panelsarj,label="Welcome To SQLITE3 GUI wxPython")
sarj_lbl.SetForegroundColour(wx.WHITE)
sarj_lbl.SetFont(prog_font)
sarj_sizer.Add(sarj_lbl,0,wx.CENTER|wx.TOP,5)
panel1 = wx.Panel(SELF,-1,pos =(8,60),size=(235,130))
panel2 = wx.Panel(SELF,-1,pos =(8,205),size=(235,235))
panel3 = wx.Panel(SELF,-1,pos =(8,480),size=(245,250))
#panel4 = wx.Panel(SELF,-1,pos =(270,340),size=(245,95))
panel5 = wx.Panel(SELF,-1,pos =(290,60),size=(230,125))
panel6 = wx.Panel(SELF,-1,pos =(290,210),size=(230,230))
mainPanel = wx.lib.scrolledpanel.ScrolledPanel(SELF,-1, style=wx.SIMPLE_BORDER, pos =(590,70),size=(360,360))
mainPanel.SetupScrolling()
panel1.SetBackgroundColour('#44B3C2')
panel2.SetBackgroundColour('#44B3C2')
panel3.SetBackgroundColour('#44B3C2')
#panel4.SetBackgroundColour('#F2EDD8')
panel5.SetBackgroundColour('#44B3C2')
panel6.SetBackgroundColour('#44B3C2')
mainPanel.SetBackgroundColour('#FFFFFF')
SELF.dblbl = wx.StaticBox(SELF, -1, 'Create DataBase:' , pos =(5,50),size=(240,140))
font_dblbl= wx.Font(11, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
SELF.dblbl.SetForegroundColour(wx.BLACK)
SELF.dblbl.SetFont(prog_font2)
SELF.dblbl2 = wx.StaticBox(SELF, -1, 'Create Table:' , pos =(5,205),size=(240,240))
font_dblbl2= wx.Font(11, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
SELF.dblbl2.SetForegroundColour(wx.BLACK)
SELF.dblbl2.SetFont(prog_font2)
SELF.dblbl3 = wx.StaticBox(SELF, -1, 'INSERT Data:' , pos =(5,465),size=(252,270))
font_dblbl3 = wx.Font(11, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
SELF.dblbl3.SetForegroundColour(wx.BLACK)
SELF.dblbl3.SetFont(prog_font2)
#SELF.dblbl4 = wx.StaticBox(SELF, -1, 'Show Data:' , pos =(270,340),size=(252,100))
#font_dblbl4= wx.Font(11, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
#SELF.dblbl4.SetForegroundColour(wx.BLUE)
#SELF.dblbl4.SetFont(prog_font2)
SELF.dblbl5 = wx.StaticBox(SELF, -1, 'Delete Data:' , pos =(290,50),size=(240,140))
font_dblbl5 = wx.Font(11, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
SELF.dblbl5.SetForegroundColour(wx.BLACK)
SELF.dblbl5.SetFont(prog_font2)
SELF.dblbl6 = wx.StaticBox(SELF, -1, 'Update Data:' , pos =(290,205),size=(240,240))
font_dblbl6 = wx.Font(11, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
SELF.dblbl6.SetForegroundColour(wx.BLACK)
SELF.dblbl6.SetFont(prog_font2)
SELF.dblbl7 = wx.StaticBox(SELF, -1, 'Records:' , pos =(580,50),size=(380,390))
font_dblbl7 = wx.Font(11, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
SELF.dblbl7.SetForegroundColour(wx.BLACK)
SELF.dblbl7.SetFont(prog_font2)
SELF.dblbl_sizer = wx.StaticBoxSizer(SELF.dblbl, wx.VERTICAL)
SELF.dblbl2_sizer = wx.StaticBoxSizer(SELF.dblbl2, wx.VERTICAL)
SELF.dblbl3_sizer = wx.StaticBoxSizer(SELF.dblbl3, wx.VERTICAL)
#SELF.dblbl4_sizer = wx.StaticBoxSizer(SELF.dblbl4, wx.VERTICAL)
SELF.dblbl5_sizer = wx.StaticBoxSizer(SELF.dblbl5, wx.VERTICAL)
SELF.dblbl6_sizer = wx.StaticBoxSizer(SELF.dblbl6, wx.VERTICAL)
SELF.dblbl7_sizer = wx.StaticBoxSizer(SELF.dblbl7, wx.VERTICAL)
db_sizer = wx.BoxSizer(wx.HORIZONTAL)
db_lbl = wx.StaticText(panel1,label= "Database Name:")
db_lbl.SetForegroundColour(wx.WHITE)
db_lbl.SetFont(prog_label)
db_sizer.Add(db_lbl,0,wx.LEFT|wx.TOP,5)
SELF.dblbl_sizer.Add(db_lbl,0,wx.ALL|wx.CENTER,5)
SELF.db = wx.TextCtrl(panel1,style=wx.TE_CENTER)
SELF.db.SetForegroundColour(wx.BLUE)
db_sizer.Add(SELF.db,0,wx.ALL,5)
SELF.dblbl_sizer.Add(SELF.db,0,wx.ALL|wx.CENTER,5)
#font_1= wx.Font(11, wx.DECORATIVE, wx.NORMAL, wx.BOLD)
#SELF.db.SetFont(font_1)
button_sizer = wx.BoxSizer(wx.HORIZONTAL)
SELF.button = wx.Button(panel1,-1,label="Create DB", style=wx.BORDER_NONE)
SELF.Bind(wx.EVT_BUTTON,SELF.OnDbCreateButtonClick,SELF.button)
font_button= wx.Font(12, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
SELF.button.SetFont(prog_btn)
SELF.button.SetBackgroundColour('#5D4C46')
SELF.button.SetForegroundColour(wx.WHITE)
button_sizer.Add(SELF.button,0,wx.LEFT,107)
SELF.dblbl_sizer.Add(SELF.button,0,wx.ALL|wx.CENTER,5)
tb_sizer = wx.BoxSizer(wx.HORIZONTAL)
tb_lbl = wx.StaticText(panel2,label="Table Name:")
tb_lbl.SetForegroundColour(wx.WHITE)
tb_lbl.SetFont(prog_label)
tb_sizer.Add(tb_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl2_sizer.Add(tb_lbl,0,wx.ALL|wx.CENTER,5)
SELF.tb = wx.TextCtrl(panel2,style=wx.TE_CENTER)
SELF.tb.SetForegroundColour(wx.BLUE)
tb_sizer.Add(SELF.tb,0,wx.ALL,15)
SELF.dblbl2_sizer.Add(SELF.tb,0,wx.ALL|wx.CENTER,5)
#SELF.tb.SetFont(font_1)
col1_sizer = wx.BoxSizer(wx.HORIZONTAL)
col1_lbl = wx.StaticText(panel2,label="1st Column:")
col1_lbl.SetForegroundColour(wx.WHITE)
col1_lbl.SetFont(prog_label)
col1_sizer.Add(col1_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl2_sizer.Add(col1_lbl,0,wx.ALL|wx.CENTER,5)
SELF.col1 = wx.TextCtrl(panel2,style=wx.TE_CENTER)
SELF.col1.SetForegroundColour(wx.BLUE)
col1_sizer.Add(SELF.col1,0,wx.ALL,15)
SELF.dblbl2_sizer.Add(SELF.col1,0,wx.ALL|wx.CENTER,5)
#SELF.col1.SetFont(font_1)
col2_sizer = wx.BoxSizer(wx.HORIZONTAL)
col2_lbl = wx.StaticText(panel2,label="2nd Column:")
col2_lbl.SetForegroundColour(wx.WHITE)
col2_lbl.SetFont(prog_label)
col2_sizer.Add(col2_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl2_sizer.Add(col2_lbl,0,wx.ALL|wx.CENTER,5)
SELF.col2 = wx.TextCtrl(panel2,style=wx.TE_CENTER)
SELF.col2.SetForegroundColour(wx.BLUE)
col2_sizer.Add(SELF.col2,0,wx.ALL,15)
SELF.dblbl2_sizer.Add(SELF.col2,0,wx.ALL|wx.CENTER,5)
#SELF.col2.SetFont(font_1)
col3_sizer = wx.BoxSizer(wx.HORIZONTAL)
col3_lbl = wx.StaticText(panel2,label="3rd Column:")
col3_lbl.SetForegroundColour(wx.WHITE)
col3_lbl.SetFont(prog_label)
col3_sizer.Add(col3_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl2_sizer.Add(col3_lbl,0,wx.ALL|wx.CENTER,5)
SELF.col3 = wx.TextCtrl(panel2,style=wx.TE_CENTER)
SELF.col3.SetForegroundColour(wx.BLUE)
col3_sizer.Add(SELF.col3,0,wx.ALL,15)
SELF.dblbl2_sizer.Add(SELF.col3,0,wx.ALL|wx.CENTER,5)
#SELF.col3.SetFont(font_1)
button2_sizer = wx.BoxSizer(wx.HORIZONTAL)
SELF.button2 = wx.Button(panel2,-1,label="Create TB", style=wx.BORDER_NONE)
SELF.Bind(wx.EVT_BUTTON,SELF.OnTableCreateButtonClick,SELF.button2)
font_button2 = wx.Font(12, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
SELF.button2.SetFont(prog_btn)
SELF.button2.SetBackgroundColour('#5D4C46')
SELF.button2.SetForegroundColour(wx.WHITE)
button2_sizer.Add(SELF.button2,0,wx.LEFT,105)
SELF.dblbl_sizer.Add(SELF.button2,0,wx.ALL|wx.CENTER,5)
insert1_sizer = wx.BoxSizer(wx.HORIZONTAL)
insert1_lbl = wx.StaticText(panel3,label="Insert Col. 1:")
insert1_lbl.SetForegroundColour(wx.WHITE)
insert1_lbl.SetFont(prog_label)
insert1_sizer.Add(insert1_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl3_sizer.Add(insert1_lbl,0,wx.ALL|wx.CENTER,5)
SELF.insert1 = wx.TextCtrl(panel3,style=wx.TE_CENTER)
SELF.insert1.SetForegroundColour(wx.BLUE)
insert1_sizer.Add(SELF.insert1,0,wx.ALL,15)
SELF.dblbl3_sizer.Add(SELF.insert1,0,wx.ALL|wx.CENTER,5)
#SELF.insert1.SetFont(font_1)
note1_sizer = wx.BoxSizer(wx.HORIZONTAL)
note1_lbl = wx.StaticText(panel3, label= "[ Must be Text ]")
note1_lbl.SetForegroundColour(wx.WHITE)
note1_lbl.SetFont(prog_label)
note1_sizer.Add(note1_lbl,0,wx.TOP|wx.RIGHT,-177)
SELF.dblbl3_sizer.Add(note1_lbl,0,wx.ALL|wx.CENTER,5)
insert2_sizer = wx.BoxSizer(wx.HORIZONTAL)
insert2_lbl = wx.StaticText(panel3,label="Insert Col. 2:")
insert2_lbl.SetForegroundColour(wx.WHITE)
insert2_lbl.SetFont(prog_label)
insert2_sizer.Add(insert2_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl3_sizer.Add(insert2_lbl,0,wx.ALL|wx.CENTER,5)
SELF.insert2 = wx.TextCtrl(panel3,style=wx.TE_CENTER)
SELF.insert2.SetForegroundColour(wx.BLUE)
insert2_sizer.Add(SELF.insert2,0,wx.ALL,15)
SELF.dblbl3_sizer.Add(SELF.insert2,0,wx.ALL|wx.CENTER,5)
#SELF.insert2.SetFont(font_1)
note2_sizer = wx.BoxSizer(wx.HORIZONTAL)
note2_lbl = wx.StaticText(panel3, label= "[ Must be Text ]")
note2_lbl.SetForegroundColour(wx.WHITE)
note2_lbl.SetFont(prog_label)
note2_sizer.Add(note2_lbl,0,wx.TOP|wx.RIGHT,-128)
SELF.dblbl3_sizer.Add(note2_lbl,0,wx.ALL|wx.CENTER,5)
insert3_sizer = wx.BoxSizer(wx.HORIZONTAL)
insert3_lbl = wx.StaticText(panel3,label="Insert Col. 3:")
insert3_lbl.SetForegroundColour(wx.WHITE)
insert3_lbl.SetFont(prog_label)
insert3_sizer.Add(insert3_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl3_sizer.Add(insert3_lbl,0,wx.ALL|wx.CENTER,5)
SELF.insert3 = wx.TextCtrl(panel3,style=wx.TE_CENTER)
SELF.insert3.SetForegroundColour(wx.BLUE)
insert3_sizer.Add(SELF.insert3,0,wx.ALL,15)
SELF.dblbl3_sizer.Add(SELF.insert3,0,wx.ALL|wx.CENTER,5)
#SELF.insert3.SetFont(font_1)
note3_sizer = wx.BoxSizer(wx.HORIZONTAL)
note3_lbl = wx.StaticText(panel3, label= "[ Must be Text ]")
note3_lbl.SetForegroundColour(wx.WHITE)
note3_lbl.SetFont(prog_label)
note3_sizer.Add(note3_lbl,0,wx.TOP|wx.RIGHT,-78)
SELF.dblbl3_sizer.Add(note3_lbl,0,wx.ALL|wx.CENTER,5)
button0_sizer = wx.BoxSizer(wx.HORIZONTAL)
SELF.button0 = wx.Button(panel3,-1,label="INSERT Data", style=wx.BORDER_NONE)
SELF.Bind(wx.EVT_BUTTON,SELF.OnInsertButtonClick,SELF.button0)
font_button0 = wx.Font(12, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
SELF.button0.SetFont(prog_btn)
SELF.button0.SetBackgroundColour('#5D4C46')
SELF.button0.SetForegroundColour(wx.WHITE)
button0_sizer.Add(SELF.button0,0,wx.LEFT,112)
SELF.dblbl3_sizer.Add(SELF.button0,0,wx.ALL|wx.CENTER,5)
#button3_sizer = wx.BoxSizer(wx.HORIZONTAL)
#SELF.button3 = wx.Button(panel4,-1,label="Show Table Data")
#SELF.Bind(wx.EVT_BUTTON,SELF.OnShowButtonClick,SELF.button3)
#font_button3 = wx.Font(12, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
#SELF.button3.SetFont(font_button)
#SELF.button3.SetForegroundColour(wx.RED)
#button3_sizer.Add(SELF.button3,0,wx.LEFT,50)
del_sizer = wx.BoxSizer(wx.HORIZONTAL)
del_lbl = wx.StaticText(panel5,label= "Enter Column Id:")
del_lbl.SetForegroundColour(wx.WHITE)
del_lbl.SetFont(prog_label)
del_sizer.Add(del_lbl,0,wx.LEFT|wx.TOP,5)
SELF.dblbl_sizer.Add(del_lbl,0,wx.ALL|wx.CENTER,5)
SELF.delete = wx.TextCtrl(panel5,style=wx.TE_CENTER)
SELF.delete.SetForegroundColour(wx.BLUE)
del_sizer.Add(SELF.delete,0,wx.ALL,3)
SELF.dblbl3_sizer.Add(SELF.delete,0,wx.ALL|wx.CENTER,5)
SELF.delete.SetFont(prog_label)
button4_sizer = wx.BoxSizer(wx.HORIZONTAL)
SELF.button4 = wx.Button(panel5,-1,label="DELETE Data", style=wx.BORDER_NONE)
SELF.Bind(wx.EVT_BUTTON,SELF.OnDeleteButtonClick,SELF.button4)
font_button3 = wx.Font(12, wx.DECORATIVE, wx.ITALIC, wx.BOLD)
SELF.button4.SetFont(prog_btn)
SELF.button4.SetBackgroundColour('#5D4C46')
SELF.button4.SetForegroundColour(wx.WHITE)
button4_sizer.Add(SELF.button4,0,wx.LEFT,105)
column_sizer = wx.BoxSizer(wx.HORIZONTAL)
column_lbl = wx.StaticText(panel6,label="Column ID:")
column_lbl.SetForegroundColour(wx.WHITE)
column_lbl.SetFont(prog_label)
column_sizer.Add(column_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl2_sizer.Add(column_lbl,0,wx.ALL|wx.CENTER,5)
SELF.column = wx.TextCtrl(panel6,style=wx.TE_CENTER)
SELF.column.SetForegroundColour(wx.BLUE)
column_sizer.Add(SELF.column,0,wx.ALL,15)
SELF.dblbl2_sizer.Add(SELF.column,0,wx.ALL|wx.CENTER,5)
#SELF.column.SetFont(font_1)
col11_sizer = wx.BoxSizer(wx.HORIZONTAL)
col11_lbl = wx.StaticText(panel6,label="1st Column:")
col11_lbl.SetForegroundColour(wx.WHITE)
col11_lbl.SetFont(prog_label)
col11_sizer.Add(col11_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl2_sizer.Add(col11_lbl,0,wx.ALL|wx.CENTER,5)
SELF.col11 = wx.TextCtrl(panel6,style=wx.TE_CENTER)
SELF.col11.SetForegroundColour(wx.BLUE)
col11_sizer.Add(SELF.col11,0,wx.ALL,15)
SELF.dblbl2_sizer.Add(SELF.col11,0,wx.ALL|wx.CENTER,5)
#SELF.col11.SetFont(font_1)
col22_sizer = wx.BoxSizer(wx.HORIZONTAL)
col22_lbl = wx.StaticText(panel6,label="2nd Column:")
col22_lbl.SetForegroundColour(wx.WHITE)
col22_lbl.SetFont(prog_label)
col22_sizer.Add(col22_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl2_sizer.Add(col22_lbl,0,wx.ALL|wx.CENTER,5)
SELF.col22 = wx.TextCtrl(panel6,style=wx.TE_CENTER)
SELF.col22.SetForegroundColour(wx.BLUE)
col22_sizer.Add(SELF.col22,0,wx.ALL,15)
SELF.dblbl2_sizer.Add(SELF.col22,0,wx.ALL|wx.CENTER,5)
#SELF.col22.SetFont(font_1)
col33_sizer = wx.BoxSizer(wx.HORIZONTAL)
col33_lbl = wx.StaticText(panel6,label="3rd Column:")
col33_lbl.SetForegroundColour(wx.WHITE)
col33_lbl.SetFont(prog_label)
col33_sizer.Add(col33_lbl,0,wx.LEFT|wx.TOP,20)
SELF.dblbl2_sizer.Add(col33_lbl,0,wx.ALL|wx.CENTER,5)
SELF.col33 = wx.TextCtrl(panel6,style=wx.TE_CENTER)
SELF.col33.SetForegroundColour(wx.BLUE)
col33_sizer.Add(SELF.col33,0,wx.ALL,15)
SELF.dblbl2_sizer.Add(SELF.col33,0,wx.ALL|wx.CENTER,5)
#SELF.col33.SetFont(font_1)
button5_sizer = wx.BoxSizer(wx.HORIZONTAL)
SELF.button5 = wx.Button(panel6,-1,label="UPDATE Data", style=wx.BORDER_NONE)
SELF.Bind(wx.EVT_BUTTON,SELF.OnUpdateButtonClick,SELF.button5)
font_button5 = wx.Font(12, wx.DECORATIVE, wx.ITALIC, wx.BOLD )
SELF.button5.SetFont(prog_btn)
SELF.button5.SetBackgroundColour('#5D4C46')
SELF.button5.SetForegroundColour(wx.WHITE)
button5_sizer.Add(SELF.button5,0,wx.LEFT,100)
#SELF.btn_logout = wx.Button(SELF,-1,label="Logout", style=wx.BORDER_NONE)
#SELF.Bind(wx.EVT_BUTTON,SELF.OnLogoutButtonClick,SELF.btn_logout)
grid_sizer = wx.BoxSizer(wx.HORIZONTAL)
SELF.grid = wx.grid.Grid(mainPanel,-1)
SELF.grid.CreateGrid(50,3)
grid_sizer.Add(SELF.grid,0,wx.ALL,5)
SELF.dblbl7_sizer.Add(SELF.grid,0,wx.ALL|wx.CENTER,5)
main_sizer= wx.BoxSizer(wx.VERTICAL)
main_sizer.Add(sarj_sizer,0,wx.TOP|wx.CENTER,3)
main_sizer.Add(db_sizer,0,wx.TOP,5)
main_sizer.Add(button_sizer,0,wx.TOP,2)
main_sizer.Add(tb_sizer,0,wx.TOP,-80)
main_sizer.Add(col1_sizer,0,wx.TOP,-40)
main_sizer.Add(col2_sizer,0,wx.TOP,-20)
main_sizer.Add(col3_sizer,0,wx.TOP,-18)
main_sizer.Add(button2_sizer,0,wx.TOP,2)
main_sizer.Add(insert1_sizer,0,wx.TOP,-210)
main_sizer.Add(note1_sizer,0,wx.LEFT|wx.TOP,10)
main_sizer.Add(insert2_sizer,0,wx.TOP,-160)
main_sizer.Add(note2_sizer,0,wx.LEFT|wx.TOP,10)
main_sizer.Add(insert3_sizer,0,wx.TOP,-110)
main_sizer.Add(note3_sizer,0,wx.LEFT|wx.TOP,10)
main_sizer.Add(button0_sizer,0,wx.TOP,-40)
#main_sizer.Add(button3_sizer,0,wx.TOP,-210)
main_sizer.Add(del_sizer,0,wx.TOP,-205)
main_sizer.Add(button4_sizer,0,wx.TOP,-165)
main_sizer.Add(column_sizer,0,wx.TOP,-225)
main_sizer.Add(col11_sizer,0,wx.TOP,-190)
main_sizer.Add(col22_sizer,0,wx.TOP,-155)
main_sizer.Add(col33_sizer,0,wx.TOP,-120)
main_sizer.Add(button5_sizer,0,wx.TOP,-70)
main_sizer.Add(grid_sizer,0,wx.TOP,-245)
SELF.SetSizer(main_sizer)
mainPanel.SetSizer(grid_sizer)
#SELF.Show(True)
SELF.Center()
def OnDbCreateButtonClick(SELF,event):
import sqlite3 as lite
import sys
conn = lite.connect((SELF.db.GetValue() + ".db"))
print "\nDataBase Created!\n"
def OnTableCreateButtonClick(SELF,event):
import sqlite3 as lite
import sys
conn = lite.connect((SELF.db.GetValue()))
with conn:
cur = conn.cursor()
cur.execute("CREATE TABLE %s (ID INTEGER PRIMARY KEY AUTOINCREMENT, %s TEXT, %s TEXT, %s TEXT)"%(SELF.tb.GetValue(), SELF.col1.GetValue(), SELF.col2.GetValue(), SELF.col3.GetValue()))
print "Table Created!\n"
def OnShowButtonClick(SELF,event):
import sqlite3 as lite
import sys
conn = lite.connect((SELF.db.GetValue()))
with conn:
cur = conn.cursor()
# Fetch Columns Name From Table
meta = cur.execute("SELECT * FROM %s"%(SELF.tb.GetValue()))
columns = []
for i in meta.description:
columns.append(i[0])
columns = columns[1:]
for i in range(len(columns)):
SELF.grid.SetColLabelValue(i, columns[i])
# Populate Grid with The Values From Database
all = cur.execute("SELECT * FROM %s"%(SELF.tb.GetValue()))
for row in all:
row_num = row[0]
cells = row[1:]
for i in range(len(cells)):
if cells[i] != None and cells[i] != "null":
SELF.grid.SetCellValue(row_num, i, str(cells[i]))
#rows = cur.fetchall()
#for row in rows:
#print row
#print "\nId = ", row[0]
#print "%s = "%(SELF.col1.GetValue()), row[1]
#print "%s = "%(SELF.col2.GetValue()), row[2]
#print "%s = "%(SELF.col3.GetValue()), row[3]
def OnInsertButtonClick(SELF,event):
import sqlite3 as lite
import sys
conn = lite.connect((SELF.db.GetValue()))
with conn:
cur = conn.cursor()
cur.execute("INSERT INTO %s VALUES(NULL,'%s', '%s', '%s')" %(SELF.tb.GetValue(), SELF.insert1.GetValue(), SELF.insert2.GetValue(), SELF.insert3.GetValue()))
print "Data Inserted!"
# Fetch Columns Name From Table
meta = cur.execute("SELECT * FROM %s"%(SELF.tb.GetValue()))
columns = []
for i in meta.description:
columns.append(i[0])
columns = columns[1:]
for i in range(len(columns)):
SELF.grid.SetColLabelValue(i, columns[i])
# Populate Grid with The Values From Database
all = cur.execute("SELECT * FROM %s"%(SELF.tb.GetValue()))
for row in all:
row_num = row[0]
cells = row[1:]
for i in range(len(cells)):
if cells[i] != None and cells[i] != "null":
SELF.grid.SetCellValue(row_num, i, str(cells[i]))
def OnDeleteButtonClick(SELF,event):
import sqlite3 as lite
import sys
conn = lite.connect((SELF.db.GetValue()))
with conn:
cur = conn.cursor()
cur.execute("DELETE FROM %s WHERE ID=%s" %(SELF.tb.GetValue(), SELF.delete.GetValue()))
#user = cur.fetchone()[0]
#SELF.refreshGrid()
# Fetch Columns Name From Table
SELF.grid.ClearGrid()
SELF.grid.BeginBatch()
delmsg = wx.grid.GRIDTABLE_NOTIFY_ROWS_DELETED
msg = wx.grid.GridTableMessage(
SELF.grid.GetTable(),
delmsg,
)
SELF.grid.ProcessTableMessage(msg)
#msg = wx.grid.GridTableMessage(SELF.grid.GetTable(), wxGRIDTABLE_REQUEST_VIEW_GET_VALUES)
SELF.grid.ProcessTableMessage(msg)
SELF.grid.EndBatch()
# Fetch Columns Name From Table
meta = cur.execute("SELECT * FROM %s"%(SELF.tb.GetValue()))
columns = []
for i in meta.description:
columns.append(i[0])
columns = columns[1:]
for i in range(len(columns)):
SELF.grid.SetColLabelValue(i, columns[i])
# Populate Grid with The Values From Database
all = cur.execute("SELECT * FROM %s"%(SELF.tb.GetValue()))
for row in all:
row_num = row[0]
cells = row[1:]
for i in range(len(cells)):
if cells[i] != None and cells[i] != "null":
SELF.grid.SetCellValue(row_num, i, str(cells[i]))
print "\nData Deleted!\n"
def refreshGrid(SELF):
import sqlite3 as lite
import sys
conn = lite.connect((SELF.db.GetValue()))
with conn:
cur = conn.cursor()
all = cur.execute("SELECT * FROM %s"%(SELF.tb.GetValue()))
for row in all:
row_num = row[0]
cells = row[1:]
#SELF.grid.ClearGrid()
SELF.grid.BeginBatch()
current, new, delmsg, addmsg = (len(cells), SELF.grid.GetNumberRows(), wxGRIDTABLE_NOTIFY_ROWS_DELETED, wxGRIDTABLE_NOTIFY_ROWS_APPENDED)
if new < current:
msg = wx.grid.GridTableMessage(
SELF.grid.GetTable(),
delmsg,
new, # position
current-new,
)
SELF.grid.ProcessTableMessage(msg)
elif new > current:
msg = wx.grid.GridTableMessage(
SELF.grid.GetTable(),
addmsg,
new-current
)
SELF.grid.ProcessTableMessage(msg)
msg = wx.grid.GridTableMessage(SELF.grid.GetTable(), wxGRIDTABLE_REQUEST_VIEW_GET_VALUES)
SELF.grid.ProcessTableMessage(msg)
SELF.grid.EndBatch()
def OnUpdateButtonClick(SELF,event):
import sqlite3 as lite
import sys
conn = lite.connect((SELF.db.GetValue()))
with conn:
cur = conn.cursor()
cur.execute("SELECT * FROM %s where Id = %s" %(SELF.tb.GetValue(), SELF.column.GetValue()))
user = cur.fetchone()[0]
cur.execute("UPDATE %s SET %s = '%s' where Id = %s" %(SELF.tb.GetValue(), SELF.col1.GetValue(), SELF.col11.GetValue(), SELF.column.GetValue()))
cur.execute("UPDATE %s SET %s = '%s' where Id = %s" %(SELF.tb.GetValue(), SELF.col2.GetValue(), SELF.col22.GetValue(), SELF.column.GetValue()))
cur.execute("UPDATE %s SET %s = '%s' where Id = %s" %(SELF.tb.GetValue(), SELF.col3.GetValue(), SELF.col33.GetValue(), SELF.column.GetValue()))
# Fetch Columns Name From Table
meta = cur.execute("SELECT * FROM %s"%(SELF.tb.GetValue()))
columns = []
for i in meta.description:
columns.append(i[0])
columns = columns[1:]
for i in range(len(columns)):
SELF.grid.SetColLabelValue(i, columns[i])
# Populate Grid with The Values From Database
all = cur.execute("SELECT * FROM %s"%(SELF.tb.GetValue()))
for row in all:
row_num = row[0]
cells = row[1:]
for i in range(len(cells)):
if cells[i] != None and cells[i] != "null":
SELF.grid.SetCellValue(row_num, i, str(cells[i]))
print "\nData Updated!\n"
if __name__ == "__main__":
app = wx.App(False)
frame = MyFrame()
frame.Show()
app.MainLoop()

Monday, 14 March 2016

Android SQLite DB Sample - INSERT, UPDATE, DELETE


Features:   -  Create SQLite DataBase, Tables, Columns
                 -  INSERT  Data
                 -  UPDATE Data
                 -  DELETE Data
                 -  Drop Table IF ALREADY  EXIST

Download

Source on GitHub


Step 1 : Create A class for get-set Contacts:
package com.blogspot.dbh4ck.sqlite_demo_db;
/**
* Created by DB on 08-03-2016.
*/
public class Contact {
// private variables
public int _id;
public String _name;
public String _email;
// public byte[] _image;
public Contact() {
}
// constructor
public Contact(int id, String name, String _email) {
this._id = id;
this._name = name;
this._email = _email;
// this._image = image;
}
public Contact(String valid_name, String valid_email) {
this._name = valid_name;
this._email = valid_email;
// this._image = theImage;
}
// getting ID
public int getID() {
return this._id;
}
// setting id
public void setID(int id) {
this._id = id;
}
// getting name
public String getName() {
return this._name;
}
// setting name
public void setName(String name) {
this._name = name;
}
// getting email
public String getEmail() {
return this._email;
}
// setting email
public void setEmail(String email) {
this._email = email;
}
// getting Image
public void getImage() {
// return this._image;
return;
}
// setting Image
public void setImage(byte[] image) {
// this._image = image;
return;
}
}
view raw Contact.java hosted with ❤ by GitHub


Step 2 : SQL Database Handler class:
package com.blogspot.dbh4ck.sqlite_demo_db;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import java.util.ArrayList;
/**
* Created by DB on 08-03-2016.
*/
public class DatabaseHandler extends SQLiteOpenHelper {
// Database Name
private static final String DATABASE_NAME = "ContactsManagerDB";
// Database Version
private static final int DATABASE_VERSION = 1;
// Table Name
private static final String TABLE_CONTACTS = "contacts";
// Table Columns Name
private static final String KEY_ID = "id";
private static final String KEY_NAME = "name";
private static final String KEY_EMAIL = "email";
// private static final String KEY_IMAGE = "image";
private final ArrayList<Contact> contact_list = new ArrayList<Contact>();
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public DatabaseHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) {
super(context, name, factory, version, errorHandler);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
+ KEY_EMAIL + " TEXT " + ")";
db.execSQL(CREATE_CONTACTS_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older Table if already Exist
db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS);
// Create tables again
onCreate(db);
}
// Adding new contact
public void Add_Contact(Contact contact) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_NAME, contact.getName()); // Name
values.put(KEY_EMAIL, contact.getEmail()); // Email
// Inserting Row
db.insert(TABLE_CONTACTS, null, values);
db.close(); // Close Database Connection
}
// Getting single contact
Contact Get_Contact(int id) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID, KEY_NAME, KEY_EMAIL }, KEY_ID + "=?", new String[] { String.valueOf(id) }, null, null, null, null);
if (cursor != null)
cursor.moveToFirst();
Contact contact = new Contact(Integer.parseInt(cursor.getString(0)), cursor.getString(1), cursor.getString(2));
// return contact
cursor.close();
db.close();
return contact;
}
// Getting All Contacts
public ArrayList<Contact> Get_Contacts() {
try {
contact_list.clear();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_CONTACTS;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Contact contact = new Contact();
contact.setID(Integer.parseInt(cursor.getString(0)));
contact.setName(cursor.getString(1));
contact.setEmail(cursor.getString(2));
// contact.setImage(cursor.getBlob(3));
// Adding contact to list
contact_list.add(contact);
} while (cursor.moveToNext());
}
// return contact list
cursor.close();
db.close();
return contact_list;
} catch (Exception e) {
// TODO: handle exception
Log.e("all_contact", "" + e);
}
return contact_list;
}
// Updating single contact
public int Update_Contact(Contact contact) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_NAME, contact.getName());
values.put(KEY_EMAIL, contact.getEmail());
// values.put(KEY_IMAGE, contact.getImage());
// updating row
return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?",
new String[] { String.valueOf(contact.getID()) });
}
// Deleting single contact
public void Delete_Contact(int id) {
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_CONTACTS, KEY_ID + " = ?",
new String[] { String.valueOf(id) });
db.close();
}
// Getting contacts Count
public int Get_Total_Contacts() {
String countQuery = "SELECT * FROM " + TABLE_CONTACTS;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
cursor.close();
// return count
return cursor.getCount();
}
}


Step 3 : For adding new Contacts and Updating existing contacts here's the class:
package com.blogspot.dbh4ck.sqlite_demo_db;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;
public class Add_Update_User extends Activity {
// Bitmap theImage;
// ImageView imageDetail;
EditText add_name, add_email;
Button add_save_btn, add_view_all, update_btn, update_view_all;
LinearLayout add_view, update_view;
String valid_email = null, valid_name = null, Toast_msg = null, valid_user_id = "";
int USER_ID, imageId;
DatabaseHandler dbHandler = new DatabaseHandler(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.add_update_screen);
// set screen
Set_Add_Update_Screen();
// set visibility of view as per activity calls
String called_from = getIntent().getStringExtra("called");
if (called_from.equalsIgnoreCase("add")) {
add_view.setVisibility(View.VISIBLE);
update_view.setVisibility(View.GONE);
} else {
update_view.setVisibility(View.VISIBLE);
add_view.setVisibility(View.GONE);
USER_ID = Integer.parseInt(getIntent().getStringExtra("USER_ID"));
Contact c = dbHandler.Get_Contact(USER_ID);
add_name.setText(c.getName());
add_email.setText(c.getEmail());
// dbHandler.close();
}
add_email.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
Is_Valid_Email(add_email);
}
});
add_name.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
Is_Valid_Person_Name(add_name);
}
});
// imageDetail = (ImageView) findViewById(R.id.imageView);
// Intent intnt = getIntent();
// theImage = (Bitmap) intnt.getParcelableExtra("imagename");
// imageId = intnt.getIntExtra("imageid", 20);
// Log.d("Image ID:****", String.valueOf(imageId));
// imageDetail.setImageBitmap(theImage);
add_save_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// check the value state is null or not
if (valid_name != null && valid_email != null && valid_name.length() != 0 && valid_email.length() != 0) {
dbHandler.Add_Contact(new Contact(valid_name, valid_email));
Toast_msg = "Data Inserted Successfully";
Show_Toast(Toast_msg);
Reset_Text();
}
}
});
update_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
valid_name = add_name.getText().toString();
valid_email = add_email.getText().toString();
// check the value state is null or not
if (valid_name != null && valid_email != null && valid_name.length() != 0 && valid_email.length() != 0) {
dbHandler.Update_Contact(new Contact(USER_ID, valid_name, valid_email));
dbHandler.close();
Toast_msg = "Data Updated Successfully";
Show_Toast(Toast_msg);
Reset_Text();
} else {
Toast_msg = "Sorry some fields are Missing.\nPlease fill up them.";
Show_Toast(Toast_msg);
}
}
});
update_view_all.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// After Making necesssary updates we Return to MainActivity
Intent view_user = new Intent(Add_Update_User.this, MainActivity.class);
view_user.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(view_user);
finish();
}
});
add_view_all.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent view_user = new Intent(Add_Update_User.this, MainActivity.class);
view_user.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(view_user);
finish();
}
});
}
public void Set_Add_Update_Screen() {
add_name = (EditText) findViewById(R.id.add_name);
add_email = (EditText) findViewById(R.id.add_email);
add_save_btn = (Button) findViewById(R.id.add_save_btn);
update_btn = (Button) findViewById(R.id.update_btn);
add_view_all = (Button) findViewById(R.id.add_view_all);
update_view_all = (Button) findViewById(R.id.update_view_all);
add_view = (LinearLayout) findViewById(R.id.add_view);
update_view = (LinearLayout) findViewById(R.id.update_view);
add_view.setVisibility(View.GONE);
update_view.setVisibility(View.GONE);
}
public void Is_Valid_Email(EditText edt) {
if (edt.getText().toString() == null) {
edt.setError("Invalid Email Address");
valid_email = null;
} else if (isEmailValid(edt.getText().toString()) == false) {
edt.setError("Invalid Email Address");
valid_email = null;
} else {
valid_email = edt.getText().toString();
}
}
boolean isEmailValid(CharSequence email) {
return android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches();
} // end of email matcher
public void Is_Valid_Person_Name(EditText edt) throws NumberFormatException {
if (edt.getText().toString().length() <= 0) {
edt.setError("Accept Alphabets Only.");
valid_name = null;
} else if (!edt.getText().toString().matches("[a-zA-Z ]+")) {
edt.setError("Only Alphabets Allowed!");
valid_name = null;
} else {
valid_name = edt.getText().toString();
}
}
public void Show_Toast(String msg) {
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
}
public void Reset_Text() {
add_name.getText().clear();
add_email.getText().clear();
}
}


Step 4 : MainActivity:
package com.blogspot.dbh4ck.sqlite_demo_db;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends Activity {
private Boolean exit = false;
Button add_btn;
ListView Contact_listview;
ArrayList<Contact> contact_data = new ArrayList<Contact>();
Contact_Adapter cAdapter;
DatabaseHandler db;
String Toast_msg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
Contact_listview = (ListView) findViewById(R.id.list);
Contact_listview.setItemsCanFocus(false);
add_btn = (Button) findViewById(R.id.add_btn);
Set_Referash_Data();
} catch (Exception e) {
// TODO: handle exception
Log.e("some error", "" + e);
}
add_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent add_user = new Intent(MainActivity.this, Add_Update_User.class);
add_user.putExtra("called", "add");
add_user.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(add_user);
finish();
}
});
}
public void Set_Referash_Data() {
contact_data.clear();
db = new DatabaseHandler(this);
ArrayList<Contact> contact_array_from_db = db.Get_Contacts();
for (int i = 0; i < contact_array_from_db.size(); i++) {
int tidno = contact_array_from_db.get(i).getID();
String name = contact_array_from_db.get(i).getName();
String email = contact_array_from_db.get(i).getEmail();
// byte[] image = contact_array_from_db.get(i).getImage();
Contact cnt = new Contact();
cnt.setID(tidno);
cnt.setName(name);
cnt.setEmail(email);
// cnt.setImage(image);
contact_data.add(cnt);
}
db.close();
cAdapter = new Contact_Adapter(MainActivity.this, R.layout.listview_row, contact_data);
Contact_listview.setAdapter(cAdapter);
cAdapter.notifyDataSetChanged();
}
public void Show_Toast(String msg) {
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
Set_Referash_Data();
}
@Override
public void onBackPressed()
{
// super.onBackPressed();
if(exit){
finish();
}
else{
Toast.makeText(this, "Press Back Again To Exit" , Toast.LENGTH_SHORT).show();
exit = true;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent dbdito = new Intent(Intent.ACTION_MAIN);
dbdito.addCategory(Intent.CATEGORY_HOME);
dbdito.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dbdito);
}
}, 1000);
}
}
public class Contact_Adapter extends ArrayAdapter<Contact> {
Context context;
int layoutResourceId;
Contact user;
ArrayList<Contact> data = new ArrayList<Contact>();
public Contact_Adapter(Context context, int layoutResourceId, ArrayList<Contact> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
notifyDataSetChanged();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
UserHolder holder = null;
if (row == null) {
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new UserHolder();
holder.name = (TextView) row.findViewById(R.id.user_name_txt);
holder.email = (TextView) row.findViewById(R.id.user_email_txt);
holder.edit = (Button) row.findViewById(R.id.btn_update);
holder.delete = (Button) row.findViewById(R.id.btn_delete);
row.setTag(holder);
} else {
holder = (UserHolder) row.getTag();
}
user = data.get(position);
holder.edit.setTag(user.getID());
holder.delete.setTag(user.getID());
holder.name.setText(user.getName());
holder.email.setText(user.getEmail());
holder.edit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("Edit Button Clicked", "**********");
Intent update_user = new Intent(context, Add_Update_User.class);
update_user.putExtra("called", "update");
update_user.putExtra("USER_ID", v.getTag().toString());
context.startActivity(update_user);
}
});
holder.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
// TODO Auto-generated method stub
// show a message while loader is loading
AlertDialog.Builder adb = new AlertDialog.Builder(context);
adb.setTitle("Delete?");
adb.setMessage("Are you sure you want to delete");
final int user_id = Integer.parseInt(v.getTag().toString());
adb.setNegativeButton("Cancel", null);
adb.setPositiveButton("Ok", new AlertDialog.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// MyDataObject.remove(positionToRemove);
DatabaseHandler dBHandler = new DatabaseHandler(context.getApplicationContext());
dBHandler.Delete_Contact(user_id);
Toast.makeText(getApplicationContext(), "Deleted!", Toast.LENGTH_LONG).show();
// MainActivity
MainActivity.this.onResume();
}
});
adb.show();
}
});
return row;
}
class UserHolder {
TextView name;
TextView email;
Button edit;
Button delete;
}
}
}
view raw Main.java hosted with ❤ by GitHub

Wednesday, 2 March 2016

Nimbuzz Android MUC Bot Coded in Java using PURE JAVA SMACK 4.1.4 API



All Available Features in MUC Bot:

- mem user
- kick user
- ban user (ipban user)
- grant mod., admin, owner
- add bot commander
- remove bot commander
- users greeting., etc

Requirements:

- Android 4.0.4 (Ice Cream Sandwich) or Above

Download

Download Full Source Code Available on my Github
STEP 1 : Add following dependencies in app-level build.gradle

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'org.igniterealtime.smack:smack-android:4.1.4'
compile 'org.igniterealtime.smack:smack-tcp:4.1.4'
compile 'org.igniterealtime.smack:smack-extensions:4.1.4'
compile 'de.greenrobot:eventbus:2.4.0'
compile 'com.android.support:recyclerview-v7:23.1.1'
}

STEP 2 : Create a singleton class for making AbstractXMPPConnection universal throughout app
package example.com.db.nimbuzz_banbot_android_by_db;
import org.jivesoftware.smack.AbstractXMPPConnection;
/**
* Created by DB on 04-02-2016.
*/
public class XMPPLogic {
public static AbstractXMPPConnection connection = null;
private static XMPPLogic ourInstance = null;
public synchronized static XMPPLogic getInstance() {
if(ourInstance == null){
ourInstance = new XMPPLogic();
}
return ourInstance;
}
public AbstractXMPPConnection getConnection()
{
return this.connection;
}
public XMPPLogic() {
}
public void setConnection(AbstractXMPPConnection connection) {
this.connection = connection;
}
}
view raw XMPPLogic.java hosted with ❤ by GitHub


STEP 3 : Create a New Service class for creating xmpp connection to the server and connection Listener to handle connection state & other xmpp basic capabilities on Service Create and run this service in Foregroung as well:
package example.com.db.nimbuzz_banbot_android_by_db;
import android.app.Service;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.util.Log;
import android.widget.Toast;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.ConnectionListener;
import org.jivesoftware.smack.SmackException;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smack.tcp.XMPPTCPConnection;
import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;
import org.jivesoftware.smackx.ping.PingFailedListener;
import org.jivesoftware.smackx.ping.PingManager;
import java.io.IOException;
public class dbXMPPConn extends Service {
private PingManager pingManager;
private static final String TAG = "ConnectXmpp";
private static final String DOMAIN = "nimbuzz.com";
private static final String HOST = "o.nimbuzz.com";
private static final int PORT = 5222;
private String userName ="";
private String passWord = "";
XMPPConnectionListener connectionListener = new XMPPConnectionListener();
public static boolean connected = false;
public static boolean isToasted = true;
public static boolean chat_created = true;
public dbXMPPConn() {
}
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
if(intent != null){
userName = intent.getStringExtra("user");
passWord = intent.getStringExtra("pwd");
dbcon.init(userName, passWord);
dbcon.connectConnection();
}
return 0;
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onDestroy() {
dbcon.disconnectConnection();
super.onDestroy();
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
private dbXMPP dbcon = new dbXMPP();
public class dbXMPP{
public void init(final String userName, final String passWord) {
Log.i("dbXMPP", "Initializing!");
XMPPTCPConnectionConfiguration.Builder configBuilder = XMPPTCPConnectionConfiguration.builder();
configBuilder.setUsernameAndPassword(userName, passWord);
configBuilder.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
configBuilder.setResource("dbanbot-4droid-coded-by-db~");
configBuilder.setServiceName(DOMAIN);
configBuilder.setHost(HOST);
configBuilder.setPort(PORT);
XMPPLogic.connection = new XMPPTCPConnection(configBuilder.build());
XMPPLogic.connection.addConnectionListener(connectionListener);
}
public void connectConnection() {
AsyncTask<Void, Void, Boolean> connectionThread = new AsyncTask<Void, Void, Boolean>() {
@Override
protected Boolean doInBackground(Void... arg0) {
// Create a connection
try {
XMPPLogic.connection.connect();
login();
connected = true;
} catch (IOException e) {
} catch (SmackException e) {
} catch (XMPPException e) {
}
return null;
}
};
connectionThread.execute();
}
public void disconnectConnection() {
new Thread(new Runnable() {
@Override
public void run() {
XMPPLogic.connection.disconnect();
}
}).start();
}
}
private void sendping() throws InterruptedException {
pingManager = PingManager.getInstanceFor(XMPPLogic.connection);
pingManager.setPingInterval(10);
pingManager.registerPingFailedListener(new PingFailedListener() {
@Override
public void pingFailed() {
pingManager.setPingInterval(10);
}
});
}
private boolean loggedin = true;
public void login() {
try {
XMPPLogic.connection.login(userName, passWord);
//connection.login(userName, passWord);
} catch (XMPPException | SmackException | IOException e) {
e.printStackTrace();
} catch (Exception e) {
loggedin = false;
chat_created = false;
}
if (!loggedin)
{
Log.e(TAG, "Unable to login");
disconnect();
loggedin = true;
}
else {
Log.e(TAG, "Logged in");
}
}
private void disconnect() {
if(XMPPLogic.connection != null && XMPPLogic.connection.isConnected()) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
XMPPLogic.connection.disconnect();
Log.e(TAG, "Connection disconnected");
return null;
}
}.execute();
}
}
public void setPresence() throws SmackException.NotConnectedException {
Presence dbpres = new Presence(Presence.Type.available);
dbpres.setMode(Presence.Mode.dnd);
dbpres.setStatus("Nimbuzz Login SMACK XMPP Android Coded By DB~@NC");
XMPPLogic.connection.sendStanza(dbpres);
}
// Connection Listener to check connection state
public class XMPPConnectionListener implements ConnectionListener {
@Override
public void connected(final XMPPConnection connection) {
Log.d("dbXMPP", "Connected!");
connected = true;
if (!connection.isAuthenticated()) {
login();
}
}
@Override
public void connectionClosed() {
if (isToasted)
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Connection Closed!" , Toast.LENGTH_SHORT).show();
}
});
Log.d("dbXMPP", "Connection Closed!");
connected = false;
chat_created = false;
loggedin = false;
}
@Override
public void connectionClosedOnError(Exception arg0) {
if (isToasted)
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Connection Closed On Error", Toast.LENGTH_SHORT).show();
}
});
Log.d("dbXMPP", "ConnectionClosedOn Error!");
connected = false;
chat_created = false;
loggedin = false;
}
@Override
public void reconnectingIn(int arg0) {
Log.d("dbXMPP", "Reconnecting " + arg0);
loggedin = false;
}
@Override
public void reconnectionFailed(Exception arg0) {
if (isToasted)
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "Re-Connection Failed", Toast.LENGTH_SHORT).show();
}
});
Log.d("dbXMPP", "ReconnectionFailed!");
connected = false;
chat_created = false;
loggedin = false;
}
@Override
public void reconnectionSuccessful() {
if (isToasted)
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Re-Connected!", Toast.LENGTH_SHORT).show();
}
});
Log.d("dbXMPP", "ReconnectionSuccessful");
connected = true;
chat_created = false;
loggedin = false;
}
@Override
public void authenticated(XMPPConnection arg0, boolean arg1) {
Log.d("dbXMPP", "Authenticated!");
loggedin = true;
//xmppClient.dbhere();
chat_created = true;
if (isToasted)
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Logged In Successfully", Toast.LENGTH_SHORT).show();
try {
setPresence();
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
}
// conference();
Intent dbint = new Intent(dbXMPPConn.this, BotMainTabActivity.class);
dbint.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dbint);
try {
sendping();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
}
}
view raw dbXMPPConn.java hosted with ❤ by GitHub

Tuesday, 9 February 2016

Nimbuzz Android App with TabView XMPP Client Demo Using SMACK API (Pure JAVA Lib.)






Requirements:   -- Android Studio 1.5 or Later
               -- smack-core-4.1.4.jar
            -- smack-im-4.1.4.jar
                          -- smack-extensions-4.1.4.jar  
              -- smack-tcp-4.1.4.jar 


package com.example.db.nimbuzz_app_tabview_by_db;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
public class DbMainTabActivity extends AppCompatActivity {
private Handler handler = new Handler();
private dbDialog InfoDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_db_main_tab);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.addTab(tabLayout.newTab().setText("Profile"));
tabLayout.addTab(tabLayout.newTab().setText("Contacts"));
tabLayout.addTab(tabLayout.newTab().setText("Chats"));
tabLayout.addTab(tabLayout.newTab().setText("Rooms"));
tabLayout.addTab(tabLayout.newTab().setText("About"));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
final ViewPager viewPager = (ViewPager) findViewById(R.id.container);
PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
// Dialog for getting the xmpp settings
InfoDialog = new dbDialog(this);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Snackbar.make(view, "Coded By Db~@NC", Snackbar.LENGTH_LONG)
//.setAction("Action", null).show();
//Toast.makeText(DbMainTabActivity.this,"Coded By Db~@NC", Toast.LENGTH_LONG).show();
handler.post(new Runnable() {
@Override
public void run() {
InfoDialog.show();
}
});
}
});
}
@Override
protected void onStart() {
super.onStart();
inst = this;
}
private static DbMainTabActivity inst;
public static Activity instance() {
return inst;
}
public class PagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;
public PagerAdapter(FragmentManager fm, int NumOfTabs) {
super(fm);
this.mNumOfTabs = NumOfTabs;
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
ProfileFragment tab1 = new ProfileFragment();
return tab1;
case 1:
ContactsFragment tab2 = new ContactsFragment();
return tab2;
case 2:
RealFragment tab3 = new RealFragment();
return tab3;
case 3:
conferenceFragment tab4 = new conferenceFragment();
return tab4;
case 4:
AboutDbFragment tab5 = new AboutDbFragment();
return tab5;
default:
return null;
}
}
@Override
public int getCount() {
return mNumOfTabs;
}
}


package com.example.db.nimbuzz_app_tabview_by_db;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smack.roster.Roster;
import org.jivesoftware.smack.roster.RosterEntry;
import org.jivesoftware.smack.roster.RosterListener;
import java.util.ArrayList;
import java.util.Collection;
public class ContactsFragment extends ListFragment{
Presence presence;
public ContactsFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
String[] FriendList;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if(XMPPLogic.connection.isConnected() && XMPPLogic.connection.isAuthenticated()){
notifyRosterChanged();
Roster roster = Roster.getInstanceFor(XMPPLogic.connection);
final ArrayList<String> userlist = new ArrayList<String>();
for (RosterEntry entry : roster.getEntries() ) {
userlist.add(entry.getUser());
}
String[] mylist = new String[userlist.size()];
for (int i = 0; i < userlist.size(); i++) {
mylist[i] = userlist.get(i);
}
FriendList = mylist;
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, FriendList);
setListAdapter(adapter);
return super.onCreateView(inflater, container, savedInstanceState);
}
private void notifyRosterChanged() {
Roster roster = Roster.getInstanceFor(XMPPLogic.connection);
roster.addRosterListener(new RosterListener() {
@Override
public void entriesAdded(Collection<String> addresses) {
}
@Override
public void entriesUpdated(Collection<String> addresses) {
}
@Override
public void entriesDeleted(Collection<String> addresses) {
}
@Override
public void presenceChanged(Presence presence) {
// DB~@NC WAS ONLINE
}
});
}
@Override
public void onListItemClick(ListView l, View view, int position, long id) {
// Toast.makeText(getActivity(), "Item:" + position, Toast.LENGTH_SHORT).show();
//FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
//transaction.replace(R.id.fragment_container, new ChatsFragment());
//transaction.addToBackStack(null);
//transaction.commit();
}
}


<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.example.db.nimbuzz_app_tabview_by_db.DbMainTabActivity">
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#bababa" />
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below ="@+id/toolbar" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:layout_below ="@+id/tabs" />
<include layout="@layout/content_db_main_tab" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|end"
android:layout_margin="@dimen/fab_margin"
android:src="@android:drawable/ic_dialog_info"
android:clickable="true"
/>
</android.support.design.widget.CoordinatorLayout>