mirror of
https://github.com/moparisthebest/Yaaic
synced 2024-11-25 10:22:16 -05:00
initial
This commit is contained in:
commit
d451e9dd28
7
.classpath
Normal file
7
.classpath
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" path="src"/>
|
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
||||
<classpathentry kind="lib" path="lib/pircbot.jar"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
33
.project
Normal file
33
.project
Normal file
@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>Yaaic2</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
29
AndroidManifest.xml
Normal file
29
AndroidManifest.xml
Normal file
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.yaaic.client"
|
||||
android:versionCode="1" android:versionName="0.1.0">
|
||||
<application android:icon="@drawable/icon" android:label="@string/app_name" android:name="YaaicApplication">
|
||||
<activity android:name=".ServerList"
|
||||
android:label="@string/app_name">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name=".ServerAdd"
|
||||
android:label="@string/server_add_title">
|
||||
</activity>
|
||||
<activity android:name=".Settings"
|
||||
android:label="@string/settings_title">
|
||||
</activity>
|
||||
<activity android:name=".About"
|
||||
android:label="@string/about_title"
|
||||
android:theme="@android:style/Theme.Dialog" >
|
||||
</activity>
|
||||
<activity android:name=".ServerWindow"
|
||||
android:label="ServerWindow">
|
||||
</activity>
|
||||
<service android:name=".YaaicService"/>
|
||||
</application>
|
||||
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
|
||||
</manifest>
|
BIN
bin/Yaaic2.apk
Normal file
BIN
bin/Yaaic2.apk
Normal file
Binary file not shown.
BIN
bin/classes.dex
Normal file
BIN
bin/classes.dex
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/About.class
Normal file
BIN
bin/org/yaaic/client/About.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/R$array.class
Normal file
BIN
bin/org/yaaic/client/R$array.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/R$attr.class
Normal file
BIN
bin/org/yaaic/client/R$attr.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/R$drawable.class
Normal file
BIN
bin/org/yaaic/client/R$drawable.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/R$id.class
Normal file
BIN
bin/org/yaaic/client/R$id.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/R$layout.class
Normal file
BIN
bin/org/yaaic/client/R$layout.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/R$menu.class
Normal file
BIN
bin/org/yaaic/client/R$menu.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/R$string.class
Normal file
BIN
bin/org/yaaic/client/R$string.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/R$xml.class
Normal file
BIN
bin/org/yaaic/client/R$xml.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/R.class
Normal file
BIN
bin/org/yaaic/client/R.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/ServerAdd.class
Normal file
BIN
bin/org/yaaic/client/ServerAdd.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/ServerList$1.class
Normal file
BIN
bin/org/yaaic/client/ServerList$1.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/ServerList.class
Normal file
BIN
bin/org/yaaic/client/ServerList.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/ServerWindow.class
Normal file
BIN
bin/org/yaaic/client/ServerWindow.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/ServerWindowListAdapter.class
Normal file
BIN
bin/org/yaaic/client/ServerWindowListAdapter.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/Settings.class
Normal file
BIN
bin/org/yaaic/client/Settings.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/YaaicApplication.class
Normal file
BIN
bin/org/yaaic/client/YaaicApplication.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/db/ChannelConstants.class
Normal file
BIN
bin/org/yaaic/client/db/ChannelConstants.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/db/IdentityConstants.class
Normal file
BIN
bin/org/yaaic/client/db/IdentityConstants.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/db/ServerConstants.class
Normal file
BIN
bin/org/yaaic/client/db/ServerConstants.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/db/ServerDatabase.class
Normal file
BIN
bin/org/yaaic/client/db/ServerDatabase.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/irc/ChannelBuffer.class
Normal file
BIN
bin/org/yaaic/client/irc/ChannelBuffer.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/irc/IrcBinder$1.class
Normal file
BIN
bin/org/yaaic/client/irc/IrcBinder$1.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/irc/IrcBinder.class
Normal file
BIN
bin/org/yaaic/client/irc/IrcBinder.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/irc/IrcServer.class
Normal file
BIN
bin/org/yaaic/client/irc/IrcServer.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/irc/IrcService.class
Normal file
BIN
bin/org/yaaic/client/irc/IrcService.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/irc/MessageBuffer.class
Normal file
BIN
bin/org/yaaic/client/irc/MessageBuffer.class
Normal file
Binary file not shown.
BIN
bin/org/yaaic/client/irc/ServerBuffer.class
Normal file
BIN
bin/org/yaaic/client/irc/ServerBuffer.class
Normal file
Binary file not shown.
BIN
bin/resources.ap_
Normal file
BIN
bin/resources.ap_
Normal file
Binary file not shown.
62
lib/.svn/entries
Normal file
62
lib/.svn/entries
Normal file
@ -0,0 +1,62 @@
|
||||
9
|
||||
|
||||
dir
|
||||
4
|
||||
svn://svn.pocmo.de/yaaic/lib
|
||||
svn://svn.pocmo.de/yaaic
|
||||
|
||||
|
||||
|
||||
2009-03-08T17:11:52.298008Z
|
||||
1
|
||||
pocmo
|
||||
|
||||
|
||||
svn:special svn:externals svn:needs-lock
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
a7894ac8-149d-4e17-93c0-b356fc648384
|
||||
|
||||
pircbot.jar
|
||||
file
|
||||
|
||||
|
||||
|
||||
|
||||
2009-03-08T17:14:26.000000Z
|
||||
24c1232877573f3e8291803a7b8a7d79
|
||||
2009-03-08T17:11:52.298008Z
|
||||
1
|
||||
pocmo
|
||||
has-props
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
76667
|
||||
|
1
lib/.svn/format
Normal file
1
lib/.svn/format
Normal file
@ -0,0 +1 @@
|
||||
9
|
5
lib/.svn/prop-base/pircbot.jar.svn-base
Normal file
5
lib/.svn/prop-base/pircbot.jar.svn-base
Normal file
@ -0,0 +1,5 @@
|
||||
K 13
|
||||
svn:mime-type
|
||||
V 24
|
||||
application/octet-stream
|
||||
END
|
BIN
lib/.svn/text-base/pircbot.jar.svn-base
Normal file
BIN
lib/.svn/text-base/pircbot.jar.svn-base
Normal file
Binary file not shown.
BIN
lib/pircbot.jar
Normal file
BIN
lib/pircbot.jar
Normal file
Binary file not shown.
BIN
res/drawable/add.png
Normal file
BIN
res/drawable/add.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 733 B |
BIN
res/drawable/icon.png
Normal file
BIN
res/drawable/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.1 KiB |
BIN
res/drawable/settings.png
Normal file
BIN
res/drawable/settings.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 865 B |
35
res/layout/about.xml
Normal file
35
res/layout/about.xml
Normal file
@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:orientation="vertical">
|
||||
<ScrollView
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:padding="10dip">
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/about_text"
|
||||
android:autoLink="all"
|
||||
android:clickable="true"
|
||||
android:linksClickable="true"/>
|
||||
</ScrollView>
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Homepage"
|
||||
android:layout_weight="1" />
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Donate"
|
||||
android:layout_weight="1" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
33
res/layout/main.xml
Normal file
33
res/layout/main.xml
Normal file
@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="#FF333333"
|
||||
android:padding="5px">
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Yaaic"
|
||||
android:textSize="22px" />
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Yet Another Android IRC Client"
|
||||
android:paddingLeft="10px"/>
|
||||
</LinearLayout>
|
||||
<ListView
|
||||
android:id="@android:id/list"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1" />
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content">
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
61
res/layout/serveradd.xml
Normal file
61
res/layout/serveradd.xml
Normal file
@ -0,0 +1,61 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ScrollView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
<TextView
|
||||
android:text="Title:"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
<EditText
|
||||
android:id="@+id/server_title"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
<TextView
|
||||
android:text="Host:"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
<EditText
|
||||
android:id="@+id/server_host"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
<TextView
|
||||
android:text="Port:"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
<EditText
|
||||
android:id="@+id/server_port"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="6667" />
|
||||
<TextView
|
||||
android:text="Password:"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
<EditText
|
||||
android:id="@+id/server_password"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
<CheckBox
|
||||
android:id="@+id/server_autoconnect"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Auto connect on startup" />
|
||||
<CheckBox
|
||||
android:id="@+id/server_usessl"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Use SSL" />
|
||||
<Button
|
||||
android:id="@+id/server_add"
|
||||
android:drawableLeft="@android:drawable/ic_input_add"
|
||||
android:drawablePadding="3px"
|
||||
android:text="Add to list"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
41
res/layout/serveritem.xml
Normal file
41
res/layout/serveritem.xml
Normal file
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal" android:padding="3px">
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:drawableLeft="@android:drawable/presence_away"
|
||||
android:layout_margin="5px"
|
||||
android:drawablePadding="5px"
|
||||
android:text="" />
|
||||
<!-- <RadioButton
|
||||
android:id="@+id/server_checkbox"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="fill_parent"
|
||||
android:layout_marginRight="5px"/>
|
||||
-->
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
<TextView
|
||||
android:id="@+id/server_title"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Title"
|
||||
android:textSize="22px"/>
|
||||
<TextView
|
||||
android:id="@+id/server_host"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Host" />
|
||||
<TextView
|
||||
android:id="@+id/server_channels"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="Channels" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
37
res/layout/serverwindow.xml
Normal file
37
res/layout/serverwindow.xml
Normal file
@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:orientation="vertical">
|
||||
<TextView
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/server_title"
|
||||
android:text=""
|
||||
android:textSize="22px"
|
||||
android:drawableLeft="@android:drawable/presence_away"
|
||||
android:padding="5px"
|
||||
android:drawablePadding="5px"
|
||||
android:background="#FF333333" />
|
||||
<ExpandableListView
|
||||
android:id="@android:id/list"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
<ScrollView
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:background="#FF333333"
|
||||
android:padding="5px">
|
||||
<TextView
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/server_log"
|
||||
android:text="Connecting..." />
|
||||
</ScrollView>
|
||||
<EditText
|
||||
android:id="@+id/server_input"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
15
res/menu/main.xml
Normal file
15
res/menu/main.xml
Normal file
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:id="@+id/server_add"
|
||||
android:title="Add Server"
|
||||
android:icon="@android:drawable/ic_menu_add" />
|
||||
<item
|
||||
android:id="@+id/settings"
|
||||
android:title="Settings"
|
||||
android:icon="@android:drawable/ic_menu_preferences" />
|
||||
<item
|
||||
android:id="@+id/about"
|
||||
android:title="About"
|
||||
android:icon="@android:drawable/ic_menu_help" />
|
||||
</menu>
|
7
res/menu/server.xml
Normal file
7
res/menu/server.xml
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:id="@+id/server_quit"
|
||||
android:title="Quit"
|
||||
android:icon="@android:drawable/ic_menu_close_clear_cancel" />
|
||||
</menu>
|
9
res/values/array.xml
Normal file
9
res/values/array.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<array name="server_popup">
|
||||
<item>Connect</item>
|
||||
<!-- <item>Edit</item> -->
|
||||
<item>Delete</item>
|
||||
<item>Disconnect</item>
|
||||
</array>
|
||||
</resources>
|
25
res/values/strings.xml
Normal file
25
res/values/strings.xml
Normal file
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_name">Yaaic</string>
|
||||
|
||||
<string name="server_add_title">Yaaic: New Server</string>
|
||||
<string name="settings_title">Yaaic: Settings</string>
|
||||
<string name="about_title">About Yaaic</string>
|
||||
|
||||
<string name="about_text">\
|
||||
Yaaic 0.1\n\
|
||||
Yet Another Android IRC Client\n\
|
||||
Sebastian Kaspari\n\
|
||||
http://www.yaaic.org\n\
|
||||
\n\
|
||||
Yaaic is free and will remain free! If you like Yaaic you can support Yaaic by donating a small amount. :)\n\
|
||||
\n\
|
||||
Thanks to:\n\
|
||||
- Bonko -\n\
|
||||
For Beta-Testing and Reporting Bugs\n\
|
||||
\n\
|
||||
- Paul Mutton -\n\
|
||||
For the awesome PircBot IRC API\n\
|
||||
</string>
|
||||
|
||||
</resources>
|
64
res/xml/settings.xml
Normal file
64
res/xml/settings.xml
Normal file
@ -0,0 +1,64 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<PreferenceCategory
|
||||
android:title="Chat">
|
||||
<EditTextPreference
|
||||
android:key="foreground_color"
|
||||
android:title="Foreground color"
|
||||
android:summary="Color of the text"
|
||||
android:defaultValue="#ffffff" />
|
||||
<EditTextPreference
|
||||
android:key="background_color"
|
||||
android:title="Background color"
|
||||
android:summary="Color of the background"
|
||||
android:defaultValue="#000000" />
|
||||
<CheckBoxPreference
|
||||
android:key="strip_mirc_colors"
|
||||
android:title="Strip mIRC colors"
|
||||
android:summary="Strip colors used by mIRC"
|
||||
android:defaultValue="true" />
|
||||
<ListPreference
|
||||
android:key="font_size"
|
||||
android:title="Font size"
|
||||
android:summary="Size of the font" />
|
||||
<CheckBoxPreference
|
||||
android:key="show_colors"
|
||||
android:title="Show colors"
|
||||
android:summary="Use colors to highlight special events"
|
||||
android:defaultValue="true" />
|
||||
<CheckBoxPreference
|
||||
android:key="show_smileys"
|
||||
android:title="Show Smileys"
|
||||
android:summary="Show smiley icons instead of text"
|
||||
android:defaultValue="true" />
|
||||
<CheckBoxPreference
|
||||
android:key="show_icons"
|
||||
android:title="Show Icons"
|
||||
android:summary="Show icons to highlight special events"
|
||||
android:defaultValue="true" />
|
||||
<CheckBoxPreference
|
||||
android:key="show_timestamp"
|
||||
android:title="Show timestamp"
|
||||
android:summary="Show timestamp in front of messages"
|
||||
android:defaultValue="false" />
|
||||
<EditTextPreference
|
||||
android:key="timestamp_format"
|
||||
android:title="Timestamp format"
|
||||
android:summary="Format of the timestamp"
|
||||
android:defaultValue="[H:i]"
|
||||
android:dependency="show_timestamp"
|
||||
android:layout="?android:attr/preferenceLayoutChild" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory
|
||||
android:title="Misc">
|
||||
<ListPreference
|
||||
android:key="language"
|
||||
android:title="Language"
|
||||
android:summary="Select language" />
|
||||
<CheckBoxPreference
|
||||
android:key="log_sdcard"
|
||||
android:title="Log on SD Card"
|
||||
android:summary="Save logs on SD Card in /yaaic/logs/"
|
||||
android:defaultValue="false" />
|
||||
</PreferenceCategory>
|
||||
</PreferenceScreen>
|
14
src/org/yaaic/client/About.java
Normal file
14
src/org/yaaic/client/About.java
Normal file
@ -0,0 +1,14 @@
|
||||
package org.yaaic.client;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
|
||||
public class About extends Activity
|
||||
{
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.about);
|
||||
}
|
||||
}
|
57
src/org/yaaic/client/R.java
Normal file
57
src/org/yaaic/client/R.java
Normal file
@ -0,0 +1,57 @@
|
||||
/* AUTO-GENERATED FILE. DO NOT MODIFY.
|
||||
*
|
||||
* This class was automatically generated by the
|
||||
* aapt tool from the resource data it found. It
|
||||
* should not be modified by hand.
|
||||
*/
|
||||
|
||||
package org.yaaic.client;
|
||||
|
||||
public final class R {
|
||||
public static final class array {
|
||||
public static final int server_popup=0x7f050000;
|
||||
}
|
||||
public static final class attr {
|
||||
}
|
||||
public static final class drawable {
|
||||
public static final int add=0x7f020000;
|
||||
public static final int icon=0x7f020001;
|
||||
public static final int settings=0x7f020002;
|
||||
}
|
||||
public static final class id {
|
||||
public static final int about=0x7f08000b;
|
||||
public static final int server_add=0x7f080006;
|
||||
public static final int server_autoconnect=0x7f080004;
|
||||
public static final int server_channels=0x7f080007;
|
||||
public static final int server_host=0x7f080001;
|
||||
public static final int server_input=0x7f080009;
|
||||
public static final int server_log=0x7f080008;
|
||||
public static final int server_password=0x7f080003;
|
||||
public static final int server_port=0x7f080002;
|
||||
public static final int server_quit=0x7f08000c;
|
||||
public static final int server_title=0x7f080000;
|
||||
public static final int server_usessl=0x7f080005;
|
||||
public static final int settings=0x7f08000a;
|
||||
}
|
||||
public static final class layout {
|
||||
public static final int about=0x7f030000;
|
||||
public static final int main=0x7f030001;
|
||||
public static final int serveradd=0x7f030002;
|
||||
public static final int serveritem=0x7f030003;
|
||||
public static final int serverwindow=0x7f030004;
|
||||
}
|
||||
public static final class menu {
|
||||
public static final int main=0x7f070000;
|
||||
public static final int server=0x7f070001;
|
||||
}
|
||||
public static final class string {
|
||||
public static final int about_text=0x7f060004;
|
||||
public static final int about_title=0x7f060003;
|
||||
public static final int app_name=0x7f060000;
|
||||
public static final int server_add_title=0x7f060001;
|
||||
public static final int settings_title=0x7f060002;
|
||||
}
|
||||
public static final class xml {
|
||||
public static final int settings=0x7f040000;
|
||||
}
|
||||
}
|
45
src/org/yaaic/client/ServerAdd.java
Normal file
45
src/org/yaaic/client/ServerAdd.java
Normal file
@ -0,0 +1,45 @@
|
||||
package org.yaaic.client;
|
||||
|
||||
import org.yaaic.client.db.ServerDatabase;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.widget.Button;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.EditText;
|
||||
|
||||
public class ServerAdd extends Activity implements OnClickListener
|
||||
{
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.serveradd);
|
||||
|
||||
Button button = (Button) findViewById(R.id.server_add);
|
||||
button.setOnClickListener(this);
|
||||
}
|
||||
|
||||
public void onClick(View v)
|
||||
{
|
||||
switch (v.getId()) {
|
||||
case R.id.server_add:
|
||||
|
||||
String title = ((EditText) findViewById(R.id.server_title)).getText().toString();
|
||||
String host = ((EditText) findViewById(R.id.server_host)).getText().toString();
|
||||
int port = Integer.parseInt(((EditText) findViewById(R.id.server_port)).getText().toString());
|
||||
String password = ((EditText) findViewById(R.id.server_password)).getText().toString();
|
||||
boolean autoConnect = ((CheckBox) findViewById(R.id.server_autoconnect)).isChecked();
|
||||
boolean useSSL = ((CheckBox) findViewById(R.id.server_usessl)).isChecked();
|
||||
|
||||
ServerDatabase db = new ServerDatabase(this);
|
||||
db.addServer(title, host, port, password, autoConnect, useSSL);
|
||||
db.close();
|
||||
|
||||
this.finish();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
243
src/org/yaaic/client/ServerList.java
Normal file
243
src/org/yaaic/client/ServerList.java
Normal file
@ -0,0 +1,243 @@
|
||||
package org.yaaic.client;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.app.ListActivity;
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.ServiceConnection;
|
||||
import android.database.Cursor;
|
||||
import android.os.Bundle;
|
||||
import android.os.IBinder;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.animation.AlphaAnimation;
|
||||
import android.view.animation.Animation;
|
||||
import android.view.animation.AnimationSet;
|
||||
import android.view.animation.LayoutAnimationController;
|
||||
import android.view.animation.TranslateAnimation;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ListView;
|
||||
import android.widget.SimpleCursorAdapter;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
import android.widget.AdapterView.OnItemLongClickListener;
|
||||
|
||||
import org.yaaic.client.db.ServerConstants;
|
||||
import org.yaaic.client.db.ServerDatabase;
|
||||
import org.yaaic.client.irc.IrcBinder;
|
||||
import org.yaaic.client.irc.IrcService;
|
||||
|
||||
public class ServerList extends ListActivity implements OnItemLongClickListener, ServiceConnection {
|
||||
public static final String TAG = "Yaaic/ServerList";
|
||||
|
||||
private ServerDatabase db;
|
||||
|
||||
private static final String[] FROM = { ServerConstants.TITLE, ServerConstants.HOST };
|
||||
private static final int[] TO = { R.id.server_title, R.id.server_host };
|
||||
|
||||
private Cursor cursor;
|
||||
private IrcBinder binder;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
Log.d(TAG, "onCreate");
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
// Start Service
|
||||
Intent serviceIntent = new Intent(this, IrcService.class);
|
||||
startService(serviceIntent);
|
||||
boolean binding = bindService(serviceIntent, this, 0);
|
||||
Log.d(TAG, "Binding to Service: " + binding);
|
||||
|
||||
setContentView(R.layout.main);
|
||||
|
||||
/*
|
||||
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
Notification notification = new Notification(R.drawable.icon, "#pocmo <Henna> Hallo Pocmo", System.currentTimeMillis());
|
||||
PendingIntent contentIntent = PendingIntent.getActivity(this, 123, new Intent(this, ServerAdd.class), 0);
|
||||
notification.setLatestEventInfo(this, "#pocmo", "<Henna> Hallo Pocmo", contentIntent);
|
||||
manager.notify(1234, notification);
|
||||
*/
|
||||
|
||||
db = new ServerDatabase(this);
|
||||
|
||||
cursor = db.getServers();
|
||||
this.startManagingCursor(cursor);
|
||||
|
||||
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.serveritem, cursor, FROM, TO);
|
||||
this.setListAdapter(adapter);
|
||||
|
||||
this.getListView().setOnItemLongClickListener(this);
|
||||
|
||||
AnimationSet set = new AnimationSet(true);
|
||||
|
||||
Animation animation = new AlphaAnimation(0.0f, 1.0f);
|
||||
animation.setDuration(100);
|
||||
set.addAnimation(animation);
|
||||
|
||||
animation = new TranslateAnimation(
|
||||
Animation.RELATIVE_TO_SELF, -1.0f,Animation.RELATIVE_TO_SELF, 0.0f,
|
||||
Animation.RELATIVE_TO_SELF, -1.0f,Animation.RELATIVE_TO_SELF, 0.0f
|
||||
);
|
||||
animation.setDuration(300);
|
||||
set.addAnimation(animation);
|
||||
|
||||
LayoutAnimationController controller =
|
||||
new LayoutAnimationController(set, 0.5f);
|
||||
ListView lv = (ListView) getListView();
|
||||
lv.setLayoutAnimation(controller);
|
||||
}
|
||||
|
||||
public void onResume()
|
||||
{
|
||||
Log.d(TAG, "onResume");
|
||||
|
||||
super.onResume();
|
||||
}
|
||||
|
||||
public void onPause()
|
||||
{
|
||||
Log.d(TAG, "onPause");
|
||||
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
public void onDestroy()
|
||||
{
|
||||
Log.d(TAG, "onDestroy");
|
||||
|
||||
super.onDestroy();
|
||||
|
||||
db.close();
|
||||
unbindService(this);
|
||||
}
|
||||
|
||||
public void onListItemClick(ListView listView, View view, int position, long id)
|
||||
{
|
||||
TextView tv = (TextView) view.findViewById(R.id.server_title);
|
||||
|
||||
Intent serverIntent = new Intent(this, ServerWindow.class);
|
||||
serverIntent.putExtra("server_title", tv.getText());
|
||||
startActivity(serverIntent);
|
||||
//Toast.makeText(this, tv.getText().toString(), Toast.LENGTH_SHORT).show();
|
||||
//db.removeServer(tv.getText().toString());
|
||||
//cursor.requery();
|
||||
}
|
||||
|
||||
public boolean onItemLongClick(AdapterView<?> av, View v, int position, long id) {
|
||||
final TextView tv = (TextView) v.findViewById(R.id.server_title);
|
||||
|
||||
new AlertDialog.Builder(this)
|
||||
.setTitle(tv.getText())
|
||||
.setItems(R.array.server_popup,
|
||||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
onServerDialogSelect(i, tv.getText().toString());
|
||||
}
|
||||
}
|
||||
).show();
|
||||
return true;
|
||||
}
|
||||
|
||||
public void onServerDialogSelect(int item, String title)
|
||||
{
|
||||
Log.d(TAG, "ServerDialogSelect: Item #" + item);
|
||||
|
||||
switch (item)
|
||||
{
|
||||
case 0: // Connect
|
||||
if (!binder.isConnected(title)) {
|
||||
connectToServer(title);
|
||||
} else {
|
||||
Toast toast = Toast.makeText(this, "You are already connected to " + title, Toast.LENGTH_SHORT);
|
||||
toast.show();
|
||||
}
|
||||
break;
|
||||
case 1: // Delete
|
||||
db.removeServer(title);
|
||||
cursor.requery();
|
||||
break;
|
||||
case 2: // Disconnect
|
||||
binder.disconnect(title);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public boolean onCreateOptionsMenu(Menu menu)
|
||||
{
|
||||
super.onCreateOptionsMenu(menu);
|
||||
MenuInflater inflater = getMenuInflater();
|
||||
inflater.inflate(R.menu.main, menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean onOptionsItemSelected(MenuItem item)
|
||||
{
|
||||
switch (item.getItemId())
|
||||
{
|
||||
case R.id.server_add:
|
||||
Intent serverAddIntent = new Intent(this, ServerAdd.class);
|
||||
startActivity(serverAddIntent);
|
||||
return true;
|
||||
case R.id.settings:
|
||||
Intent settingsIntent = new Intent(this, Settings.class);
|
||||
startActivity(settingsIntent);
|
||||
return true;
|
||||
case R.id.about:
|
||||
Intent aboutIntent = new Intent(this, About.class);
|
||||
startActivity(aboutIntent);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void onServiceConnected(ComponentName name, IBinder service)
|
||||
{
|
||||
Log.d(TAG, "Service connected");
|
||||
|
||||
binder = (IrcBinder) service;
|
||||
|
||||
// AutoConnect
|
||||
Cursor autoCursor = db.getAutoConnectServers();
|
||||
while(autoCursor.moveToNext()) {
|
||||
binder.connect(
|
||||
autoCursor.getString(autoCursor.getColumnIndex(ServerConstants.TITLE)),
|
||||
autoCursor.getString(autoCursor.getColumnIndex(ServerConstants.HOST)),
|
||||
autoCursor.getInt(autoCursor.getColumnIndex(ServerConstants.PORT)),
|
||||
autoCursor.getString(autoCursor.getColumnIndex(ServerConstants.PASSWORD))
|
||||
);
|
||||
}
|
||||
autoCursor.close();
|
||||
}
|
||||
|
||||
public void onServiceDisconnected(ComponentName name)
|
||||
{
|
||||
Log.d(TAG, "Service disconnected");
|
||||
}
|
||||
|
||||
private void connectToServer(String title)
|
||||
{
|
||||
Cursor cursor = db.getServer(title);
|
||||
if (cursor.moveToNext()) {
|
||||
binder.connect(
|
||||
cursor.getString(cursor.getColumnIndex(ServerConstants.TITLE)),
|
||||
cursor.getString(cursor.getColumnIndex(ServerConstants.HOST)),
|
||||
cursor.getInt(cursor.getColumnIndex(ServerConstants.PORT)),
|
||||
cursor.getString(cursor.getColumnIndex(ServerConstants.PASSWORD))
|
||||
);
|
||||
} else {
|
||||
Log.d(TAG, "Could not find server: " + title);
|
||||
}
|
||||
cursor.close();
|
||||
}
|
||||
}
|
115
src/org/yaaic/client/ServerWindow.java
Normal file
115
src/org/yaaic/client/ServerWindow.java
Normal file
@ -0,0 +1,115 @@
|
||||
package org.yaaic.client;
|
||||
|
||||
import org.yaaic.client.db.ServerConstants;
|
||||
import org.yaaic.client.db.ServerDatabase;
|
||||
import org.yaaic.client.irc.IrcBinder;
|
||||
import org.yaaic.client.irc.IrcService;
|
||||
|
||||
import android.app.ExpandableListActivity;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Intent;
|
||||
import android.content.ServiceConnection;
|
||||
import android.database.Cursor;
|
||||
import android.os.Bundle;
|
||||
import android.os.IBinder;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.widget.TextView;
|
||||
|
||||
public class ServerWindow extends ExpandableListActivity implements ServiceConnection
|
||||
{
|
||||
private static final String TAG = "Yaaic/ServerWindow";
|
||||
private IrcBinder binder;
|
||||
private String title;
|
||||
|
||||
public void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.serverwindow);
|
||||
|
||||
title = getIntent().getStringExtra("server_title");
|
||||
setTitle(title);
|
||||
|
||||
((TextView) findViewById(R.id.server_title)).setText(title);
|
||||
|
||||
setListAdapter(new ServerWindowListAdapter(this));
|
||||
//registerForContextMenu(getExpandableListView());
|
||||
|
||||
Intent serviceIntent = new Intent(this, IrcService.class);
|
||||
boolean binding = bindService(serviceIntent, this, 0);
|
||||
Log.d(TAG, "Binding to Service: " + binding);
|
||||
}
|
||||
|
||||
public boolean onCreateOptionsMenu(Menu menu)
|
||||
{
|
||||
super.onCreateOptionsMenu(menu);
|
||||
MenuInflater inflater = getMenuInflater();
|
||||
inflater.inflate(R.menu.server, menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean onOptionsItemSelected(MenuItem item)
|
||||
{
|
||||
switch (item.getItemId())
|
||||
{
|
||||
case R.id.server_quit:
|
||||
finish();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void onServiceConnected(ComponentName name, IBinder service)
|
||||
{
|
||||
Log.d(TAG, "Service connected");
|
||||
|
||||
binder = (IrcBinder) service;
|
||||
|
||||
ServerDatabase db = new ServerDatabase(this);
|
||||
Cursor cursor = db.getServer(title);
|
||||
if (cursor.moveToNext()) {
|
||||
binder.connect(
|
||||
cursor.getString(cursor.getColumnIndex(ServerConstants.TITLE)),
|
||||
cursor.getString(cursor.getColumnIndex(ServerConstants.HOST)),
|
||||
cursor.getInt(cursor.getColumnIndex(ServerConstants.PORT)),
|
||||
cursor.getString(cursor.getColumnIndex(ServerConstants.PASSWORD))
|
||||
);
|
||||
}
|
||||
cursor.close();
|
||||
db.close();
|
||||
|
||||
TextView tv = (TextView) findViewById(R.id.server_title);
|
||||
|
||||
if (binder.isConnected(title)) {
|
||||
tv.setCompoundDrawablesWithIntrinsicBounds(
|
||||
getResources().getDrawable(android.R.drawable.presence_online),
|
||||
null,
|
||||
null,
|
||||
null
|
||||
);
|
||||
} else {
|
||||
tv.setCompoundDrawablesWithIntrinsicBounds(
|
||||
getResources().getDrawable(android.R.drawable.presence_offline),
|
||||
null,
|
||||
null,
|
||||
null
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public void onServiceDisconnected(ComponentName name)
|
||||
{
|
||||
Log.d(TAG, "Service disconnected");
|
||||
}
|
||||
|
||||
public void onDestroy()
|
||||
{
|
||||
Log.d(TAG, "onDestroy");
|
||||
|
||||
super.onDestroy();
|
||||
|
||||
unbindService(this);
|
||||
}
|
||||
}
|
78
src/org/yaaic/client/ServerWindowListAdapter.java
Normal file
78
src/org/yaaic/client/ServerWindowListAdapter.java
Normal file
@ -0,0 +1,78 @@
|
||||
package org.yaaic.client;
|
||||
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AbsListView;
|
||||
import android.widget.BaseExpandableListAdapter;
|
||||
import android.widget.TextView;
|
||||
|
||||
public class ServerWindowListAdapter extends BaseExpandableListAdapter
|
||||
{
|
||||
private ServerWindow serverWindow;
|
||||
private String[] groups = { "Channels (0)", "Queries (0)" };
|
||||
|
||||
public ServerWindowListAdapter(ServerWindow serverWindow)
|
||||
{
|
||||
this.serverWindow = serverWindow;
|
||||
}
|
||||
|
||||
public Object getChild(int groupPosition, int childPosition) {
|
||||
return "Child";
|
||||
}
|
||||
|
||||
public long getChildId(int groupPosition, int childPosition) {
|
||||
return childPosition;
|
||||
}
|
||||
|
||||
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
|
||||
TextView textView = getGenericView();
|
||||
textView.setText(getChild(groupPosition, childPosition).toString());
|
||||
return textView;
|
||||
}
|
||||
|
||||
public int getChildrenCount(int groupPosition) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public Object getGroup(int groupPosition) {
|
||||
return groups[groupPosition];
|
||||
}
|
||||
|
||||
public int getGroupCount() {
|
||||
return groups.length;
|
||||
}
|
||||
|
||||
public long getGroupId(int groupPosition) {
|
||||
return groupPosition;
|
||||
}
|
||||
|
||||
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
|
||||
TextView textView = getGenericView();
|
||||
textView.setText(getGroup(groupPosition).toString());
|
||||
return textView;
|
||||
}
|
||||
|
||||
public boolean hasStableIds() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean isChildSelectable(int groupPosition, int childPosition) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public TextView getGenericView() {
|
||||
// Layout parameters for the ExpandableListView
|
||||
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
|
||||
ViewGroup.LayoutParams.FILL_PARENT, 64);
|
||||
|
||||
TextView textView = new TextView(serverWindow);
|
||||
textView.setLayoutParams(lp);
|
||||
// Center the text vertically
|
||||
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
|
||||
// Set the text starting position
|
||||
textView.setPadding(36, 0, 0, 0);
|
||||
return textView;
|
||||
}
|
||||
|
||||
}
|
14
src/org/yaaic/client/Settings.java
Normal file
14
src/org/yaaic/client/Settings.java
Normal file
@ -0,0 +1,14 @@
|
||||
package org.yaaic.client;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceActivity;
|
||||
|
||||
public class Settings extends PreferenceActivity
|
||||
{
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState)
|
||||
{
|
||||
super.onCreate(savedInstanceState);
|
||||
addPreferencesFromResource(R.xml.settings);
|
||||
}
|
||||
}
|
7
src/org/yaaic/client/YaaicApplication.java
Normal file
7
src/org/yaaic/client/YaaicApplication.java
Normal file
@ -0,0 +1,7 @@
|
||||
package org.yaaic.client;
|
||||
|
||||
import android.app.Application;
|
||||
|
||||
public class YaaicApplication extends Application {
|
||||
|
||||
}
|
18
src/org/yaaic/client/db/ChannelConstants.java
Normal file
18
src/org/yaaic/client/db/ChannelConstants.java
Normal file
@ -0,0 +1,18 @@
|
||||
package org.yaaic.client.db;
|
||||
|
||||
import android.provider.BaseColumns;
|
||||
|
||||
public interface ChannelConstants extends BaseColumns
|
||||
{
|
||||
public static final String TABLE_NAME = "channels";
|
||||
|
||||
public static final String NAME = "name";
|
||||
public static final String PASSWORD = "password";
|
||||
public static final String SERVER = "server";
|
||||
|
||||
public static final String[] ALL = {
|
||||
NAME,
|
||||
PASSWORD,
|
||||
SERVER
|
||||
};
|
||||
}
|
5
src/org/yaaic/client/db/IdentityConstants.java
Normal file
5
src/org/yaaic/client/db/IdentityConstants.java
Normal file
@ -0,0 +1,5 @@
|
||||
package org.yaaic.client.db;
|
||||
|
||||
public class IdentityConstants {
|
||||
|
||||
}
|
26
src/org/yaaic/client/db/ServerConstants.java
Normal file
26
src/org/yaaic/client/db/ServerConstants.java
Normal file
@ -0,0 +1,26 @@
|
||||
package org.yaaic.client.db;
|
||||
|
||||
import android.provider.BaseColumns;
|
||||
|
||||
public interface ServerConstants extends BaseColumns
|
||||
{
|
||||
public static final String TABLE_NAME = "servers";
|
||||
|
||||
public static final String TITLE = "title";
|
||||
public static final String HOST = "host";
|
||||
public static final String PORT = "port";
|
||||
public static final String PASSWORD = "password";
|
||||
public static final String AUTOCONNECT = "autoConnect";
|
||||
public static final String USE_SSL = "useSSL";
|
||||
public static final String IDENTITY = "identity";
|
||||
|
||||
public static final String[] ALL = {
|
||||
_ID,
|
||||
TITLE,
|
||||
HOST,
|
||||
PORT,
|
||||
PASSWORD,
|
||||
AUTOCONNECT,
|
||||
USE_SSL
|
||||
};
|
||||
}
|
144
src/org/yaaic/client/db/ServerDatabase.java
Normal file
144
src/org/yaaic/client/db/ServerDatabase.java
Normal file
@ -0,0 +1,144 @@
|
||||
package org.yaaic.client.db;
|
||||
|
||||
import android.content.ContentValues;
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteOpenHelper;
|
||||
|
||||
public class ServerDatabase extends SQLiteOpenHelper
|
||||
{
|
||||
private static final String DATABASE_NAME = "servers.db";
|
||||
private static final int DATABASE_VERSION = 1;
|
||||
|
||||
public ServerDatabase(Context context)
|
||||
{
|
||||
super(context, DATABASE_NAME, null, DATABASE_VERSION);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(SQLiteDatabase db)
|
||||
{
|
||||
db.execSQL("CREATE TABLE " + ServerConstants.TABLE_NAME + " ( "
|
||||
+ ServerConstants._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
|
||||
+ ServerConstants.TITLE + " TEXT NOT NULL, "
|
||||
+ ServerConstants.HOST + " TEXT NOT NULL, "
|
||||
+ ServerConstants.PORT + " INTEGER, "
|
||||
+ ServerConstants.PASSWORD + " TEXT, "
|
||||
+ ServerConstants.AUTOCONNECT + " BOOLEAN, " // XXX: Does SQLLite support boolean?
|
||||
+ ServerConstants.USE_SSL + " BOOLEAN, "
|
||||
+ ServerConstants.IDENTITY + " INTEGER"
|
||||
+ ");"
|
||||
);
|
||||
|
||||
db.execSQL("CREATE TABLE " + ChannelConstants.TABLE_NAME + " ("
|
||||
+ ChannelConstants._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
|
||||
+ ChannelConstants.NAME + " TEXT NOT NULL, "
|
||||
+ ChannelConstants.PASSWORD + " TEXT, "
|
||||
+ ChannelConstants.SERVER + " INTEGER"
|
||||
+ ");"
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
|
||||
{
|
||||
// XXX: We delete the database currently, in future we want to
|
||||
// migrate the database to the new version (add or remove rows..)
|
||||
db.execSQL("DROP TABLE IF EXISTS " + ServerConstants.TABLE_NAME + ";");
|
||||
db.execSQL("DROP TABLE IF EXISTS " + ChannelConstants.TABLE_NAME + ";");
|
||||
|
||||
onCreate(db);
|
||||
}
|
||||
|
||||
public void addServer(String title, String host, int port, String password, boolean autoConnect, boolean useSSL)
|
||||
{
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(ServerConstants.TITLE, title);
|
||||
values.put(ServerConstants.HOST, host);
|
||||
values.put(ServerConstants.PORT, port);
|
||||
values.put(ServerConstants.PASSWORD, password);
|
||||
values.put(ServerConstants.AUTOCONNECT, autoConnect);
|
||||
values.put(ServerConstants.USE_SSL, useSSL);
|
||||
|
||||
this.getWritableDatabase().insert(ServerConstants.TABLE_NAME, null, values);
|
||||
}
|
||||
|
||||
public void addChannel(int server, String name, String password)
|
||||
{
|
||||
ContentValues values = new ContentValues();
|
||||
values.put(ChannelConstants.NAME, name);
|
||||
values.put(ChannelConstants.PASSWORD, password);
|
||||
values.put(ChannelConstants.SERVER, server);
|
||||
|
||||
this.getWritableDatabase().insert(ServerConstants.TABLE_NAME, null, values);
|
||||
}
|
||||
|
||||
public Cursor getServers()
|
||||
{
|
||||
return this.getReadableDatabase().query(
|
||||
ServerConstants.TABLE_NAME,
|
||||
ServerConstants.ALL,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
ServerConstants.TITLE + " ASC"
|
||||
);
|
||||
}
|
||||
|
||||
public Cursor getAutoConnectServers()
|
||||
{
|
||||
return this.getReadableDatabase().query(
|
||||
ServerConstants.TABLE_NAME,
|
||||
ServerConstants.ALL,
|
||||
ServerConstants.AUTOCONNECT + " = 1",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
ServerConstants.TITLE + " ASC"
|
||||
);
|
||||
}
|
||||
|
||||
public Cursor getChannels()
|
||||
{
|
||||
return this.getReadableDatabase().query(
|
||||
ChannelConstants.TABLE_NAME,
|
||||
ChannelConstants.ALL,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
ChannelConstants.NAME + " ASC");
|
||||
}
|
||||
|
||||
public Cursor getChannelsByServer(int server)
|
||||
{
|
||||
return this.getReadableDatabase().query(
|
||||
ChannelConstants.TABLE_NAME,
|
||||
ChannelConstants.ALL,
|
||||
ChannelConstants.SERVER + "=" + server,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
ChannelConstants.NAME + " ASC");
|
||||
}
|
||||
|
||||
public Cursor getServer(String title)
|
||||
{
|
||||
return this.getReadableDatabase().query(
|
||||
ServerConstants.TABLE_NAME,
|
||||
ServerConstants.ALL,
|
||||
ServerConstants.TITLE + " = '" + title + "'",
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
ServerConstants.TITLE + " ASC"
|
||||
);
|
||||
}
|
||||
|
||||
public void removeServer(String title)
|
||||
{
|
||||
this.getWritableDatabase().execSQL("DELETE FROM " + ServerConstants.TABLE_NAME + " WHERE title = '" + title + "';");
|
||||
}
|
||||
}
|
5
src/org/yaaic/client/irc/ChannelBuffer.java
Normal file
5
src/org/yaaic/client/irc/ChannelBuffer.java
Normal file
@ -0,0 +1,5 @@
|
||||
package org.yaaic.client.irc;
|
||||
|
||||
public class ChannelBuffer extends MessageBuffer {
|
||||
|
||||
}
|
72
src/org/yaaic/client/irc/IrcBinder.java
Normal file
72
src/org/yaaic/client/irc/IrcBinder.java
Normal file
@ -0,0 +1,72 @@
|
||||
package org.yaaic.client.irc;
|
||||
|
||||
import android.os.Binder;
|
||||
import android.util.Log;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Sebastian Kaspari <pocmo@yaaic.org>
|
||||
*/
|
||||
public class IrcBinder extends Binder
|
||||
{
|
||||
private IrcService service;
|
||||
private String TAG = "YaaicBinder";
|
||||
|
||||
/**
|
||||
*
|
||||
* @param service
|
||||
*/
|
||||
public IrcBinder(IrcService service)
|
||||
{
|
||||
Log.d(TAG, "Binder created");
|
||||
|
||||
this.service = service;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param title
|
||||
* @param host
|
||||
* @param port
|
||||
* @param password
|
||||
*/
|
||||
public void connect(final String title, final String host, final int port, final String password)
|
||||
{
|
||||
Thread thread = new Thread() {
|
||||
public void run() {
|
||||
service.connect(title, host, port, password);
|
||||
}
|
||||
};
|
||||
thread.start();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param title
|
||||
* @return
|
||||
*/
|
||||
public boolean isConnected(String title) {
|
||||
IrcServer server = this.service.getIrcServer(title);
|
||||
if (server != null) {
|
||||
return server.isConnected();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param title
|
||||
* @return
|
||||
*/
|
||||
public boolean disconnect(String title)
|
||||
{
|
||||
IrcServer server = this.service.getIrcServer(title);
|
||||
if (server != null) {
|
||||
if (server.isConnected()) {
|
||||
server.quitServer("Yaaic - Yet Another Android IRC Client - www.yaaic.org");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
13
src/org/yaaic/client/irc/IrcServer.java
Normal file
13
src/org/yaaic/client/irc/IrcServer.java
Normal file
@ -0,0 +1,13 @@
|
||||
package org.yaaic.client.irc;
|
||||
|
||||
import org.jibble.pircbot.PircBot;
|
||||
|
||||
public class IrcServer extends PircBot
|
||||
{
|
||||
public IrcServer()
|
||||
{
|
||||
this.setName("Yaaic");
|
||||
this.setAutoNickChange(true);
|
||||
this.setLogin("yaaic");
|
||||
}
|
||||
}
|
114
src/org/yaaic/client/irc/IrcService.java
Normal file
114
src/org/yaaic/client/irc/IrcService.java
Normal file
@ -0,0 +1,114 @@
|
||||
package org.yaaic.client.irc;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.jibble.pircbot.IrcException;
|
||||
import org.jibble.pircbot.NickAlreadyInUseException;
|
||||
import org.yaaic.client.db.ServerDatabase;
|
||||
|
||||
import android.app.Service;
|
||||
import android.content.Intent;
|
||||
import android.database.Cursor;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.util.Log;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Sebastian Kaspari
|
||||
*/
|
||||
public class IrcService extends Service
|
||||
{
|
||||
private static final String TAG = "Yaaic/Service";
|
||||
|
||||
private int createCounter = 0;
|
||||
private IrcBinder binder;
|
||||
private Handler handler;
|
||||
|
||||
private HashMap<String, IrcServer> servers = new HashMap<String, IrcServer>();
|
||||
|
||||
@Override
|
||||
public void onCreate()
|
||||
{
|
||||
Log.d(TAG, "onCreate(" + createCounter + ")");
|
||||
|
||||
super.onCreate();
|
||||
createCounter++;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBinder onBind(Intent intent)
|
||||
{
|
||||
Log.d(TAG, "onBind");
|
||||
|
||||
if (binder == null) {
|
||||
binder = new IrcBinder(this);
|
||||
}
|
||||
return binder;
|
||||
}
|
||||
|
||||
|
||||
public int getCounter()
|
||||
{
|
||||
return createCounter;
|
||||
}
|
||||
|
||||
public Handler getHandler()
|
||||
{
|
||||
return handler;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy()
|
||||
{
|
||||
Log.d(TAG, "onDestroy(" + createCounter + ")");
|
||||
|
||||
super.onDestroy();
|
||||
createCounter--;
|
||||
}
|
||||
|
||||
/**
|
||||
* Connect to server
|
||||
*
|
||||
* @param title Title of the IRC-Network
|
||||
* @param host
|
||||
* @param port
|
||||
* @param password (If needed, else an empty string)
|
||||
*/
|
||||
public void connect(String title, String host, int port, String password)
|
||||
{
|
||||
if(!servers.containsKey(title)) {
|
||||
Log.d(TAG, "Connect to " + title + ": " + host + ":" + port + "[" + password + "]");
|
||||
|
||||
IrcServer irc = new IrcServer();
|
||||
|
||||
try {
|
||||
irc.connect(host, port);
|
||||
servers.put(title, irc);
|
||||
}
|
||||
catch(NickAlreadyInUseException e) {
|
||||
Log.d(TAG, e.getMessage());
|
||||
}
|
||||
catch(IrcException e) {
|
||||
Log.d(TAG, e.getMessage());
|
||||
}
|
||||
catch(IOException e) {
|
||||
Log.d(TAG, e.getMessage());
|
||||
}
|
||||
} else {
|
||||
Log.d(TAG, "Already connected to: " + title);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get IrcServer Object by Title
|
||||
*
|
||||
* @param title Title of the IRC-Network (PK)
|
||||
* @return IrcServer Object or null
|
||||
*/
|
||||
public IrcServer getIrcServer(String title)
|
||||
{
|
||||
return servers.get(title);
|
||||
}
|
||||
}
|
57
src/org/yaaic/client/irc/MessageBuffer.java
Normal file
57
src/org/yaaic/client/irc/MessageBuffer.java
Normal file
@ -0,0 +1,57 @@
|
||||
package org.yaaic.client.irc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import android.text.SpannableString;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Sebastian Kaspari <pocmo@yaaic.org>
|
||||
*/
|
||||
public class MessageBuffer
|
||||
{
|
||||
private ArrayList<SpannableString> messageBuffer;
|
||||
|
||||
/**
|
||||
* Maximum Buffer Size
|
||||
*/
|
||||
private static final int MAX_SIZE = 30;
|
||||
|
||||
/**
|
||||
* Maximum Buffer Size in Emergencies, e.g. if we are low on memory
|
||||
*/
|
||||
private static final int EMERGENCY_MAX_SIZE = 10;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public MessageBuffer()
|
||||
{
|
||||
messageBuffer = new ArrayList<SpannableString>();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param s
|
||||
* @return
|
||||
*/
|
||||
public boolean add(SpannableString s)
|
||||
{
|
||||
if (messageBuffer.size() > MAX_SIZE) {
|
||||
messageBuffer.remove(0);
|
||||
}
|
||||
return messageBuffer.add(s);
|
||||
}
|
||||
|
||||
/**
|
||||
* Truncate the buffer to the maximum size (emergency)
|
||||
*
|
||||
* Use this if we are low on memory
|
||||
*/
|
||||
public void truncate()
|
||||
{
|
||||
while (messageBuffer.size() > EMERGENCY_MAX_SIZE) {
|
||||
messageBuffer.remove(0);
|
||||
}
|
||||
}
|
||||
}
|
5
src/org/yaaic/client/irc/ServerBuffer.java
Normal file
5
src/org/yaaic/client/irc/ServerBuffer.java
Normal file
@ -0,0 +1,5 @@
|
||||
package org.yaaic.client.irc;
|
||||
|
||||
public class ServerBuffer extends MessageBuffer {
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user