From d8ddda16f20af7c61b27ab451e863ade2e06c703 Mon Sep 17 00:00:00 2001 From: AndChat Author Date: Sat, 1 Aug 2015 00:33:39 +0100 Subject: [PATCH] Original --- .gradle/2.2.1/taskArtifacts/cache.properties | 1 + .../2.2.1/taskArtifacts/cache.properties.lock | Bin 0 -> 17 bytes .gradle/2.2.1/taskArtifacts/fileHashes.bin | Bin 0 -> 31998 bytes .gradle/2.2.1/taskArtifacts/fileSnapshots.bin | Bin 0 -> 20168 bytes .../2.2.1/taskArtifacts/outputFileStates.bin | Bin 0 -> 18842 bytes .gradle/2.2.1/taskArtifacts/taskArtifacts.bin | Bin 0 -> 20801 bytes .idea/.name | 1 + .idea/compiler.xml | 22 + .idea/copyright/profiles_settings.xml | 3 + .idea/gradle.xml | 19 + .idea/misc.xml | 22 + .idea/modules.xml | 9 + .idea/vcs.xml | 6 + AndChat.iml | 19 + app/app.iml | 89 + app/build.gradle | 17 + .../debug/net/andchat/donate/BuildConfig.java | 13 + .../intermediates/assets/debug/servers.xml | 11 + .../incremental/aidl/debug/dependency.store | Bin 0 -> 5 bytes .../incremental/mergeAssets/debug/merger.xml | 2 + app/src/main/AndroidManifest.xml | 94 + app/src/main/assets/servers.xml | 11 + .../v4/app/ActivityCompatHoneycomb.java | 16 + .../support/v4/app/BackStackRecord$Op.java | 28 + .../support/v4/app/BackStackRecord.java | 620 +++ .../support/v4/app/BackStackState$1.java | 39 + .../support/v4/app/BackStackState.java | 242 ++ .../android/support/v4/app/Fragment$1.java | 34 + .../app/Fragment$InstantiationException.java | 18 + .../support/v4/app/Fragment$SavedState$1.java | 39 + .../support/v4/app/Fragment$SavedState.java | 62 + .../java/android/support/v4/app/Fragment.java | 936 +++++ .../v4/app/FragmentActivity$FragmentTag.java | 18 + ...entActivity$NonConfigurationInstances.java | 25 + .../support/v4/app/FragmentActivity.java | 835 ++++ .../support/v4/app/FragmentContainer.java | 13 + ...entManager$OnBackStackChangedListener.java | 15 + .../support/v4/app/FragmentManager.java | 29 + .../support/v4/app/FragmentManagerImpl$1.java | 27 + .../support/v4/app/FragmentManagerImpl$5.java | 42 + .../support/v4/app/FragmentManagerImpl.java | 2287 +++++++++++ .../v4/app/FragmentManagerState$1.java | 39 + .../support/v4/app/FragmentManagerState.java | 67 + .../support/v4/app/FragmentState$1.java | 39 + .../android/support/v4/app/FragmentState.java | 178 + .../support/v4/app/FragmentTabHost$1.java | 13 + .../v4/app/FragmentTabHost$SavedState$1.java | 39 + .../v4/app/FragmentTabHost$SavedState.java | 68 + .../v4/app/FragmentTabHost$TabInfo.java | 33 + .../support/v4/app/FragmentTabHost.java | 237 ++ .../support/v4/app/FragmentTransaction.java | 25 + .../v4/app/LoaderManager$LoaderCallbacks.java | 21 + .../android/support/v4/app/LoaderManager.java | 31 + .../v4/app/LoaderManagerImpl$LoaderInfo.java | 282 ++ .../support/v4/app/LoaderManagerImpl.java | 508 +++ .../v4/app/NoSaveStateFrameLayout.java | 43 + .../v4/app/NotificationCompat$Action.java | 18 + .../NotificationCompat$BigPictureStyle.java | 20 + .../app/NotificationCompat$BigTextStyle.java | 19 + .../v4/app/NotificationCompat$Builder.java | 135 + .../v4/app/NotificationCompat$InboxStyle.java | 21 + ...ficationCompat$NotificationCompatImpl.java | 16 + ...tionCompat$NotificationCompatImplBase.java | 30 + ...ompat$NotificationCompatImplHoneycomb.java | 24 + ...otificationCompatImplIceCreamSandwich.java | 24 + ...ompat$NotificationCompatImplJellybean.java | 54 + .../v4/app/NotificationCompat$Style.java | 22 + .../support/v4/app/NotificationCompat.java | 310 ++ .../v4/app/NotificationCompatHoneycomb.java | 54 + .../NotificationCompatIceCreamSandwich.java | 54 + .../v4/app/NotificationCompatJellybean.java | 97 + .../v4/app/SuperNotCalledException.java | 16 + .../Loader$OnLoadCompleteListener.java | 13 + .../android/support/v4/content/Loader.java | 124 + .../v4/os/ParcelableCompat$CompatCreator.java | 32 + .../support/v4/os/ParcelableCompat.java | 45 + .../os/ParcelableCompatCreatorCallbacks.java | 15 + .../ParcelableCompatCreatorHoneycombMR2.java | 37 + ...rcelableCompatCreatorHoneycombMR2Stub.java | 18 + .../android/support/v4/util/DebugUtils.java | 42 + .../android/support/v4/util/LogWriter.java | 57 + .../support/v4/util/SparseArrayCompat.java | 125 + ...eyEventCompat$BaseKeyEventVersionImpl.java | 80 + ...ntCompat$HoneycombKeyEventVersionImpl.java | 28 + .../KeyEventCompat$KeyEventVersionImpl.java | 17 + .../support/v4/view/KeyEventCompat.java | 135 + .../v4/view/KeyEventCompatHoneycomb.java | 21 + ...ventCompat$BaseMotionEventVersionImpl.java | 57 + ...ntCompat$EclairMotionEventVersionImpl.java | 39 + ...ionEventCompat$MotionEventVersionImpl.java | 22 + .../support/v4/view/MotionEventCompat.java | 140 + .../v4/view/MotionEventCompatEclair.java | 31 + .../android/support/v4/view/PagerAdapter.java | 97 + ...Compat$BaseVelocityTrackerVersionImpl.java | 24 + ...t$HoneycombVelocityTrackerVersionImpl.java | 24 + ...ckerCompat$VelocityTrackerVersionImpl.java | 16 + .../v4/view/VelocityTrackerCompat.java | 66 + .../view/VelocityTrackerCompatHoneycomb.java | 16 + .../view/ViewCompat$BaseViewCompatImpl.java | 49 + .../v4/view/ViewCompat$GBViewCompatImpl.java | 23 + .../v4/view/ViewCompat$HCViewCompatImpl.java | 29 + .../v4/view/ViewCompat$ICSViewCompatImpl.java | 23 + .../v4/view/ViewCompat$JBViewCompatImpl.java | 28 + .../view/ViewCompat$JbMr1ViewCompatImpl.java | 17 + .../v4/view/ViewCompat$ViewCompatImpl.java | 25 + .../android/support/v4/view/ViewCompat.java | 192 + .../v4/view/ViewCompatGingerbread.java | 16 + .../android/support/v4/view/ViewCompatHC.java | 23 + .../support/v4/view/ViewCompatICS.java | 16 + .../android/support/v4/view/ViewCompatJB.java | 21 + .../android/support/v4/view/ViewPager$1.java | 0 .../android/support/v4/view/ViewPager$2.java | 25 + .../support/v4/view/ViewPager$Decor.java | 13 + .../support/v4/view/ViewPager$ItemInfo.java | 23 + .../v4/view/ViewPager$LayoutParams.java | 38 + .../ViewPager$OnAdapterChangeListener.java | 15 + .../view/ViewPager$OnPageChangeListener.java | 19 + .../v4/view/ViewPager$PageTransformer.java | 16 + .../v4/view/ViewPager$PagerObserver.java | 37 + .../v4/view/ViewPager$SavedState$1.java | 40 + .../support/v4/view/ViewPager$SavedState.java | 75 + .../ViewPager$ViewPositionComparator.java | 38 + .../android/support/v4/view/ViewPager.java | 2779 +++++++++++++ .../EdgeEffectCompat$BaseEdgeEffectImpl.java | 47 + .../EdgeEffectCompat$EdgeEffectIcsImpl.java | 49 + .../EdgeEffectCompat$EdgeEffectImpl.java | 26 + .../support/v4/widget/EdgeEffectCompat.java | 150 + .../v4/widget/EdgeEffectCompatIcs.java | 45 + .../com/glaforge/i18n/io/CharsetToolkit.java | 197 + .../ActionBar$ActionBarItemClickHandler.java | 16 + .../widget/ActionBar$GenericAction.java | 34 + .../android/widget/ActionBar.java | 178 + .../com/markupartist/android/widget/R$id.java | 26 + .../markupartist/android/widget/R$layout.java | 17 + .../android/widget/R$styleable.java | 19 + .../com/markupartist/android/widget/R.java | 45 + .../android/widget/ScrollingTextView.java | 50 + .../donate/Activities/AuthPicker$1.java | 82 + .../donate/Activities/AuthPicker$2.java | 107 + .../donate/Activities/AuthPicker$3.java | 29 + .../andchat/donate/Activities/AuthPicker.java | 266 ++ .../Activities/ChannelSwitcherFragment$1.java | 36 + .../Activities/ChannelSwitcherFragment$2.java | 64 + .../Activities/ChannelSwitcherFragment$3.java | 32 + .../Activities/ChannelSwitcherFragment$4.java | 32 + .../Activities/ChannelSwitcherFragment$5.java | 31 + ...elSwitcherFragment$ChannelListAdapter.java | 254 ++ .../ChannelSwitcherFragment$RunCommand.java | 27 + ...nelSwitcherFragment$SwitchChannelInfo.java | 28 + .../Activities/ChannelSwitcherFragment.java | 686 ++++ .../donate/Activities/CharsetPicker.java | 129 + .../donate/Activities/ChatWindow$1.java | 28 + .../donate/Activities/ChatWindow$2.java | 34 + .../donate/Activities/ChatWindow$3.java | 31 + .../donate/Activities/ChatWindow$4.java | 31 + .../donate/Activities/ChatWindow$5$1.java | 64 + .../donate/Activities/ChatWindow$5.java | 56 + .../donate/Activities/ChatWindow$6.java | 27 + .../donate/Activities/ChatWindow$7.java | 30 + .../Activities/ChatWindow$EmptyAdapter.java | 40 + .../Activities/ChatWindow$FlagHandler.java | 112 + .../Activities/ChatWindow$FragmentBridge.java | 179 + .../Activities/ChatWindow$MessageHandler.java | 123 + .../Activities/ChatWindow$SwipeDetector.java | 49 + .../Activities/ChatWindow$TabAdapter.java | 324 ++ .../Activities/ChatWindow$TextAdapter.java | 86 + .../andchat/donate/Activities/ChatWindow.java | 3312 +++++++++++++++ .../donate/Activities/CopyTextActivity$1.java | 28 + .../donate/Activities/CopyTextActivity$2.java | 28 + .../donate/Activities/CopyTextActivity.java | 188 + .../donate/Activities/CurrentUI$1.java | 31 + .../donate/Activities/CurrentUI$2.java | 34 + .../donate/Activities/CurrentUI$3.java | 28 + .../andchat/donate/Activities/CurrentUI.java | 489 +++ .../donate/Activities/IgnoresActivity$1.java | 30 + .../donate/Activities/IgnoresActivity$2.java | 62 + .../donate/Activities/IgnoresActivity$3.java | 35 + .../donate/Activities/IgnoresActivity$4.java | 28 + .../donate/Activities/IgnoresActivity$5.java | 28 + .../Activities/IgnoresActivity$Holder.java | 21 + .../IgnoresActivity$IgnoreListAdapter.java | 91 + .../donate/Activities/IgnoresActivity.java | 316 ++ .../IgnoresActivityHelper$Current$1.java | 31 + .../IgnoresActivityHelper$Current.java | 70 + .../IgnoresActivityHelper$IHelper.java | 18 + .../IgnoresActivityHelper$Legacy.java | 46 + ...noresActivityHelper$PopupMenuCallback.java | 16 + .../Activities/IgnoresActivityHelper.java | 137 + .../andchat/donate/Activities/LegacyUI.java | 52 + .../net/andchat/donate/Activities/Main$1.java | 35 + .../andchat/donate/Activities/Main$2$1.java | 111 + .../net/andchat/donate/Activities/Main$2.java | 104 + .../net/andchat/donate/Activities/Main$3.java | 36 + .../net/andchat/donate/Activities/Main$4.java | 28 + .../net/andchat/donate/Activities/Main$5.java | 28 + .../donate/Activities/Main$RowAdapter$1.java | 29 + .../Main$RowAdapter$ItemFilter.java | 89 + .../donate/Activities/Main$RowAdapter.java | 267 ++ .../donate/Activities/Main$ViewHolder.java | 30 + .../net/andchat/donate/Activities/Main.java | 1325 ++++++ .../donate/Activities/PasswordActivity$1.java | 36 + .../donate/Activities/PasswordActivity.java | 335 ++ .../donate/Activities/PreferenceParent.java | 74 + .../Activities/Preferences$About$1.java | 28 + .../donate/Activities/Preferences$About.java | 122 + ...eferences$ActionBasedPreferenceLoader.java | 66 + .../Activities/Preferences$ChatLogs$1.java | 28 + .../Activities/Preferences$ChatLogs.java | 135 + .../Activities/Preferences$DataBackup$1.java | 36 + .../Activities/Preferences$DataBackup$2.java | 41 + .../Activities/Preferences$DataBackup$3.java | 58 + .../Activities/Preferences$DataBackup$4.java | 39 + .../Activities/Preferences$DataBackup$5.java | 39 + .../Activities/Preferences$DataBackup$6.java | 28 + .../Activities/Preferences$DataBackup.java | 543 +++ .../Activities/Preferences$DataSecurity.java | 175 + .../Preferences$ServerProfiles.java | 253 ++ .../donate/Activities/Preferences.java | 1261 ++++++ .../Activities/ServerDetailsActivity$1.java | 46 + .../Activities/ServerDetailsActivity$2.java | 46 + .../Activities/ServerDetailsActivity$3.java | 74 + .../Activities/ServerDetailsActivity$4.java | 29 + .../Activities/ServerDetailsActivity$5.java | 28 + .../Activities/ServerDetailsActivity$6.java | 28 + .../Activities/ServerDetailsActivity$7.java | 28 + .../Activities/ServerDetailsActivity.java | 947 +++++ .../donate/Activities/UserListActivity$1.java | 49 + .../UserListActivity$NameComparer.java | 125 + ...erListActivity$UserAdapter$UserFilter.java | 91 + .../UserListActivity$UserAdapter.java | 173 + .../donate/Activities/UserListActivity.java | 750 ++++ .../donate/Activities/UserListFragment$1.java | 47 + .../donate/Activities/UserListFragment$2.java | 32 + .../donate/Activities/UserListFragment$3.java | 32 + .../Activities/UserListFragment$Adapter.java | 46 + .../Activities/UserListFragment$Holder.java | 22 + .../donate/Activities/UserListFragment.java | 415 ++ .../donate/Activities/initialSetup/Step1.java | 70 + .../Activities/initialSetup/Step2$1.java | 47 + .../Activities/initialSetup/Step2$2.java | 54 + .../donate/Activities/initialSetup/Step2.java | 277 ++ .../Activities/initialSetup/Step3$1.java | 62 + .../donate/Activities/initialSetup/Step3.java | 155 + .../donate/Activities/initialSetup/Step4.java | 86 + .../Activities/initialSetup/StepParent.java | 58 + .../net/andchat/donate/Backend/Crypt.java | 333 ++ .../net/andchat/donate/Backend/IRCDb.java | 857 ++++ .../donate/Backend/IRCService$1$1.java | 163 + .../andchat/donate/Backend/IRCService$1.java | 0 .../andchat/donate/Backend/IRCService$2.java | 28 + .../Backend/IRCService$IRCServiceBinder.java | 27 + .../Backend/IRCService$InfoReceiver$1.java | 31 + .../Backend/IRCService$InfoReceiver.java | 338 ++ .../donate/Backend/IRCService$Pinger.java | 108 + .../Backend/IRCService$PrefsHolder.java | 27 + .../IRCService$ServerStateListener.java | 17 + .../andchat/donate/Backend/IRCService.java | 1854 +++++++++ .../donate/Backend/Ignores$IgnoreInfo.java | 26 + .../net/andchat/donate/Backend/Ignores.java | 203 + .../andchat/donate/Backend/MessageSender.java | 77 + .../net/andchat/donate/Backend/Parser.java | 1117 +++++ .../donate/Backend/ServerConnection$1.java | 42 + .../donate/Backend/ServerConnection$2.java | 42 + .../Backend/ServerConnection$CharsetUtil.java | 195 + .../ServerConnection$Connection$1.java | 42 + .../ServerConnection$Connection$2.java | 29 + .../Backend/ServerConnection$Connection.java | 505 +++ .../ServerConnection$LogManager$Logger.java | 173 + .../Backend/ServerConnection$LogManager.java | 366 ++ .../ServerConnection$ParserImpl$1.java | 31 + .../ServerConnection$ParserImpl$2.java | 51 + .../ServerConnection$ParserImpl$3.java | 92 + .../Backend/ServerConnection$ParserImpl.java | 1730 ++++++++ .../Backend/ServerConnection$TrustAllSSL.java | 86 + .../donate/Backend/ServerConnection.java | 3606 +++++++++++++++++ .../donate/Backend/Sessions/BaseSession.java | 354 ++ .../Backend/Sessions/ChannelSession$1.java | 29 + .../Backend/Sessions/ChannelSession.java | 438 ++ .../donate/Backend/Sessions/NullSession.java | 214 + .../Backend/Sessions/PrivateSession.java | 30 + .../Backend/Sessions/Session$History.java | 150 + .../Backend/Sessions/Session$MetaData.java | 22 + .../Backend/Sessions/Session$NickInfo.java | 30 + .../Backend/Sessions/Session$UserCount.java | 40 + .../donate/Backend/Sessions/Session.java | 321 ++ .../SessionManager$GlobalEventWatcher.java | 31 + .../Sessions/SessionManager$NickWatcher.java | 23 + .../Sessions/SessionManager$StatusMap.java | 174 + .../Backend/Sessions/SessionManager.java | 1399 +++++++ .../Backend/Sessions/StatusSession.java | 23 + .../IRCApp$PreferenceChangeWatcher.java | 15 + .../main/java/net/andchat/donate/IRCApp.java | 208 + .../AbstractMenuInflator$ActionBarMenu.java | 52 + ...AbstractMenuInflator$QuickActionsMenu.java | 32 + .../AbstractMenuInflator$SlideInMenu.java | 0 .../donate/Misc/AbstractMenuInflator.java | 256 ++ .../andchat/donate/Misc/Backup$BackupOp.java | 86 + .../donate/Misc/Backup$Preference.java | 26 + .../net/andchat/donate/Misc/Backup$Stats.java | 36 + .../java/net/andchat/donate/Misc/Backup.java | 523 +++ .../andchat/donate/Misc/Base64$Encoder.java | 348 ++ .../java/net/andchat/donate/Misc/Base64.java | 410 ++ .../java/net/andchat/donate/Misc/Colours.java | 65 + .../donate/Misc/CommandParser$Helper.java | 54 + .../andchat/donate/Misc/CommandParser.java | 176 + .../andchat/donate/Misc/Commands/Command.java | 84 + .../donate/Misc/Commands/impl/Away.java | 29 + .../andchat/donate/Misc/Commands/impl/CM.java | 35 + .../andchat/donate/Misc/Commands/impl/CS.java | 31 + .../donate/Misc/Commands/impl/CTCP.java | 34 + .../donate/Misc/Commands/impl/Clear.java | 31 + .../donate/Misc/Commands/impl/ClearAll.java | 37 + .../donate/Misc/Commands/impl/Cycle.java | 35 + .../donate/Misc/Commands/impl/Ignore.java | 289 ++ .../donate/Misc/Commands/impl/Invite.java | 30 + .../donate/Misc/Commands/impl/Join.java | 34 + .../donate/Misc/Commands/impl/Kick.java | 48 + .../donate/Misc/Commands/impl/MOTD.java | 27 + .../andchat/donate/Misc/Commands/impl/Me.java | 43 + .../donate/Misc/Commands/impl/Msg.java | 57 + .../donate/Misc/Commands/impl/Names.java | 41 + .../donate/Misc/Commands/impl/Nick.java | 35 + .../donate/Misc/Commands/impl/Notice.java | 59 + .../donate/Misc/Commands/impl/OpActions.java | 72 + .../donate/Misc/Commands/impl/Part.java | 87 + .../donate/Misc/Commands/impl/Ping.java | 34 + .../donate/Misc/Commands/impl/Quit.java | 30 + .../donate/Misc/Commands/impl/Raw.java | 24 + .../donate/Misc/Commands/impl/Topic.java | 37 + .../andchat/donate/Misc/Commands/impl/UM.java | 27 + .../donate/Misc/Commands/impl/Unignore.java | 77 + .../Misc/Commands/impl/UnknownCommand.java | 26 + .../andchat/donate/Misc/Commands/impl/WC.java | 44 + .../donate/Misc/Commands/impl/Who.java | 40 + .../net/andchat/donate/Misc/IRCMessage.java | 105 + .../andchat/donate/Misc/LimitedSizeQueue.java | 100 + .../andchat/donate/Misc/ServerProfile$1.java | 39 + .../ServerProfile$AuthenticationModes.java | 32 + .../andchat/donate/Misc/ServerProfile.java | 683 ++++ .../java/net/andchat/donate/Misc/Utils$1.java | 0 .../java/net/andchat/donate/Misc/Utils$2.java | 40 + .../donate/Misc/Utils$ChannelSpan.java | 32 + .../Misc/Utils$Detector$Y_DEVIATION.java | 45 + .../andchat/donate/Misc/Utils$Detector.java | 0 .../donate/Misc/Utils$ListSwipeListener.java | 18 + .../donate/Misc/Utils$StringCompare.java | 50 + .../java/net/andchat/donate/Misc/Utils.java | 1231 ++++++ .../andchat/donate/View/ConnectView$1.java | 28 + .../View/ConnectView$ConnectViewCallback.java | 18 + .../net/andchat/donate/View/ConnectView.java | 134 + ...gatingRelativeLayout$EnlargedViewSpec.java | 26 + .../donate/View/DelegatingRelativeLayout.java | 153 + .../InterceptingEditText$PreImeListener.java | 16 + .../donate/View/InterceptingEditText.java | 53 + .../donate/View/InterceptingLinearLayout.java | 102 + .../donate/View/MultiChoicePreference$1.java | 28 + .../donate/View/MultiChoicePreference.java | 151 + .../net/andchat/donate/View/MyScrollView.java | 31 + .../donate/View/NoKeyboardEditText.java | 33 + .../andchat/donate/View/TextStyleDialog.java | 290 ++ .../net/londatiga/android/ActionItem.java | 35 + .../net/londatiga/android/PopupWindows$1.java | 37 + .../net/londatiga/android/PopupWindows.java | 94 + .../QuickAction$OnDismissListener.java | 15 + ...Action$OnQuickActionItemClickListener.java | 15 + .../net/londatiga/android/QuickAction.java | 338 ++ .../main/java/net/londatiga/android/R$id.java | 20 + .../java/net/londatiga/android/R$layout.java | 19 + .../java/net/londatiga/android/R$style.java | 23 + .../main/java/net/londatiga/android/R.java | 45 + app/src/main/res/anim/bounce.xml | 7 + app/src/main/res/anim/cw_slide_in_right.xml | 6 + app/src/main/res/anim/grow_from_bottom.xml | 6 + .../anim/grow_from_bottomleft_to_topright.xml | 6 + .../anim/grow_from_bottomright_to_topleft.xml | 6 + app/src/main/res/anim/grow_from_top.xml | 6 + .../anim/grow_from_topleft_to_bottomright.xml | 6 + .../anim/grow_from_topright_to_bottomleft.xml | 6 + app/src/main/res/anim/shrink_from_bottom.xml | 6 + .../shrink_from_bottomleft_to_topright.xml | 6 + .../shrink_from_bottomright_to_topleft.xml | 6 + app/src/main/res/anim/shrink_from_top.xml | 6 + .../shrink_from_topleft_to_bottomright.xml | 6 + .../shrink_from_topright_to_bottomleft.xml | 6 + app/src/main/res/anim/slide_in.xml | 6 + app/src/main/res/anim/slide_in_left.xml | 6 + app/src/main/res/anim/slide_in_right.xml | 6 + app/src/main/res/anim/slide_out.xml | 6 + app/src/main/res/anim/slide_out_left.xml | 6 + app/src/main/res/anim/slide_out_right.xml | 6 + .../main/res/drawable-hdpi-v11/andchat.png | Bin 0 -> 2412 bytes .../res/drawable-hdpi-v11/andchat_notif.png | Bin 0 -> 1867 bytes .../drawable-hdpi-v11/andchat_notif_err.png | Bin 0 -> 1334 bytes .../drawable-hdpi-v11/andchat_notif_mixed.png | Bin 0 -> 1374 bytes .../notification_icon_bg.png | Bin 0 -> 93 bytes .../res/drawable-hdpi-v9/andchat_notif.png | Bin 0 -> 1517 bytes .../drawable-hdpi-v9/andchat_notif_err.png | Bin 0 -> 1430 bytes .../drawable-hdpi-v9/andchat_notif_mixed.png | Bin 0 -> 1422 bytes .../actionbar_back_indicator.png | Bin 0 -> 334 bytes app/src/main/res/drawable-hdpi/andchat.png | Bin 0 -> 2437 bytes .../main/res/drawable-hdpi/andchat_notif.png | Bin 0 -> 1598 bytes .../res/drawable-hdpi/andchat_notif_err.png | Bin 0 -> 1850 bytes .../res/drawable-hdpi/andchat_notif_mixed.png | Bin 0 -> 1838 bytes .../main/res/drawable-hdpi/ic_list_more.png | Bin 0 -> 413 bytes .../drawable-hdpi/ic_list_more_selected.png | Bin 0 -> 363 bytes .../res/drawable-ldpi-v11/andchat_notif.png | Bin 0 -> 1294 bytes .../drawable-ldpi-v11/andchat_notif_err.png | Bin 0 -> 1298 bytes .../drawable-ldpi-v11/andchat_notif_mixed.png | Bin 0 -> 1286 bytes .../notification_icon_bg.png | Bin 0 -> 93 bytes .../res/drawable-ldpi-v9/andchat_notif.png | Bin 0 -> 698 bytes .../drawable-ldpi-v9/andchat_notif_err.png | Bin 0 -> 686 bytes .../drawable-ldpi-v9/andchat_notif_mixed.png | Bin 0 -> 686 bytes .../main/res/drawable-mdpi-v11/andchat.png | Bin 0 -> 1809 bytes .../res/drawable-mdpi-v11/andchat_notif.png | Bin 0 -> 1591 bytes .../drawable-mdpi-v11/andchat_notif_err.png | Bin 0 -> 935 bytes .../drawable-mdpi-v11/andchat_notif_mixed.png | Bin 0 -> 963 bytes .../notification_icon_bg.png | Bin 0 -> 93 bytes .../res/drawable-mdpi-v9/andchat_notif.png | Bin 0 -> 944 bytes .../drawable-mdpi-v9/andchat_notif_err.png | Bin 0 -> 932 bytes .../drawable-mdpi-v9/andchat_notif_mixed.png | Bin 0 -> 932 bytes .../main/res/drawable-mdpi/ic_list_more.png | Bin 0 -> 305 bytes .../drawable-mdpi/ic_list_more_selected.png | Bin 0 -> 309 bytes .../main/res/drawable-v11/andchat_logo.png | Bin 0 -> 1809 bytes app/src/main/res/drawable-v11/ic_menu_add.xml | 3 + .../res/drawable-v11/ic_menu_allfriends.png | Bin 0 -> 1501 bytes .../ic_menu_allfriends_disabled.png | Bin 0 -> 1274 bytes .../ic_menu_close_clear_cancel.xml | 3 + .../main/res/drawable-v11/ic_menu_copy.png | Bin 0 -> 158 bytes .../drawable-v11/ic_menu_end_conversation.png | Bin 0 -> 1534 bytes .../main/res/drawable-v11/ic_menu_exit.xml | 3 + .../main/res/drawable-v11/ic_menu_filter.xml | 3 + .../main/res/drawable-v11/ic_menu_help.xml | 3 + .../res/drawable-v11/ic_menu_preferences.xml | 3 + .../main/res/drawable-v11/ic_menu_refresh.png | Bin 0 -> 1085 bytes .../main/res/drawable-v11/ic_menu_save.xml | 3 + .../main/res/drawable-v11/ic_menu_search.png | Bin 0 -> 1580 bytes .../main/res/drawable-v11/ic_menu_stop.png | Bin 0 -> 794 bytes .../res/drawable-v11/ic_menu_userlist.xml | 6 + app/src/main/res/drawable-v14/andchat.xml | 3 + .../res/drawable-xhdpi-v11/andchat_notif.png | Bin 0 -> 2180 bytes .../drawable-xhdpi-v11/andchat_notif_err.png | Bin 0 -> 1731 bytes .../andchat_notif_mixed.png | Bin 0 -> 1730 bytes .../notification_icon_bg.png | Bin 0 -> 99 bytes app/src/main/res/drawable-xxhdpi/andchat.xml | 3 + app/src/main/res/drawable/action_item_btn.xml | 8 + .../res/drawable/action_item_selected.9.png | Bin 0 -> 909 bytes .../res/drawable/actionbar_back_indicator.png | Bin 0 -> 295 bytes .../res/drawable/actionbar_background.xml | 5 + app/src/main/res/drawable/actionbar_btn.xml | 9 + .../res/drawable/actionbar_btn_normal.xml | 5 + .../res/drawable/actionbar_btn_pressed.xml | 5 + app/src/main/res/drawable/andchat.png | Bin 0 -> 1611 bytes .../drawable/andchat_launcher_icon_ics.png | Bin 0 -> 2925 bytes .../drawable/andchat_launcher_icon_xxhdpi.png | Bin 0 -> 5220 bytes app/src/main/res/drawable/andchat_logo.xml | 3 + app/src/main/res/drawable/andchat_notif.png | Bin 0 -> 1554 bytes .../main/res/drawable/andchat_notif_err.png | Bin 0 -> 1546 bytes .../main/res/drawable/andchat_notif_mixed.png | Bin 0 -> 1420 bytes .../drawable/andchat_samsung_multiwindow.png | Bin 0 -> 2925 bytes .../main/res/drawable/arrow_left_default.png | Bin 0 -> 124 bytes .../main/res/drawable/arrow_left_pressed.png | Bin 0 -> 155 bytes .../main/res/drawable/arrow_left_toggle.xml | 6 + .../main/res/drawable/arrow_right_default.png | Bin 0 -> 125 bytes .../main/res/drawable/arrow_right_pressed.png | Bin 0 -> 151 bytes .../main/res/drawable/arrow_right_toggle.xml | 6 + app/src/main/res/drawable/blue_arrow_left.png | Bin 0 -> 1183 bytes .../main/res/drawable/blue_arrow_right.png | Bin 0 -> 1260 bytes .../res/drawable/button_indicator_next.png | Bin 0 -> 918 bytes .../res/drawable/button_indicator_prev.png | Bin 0 -> 919 bytes app/src/main/res/drawable/disconnect.png | Bin 0 -> 635 bytes .../res/drawable/fragment_user_pressed.png | Bin 0 -> 97 bytes .../res/drawable/fragment_user_selected.png | Bin 0 -> 97 bytes .../res/drawable/fragment_user_selection.xml | 7 + .../res/drawable/frament_user_unselected.png | Bin 0 -> 100 bytes app/src/main/res/drawable/green.9.png | Bin 0 -> 1309 bytes .../main/res/drawable/green_arrow_left.png | Bin 0 -> 1430 bytes .../main/res/drawable/green_arrow_right.png | Bin 0 -> 1409 bytes app/src/main/res/drawable/grey.png | Bin 0 -> 645 bytes app/src/main/res/drawable/ic_menu_add.png | Bin 0 -> 311 bytes .../main/res/drawable/ic_menu_allfriends.png | Bin 0 -> 1693 bytes .../drawable/ic_menu_close_clear_cancel.png | Bin 0 -> 356 bytes app/src/main/res/drawable/ic_menu_copy.png | Bin 0 -> 195 bytes app/src/main/res/drawable/ic_menu_delete.png | Bin 0 -> 1497 bytes app/src/main/res/drawable/ic_menu_edit.png | Bin 0 -> 1004 bytes .../res/drawable/ic_menu_end_conversation.png | Bin 0 -> 1606 bytes app/src/main/res/drawable/ic_menu_exit.png | Bin 0 -> 1053 bytes app/src/main/res/drawable/ic_menu_filter.png | Bin 0 -> 323 bytes app/src/main/res/drawable/ic_menu_help.png | Bin 0 -> 847 bytes .../main/res/drawable/ic_menu_preferences.png | Bin 0 -> 932 bytes app/src/main/res/drawable/ic_menu_refresh.png | Bin 0 -> 1664 bytes app/src/main/res/drawable/ic_menu_save.png | Bin 0 -> 574 bytes app/src/main/res/drawable/ic_menu_search.png | Bin 0 -> 784 bytes app/src/main/res/drawable/ic_menu_stop.png | Bin 0 -> 561 bytes .../main/res/drawable/ic_menu_userlist.xml | 6 + app/src/main/res/drawable/indicator.9.png | Bin 0 -> 90 bytes app/src/main/res/drawable/more.png | Bin 0 -> 359 bytes .../drawable/notification_icon_bg_tile.xml | 3 + app/src/main/res/drawable/overflow.png | Bin 0 -> 136 bytes app/src/main/res/drawable/qa_arrow_down.png | Bin 0 -> 845 bytes app/src/main/res/drawable/qa_arrow_up.png | Bin 0 -> 853 bytes app/src/main/res/drawable/qa_popup.9.png | Bin 0 -> 457 bytes app/src/main/res/drawable/reconnect.png | Bin 0 -> 890 bytes app/src/main/res/drawable/red.9.png | Bin 0 -> 1280 bytes app/src/main/res/drawable/tab.xml | 7 + app/src/main/res/drawable/tick.png | Bin 0 -> 593 bytes .../main/res/drawable/userlist_disabled.png | Bin 0 -> 609 bytes .../main/res/drawable/userlist_enabled.png | Bin 0 -> 609 bytes .../res/layout-v11/channel_list_fragment.xml | 3 + .../res/layout-v11/channel_list_text_size.xml | 8 + app/src/main/res/layout-v11/statusbar.xml | 13 + .../main/res/layout-v11/userlist_fragment.xml | 3 + .../res/layout-v11/userlist_text_size.xml | 8 + .../main/res/layout-v14/chooser_buttons.xml | 7 + .../main/res/layout-v14/ok_cancel_buttons.xml | 6 + .../main/res/layout/action_bar_inflated.xml | 3 + app/src/main/res/layout/action_bar_stub.xml | 3 + .../res/layout/action_item_horizontal.xml | 6 + .../main/res/layout/action_item_vertical.xml | 5 + app/src/main/res/layout/actionbar.xml | 16 + app/src/main/res/layout/actionbar_item.xml | 3 + app/src/main/res/layout/actionbarfull.xml | 6 + app/src/main/res/layout/activity_chat.xml | 32 + app/src/main/res/layout/activity_copytext.xml | 11 + .../main/res/layout/activity_ignore_list.xml | 10 + app/src/main/res/layout/activity_main.xml | 6 + app/src/main/res/layout/activity_password.xml | 7 + ...activity_server_authentication_chooser.xml | 18 + .../res/layout/activity_server_details.xml | 46 + app/src/main/res/layout/activity_step1.xml | 7 + app/src/main/res/layout/activity_step2.xml | 40 + app/src/main/res/layout/activity_step3.xml | 6 + app/src/main/res/layout/activity_step4.xml | 8 + app/src/main/res/layout/activity_userlist.xml | 10 + .../main/res/layout/channel_list_fragment.xml | 3 + .../res/layout/channel_list_text_size.xml | 3 + .../res/layout/channel_switcher_textview.xml | 3 + app/src/main/res/layout/chooser_buttons.xml | 7 + .../main/res/layout/dialog_choose_file.xml | 8 + .../main/res/layout/dialog_customize_text.xml | 16 + .../main/res/layout/dialog_message_dialog.xml | 5 + .../res/layout/empty_listview_content.xml | 6 + .../layout/fragment_user_checked_textview.xml | 3 + app/src/main/res/layout/horiz_separator.xml | 5 + app/src/main/res/layout/ignore_list_item.xml | 7 + app/src/main/res/layout/liststyle_main.xml | 8 + app/src/main/res/layout/non_fragment_user.xml | 3 + app/src/main/res/layout/ok_cancel_buttons.xml | 6 + app/src/main/res/layout/popup_horizontal.xml | 9 + app/src/main/res/layout/popup_vertical.xml | 9 + .../main/res/layout/single_message_row.xml | 3 + app/src/main/res/layout/statusbar.xml | 7 + .../main/res/layout/step_activity_buttons.xml | 9 + .../main/res/layout/user_action_button.xml | 3 + app/src/main/res/layout/userlist_fragment.xml | 3 + .../main/res/layout/userlist_text_size.xml | 3 + app/src/main/res/menu/charsetpicker.xml | 5 + app/src/main/res/menu/confirm_menu.xml | 5 + app/src/main/res/menu/confirm_password.xml | 6 + app/src/main/res/menu/copy_menu.xml | 5 + app/src/main/res/menu/cw_menu.xml | 10 + app/src/main/res/menu/main_menu.xml | 9 + app/src/main/res/menu/server_details_menu.xml | 7 + app/src/main/res/menu/tab_menu.xml | 6 + app/src/main/res/menu/user_action_menu.xml | 17 + .../main/res/menu/user_action_menu_legacy.xml | 17 + .../menu/user_action_menu_legacy_multi.xml | 15 + .../main/res/values-sw320dp-land/bools.xml | 5 + .../main/res/values-sw320dp-land/integers.xml | 6 + app/src/main/res/values-sw320dp/bools.xml | 5 + app/src/main/res/values-sw320dp/integers.xml | 6 + app/src/main/res/values-sw320dp/styles.xml | 13 + .../main/res/values-sw600dp-land/dimens.xml | 4 + .../main/res/values-sw600dp-land/integers.xml | 6 + app/src/main/res/values-sw600dp/bools.xml | 5 + app/src/main/res/values-sw600dp/dimens.xml | 4 + app/src/main/res/values-sw600dp/integers.xml | 6 + app/src/main/res/values-sw600dp/styles.xml | 10 + .../main/res/values-sw720dp-land/dimens.xml | 4 + app/src/main/res/values-sw720dp/bools.xml | 5 + app/src/main/res/values-sw720dp/dimens.xml | 4 + app/src/main/res/values-sw720dp/integers.xml | 6 + app/src/main/res/values-sw720dp/styles.xml | 10 + app/src/main/res/values-v11/bools.xml | 5 + app/src/main/res/values-v11/dimens.xml | 7 + app/src/main/res/values-v11/integers.xml | 6 + app/src/main/res/values-v11/styles.xml | 34 + app/src/main/res/values/arrays.xml | 261 ++ app/src/main/res/values/attrs.xml | 4 + app/src/main/res/values/bools.xml | 7 + app/src/main/res/values/colors.xml | 9 + app/src/main/res/values/dimens.xml | 10 + app/src/main/res/values/ids.xml | 142 + app/src/main/res/values/integers.xml | 6 + app/src/main/res/values/plurals.xml | 31 + app/src/main/res/values/public.xml | 907 +++++ app/src/main/res/values/strings.xml | 525 +++ app/src/main/res/values/styles.xml | 266 ++ app/src/main/res/xml/prefs_about.xml | 8 + app/src/main/res/xml/prefs_chat_logs.xml | 7 + app/src/main/res/xml/prefs_connection.xml | 8 + app/src/main/res/xml/prefs_data_backup.xml | 6 + app/src/main/res/xml/prefs_data_security.xml | 7 + app/src/main/res/xml/prefs_debug.xml | 7 + app/src/main/res/xml/prefs_interface.xml | 9 + app/src/main/res/xml/prefs_main.xml | 35 + app/src/main/res/xml/prefs_messages_rooms.xml | 12 + app/src/main/res/xml/prefs_notifications.xml | 12 + .../main/res/xml/prefs_server_profiles.xml | 16 + build.gradle | 15 + .../gradle_project_sync_data.bin | Bin 0 -> 583 bytes gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 49896 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 164 + gradlew.bat | 90 + local.properties | 7 + settings.gradle | 1 + 616 files changed, 58125 insertions(+) create mode 100644 .gradle/2.2.1/taskArtifacts/cache.properties create mode 100644 .gradle/2.2.1/taskArtifacts/cache.properties.lock create mode 100644 .gradle/2.2.1/taskArtifacts/fileHashes.bin create mode 100644 .gradle/2.2.1/taskArtifacts/fileSnapshots.bin create mode 100644 .gradle/2.2.1/taskArtifacts/outputFileStates.bin create mode 100644 .gradle/2.2.1/taskArtifacts/taskArtifacts.bin create mode 100644 .idea/.name create mode 100644 .idea/compiler.xml create mode 100644 .idea/copyright/profiles_settings.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 AndChat.iml create mode 100644 app/app.iml create mode 100644 app/build.gradle create mode 100644 app/build/generated/source/buildConfig/debug/net/andchat/donate/BuildConfig.java create mode 100644 app/build/intermediates/assets/debug/servers.xml create mode 100644 app/build/intermediates/incremental/aidl/debug/dependency.store create mode 100644 app/build/intermediates/incremental/mergeAssets/debug/merger.xml create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/assets/servers.xml create mode 100644 app/src/main/java/android/support/v4/app/ActivityCompatHoneycomb.java create mode 100644 app/src/main/java/android/support/v4/app/BackStackRecord$Op.java create mode 100644 app/src/main/java/android/support/v4/app/BackStackRecord.java create mode 100644 app/src/main/java/android/support/v4/app/BackStackState$1.java create mode 100644 app/src/main/java/android/support/v4/app/BackStackState.java create mode 100644 app/src/main/java/android/support/v4/app/Fragment$1.java create mode 100644 app/src/main/java/android/support/v4/app/Fragment$InstantiationException.java create mode 100644 app/src/main/java/android/support/v4/app/Fragment$SavedState$1.java create mode 100644 app/src/main/java/android/support/v4/app/Fragment$SavedState.java create mode 100644 app/src/main/java/android/support/v4/app/Fragment.java create mode 100644 app/src/main/java/android/support/v4/app/FragmentActivity$FragmentTag.java create mode 100644 app/src/main/java/android/support/v4/app/FragmentActivity$NonConfigurationInstances.java create mode 100644 app/src/main/java/android/support/v4/app/FragmentActivity.java create mode 100644 app/src/main/java/android/support/v4/app/FragmentContainer.java create mode 100644 app/src/main/java/android/support/v4/app/FragmentManager$OnBackStackChangedListener.java create mode 100644 app/src/main/java/android/support/v4/app/FragmentManager.java create mode 100644 app/src/main/java/android/support/v4/app/FragmentManagerImpl$1.java create mode 100644 app/src/main/java/android/support/v4/app/FragmentManagerImpl$5.java create mode 100644 app/src/main/java/android/support/v4/app/FragmentManagerImpl.java create mode 100644 app/src/main/java/android/support/v4/app/FragmentManagerState$1.java create mode 100644 app/src/main/java/android/support/v4/app/FragmentManagerState.java create mode 100644 app/src/main/java/android/support/v4/app/FragmentState$1.java create mode 100644 app/src/main/java/android/support/v4/app/FragmentState.java create mode 100644 app/src/main/java/android/support/v4/app/FragmentTabHost$1.java create mode 100644 app/src/main/java/android/support/v4/app/FragmentTabHost$SavedState$1.java create mode 100644 app/src/main/java/android/support/v4/app/FragmentTabHost$SavedState.java create mode 100644 app/src/main/java/android/support/v4/app/FragmentTabHost$TabInfo.java create mode 100644 app/src/main/java/android/support/v4/app/FragmentTabHost.java create mode 100644 app/src/main/java/android/support/v4/app/FragmentTransaction.java create mode 100644 app/src/main/java/android/support/v4/app/LoaderManager$LoaderCallbacks.java create mode 100644 app/src/main/java/android/support/v4/app/LoaderManager.java create mode 100644 app/src/main/java/android/support/v4/app/LoaderManagerImpl$LoaderInfo.java create mode 100644 app/src/main/java/android/support/v4/app/LoaderManagerImpl.java create mode 100644 app/src/main/java/android/support/v4/app/NoSaveStateFrameLayout.java create mode 100644 app/src/main/java/android/support/v4/app/NotificationCompat$Action.java create mode 100644 app/src/main/java/android/support/v4/app/NotificationCompat$BigPictureStyle.java create mode 100644 app/src/main/java/android/support/v4/app/NotificationCompat$BigTextStyle.java create mode 100644 app/src/main/java/android/support/v4/app/NotificationCompat$Builder.java create mode 100644 app/src/main/java/android/support/v4/app/NotificationCompat$InboxStyle.java create mode 100644 app/src/main/java/android/support/v4/app/NotificationCompat$NotificationCompatImpl.java create mode 100644 app/src/main/java/android/support/v4/app/NotificationCompat$NotificationCompatImplBase.java create mode 100644 app/src/main/java/android/support/v4/app/NotificationCompat$NotificationCompatImplHoneycomb.java create mode 100644 app/src/main/java/android/support/v4/app/NotificationCompat$NotificationCompatImplIceCreamSandwich.java create mode 100644 app/src/main/java/android/support/v4/app/NotificationCompat$NotificationCompatImplJellybean.java create mode 100644 app/src/main/java/android/support/v4/app/NotificationCompat$Style.java create mode 100644 app/src/main/java/android/support/v4/app/NotificationCompat.java create mode 100644 app/src/main/java/android/support/v4/app/NotificationCompatHoneycomb.java create mode 100644 app/src/main/java/android/support/v4/app/NotificationCompatIceCreamSandwich.java create mode 100644 app/src/main/java/android/support/v4/app/NotificationCompatJellybean.java create mode 100644 app/src/main/java/android/support/v4/app/SuperNotCalledException.java create mode 100644 app/src/main/java/android/support/v4/content/Loader$OnLoadCompleteListener.java create mode 100644 app/src/main/java/android/support/v4/content/Loader.java create mode 100644 app/src/main/java/android/support/v4/os/ParcelableCompat$CompatCreator.java create mode 100644 app/src/main/java/android/support/v4/os/ParcelableCompat.java create mode 100644 app/src/main/java/android/support/v4/os/ParcelableCompatCreatorCallbacks.java create mode 100644 app/src/main/java/android/support/v4/os/ParcelableCompatCreatorHoneycombMR2.java create mode 100644 app/src/main/java/android/support/v4/os/ParcelableCompatCreatorHoneycombMR2Stub.java create mode 100644 app/src/main/java/android/support/v4/util/DebugUtils.java create mode 100644 app/src/main/java/android/support/v4/util/LogWriter.java create mode 100644 app/src/main/java/android/support/v4/util/SparseArrayCompat.java create mode 100644 app/src/main/java/android/support/v4/view/KeyEventCompat$BaseKeyEventVersionImpl.java create mode 100644 app/src/main/java/android/support/v4/view/KeyEventCompat$HoneycombKeyEventVersionImpl.java create mode 100644 app/src/main/java/android/support/v4/view/KeyEventCompat$KeyEventVersionImpl.java create mode 100644 app/src/main/java/android/support/v4/view/KeyEventCompat.java create mode 100644 app/src/main/java/android/support/v4/view/KeyEventCompatHoneycomb.java create mode 100644 app/src/main/java/android/support/v4/view/MotionEventCompat$BaseMotionEventVersionImpl.java create mode 100644 app/src/main/java/android/support/v4/view/MotionEventCompat$EclairMotionEventVersionImpl.java create mode 100644 app/src/main/java/android/support/v4/view/MotionEventCompat$MotionEventVersionImpl.java create mode 100644 app/src/main/java/android/support/v4/view/MotionEventCompat.java create mode 100644 app/src/main/java/android/support/v4/view/MotionEventCompatEclair.java create mode 100644 app/src/main/java/android/support/v4/view/PagerAdapter.java create mode 100644 app/src/main/java/android/support/v4/view/VelocityTrackerCompat$BaseVelocityTrackerVersionImpl.java create mode 100644 app/src/main/java/android/support/v4/view/VelocityTrackerCompat$HoneycombVelocityTrackerVersionImpl.java create mode 100644 app/src/main/java/android/support/v4/view/VelocityTrackerCompat$VelocityTrackerVersionImpl.java create mode 100644 app/src/main/java/android/support/v4/view/VelocityTrackerCompat.java create mode 100644 app/src/main/java/android/support/v4/view/VelocityTrackerCompatHoneycomb.java create mode 100644 app/src/main/java/android/support/v4/view/ViewCompat$BaseViewCompatImpl.java create mode 100644 app/src/main/java/android/support/v4/view/ViewCompat$GBViewCompatImpl.java create mode 100644 app/src/main/java/android/support/v4/view/ViewCompat$HCViewCompatImpl.java create mode 100644 app/src/main/java/android/support/v4/view/ViewCompat$ICSViewCompatImpl.java create mode 100644 app/src/main/java/android/support/v4/view/ViewCompat$JBViewCompatImpl.java create mode 100644 app/src/main/java/android/support/v4/view/ViewCompat$JbMr1ViewCompatImpl.java create mode 100644 app/src/main/java/android/support/v4/view/ViewCompat$ViewCompatImpl.java create mode 100644 app/src/main/java/android/support/v4/view/ViewCompat.java create mode 100644 app/src/main/java/android/support/v4/view/ViewCompatGingerbread.java create mode 100644 app/src/main/java/android/support/v4/view/ViewCompatHC.java create mode 100644 app/src/main/java/android/support/v4/view/ViewCompatICS.java create mode 100644 app/src/main/java/android/support/v4/view/ViewCompatJB.java create mode 100644 app/src/main/java/android/support/v4/view/ViewPager$1.java create mode 100644 app/src/main/java/android/support/v4/view/ViewPager$2.java create mode 100644 app/src/main/java/android/support/v4/view/ViewPager$Decor.java create mode 100644 app/src/main/java/android/support/v4/view/ViewPager$ItemInfo.java create mode 100644 app/src/main/java/android/support/v4/view/ViewPager$LayoutParams.java create mode 100644 app/src/main/java/android/support/v4/view/ViewPager$OnAdapterChangeListener.java create mode 100644 app/src/main/java/android/support/v4/view/ViewPager$OnPageChangeListener.java create mode 100644 app/src/main/java/android/support/v4/view/ViewPager$PageTransformer.java create mode 100644 app/src/main/java/android/support/v4/view/ViewPager$PagerObserver.java create mode 100644 app/src/main/java/android/support/v4/view/ViewPager$SavedState$1.java create mode 100644 app/src/main/java/android/support/v4/view/ViewPager$SavedState.java create mode 100644 app/src/main/java/android/support/v4/view/ViewPager$ViewPositionComparator.java create mode 100644 app/src/main/java/android/support/v4/view/ViewPager.java create mode 100644 app/src/main/java/android/support/v4/widget/EdgeEffectCompat$BaseEdgeEffectImpl.java create mode 100644 app/src/main/java/android/support/v4/widget/EdgeEffectCompat$EdgeEffectIcsImpl.java create mode 100644 app/src/main/java/android/support/v4/widget/EdgeEffectCompat$EdgeEffectImpl.java create mode 100644 app/src/main/java/android/support/v4/widget/EdgeEffectCompat.java create mode 100644 app/src/main/java/android/support/v4/widget/EdgeEffectCompatIcs.java create mode 100644 app/src/main/java/com/glaforge/i18n/io/CharsetToolkit.java create mode 100644 app/src/main/java/com/markupartist/android/widget/ActionBar$ActionBarItemClickHandler.java create mode 100644 app/src/main/java/com/markupartist/android/widget/ActionBar$GenericAction.java create mode 100644 app/src/main/java/com/markupartist/android/widget/ActionBar.java create mode 100644 app/src/main/java/com/markupartist/android/widget/R$id.java create mode 100644 app/src/main/java/com/markupartist/android/widget/R$layout.java create mode 100644 app/src/main/java/com/markupartist/android/widget/R$styleable.java create mode 100644 app/src/main/java/com/markupartist/android/widget/R.java create mode 100644 app/src/main/java/com/markupartist/android/widget/ScrollingTextView.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/AuthPicker$1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/AuthPicker$2.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/AuthPicker$3.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/AuthPicker.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$2.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$3.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$4.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$5.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$ChannelListAdapter.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$RunCommand.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$SwitchChannelInfo.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/CharsetPicker.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChatWindow$1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChatWindow$2.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChatWindow$3.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChatWindow$4.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChatWindow$5$1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChatWindow$5.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChatWindow$6.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChatWindow$7.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChatWindow$EmptyAdapter.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChatWindow$FlagHandler.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChatWindow$FragmentBridge.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChatWindow$MessageHandler.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChatWindow$SwipeDetector.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChatWindow$TabAdapter.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChatWindow$TextAdapter.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ChatWindow.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/CopyTextActivity$1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/CopyTextActivity$2.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/CopyTextActivity.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/CurrentUI$1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/CurrentUI$2.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/CurrentUI$3.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/CurrentUI.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$2.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$3.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$4.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$5.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$Holder.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$IgnoreListAdapter.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/IgnoresActivity.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper$Current$1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper$Current.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper$IHelper.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper$Legacy.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper$PopupMenuCallback.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/LegacyUI.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Main$1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Main$2$1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Main$2.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Main$3.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Main$4.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Main$5.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Main$RowAdapter$1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Main$RowAdapter$ItemFilter.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Main$RowAdapter.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Main$ViewHolder.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Main.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/PasswordActivity$1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/PasswordActivity.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/PreferenceParent.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Preferences$About$1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Preferences$About.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Preferences$ActionBasedPreferenceLoader.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Preferences$ChatLogs$1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Preferences$ChatLogs.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$2.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$3.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$4.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$5.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$6.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Preferences$DataSecurity.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Preferences$ServerProfiles.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/Preferences.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$2.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$3.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$4.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$5.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$6.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$7.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/UserListActivity$1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/UserListActivity$NameComparer.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/UserListActivity$UserAdapter$UserFilter.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/UserListActivity$UserAdapter.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/UserListActivity.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/UserListFragment$1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/UserListFragment$2.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/UserListFragment$3.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/UserListFragment$Adapter.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/UserListFragment$Holder.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/UserListFragment.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/initialSetup/Step1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/initialSetup/Step2$1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/initialSetup/Step2$2.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/initialSetup/Step2.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/initialSetup/Step3$1.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/initialSetup/Step3.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/initialSetup/Step4.java create mode 100644 app/src/main/java/net/andchat/donate/Activities/initialSetup/StepParent.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/Crypt.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/IRCDb.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/IRCService$1$1.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/IRCService$1.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/IRCService$2.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/IRCService$IRCServiceBinder.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/IRCService$InfoReceiver$1.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/IRCService$InfoReceiver.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/IRCService$Pinger.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/IRCService$PrefsHolder.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/IRCService$ServerStateListener.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/IRCService.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/Ignores$IgnoreInfo.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/Ignores.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/MessageSender.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/Parser.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/ServerConnection$1.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/ServerConnection$2.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/ServerConnection$CharsetUtil.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/ServerConnection$Connection$1.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/ServerConnection$Connection$2.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/ServerConnection$Connection.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/ServerConnection$LogManager$Logger.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/ServerConnection$LogManager.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/ServerConnection$ParserImpl$1.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/ServerConnection$ParserImpl$2.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/ServerConnection$ParserImpl$3.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/ServerConnection$ParserImpl.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/ServerConnection$TrustAllSSL.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/ServerConnection.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/Sessions/BaseSession.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/Sessions/ChannelSession$1.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/Sessions/ChannelSession.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/Sessions/NullSession.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/Sessions/PrivateSession.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/Sessions/Session$History.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/Sessions/Session$MetaData.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/Sessions/Session$NickInfo.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/Sessions/Session$UserCount.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/Sessions/Session.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/Sessions/SessionManager$GlobalEventWatcher.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/Sessions/SessionManager$NickWatcher.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/Sessions/SessionManager$StatusMap.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/Sessions/SessionManager.java create mode 100644 app/src/main/java/net/andchat/donate/Backend/Sessions/StatusSession.java create mode 100644 app/src/main/java/net/andchat/donate/IRCApp$PreferenceChangeWatcher.java create mode 100644 app/src/main/java/net/andchat/donate/IRCApp.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/AbstractMenuInflator$ActionBarMenu.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/AbstractMenuInflator$QuickActionsMenu.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/AbstractMenuInflator$SlideInMenu.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/AbstractMenuInflator.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Backup$BackupOp.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Backup$Preference.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Backup$Stats.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Backup.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Base64$Encoder.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Base64.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Colours.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/CommandParser$Helper.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/CommandParser.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/Command.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/Away.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/CM.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/CS.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/CTCP.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/Clear.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/ClearAll.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/Cycle.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/Ignore.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/Invite.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/Join.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/Kick.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/MOTD.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/Me.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/Msg.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/Names.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/Nick.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/Notice.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/OpActions.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/Part.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/Ping.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/Quit.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/Raw.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/Topic.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/UM.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/Unignore.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/UnknownCommand.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/WC.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Commands/impl/Who.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/IRCMessage.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/LimitedSizeQueue.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/ServerProfile$1.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/ServerProfile$AuthenticationModes.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/ServerProfile.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Utils$1.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Utils$2.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Utils$ChannelSpan.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Utils$Detector$Y_DEVIATION.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Utils$Detector.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Utils$ListSwipeListener.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Utils$StringCompare.java create mode 100644 app/src/main/java/net/andchat/donate/Misc/Utils.java create mode 100644 app/src/main/java/net/andchat/donate/View/ConnectView$1.java create mode 100644 app/src/main/java/net/andchat/donate/View/ConnectView$ConnectViewCallback.java create mode 100644 app/src/main/java/net/andchat/donate/View/ConnectView.java create mode 100644 app/src/main/java/net/andchat/donate/View/DelegatingRelativeLayout$EnlargedViewSpec.java create mode 100644 app/src/main/java/net/andchat/donate/View/DelegatingRelativeLayout.java create mode 100644 app/src/main/java/net/andchat/donate/View/InterceptingEditText$PreImeListener.java create mode 100644 app/src/main/java/net/andchat/donate/View/InterceptingEditText.java create mode 100644 app/src/main/java/net/andchat/donate/View/InterceptingLinearLayout.java create mode 100644 app/src/main/java/net/andchat/donate/View/MultiChoicePreference$1.java create mode 100644 app/src/main/java/net/andchat/donate/View/MultiChoicePreference.java create mode 100644 app/src/main/java/net/andchat/donate/View/MyScrollView.java create mode 100644 app/src/main/java/net/andchat/donate/View/NoKeyboardEditText.java create mode 100644 app/src/main/java/net/andchat/donate/View/TextStyleDialog.java create mode 100644 app/src/main/java/net/londatiga/android/ActionItem.java create mode 100644 app/src/main/java/net/londatiga/android/PopupWindows$1.java create mode 100644 app/src/main/java/net/londatiga/android/PopupWindows.java create mode 100644 app/src/main/java/net/londatiga/android/QuickAction$OnDismissListener.java create mode 100644 app/src/main/java/net/londatiga/android/QuickAction$OnQuickActionItemClickListener.java create mode 100644 app/src/main/java/net/londatiga/android/QuickAction.java create mode 100644 app/src/main/java/net/londatiga/android/R$id.java create mode 100644 app/src/main/java/net/londatiga/android/R$layout.java create mode 100644 app/src/main/java/net/londatiga/android/R$style.java create mode 100644 app/src/main/java/net/londatiga/android/R.java create mode 100644 app/src/main/res/anim/bounce.xml create mode 100644 app/src/main/res/anim/cw_slide_in_right.xml create mode 100644 app/src/main/res/anim/grow_from_bottom.xml create mode 100644 app/src/main/res/anim/grow_from_bottomleft_to_topright.xml create mode 100644 app/src/main/res/anim/grow_from_bottomright_to_topleft.xml create mode 100644 app/src/main/res/anim/grow_from_top.xml create mode 100644 app/src/main/res/anim/grow_from_topleft_to_bottomright.xml create mode 100644 app/src/main/res/anim/grow_from_topright_to_bottomleft.xml create mode 100644 app/src/main/res/anim/shrink_from_bottom.xml create mode 100644 app/src/main/res/anim/shrink_from_bottomleft_to_topright.xml create mode 100644 app/src/main/res/anim/shrink_from_bottomright_to_topleft.xml create mode 100644 app/src/main/res/anim/shrink_from_top.xml create mode 100644 app/src/main/res/anim/shrink_from_topleft_to_bottomright.xml create mode 100644 app/src/main/res/anim/shrink_from_topright_to_bottomleft.xml create mode 100644 app/src/main/res/anim/slide_in.xml create mode 100644 app/src/main/res/anim/slide_in_left.xml create mode 100644 app/src/main/res/anim/slide_in_right.xml create mode 100644 app/src/main/res/anim/slide_out.xml create mode 100644 app/src/main/res/anim/slide_out_left.xml create mode 100644 app/src/main/res/anim/slide_out_right.xml create mode 100644 app/src/main/res/drawable-hdpi-v11/andchat.png create mode 100644 app/src/main/res/drawable-hdpi-v11/andchat_notif.png create mode 100644 app/src/main/res/drawable-hdpi-v11/andchat_notif_err.png create mode 100644 app/src/main/res/drawable-hdpi-v11/andchat_notif_mixed.png create mode 100644 app/src/main/res/drawable-hdpi-v11/notification_icon_bg.png create mode 100644 app/src/main/res/drawable-hdpi-v9/andchat_notif.png create mode 100644 app/src/main/res/drawable-hdpi-v9/andchat_notif_err.png create mode 100644 app/src/main/res/drawable-hdpi-v9/andchat_notif_mixed.png create mode 100644 app/src/main/res/drawable-hdpi/actionbar_back_indicator.png create mode 100644 app/src/main/res/drawable-hdpi/andchat.png create mode 100644 app/src/main/res/drawable-hdpi/andchat_notif.png create mode 100644 app/src/main/res/drawable-hdpi/andchat_notif_err.png create mode 100644 app/src/main/res/drawable-hdpi/andchat_notif_mixed.png create mode 100644 app/src/main/res/drawable-hdpi/ic_list_more.png create mode 100644 app/src/main/res/drawable-hdpi/ic_list_more_selected.png create mode 100644 app/src/main/res/drawable-ldpi-v11/andchat_notif.png create mode 100644 app/src/main/res/drawable-ldpi-v11/andchat_notif_err.png create mode 100644 app/src/main/res/drawable-ldpi-v11/andchat_notif_mixed.png create mode 100644 app/src/main/res/drawable-ldpi-v11/notification_icon_bg.png create mode 100644 app/src/main/res/drawable-ldpi-v9/andchat_notif.png create mode 100644 app/src/main/res/drawable-ldpi-v9/andchat_notif_err.png create mode 100644 app/src/main/res/drawable-ldpi-v9/andchat_notif_mixed.png create mode 100644 app/src/main/res/drawable-mdpi-v11/andchat.png create mode 100644 app/src/main/res/drawable-mdpi-v11/andchat_notif.png create mode 100644 app/src/main/res/drawable-mdpi-v11/andchat_notif_err.png create mode 100644 app/src/main/res/drawable-mdpi-v11/andchat_notif_mixed.png create mode 100644 app/src/main/res/drawable-mdpi-v11/notification_icon_bg.png create mode 100644 app/src/main/res/drawable-mdpi-v9/andchat_notif.png create mode 100644 app/src/main/res/drawable-mdpi-v9/andchat_notif_err.png create mode 100644 app/src/main/res/drawable-mdpi-v9/andchat_notif_mixed.png create mode 100644 app/src/main/res/drawable-mdpi/ic_list_more.png create mode 100644 app/src/main/res/drawable-mdpi/ic_list_more_selected.png create mode 100644 app/src/main/res/drawable-v11/andchat_logo.png create mode 100644 app/src/main/res/drawable-v11/ic_menu_add.xml create mode 100644 app/src/main/res/drawable-v11/ic_menu_allfriends.png create mode 100644 app/src/main/res/drawable-v11/ic_menu_allfriends_disabled.png create mode 100644 app/src/main/res/drawable-v11/ic_menu_close_clear_cancel.xml create mode 100644 app/src/main/res/drawable-v11/ic_menu_copy.png create mode 100644 app/src/main/res/drawable-v11/ic_menu_end_conversation.png create mode 100644 app/src/main/res/drawable-v11/ic_menu_exit.xml create mode 100644 app/src/main/res/drawable-v11/ic_menu_filter.xml create mode 100644 app/src/main/res/drawable-v11/ic_menu_help.xml create mode 100644 app/src/main/res/drawable-v11/ic_menu_preferences.xml create mode 100644 app/src/main/res/drawable-v11/ic_menu_refresh.png create mode 100644 app/src/main/res/drawable-v11/ic_menu_save.xml create mode 100644 app/src/main/res/drawable-v11/ic_menu_search.png create mode 100644 app/src/main/res/drawable-v11/ic_menu_stop.png create mode 100644 app/src/main/res/drawable-v11/ic_menu_userlist.xml create mode 100644 app/src/main/res/drawable-v14/andchat.xml create mode 100644 app/src/main/res/drawable-xhdpi-v11/andchat_notif.png create mode 100644 app/src/main/res/drawable-xhdpi-v11/andchat_notif_err.png create mode 100644 app/src/main/res/drawable-xhdpi-v11/andchat_notif_mixed.png create mode 100644 app/src/main/res/drawable-xhdpi-v11/notification_icon_bg.png create mode 100644 app/src/main/res/drawable-xxhdpi/andchat.xml create mode 100644 app/src/main/res/drawable/action_item_btn.xml create mode 100644 app/src/main/res/drawable/action_item_selected.9.png create mode 100644 app/src/main/res/drawable/actionbar_back_indicator.png create mode 100644 app/src/main/res/drawable/actionbar_background.xml create mode 100644 app/src/main/res/drawable/actionbar_btn.xml create mode 100644 app/src/main/res/drawable/actionbar_btn_normal.xml create mode 100644 app/src/main/res/drawable/actionbar_btn_pressed.xml create mode 100644 app/src/main/res/drawable/andchat.png create mode 100644 app/src/main/res/drawable/andchat_launcher_icon_ics.png create mode 100644 app/src/main/res/drawable/andchat_launcher_icon_xxhdpi.png create mode 100644 app/src/main/res/drawable/andchat_logo.xml create mode 100644 app/src/main/res/drawable/andchat_notif.png create mode 100644 app/src/main/res/drawable/andchat_notif_err.png create mode 100644 app/src/main/res/drawable/andchat_notif_mixed.png create mode 100644 app/src/main/res/drawable/andchat_samsung_multiwindow.png create mode 100644 app/src/main/res/drawable/arrow_left_default.png create mode 100644 app/src/main/res/drawable/arrow_left_pressed.png create mode 100644 app/src/main/res/drawable/arrow_left_toggle.xml create mode 100644 app/src/main/res/drawable/arrow_right_default.png create mode 100644 app/src/main/res/drawable/arrow_right_pressed.png create mode 100644 app/src/main/res/drawable/arrow_right_toggle.xml create mode 100644 app/src/main/res/drawable/blue_arrow_left.png create mode 100644 app/src/main/res/drawable/blue_arrow_right.png create mode 100644 app/src/main/res/drawable/button_indicator_next.png create mode 100644 app/src/main/res/drawable/button_indicator_prev.png create mode 100644 app/src/main/res/drawable/disconnect.png create mode 100644 app/src/main/res/drawable/fragment_user_pressed.png create mode 100644 app/src/main/res/drawable/fragment_user_selected.png create mode 100644 app/src/main/res/drawable/fragment_user_selection.xml create mode 100644 app/src/main/res/drawable/frament_user_unselected.png create mode 100644 app/src/main/res/drawable/green.9.png create mode 100644 app/src/main/res/drawable/green_arrow_left.png create mode 100644 app/src/main/res/drawable/green_arrow_right.png create mode 100644 app/src/main/res/drawable/grey.png create mode 100644 app/src/main/res/drawable/ic_menu_add.png create mode 100644 app/src/main/res/drawable/ic_menu_allfriends.png create mode 100644 app/src/main/res/drawable/ic_menu_close_clear_cancel.png create mode 100644 app/src/main/res/drawable/ic_menu_copy.png create mode 100644 app/src/main/res/drawable/ic_menu_delete.png create mode 100644 app/src/main/res/drawable/ic_menu_edit.png create mode 100644 app/src/main/res/drawable/ic_menu_end_conversation.png create mode 100644 app/src/main/res/drawable/ic_menu_exit.png create mode 100644 app/src/main/res/drawable/ic_menu_filter.png create mode 100644 app/src/main/res/drawable/ic_menu_help.png create mode 100644 app/src/main/res/drawable/ic_menu_preferences.png create mode 100644 app/src/main/res/drawable/ic_menu_refresh.png create mode 100644 app/src/main/res/drawable/ic_menu_save.png create mode 100644 app/src/main/res/drawable/ic_menu_search.png create mode 100644 app/src/main/res/drawable/ic_menu_stop.png create mode 100644 app/src/main/res/drawable/ic_menu_userlist.xml create mode 100644 app/src/main/res/drawable/indicator.9.png create mode 100644 app/src/main/res/drawable/more.png create mode 100644 app/src/main/res/drawable/notification_icon_bg_tile.xml create mode 100644 app/src/main/res/drawable/overflow.png create mode 100644 app/src/main/res/drawable/qa_arrow_down.png create mode 100644 app/src/main/res/drawable/qa_arrow_up.png create mode 100644 app/src/main/res/drawable/qa_popup.9.png create mode 100644 app/src/main/res/drawable/reconnect.png create mode 100644 app/src/main/res/drawable/red.9.png create mode 100644 app/src/main/res/drawable/tab.xml create mode 100644 app/src/main/res/drawable/tick.png create mode 100644 app/src/main/res/drawable/userlist_disabled.png create mode 100644 app/src/main/res/drawable/userlist_enabled.png create mode 100644 app/src/main/res/layout-v11/channel_list_fragment.xml create mode 100644 app/src/main/res/layout-v11/channel_list_text_size.xml create mode 100644 app/src/main/res/layout-v11/statusbar.xml create mode 100644 app/src/main/res/layout-v11/userlist_fragment.xml create mode 100644 app/src/main/res/layout-v11/userlist_text_size.xml create mode 100644 app/src/main/res/layout-v14/chooser_buttons.xml create mode 100644 app/src/main/res/layout-v14/ok_cancel_buttons.xml create mode 100644 app/src/main/res/layout/action_bar_inflated.xml create mode 100644 app/src/main/res/layout/action_bar_stub.xml create mode 100644 app/src/main/res/layout/action_item_horizontal.xml create mode 100644 app/src/main/res/layout/action_item_vertical.xml create mode 100644 app/src/main/res/layout/actionbar.xml create mode 100644 app/src/main/res/layout/actionbar_item.xml create mode 100644 app/src/main/res/layout/actionbarfull.xml create mode 100644 app/src/main/res/layout/activity_chat.xml create mode 100644 app/src/main/res/layout/activity_copytext.xml create mode 100644 app/src/main/res/layout/activity_ignore_list.xml create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/layout/activity_password.xml create mode 100644 app/src/main/res/layout/activity_server_authentication_chooser.xml create mode 100644 app/src/main/res/layout/activity_server_details.xml create mode 100644 app/src/main/res/layout/activity_step1.xml create mode 100644 app/src/main/res/layout/activity_step2.xml create mode 100644 app/src/main/res/layout/activity_step3.xml create mode 100644 app/src/main/res/layout/activity_step4.xml create mode 100644 app/src/main/res/layout/activity_userlist.xml create mode 100644 app/src/main/res/layout/channel_list_fragment.xml create mode 100644 app/src/main/res/layout/channel_list_text_size.xml create mode 100644 app/src/main/res/layout/channel_switcher_textview.xml create mode 100644 app/src/main/res/layout/chooser_buttons.xml create mode 100644 app/src/main/res/layout/dialog_choose_file.xml create mode 100644 app/src/main/res/layout/dialog_customize_text.xml create mode 100644 app/src/main/res/layout/dialog_message_dialog.xml create mode 100644 app/src/main/res/layout/empty_listview_content.xml create mode 100644 app/src/main/res/layout/fragment_user_checked_textview.xml create mode 100644 app/src/main/res/layout/horiz_separator.xml create mode 100644 app/src/main/res/layout/ignore_list_item.xml create mode 100644 app/src/main/res/layout/liststyle_main.xml create mode 100644 app/src/main/res/layout/non_fragment_user.xml create mode 100644 app/src/main/res/layout/ok_cancel_buttons.xml create mode 100644 app/src/main/res/layout/popup_horizontal.xml create mode 100644 app/src/main/res/layout/popup_vertical.xml create mode 100644 app/src/main/res/layout/single_message_row.xml create mode 100644 app/src/main/res/layout/statusbar.xml create mode 100644 app/src/main/res/layout/step_activity_buttons.xml create mode 100644 app/src/main/res/layout/user_action_button.xml create mode 100644 app/src/main/res/layout/userlist_fragment.xml create mode 100644 app/src/main/res/layout/userlist_text_size.xml create mode 100644 app/src/main/res/menu/charsetpicker.xml create mode 100644 app/src/main/res/menu/confirm_menu.xml create mode 100644 app/src/main/res/menu/confirm_password.xml create mode 100644 app/src/main/res/menu/copy_menu.xml create mode 100644 app/src/main/res/menu/cw_menu.xml create mode 100644 app/src/main/res/menu/main_menu.xml create mode 100644 app/src/main/res/menu/server_details_menu.xml create mode 100644 app/src/main/res/menu/tab_menu.xml create mode 100644 app/src/main/res/menu/user_action_menu.xml create mode 100644 app/src/main/res/menu/user_action_menu_legacy.xml create mode 100644 app/src/main/res/menu/user_action_menu_legacy_multi.xml create mode 100644 app/src/main/res/values-sw320dp-land/bools.xml create mode 100644 app/src/main/res/values-sw320dp-land/integers.xml create mode 100644 app/src/main/res/values-sw320dp/bools.xml create mode 100644 app/src/main/res/values-sw320dp/integers.xml create mode 100644 app/src/main/res/values-sw320dp/styles.xml create mode 100644 app/src/main/res/values-sw600dp-land/dimens.xml create mode 100644 app/src/main/res/values-sw600dp-land/integers.xml create mode 100644 app/src/main/res/values-sw600dp/bools.xml create mode 100644 app/src/main/res/values-sw600dp/dimens.xml create mode 100644 app/src/main/res/values-sw600dp/integers.xml create mode 100644 app/src/main/res/values-sw600dp/styles.xml create mode 100644 app/src/main/res/values-sw720dp-land/dimens.xml create mode 100644 app/src/main/res/values-sw720dp/bools.xml create mode 100644 app/src/main/res/values-sw720dp/dimens.xml create mode 100644 app/src/main/res/values-sw720dp/integers.xml create mode 100644 app/src/main/res/values-sw720dp/styles.xml create mode 100644 app/src/main/res/values-v11/bools.xml create mode 100644 app/src/main/res/values-v11/dimens.xml create mode 100644 app/src/main/res/values-v11/integers.xml create mode 100644 app/src/main/res/values-v11/styles.xml create mode 100644 app/src/main/res/values/arrays.xml create mode 100644 app/src/main/res/values/attrs.xml create mode 100644 app/src/main/res/values/bools.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/main/res/values/ids.xml create mode 100644 app/src/main/res/values/integers.xml create mode 100644 app/src/main/res/values/plurals.xml create mode 100644 app/src/main/res/values/public.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 app/src/main/res/xml/prefs_about.xml create mode 100644 app/src/main/res/xml/prefs_chat_logs.xml create mode 100644 app/src/main/res/xml/prefs_connection.xml create mode 100644 app/src/main/res/xml/prefs_data_backup.xml create mode 100644 app/src/main/res/xml/prefs_data_security.xml create mode 100644 app/src/main/res/xml/prefs_debug.xml create mode 100644 app/src/main/res/xml/prefs_interface.xml create mode 100644 app/src/main/res/xml/prefs_main.xml create mode 100644 app/src/main/res/xml/prefs_messages_rooms.xml create mode 100644 app/src/main/res/xml/prefs_notifications.xml create mode 100644 app/src/main/res/xml/prefs_server_profiles.xml create mode 100644 build.gradle create mode 100644 build/intermediates/gradle_project_sync_data.bin create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 local.properties create mode 100644 settings.gradle diff --git a/.gradle/2.2.1/taskArtifacts/cache.properties b/.gradle/2.2.1/taskArtifacts/cache.properties new file mode 100644 index 0000000..2a27b7f --- /dev/null +++ b/.gradle/2.2.1/taskArtifacts/cache.properties @@ -0,0 +1 @@ +#Sat Aug 01 00:18:09 BST 2015 diff --git a/.gradle/2.2.1/taskArtifacts/cache.properties.lock b/.gradle/2.2.1/taskArtifacts/cache.properties.lock new file mode 100644 index 0000000000000000000000000000000000000000..2efd15760021813f4f870dd23966399d1bad180c GIT binary patch literal 17 VcmZQJefX<*f2XDe0~j!B0suDJ1X=(9 literal 0 HcmV?d00001 diff --git a/.gradle/2.2.1/taskArtifacts/fileHashes.bin b/.gradle/2.2.1/taskArtifacts/fileHashes.bin new file mode 100644 index 0000000000000000000000000000000000000000..09582590007487c5bcb2567d1473b53ad97d03d8 GIT binary patch literal 31998 zcmeI3c|29!|LD&#MwuE+DMKlg%%Lb!iG(sHV?;8~W6Ds7LL`MssgMkb6d_WCG{}@t z=BYs<68G%0&fd;megC-M-@Sj`tJkYXy<6}7S?jabUc=t|sozZ?aI?=-ei5jCU4B~o zgX*t~e_YJKVg?p7u$Y0x3@m0~F$0SkSj@m;1{O20n1RI%EM{Oa1B)40%)nv>7BjGz zfyE3gX5jyk4AdKt8o~@3!@ZS;{D;rY^g;DL1cKx;(qDg`wpxA8IRD`|C}Xq_eUlK< znwxr3;z>hUzyuz+V^6;QO;GVH44_o8Vuqh-Y6>yDf7|%8w z8sm~{1^lol#tVnf7UpML03OJX@-xNb-D_E1tp?n%73F77Tj#vxORhhm z^9B6q3zT2beq*&n+j$@0hgP6GhC%XtM1W8b;6C*jw~u%!v;E^oz|Blh9=j)qUCA$H z2ypvil*fJQVr-f|=?b_(70NFL=kitRb>9KpBm(8}48*6x)mLf&_r|W1pzJgxe&Asm z;I=+!`2_DnO5FS}V*z)pK>1~nDoelKFU^2!?m>A{g5d|(`PoLmO$$(dMX=xb{dJRM zz&(aAe%)a6_@fyv!1d`-e)VqY;jf82V2BcqSz)|s-Gg)QX19X!Hv2K&>iTiKTc8hc zzq2U6Ca+YY%i}r%&k`UL)Z_n0e++zj<{KIP(IKQ z2LWKar%W2)N#BwEVN{aj}e&st*CTJCE|p%he_(@{N@7W}t`hue4T`PT${y@(x}o zuS&LgNt5*XI^YMlV!SDZvF`rC4#0g9Q2wfD?F~uSPC-iC=P0iu`WXug%24>xIgHyI z-?*#$@&qXF{SD)po8ox?`cdWwt6eCs7yOza>M_;}%DZCo-s{6BYy0n=Ee70S2U`C1 z^NAzsa$dIq_uYo_#{2poW(0hB0Y4Ci@ki;KHqu=w2iy`H&u?DKtQ}A@z6H2h99sUZ zw2$l0SM!wX?|+5yGVefx?H4HXjL~V7zvH?Sz{+L41zg7_6y@*PKC1N+gq8qq^a$fO zGE%F=E;<6PuZ;2!tF5P3D_VC0eq09QwU_$2O*AR-T2YKI;A^$O*VP*4{o&m!0QxK2ol4Y>t-i)92tm zv^5|Tl(*Nw_@fV&iZg$n0Iq|r7yWg=68qBwDC@5d6Iy;?W3TR$f;!55bRr4k0UpUq znxrV}g~1HU2k%}AxWoSL3%LGKBaAkQ!y5h@Q|1W6937OnemYqB{D#Aq6lW;o%4rM6TNKM~ zPu`vc*E!yX^6A#MbRUGrDS6(%9_2GyjzdxQG<2Z6hd;{ygxjzW`N~k%uK*Q{kJvE1 zoxDlmhwq_$Zf9_@jQyq}aGfLA_@65rKWU&|Ov!`oPP9Bht8l+)upnih>4vRe1XJnB zQEkps;5z15hY@|f97TFCg zPuOn2U9fqTA^pha<_9s9@#ZCmmS?;$Vy{+uow6@-oWl6D-+q1@w=>{64m~Jea+{d` z;)H)N;LZgYe!Wjk)$#b0u1-ND)%2~dAkMbJ0zXx!OrzmHYb`~^ntDgbfRUYMRZs$hhQ+5GNFvYIJuEIC= z_OA-1eBcGNJiFVuH)gjCDdqJxV%*!>lCjiy9Q?x(35;KiE$XlzP5|5*+t;yY-IttG zFrwtgW+hg>rj=!l)Rj%3yiPvKS319mK1SOb5BOnhy<1t?xYWN&ffaCDMzs8@&X0rk z_G>8T5xYMq=W5%#c9o(lWnJ*&LOJ(wKQ6IP#guWYkL`1~ugyMoQ8<+duJ2NVmgn)i zb9&%ec_H8y*nGlMZeK1jBTbplwXyv+ujBPKwZT{WL3vMO^g64BI*2R7y!8Nge~)qT z8HGD~ml*)J#>P3H=niq#m(QF5KZK3LHH6A@eSbSB*D=Ay|C-1_=M|mlHz?(U(d+Yv za^?TgNd6AENjb*P1#kcEWX1@%|5cO=NDz#-m#MM?eh^!)h4uwT`-FL&2i(p8Ex)cz zscd@dNg+!4+Zg|Sr{isb!!y7=vHhO#XUF4;HpymyJEfxKH}tfP`SLA!0k}D~uNH~# zK9v#^KpD8cv}k!T|5$nXkDKE_dDA^87k9mx#FOcG4{)PzD3?fj>y)HB<^lKtY<`pC z4jU7xncx9jlLaj=m3&muy7GG^;K#&JF2h&qe7{vp9dP#)jQcettV*__oD2N0`%$Jj zUz(KJr*X3VH(iTzj zZ-I>;?esbk>t8IC^~Lx#T3)Bg{9$~3VF`$Ps2JlT5vSHv-P-}UiwVkg3DzG6=Hw~+ z1P^A6pX-h*QvOESw;a$y`N32g#k1#ktq0f9#paoVKa+?`^Q$fce*6Sl{!rXFtA1|3 z3E&pke0ZoMF|6JFN+00%*u0_lo;af#KGF-g8I}hFyP6Q&qFb*3cjH8_Z&*1;qw(pr zBH%{sC^s@6m)|0Hd>(KeRg@dInZNX$RpJBOHxuP1dYmHS&th%>?#PSsBeE4-vW*P< zfFHSza?>*5y0GEPs(?FWqugu{^Vj&s1AhQF;6u5&*gRX8jgu4LK4vJl$YYT($z`X^ zOEx7KAC0s%dB92s$~y;Q{QJgQv8ELO6HbVr+;Y02A;qna^4!DqF3PQz37-8l2ZoCYh&wz(@N#UkRNX- z$Goxe?A5c1 zSQOiy1#zTtKLma&z5{?;4Wicxa2P3JYV6nvxGt8@fHTsnT54hwfIA*U%b%RP zn(6jJo-#i5v2l26wpF!PU1BTcIs#~U^e4i7BjGzfyE3gW?(S`iy2tVz+wg#Gq9L}|DQ8ZkGvrhBmG9c zKoH^}M86knQ>iDE-B*&1SSwCLdT&J3?mr%LoRTAYOrOYl(43%Kx{*EmV{2wWRO40EN@n`m7ey z{^#*-uaRFb-wD-#T8dHL{?YtGYI!H3?kF7Y%+w$KZrk%Yq1h{=D!;Od<2|A^;?*C^ zeFcSE>N&^ZSG$|T%c8V0(N!o4(#Ri2GB~vo;c#D*HV#;o=KmcxFiO3nzJl~}n3NSG zw3@_8B;2mXglAB=Aer#eaCZhvp7&Kt9q6J-?=Eo~Ib8P!mX~n2w$;z82#4P)$#aaK zFsf*)fIM=zKklo$U~fc6p00quyzSo&ZeV$Q4j3h{G@eOB<03$mXsWa zVzUfi$eTi%cmMEDcG!yuG*F*ED8piWN#N3w?5m`2LvZaQ*E6HFY6IC@7-Ouz?gS*Z z7yYnwHV=8NnX((w$l+f6-1iC6(6m- z@JUzB+d1$2BN7c$A&1Ix9dm4n~5C(3tyjKq7ir_E;s)PC&hjhNjvMVj-dvqB($37FhDo(0$PDTi>HzNm!; z!^m&{AH&Xv@E$Gs3!Z(Z-%S25g`3q;VwigINA+XP9c!7S+oWnySCdHou;#9|8Y5iI z?>_#^q)Xdv8PhyBjrjSJ7Ak6wfpk9+2wYt%X0X@u<-%)e*{AH`+$*g927iDC%Tn?O zGShuxZ(%Qco#E13rkj{5V`{v)k}N*py*t_^8{}8PtNCYmvVx} zG~ohL&5t)*m%-tREBl75j~v`zI@HeQ=rWgt563|MUPNlaS0%`k7wrg?@d|0)~($>)V);H4Eh1AKUk4Chd@0`tWE&r#yjoDs{_u03?iPC;3-6JJdN`D2pu)iPif zqqYX8R2thJl9Mr^5+XwS7wYB_IgsYn#jI0>!kK-p`W$U|a@U@1Mw)ReR6pW1 z!bwEiJlR15X^uTCn|=D5ea)MH*+zsFLdzE6GNSop9e{6h!I93h6K3ADk3Y3a?NPP0 z!bc;LKe-BO?f^Tuh1HI`J?*r=9E&WU&Ay+E5?4qYJ?gg6ky1+_=(!|#LY369)$c=bx5qutGoMPKtQ;*F-m%?#n4|uH=Y8Jv^`x)a zs9OiL*HJq{A?<{3!DEB7xmM*bOw9}jYNYTQk$jU6iN9`xYuSCmjcfVKpR@^TMvptZ z!u0VTfjp-u7BJ1jUc(c1t}vHXPuR@VY}LEZbm2YvHAw5U=M(~=YC28Ye_&jFzGy}` zEl)6pjx>i*w~n6NclKYV9>L*CIz|k%pZq@Aa9K$s_^}pV^mOfnn{l4&Jc=sTWXeV<#*TdoB zr%hw(PtaF$gwNj%e17*UzM2fFh&OXD`=7H#S8C(PMiXg<_^_hHg8klEc#lZ#1p!*l z2B?}l*Z%oA-mK4??xFi3r96>Tj5;fXDkNM1*Vns{CK=`E9I{^a=`796A)S@3(EUo^ zhG^|fte}<)xB1FL)sk_xwt){hqUgU_36f?=>S(m&`*qjWcChcGx?kH|lnatghc^82 zvKXCoUP}5tklJI|i-g=}0_V+r(<97YNx>c^kO&FJygJ)^fD3oWX}uv&HYMNo_I%@cT! zmb8s09YlN1DMQs%R%nSR8SiPah;my~tyBiBKs2O@hBU_bkAoYXs@JcwWmWX;Y`;){ zY_9oNK$S2)9C0(^Wl7e_!qtpfvFyyT>h!H{olBbXOecHs9)bK7^UnO=IB$dlkJ}QuC(V@1|F74j8kb(StlvZ<2`S3^*q&3~BkR%pK99^A}Ex z6?N!WUi^;NKqur}YA+&(ThP3I7^;QVR?Ez-{iW#=epeQ+(L6z-iJcjWgtQIL0-Xxd z!6(bEGi2@RWg|WBp>7;a4x-(tn9YPV>%EsOYUUnS_my9pcIVi)=RawkLVM4_If@q_JvVk$jork=i=j{ki8& z<}9RuE)O8a*J$+)8U}@u>W>RY-qx0QacjYS z@L%=aLRR$uNc$N6Rn{n+IC?(IFOzcQ!X~k+Nb7ctWPt}HR9WdN;Wm#+;NWadao}fp z+aisxCjBSGdp`as8tOYfOCGHV<**kRNV#2 zHN|?ZN1{wM@E#!(@nXB|<>0I|xL1f*hYCuHS(?536dpvH?WnU!xQ2K`Lz1mfHJQgp zp0BeJ_BsFCC;V=?BI)@owMIXOXi-MKo8WN&RW%nn;pmph3bCvksn@ExuMrgx?VOsZ zIGmGQokKZUsdL1;PUG~memy_&9^nS!t?ZftCmE^{T~{XdyybRYVYN{w2D`gqw2@rb2GLUD#rF#nC?Sq=`;IB;HHvh9G z56zcy+ZN-)F;pVq-ey$!!Ogo-`HHRgV_cbFedMWif$<)Ak6?{>`<_a1L7kuz<6I(i z%WgR9(|R9MCbJiiMjp}Id2>zSa2*{c)_l7+GC$flC-THXV+is{Lx(_6;dp)z_OA0< zM<*AEJkeeo_gr1j)f4X#k!~hTeyag58W%c!qmd@Jf=9xvTV(wU_4}%nS8-@EX}2R9 zE$uD_sCC=^{`@JlHM0K3lroc};P!cZG@1lN`zBjC1lKZc$J0PU+4?eu^;dX8#XP$4 z-ZJtV54AfgaZtFEW<`T3qmGGdeS|peV~X_g8aS${8cgv*nh}3T7V~<0SrN0CpoqLp z0+3dQ)N=EWD)26jYGl@A6gqT^_75tYS<{;y|L6#Nj(I`!C zC!Vlru9UR9rykLCX0Eb$)gJ0zau_{D!tl)-I; z@5Nc8P3<+2wN61%Yi}TNk3m%*#0EyeDR07@{!`C856!~M^lQ#lj1#}1ACPTT{mMa`^G;kFI5X! z9{LyWEj@^M-@B2|J6E}I#4g9y zewL8;dUY9TR;F$q%?3nM=jJnqv_QAi@G$RM#>m6Db`Mk5lLjNTMn@Xsq({9`BJ_}^ zRke%HfA-MynWo+H!=0l$@fz3%gq4QCTSix=_8(E{eUz=Yv-{<~5=G$QO z{o1-Tc8h%7OI6DEKWsI{8?EBZh zRnkst@yeHec@5IeAzJj_>)=7*LQWi(CtdbB`KFmo^($Y-_+!$M0GAWeah5;`4aooJ zdFHujE4Sarl04b9zj&JKnDIa!`H5e-;bpKjS_nt;qsV`^J@Zz7k(skX#e1@WhJK_( zTZDvDS)&DZ(F>ZR;H57aF6WQmV@!J`vzvJuuhEgl4Qc9AozI86U~{0c?kK*Z5d3EY-d8GqwT+=vZa+vT2X#Mu;|Cz zeRvJ*Y7FpWH=(B(6Q!8z$$zf;U?gXlBMu0lCC zF;*FTEr|k1<5Xxi=E2^eWDDWs+QAl`-<<*$b@5SnkCuF)#PJ@jFyg&=aoZdAk|st2*JyQjx(#Z6y7wj?>T@t>4h?OXg1x4p zUYjcI%xC!-uTE&C26f=$fjfvxgMEzbEex?u>odcr9ZT07+sc2T?v-*cq>&B{q`lGV z3uA-&{!Cj~!DTb5>Wbg#^mE75FCY0AhW=nkTFLA0E9UwE_c^Tlz*SLndKTDgST z;T?XIXK?7PKyw1oQi#L<4C#i<-7!28MDhKGO>ECLu7#%u@}t778k6tfWKQYy+o;N( zIle~SyY;*8L-aixhB=cJ5)p#jgoGbmpPHh1Tpv zyr4&&V98tPJHpwVO$0xCGg>hRY#VHH)(BSW9KInH`XiIc>0yv9eWG=b1X9Oi^Hni0?2 zj)xSUGK4>88M$8m9N&M^p(&G*%^c@C1RX2OcgdwC@w=eZ_t*FE?9s ztO6e{j=ZCqO?wL7g;IHs6z@K4-!Q5loRgMdL|g zyPe=29yI#cyS0|>Tr55s%`QZnYU=WWG}h`B#xK@gv}ol?6Rgf`hB_Q9%Ca8=Qz7kt zSjqn?8dVRpEK$-p(R{3)=uNX)aX7LY-#7y4!5Zn;VJ�@0kBARIDMjI&Hmii>ht3 zJzfK;OfXyi2x{Esmn_A6@elrF9Th$JzAp#boDxYdpa_KFORM2$r?e64PrKxC2HBUy zxJ5eJJ;O&M_#xU{#v2fgs&Vs~d2L$W>_%VnCbeEou|pFIsAU;jTN_l%|0LMCqg;lsTdS}BIFyv$ z1>-%U2;vpC1pb7=tq}S)lc0Y&=O0BnrP4tb*Qbg zBVDb|M2&Qq7mx0AS{^JAgyG%zv*OricV-MaFxz@(dbRye!lsyhj>7YcQ>^&3Y&%}Q zB5QYP!P=GK_xIZIyH(4|llNDBvEp-_cKl&QLD|bogFjpGnSJbd)Q2(EwGo-)toW=r zJ3hRElxYbo&V=*Ku;XK|r!@Gt4m}mllVHbF`@SzqeDpRgoM(p}r-c!hTpMe4TJdSA zcHI8u@%+!*?_1CD4FL#100Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0ucDO1cC{yz5K)gKP+G!7!Wr2Zhz!)GJ=&Myb#9? zBF;6aZiwlc>KD^|d9tFV>RJwU`3x~xl_zCOK2gfe6`gsCM-~;;M|Cfi70E{pcIVQm zm#RL=BT9MXA;8d{$2qRmqtAJXG=-3#ww@}zA! zThm_F>RhVIRCW2|44 z)3(Y#(_xR|Bv)cy)vnhX>p8j5H0()bOXk8$_R>>c2&wLSG*p2+oS zRr`i*56R@+pH3~Rlr1Y&cJbvUYbu-e;zYi}toq|}qacCVW824rp8RLh-G-;Vkm}j7>3$SLPkYN zQW~N50~3mnXswILrV|HdS*;))fn=jeW+S5ZxaR?%{~+Rh;Qac0zUT0q*X{8Y8b*fY zkKBx9+ZDGryzG`s1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#~EPXv4w(GN+AeN0Av z+|tFT*YPgjDZ|*79KBuL78=@RT`&*CW{TR?pM(zA)k%NazK1gZtn%xQS*s`eycx@j zH>kY(=k$8pkw^J*{*KD~K4khQC!X5mys7fR9>>6V;l<5z{-w&@-=F6-rG%#B{7RL3 zyKgqXd(~Sf^Svq`pMQ4Q9NJSZ^JtGh4SgKlS7 zZwH;8-Sf^>w?y0E{g|e=BU#^Gw4V(6MeC@TzNWW3tGu;mesvCr_IIGhqqlKMmBViW z{E}G*o2nc6yy;cW0fM zOOpy>G#d4aVzt&vTM8!3m00ck)1V8`;KmY_l00ck) z1V8`;KmY_l00ck)1pX%i(>*GY>!W1qniJ;34`-84PVYph;Rbb?eD$uMhWB1SAwcORasWE zp_H$oaagv0va&#Pc;Z+eFEkEUGZzQBHd%QztEVdUqQpE;WICjJiUdbX`|%*QJsjli zHdQ%!!k3*p{PtfXWA`PH)rOLT*ej4Bj%rHxZ7BFz!k-)8Tc3LE`=a`4%uuMSplJM7 z>&l)Rd$lSKf`iky@u$8z@XrMmyDyF%qOsgs59ft`Dttb02RfKbDhyHdnOpG42JD+B z!y*eM_1noH@#aQaT%uL;l>2T`2t&r@0>5XlU+-mx%Bt8rc*=7JGV~Gx11iHS=462GA!6m^RxCH>&t~!@60A) zHial~w6t^qE-6w;{LQ+kOj@b}YfWVpB=zhx=XkiC3OO`#rhfkJI8 zKyEFKBf~sTZLjJEv2u+cN;9TiCvJSN<;bD$Ou_FSj5fN=6-#vy1*X5bSx{o{^pE4upTJMcP)+KJLa5GiIAUSd%@9yS4^g8RC%3Z8u+l%Je_X{b?Tl`ul@ zpI&<280h?e)XnO={m9Doy{x(C=EmNS&V5#Ya-K6SUW8plL~CM}g!Or436u^ZeSnm% UOkL<{v#!bNQ-RRouJ&*L1G2A|p8x;= literal 0 HcmV?d00001 diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..7f265fe --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +andchat \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..96cc43e --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml new file mode 100644 index 0000000..e7bedf3 --- /dev/null +++ b/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..3ec5955 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..e930905 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..ae7f81e --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/AndChat.iml b/AndChat.iml new file mode 100644 index 0000000..dee7fca --- /dev/null +++ b/AndChat.iml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/app.iml b/app/app.iml new file mode 100644 index 0000000..05d03bb --- /dev/null +++ b/app/app.iml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..20a2ae1 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,17 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 21 + buildToolsVersion "22.0.1" + + defaultConfig { + applicationId "net.andchat.donate" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' + } + } +} diff --git a/app/build/generated/source/buildConfig/debug/net/andchat/donate/BuildConfig.java b/app/build/generated/source/buildConfig/debug/net/andchat/donate/BuildConfig.java new file mode 100644 index 0000000..9f5b038 --- /dev/null +++ b/app/build/generated/source/buildConfig/debug/net/andchat/donate/BuildConfig.java @@ -0,0 +1,13 @@ +/** + * Automatically generated file. DO NOT MODIFY + */ +package net.andchat.donate; + +public final class BuildConfig { + public static final boolean DEBUG = Boolean.parseBoolean("true"); + public static final String APPLICATION_ID = "net.andchat.donate"; + public static final String BUILD_TYPE = "debug"; + public static final String FLAVOR = ""; + public static final int VERSION_CODE = -1; + public static final String VERSION_NAME = ""; +} diff --git a/app/build/intermediates/assets/debug/servers.xml b/app/build/intermediates/assets/debug/servers.xml new file mode 100644 index 0000000..9d29f2b --- /dev/null +++ b/app/build/intermediates/assets/debug/servers.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/build/intermediates/incremental/aidl/debug/dependency.store b/app/build/intermediates/incremental/aidl/debug/dependency.store new file mode 100644 index 0000000000000000000000000000000000000000..8b8400dcf9e65fb815794fe016943dc09d0e8a05 GIT binary patch literal 5 Mcmb + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..598fdc5 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/assets/servers.xml b/app/src/main/assets/servers.xml new file mode 100644 index 0000000..9d29f2b --- /dev/null +++ b/app/src/main/assets/servers.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/android/support/v4/app/ActivityCompatHoneycomb.java b/app/src/main/java/android/support/v4/app/ActivityCompatHoneycomb.java new file mode 100644 index 0000000..f7098b9 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/ActivityCompatHoneycomb.java @@ -0,0 +1,16 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.app.Activity; + +class ActivityCompatHoneycomb +{ + + static void invalidateOptionsMenu(Activity activity) + { + activity.invalidateOptionsMenu(); + } +} diff --git a/app/src/main/java/android/support/v4/app/BackStackRecord$Op.java b/app/src/main/java/android/support/v4/app/BackStackRecord$Op.java new file mode 100644 index 0000000..2038946 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/BackStackRecord$Op.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import java.util.ArrayList; + +// Referenced classes of package android.support.v4.app: +// BackStackRecord, Fragment + +static final class +{ + + int cmd; + int enterAnim; + int exitAnim; + Fragment fragment; + next; + int popEnterAnim; + int popExitAnim; + prev; + ArrayList removed; + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/app/BackStackRecord.java b/app/src/main/java/android/support/v4/app/BackStackRecord.java new file mode 100644 index 0000000..8f838d8 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/BackStackRecord.java @@ -0,0 +1,620 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.support.v4.util.LogWriter; +import android.util.Log; +import java.io.FileDescriptor; +import java.io.PrintWriter; +import java.util.ArrayList; + +// Referenced classes of package android.support.v4.app: +// FragmentTransaction, Fragment, FragmentManagerImpl + +final class BackStackRecord extends FragmentTransaction + implements Runnable +{ + static final class Op + { + + int cmd; + int enterAnim; + int exitAnim; + Fragment fragment; + Op next; + int popEnterAnim; + int popExitAnim; + Op prev; + ArrayList removed; + + Op() + { + } + } + + + boolean mAddToBackStack; + boolean mAllowAddToBackStack; + int mBreadCrumbShortTitleRes; + CharSequence mBreadCrumbShortTitleText; + int mBreadCrumbTitleRes; + CharSequence mBreadCrumbTitleText; + boolean mCommitted; + int mEnterAnim; + int mExitAnim; + Op mHead; + int mIndex; + final FragmentManagerImpl mManager; + String mName; + int mNumOp; + int mPopEnterAnim; + int mPopExitAnim; + Op mTail; + int mTransition; + int mTransitionStyle; + + public BackStackRecord(FragmentManagerImpl fragmentmanagerimpl) + { + mAllowAddToBackStack = true; + mIndex = -1; + mManager = fragmentmanagerimpl; + } + + private void doAddOp(int i, Fragment fragment, String s, int j) + { + fragment.mFragmentManager = mManager; + if (s != null) + { + if (fragment.mTag != null && !s.equals(fragment.mTag)) + { + throw new IllegalStateException((new StringBuilder()).append("Can't change tag of fragment ").append(fragment).append(": was ").append(fragment.mTag).append(" now ").append(s).toString()); + } + fragment.mTag = s; + } + if (i != 0) + { + if (fragment.mFragmentId != 0 && fragment.mFragmentId != i) + { + throw new IllegalStateException((new StringBuilder()).append("Can't change container ID of fragment ").append(fragment).append(": was ").append(fragment.mFragmentId).append(" now ").append(i).toString()); + } + fragment.mFragmentId = i; + fragment.mContainerId = i; + } + s = new Op(); + s.cmd = j; + s.fragment = fragment; + addOp(s); + } + + public FragmentTransaction add(int i, Fragment fragment, String s) + { + doAddOp(i, fragment, s, 1); + return this; + } + + void addOp(Op op) + { + if (mHead == null) + { + mTail = op; + mHead = op; + } else + { + op.prev = mTail; + mTail.next = op; + mTail = op; + } + op.enterAnim = mEnterAnim; + op.exitAnim = mExitAnim; + op.popEnterAnim = mPopEnterAnim; + op.popExitAnim = mPopExitAnim; + mNumOp = mNumOp + 1; + } + + public FragmentTransaction attach(Fragment fragment) + { + Op op = new Op(); + op.cmd = 7; + op.fragment = fragment; + addOp(op); + return this; + } + + void bumpBackStackNesting(int i) + { + if (mAddToBackStack) + { + if (FragmentManagerImpl.DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("Bump nesting in ").append(this).append(" by ").append(i).toString()); + } + Op op = mHead; + while (op != null) + { + if (op.fragment != null) + { + Fragment fragment = op.fragment; + fragment.mBackStackNesting = fragment.mBackStackNesting + i; + if (FragmentManagerImpl.DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("Bump nesting of ").append(op.fragment).append(" to ").append(op.fragment.mBackStackNesting).toString()); + } + } + if (op.removed != null) + { + for (int j = op.removed.size() - 1; j >= 0; j--) + { + Fragment fragment1 = (Fragment)op.removed.get(j); + fragment1.mBackStackNesting = fragment1.mBackStackNesting + i; + if (FragmentManagerImpl.DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("Bump nesting of ").append(fragment1).append(" to ").append(fragment1.mBackStackNesting).toString()); + } + } + + } + op = op.next; + } + } + } + + public int commit() + { + return commitInternal(false); + } + + int commitInternal(boolean flag) + { + if (mCommitted) + { + throw new IllegalStateException("commit already called"); + } + if (FragmentManagerImpl.DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("Commit: ").append(this).toString()); + dump(" ", null, new PrintWriter(new LogWriter("FragmentManager")), null); + } + mCommitted = true; + if (mAddToBackStack) + { + mIndex = mManager.allocBackStackIndex(this); + } else + { + mIndex = -1; + } + mManager.enqueueAction(this, flag); + return mIndex; + } + + public FragmentTransaction detach(Fragment fragment) + { + Op op = new Op(); + op.cmd = 6; + op.fragment = fragment; + addOp(op); + return this; + } + + public void dump(String s, FileDescriptor filedescriptor, PrintWriter printwriter, String as[]) + { + dump(s, printwriter, true); + } + + public void dump(String s, PrintWriter printwriter, boolean flag) + { + Op op; + String s2; + int i; + if (flag) + { + printwriter.print(s); + printwriter.print("mName="); + printwriter.print(mName); + printwriter.print(" mIndex="); + printwriter.print(mIndex); + printwriter.print(" mCommitted="); + printwriter.println(mCommitted); + if (mTransition != 0) + { + printwriter.print(s); + printwriter.print("mTransition=#"); + printwriter.print(Integer.toHexString(mTransition)); + printwriter.print(" mTransitionStyle=#"); + printwriter.println(Integer.toHexString(mTransitionStyle)); + } + if (mEnterAnim != 0 || mExitAnim != 0) + { + printwriter.print(s); + printwriter.print("mEnterAnim=#"); + printwriter.print(Integer.toHexString(mEnterAnim)); + printwriter.print(" mExitAnim=#"); + printwriter.println(Integer.toHexString(mExitAnim)); + } + if (mPopEnterAnim != 0 || mPopExitAnim != 0) + { + printwriter.print(s); + printwriter.print("mPopEnterAnim=#"); + printwriter.print(Integer.toHexString(mPopEnterAnim)); + printwriter.print(" mPopExitAnim=#"); + printwriter.println(Integer.toHexString(mPopExitAnim)); + } + if (mBreadCrumbTitleRes != 0 || mBreadCrumbTitleText != null) + { + printwriter.print(s); + printwriter.print("mBreadCrumbTitleRes=#"); + printwriter.print(Integer.toHexString(mBreadCrumbTitleRes)); + printwriter.print(" mBreadCrumbTitleText="); + printwriter.println(mBreadCrumbTitleText); + } + if (mBreadCrumbShortTitleRes != 0 || mBreadCrumbShortTitleText != null) + { + printwriter.print(s); + printwriter.print("mBreadCrumbShortTitleRes=#"); + printwriter.print(Integer.toHexString(mBreadCrumbShortTitleRes)); + printwriter.print(" mBreadCrumbShortTitleText="); + printwriter.println(mBreadCrumbShortTitleText); + } + } + if (mHead == null) + { + break MISSING_BLOCK_LABEL_819; + } + printwriter.print(s); + printwriter.println("Operations:"); + s2 = (new StringBuilder()).append(s).append(" ").toString(); + op = mHead; + i = 0; +_L13: + if (op == null) goto _L2; else goto _L1 +_L1: + op.cmd; + JVM INSTR tableswitch 0 7: default 420 + // 0 698 + // 1 706 + // 2 714 + // 3 722 + // 4 730 + // 5 738 + // 6 746 + // 7 754; + goto _L3 _L4 _L5 _L6 _L7 _L8 _L9 _L10 _L11 +_L11: + break MISSING_BLOCK_LABEL_754; +_L3: + String s1 = (new StringBuilder()).append("cmd=").append(op.cmd).toString(); +_L12: + printwriter.print(s); + printwriter.print(" Op #"); + printwriter.print(i); + printwriter.print(": "); + printwriter.print(s1); + printwriter.print(" "); + printwriter.println(op.fragment); + if (flag) + { + if (op.enterAnim != 0 || op.exitAnim != 0) + { + printwriter.print(s); + printwriter.print("enterAnim=#"); + printwriter.print(Integer.toHexString(op.enterAnim)); + printwriter.print(" exitAnim=#"); + printwriter.println(Integer.toHexString(op.exitAnim)); + } + if (op.popEnterAnim != 0 || op.popExitAnim != 0) + { + printwriter.print(s); + printwriter.print("popEnterAnim=#"); + printwriter.print(Integer.toHexString(op.popEnterAnim)); + printwriter.print(" popExitAnim=#"); + printwriter.println(Integer.toHexString(op.popExitAnim)); + } + } + if (op.removed != null && op.removed.size() > 0) + { + int j = 0; + while (j < op.removed.size()) + { + printwriter.print(s2); + if (op.removed.size() == 1) + { + printwriter.print("Removed: "); + } else + { + if (j == 0) + { + printwriter.println("Removed:"); + } + printwriter.print(s2); + printwriter.print(" #"); + printwriter.print(j); + printwriter.print(": "); + } + printwriter.println(op.removed.get(j)); + j++; + } + } + break MISSING_BLOCK_LABEL_803; +_L4: + s1 = "NULL"; + goto _L12 +_L5: + s1 = "ADD"; + goto _L12 +_L6: + s1 = "REPLACE"; + goto _L12 +_L7: + s1 = "REMOVE"; + goto _L12 +_L8: + s1 = "HIDE"; + goto _L12 +_L9: + s1 = "SHOW"; + goto _L12 +_L10: + s1 = "DETACH"; + goto _L12 + s1 = "ATTACH"; + goto _L12 + op = op.next; + i++; + goto _L13 +_L2: + } + + public String getName() + { + return mName; + } + + public void popFromBackStack(boolean flag) + { + Op op; + if (FragmentManagerImpl.DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("popFromBackStack: ").append(this).toString()); + dump(" ", null, new PrintWriter(new LogWriter("FragmentManager")), null); + } + bumpBackStackNesting(-1); + op = mTail; +_L10: + if (op == null) + { + break MISSING_BLOCK_LABEL_449; + } + op.cmd; + JVM INSTR tableswitch 1 7: default 116 + // 1 147 + // 2 187 + // 3 284 + // 4 309 + // 5 344 + // 6 379 + // 7 414; + goto _L1 _L2 _L3 _L4 _L5 _L6 _L7 _L8 +_L8: + break MISSING_BLOCK_LABEL_414; +_L3: + break; /* Loop/switch isn't completed */ +_L1: + throw new IllegalArgumentException((new StringBuilder()).append("Unknown cmd: ").append(op.cmd).toString()); +_L2: + Fragment fragment = op.fragment; + fragment.mNextAnim = op.popExitAnim; + mManager.removeFragment(fragment, FragmentManagerImpl.reverseTransit(mTransition), mTransitionStyle); +_L11: + op = op.prev; + if (true) goto _L10; else goto _L9 +_L9: + Fragment fragment1 = op.fragment; + if (fragment1 != null) + { + fragment1.mNextAnim = op.popExitAnim; + mManager.removeFragment(fragment1, FragmentManagerImpl.reverseTransit(mTransition), mTransitionStyle); + } + if (op.removed != null) + { + int i = 0; + while (i < op.removed.size()) + { + Fragment fragment2 = (Fragment)op.removed.get(i); + fragment2.mNextAnim = op.popEnterAnim; + mManager.addFragment(fragment2, false); + i++; + } + } + goto _L11 +_L4: + Fragment fragment3 = op.fragment; + fragment3.mNextAnim = op.popEnterAnim; + mManager.addFragment(fragment3, false); + goto _L11 +_L5: + Fragment fragment4 = op.fragment; + fragment4.mNextAnim = op.popEnterAnim; + mManager.showFragment(fragment4, FragmentManagerImpl.reverseTransit(mTransition), mTransitionStyle); + goto _L11 +_L6: + Fragment fragment5 = op.fragment; + fragment5.mNextAnim = op.popExitAnim; + mManager.hideFragment(fragment5, FragmentManagerImpl.reverseTransit(mTransition), mTransitionStyle); + goto _L11 +_L7: + Fragment fragment6 = op.fragment; + fragment6.mNextAnim = op.popEnterAnim; + mManager.attachFragment(fragment6, FragmentManagerImpl.reverseTransit(mTransition), mTransitionStyle); + goto _L11 + Fragment fragment7 = op.fragment; + fragment7.mNextAnim = op.popEnterAnim; + mManager.detachFragment(fragment7, FragmentManagerImpl.reverseTransit(mTransition), mTransitionStyle); + goto _L11 + if (flag) + { + mManager.moveToState(mManager.mCurState, FragmentManagerImpl.reverseTransit(mTransition), mTransitionStyle, true); + } + if (mIndex >= 0) + { + mManager.freeBackStackIndex(mIndex); + mIndex = -1; + } + return; + } + + public void run() + { + Op op; + if (FragmentManagerImpl.DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("Run: ").append(this).toString()); + } + if (mAddToBackStack && mIndex < 0) + { + throw new IllegalStateException("addToBackStack() called after commit()"); + } + bumpBackStackNesting(1); + op = mHead; +_L10: + if (op == null) + { + break MISSING_BLOCK_LABEL_623; + } + op.cmd; + JVM INSTR tableswitch 1 7: default 116 + // 1 147 + // 2 177 + // 3 463 + // 4 495 + // 5 527 + // 6 559 + // 7 591; + goto _L1 _L2 _L3 _L4 _L5 _L6 _L7 _L8 +_L8: + break MISSING_BLOCK_LABEL_591; +_L3: + break; /* Loop/switch isn't completed */ +_L1: + throw new IllegalArgumentException((new StringBuilder()).append("Unknown cmd: ").append(op.cmd).toString()); +_L2: + Fragment fragment = op.fragment; + fragment.mNextAnim = op.enterAnim; + mManager.addFragment(fragment, false); +_L11: + op = op.next; + if (true) goto _L10; else goto _L9 +_L9: + Fragment fragment1 = op.fragment; + Fragment fragment7 = fragment1; + if (mManager.mAdded != null) + { + int i = 0; +label0: + do + { +label1: + { + fragment7 = fragment1; + if (i >= mManager.mAdded.size()) + { + break label0; + } + Fragment fragment8 = (Fragment)mManager.mAdded.get(i); + if (FragmentManagerImpl.DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("OP_REPLACE: adding=").append(fragment1).append(" old=").append(fragment8).toString()); + } + if (fragment1 != null) + { + fragment7 = fragment1; + if (fragment8.mContainerId != fragment1.mContainerId) + { + break label1; + } + } + if (fragment8 == fragment1) + { + fragment7 = null; + op.fragment = null; + } else + { + if (op.removed == null) + { + op.removed = new ArrayList(); + } + op.removed.add(fragment8); + fragment8.mNextAnim = op.exitAnim; + if (mAddToBackStack) + { + fragment8.mBackStackNesting = fragment8.mBackStackNesting + 1; + if (FragmentManagerImpl.DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("Bump nesting of ").append(fragment8).append(" to ").append(fragment8.mBackStackNesting).toString()); + } + } + mManager.removeFragment(fragment8, mTransition, mTransitionStyle); + fragment7 = fragment1; + } + } + i++; + fragment1 = fragment7; + } while (true); + } + if (fragment7 != null) + { + fragment7.mNextAnim = op.enterAnim; + mManager.addFragment(fragment7, false); + } + goto _L11 +_L4: + Fragment fragment2 = op.fragment; + fragment2.mNextAnim = op.exitAnim; + mManager.removeFragment(fragment2, mTransition, mTransitionStyle); + goto _L11 +_L5: + Fragment fragment3 = op.fragment; + fragment3.mNextAnim = op.exitAnim; + mManager.hideFragment(fragment3, mTransition, mTransitionStyle); + goto _L11 +_L6: + Fragment fragment4 = op.fragment; + fragment4.mNextAnim = op.enterAnim; + mManager.showFragment(fragment4, mTransition, mTransitionStyle); + goto _L11 +_L7: + Fragment fragment5 = op.fragment; + fragment5.mNextAnim = op.exitAnim; + mManager.detachFragment(fragment5, mTransition, mTransitionStyle); + goto _L11 + Fragment fragment6 = op.fragment; + fragment6.mNextAnim = op.enterAnim; + mManager.attachFragment(fragment6, mTransition, mTransitionStyle); + goto _L11 + mManager.moveToState(mManager.mCurState, mTransition, mTransitionStyle, true); + if (mAddToBackStack) + { + mManager.addBackStackState(this); + } + return; + } + + public String toString() + { + StringBuilder stringbuilder = new StringBuilder(128); + stringbuilder.append("BackStackEntry{"); + stringbuilder.append(Integer.toHexString(System.identityHashCode(this))); + if (mIndex >= 0) + { + stringbuilder.append(" #"); + stringbuilder.append(mIndex); + } + if (mName != null) + { + stringbuilder.append(" "); + stringbuilder.append(mName); + } + stringbuilder.append("}"); + return stringbuilder.toString(); + } +} diff --git a/app/src/main/java/android/support/v4/app/BackStackState$1.java b/app/src/main/java/android/support/v4/app/BackStackState$1.java new file mode 100644 index 0000000..d380580 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/BackStackState$1.java @@ -0,0 +1,39 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.os.Parcel; + +// Referenced classes of package android.support.v4.app: +// BackStackState + +static final class + implements android.os.r +{ + + public BackStackState createFromParcel(Parcel parcel) + { + return new BackStackState(parcel); + } + + public volatile Object createFromParcel(Parcel parcel) + { + return createFromParcel(parcel); + } + + public BackStackState[] newArray(int i) + { + return new BackStackState[i]; + } + + public volatile Object[] newArray(int i) + { + return newArray(i); + } + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/app/BackStackState.java b/app/src/main/java/android/support/v4/app/BackStackState.java new file mode 100644 index 0000000..a2a805c --- /dev/null +++ b/app/src/main/java/android/support/v4/app/BackStackState.java @@ -0,0 +1,242 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.os.Parcel; +import android.os.Parcelable; +import android.text.TextUtils; +import android.util.Log; +import java.util.ArrayList; + +// Referenced classes of package android.support.v4.app: +// BackStackRecord, Fragment, FragmentManagerImpl + +final class BackStackState + implements Parcelable +{ + + public static final android.os.Parcelable.Creator CREATOR = new android.os.Parcelable.Creator() { + + public BackStackState createFromParcel(Parcel parcel) + { + return new BackStackState(parcel); + } + + public volatile Object createFromParcel(Parcel parcel) + { + return createFromParcel(parcel); + } + + public BackStackState[] newArray(int i) + { + return new BackStackState[i]; + } + + public volatile Object[] newArray(int i) + { + return newArray(i); + } + + }; + final int mBreadCrumbShortTitleRes; + final CharSequence mBreadCrumbShortTitleText; + final int mBreadCrumbTitleRes; + final CharSequence mBreadCrumbTitleText; + final int mIndex; + final String mName; + final int mOps[]; + final int mTransition; + final int mTransitionStyle; + + public BackStackState(Parcel parcel) + { + mOps = parcel.createIntArray(); + mTransition = parcel.readInt(); + mTransitionStyle = parcel.readInt(); + mName = parcel.readString(); + mIndex = parcel.readInt(); + mBreadCrumbTitleRes = parcel.readInt(); + mBreadCrumbTitleText = (CharSequence)TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(parcel); + mBreadCrumbShortTitleRes = parcel.readInt(); + mBreadCrumbShortTitleText = (CharSequence)TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(parcel); + } + + public BackStackState(FragmentManagerImpl fragmentmanagerimpl, BackStackRecord backstackrecord) + { + int i = 0; + for (fragmentmanagerimpl = backstackrecord.mHead; fragmentmanagerimpl != null;) + { + int j = i; + if (((BackStackRecord.Op) (fragmentmanagerimpl)).removed != null) + { + j = i + ((BackStackRecord.Op) (fragmentmanagerimpl)).removed.size(); + } + fragmentmanagerimpl = ((BackStackRecord.Op) (fragmentmanagerimpl)).next; + i = j; + } + + mOps = new int[backstackrecord.mNumOp * 7 + i]; + if (!backstackrecord.mAddToBackStack) + { + throw new IllegalStateException("Not on back stack"); + } + fragmentmanagerimpl = backstackrecord.mHead; + i = 0; + while (fragmentmanagerimpl != null) + { + int ai[] = mOps; + int k = i + 1; + ai[i] = ((BackStackRecord.Op) (fragmentmanagerimpl)).cmd; + ai = mOps; + int i1 = k + 1; + int k1; + if (((BackStackRecord.Op) (fragmentmanagerimpl)).fragment != null) + { + i = ((BackStackRecord.Op) (fragmentmanagerimpl)).fragment.mIndex; + } else + { + i = -1; + } + ai[k] = i; + ai = mOps; + i = i1 + 1; + ai[i1] = ((BackStackRecord.Op) (fragmentmanagerimpl)).enterAnim; + ai = mOps; + k = i + 1; + ai[i] = ((BackStackRecord.Op) (fragmentmanagerimpl)).exitAnim; + ai = mOps; + i = k + 1; + ai[k] = ((BackStackRecord.Op) (fragmentmanagerimpl)).popEnterAnim; + ai = mOps; + k1 = i + 1; + ai[i] = ((BackStackRecord.Op) (fragmentmanagerimpl)).popExitAnim; + if (((BackStackRecord.Op) (fragmentmanagerimpl)).removed != null) + { + int j1 = ((BackStackRecord.Op) (fragmentmanagerimpl)).removed.size(); + mOps[k1] = j1; + int l = 0; + for (i = k1 + 1; l < j1; i++) + { + mOps[i] = ((Fragment)((BackStackRecord.Op) (fragmentmanagerimpl)).removed.get(l)).mIndex; + l++; + } + + } else + { + int ai1[] = mOps; + i = k1 + 1; + ai1[k1] = 0; + } + fragmentmanagerimpl = ((BackStackRecord.Op) (fragmentmanagerimpl)).next; + } + mTransition = backstackrecord.mTransition; + mTransitionStyle = backstackrecord.mTransitionStyle; + mName = backstackrecord.mName; + mIndex = backstackrecord.mIndex; + mBreadCrumbTitleRes = backstackrecord.mBreadCrumbTitleRes; + mBreadCrumbTitleText = backstackrecord.mBreadCrumbTitleText; + mBreadCrumbShortTitleRes = backstackrecord.mBreadCrumbShortTitleRes; + mBreadCrumbShortTitleText = backstackrecord.mBreadCrumbShortTitleText; + } + + public int describeContents() + { + return 0; + } + + public BackStackRecord instantiate(FragmentManagerImpl fragmentmanagerimpl) + { + BackStackRecord backstackrecord = new BackStackRecord(fragmentmanagerimpl); + int i = 0; + for (int k = 0; i < mOps.length; k++) + { + BackStackRecord.Op op = new BackStackRecord.Op(); + int ai[] = mOps; + int j = i + 1; + op.cmd = ai[i]; + if (FragmentManagerImpl.DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("Instantiate ").append(backstackrecord).append(" op #").append(k).append(" base fragment #").append(mOps[j]).toString()); + } + ai = mOps; + i = j + 1; + j = ai[j]; + int l; + int j1; + if (j >= 0) + { + op.fragment = (Fragment)fragmentmanagerimpl.mActive.get(j); + } else + { + op.fragment = null; + } + ai = mOps; + j = i + 1; + op.enterAnim = ai[i]; + ai = mOps; + i = j + 1; + op.exitAnim = ai[j]; + ai = mOps; + j = i + 1; + op.popEnterAnim = ai[i]; + ai = mOps; + l = j + 1; + op.popExitAnim = ai[j]; + ai = mOps; + i = l + 1; + j1 = ai[l]; + j = i; + if (j1 > 0) + { + op.removed = new ArrayList(j1); + int i1 = 0; + do + { + j = i; + if (i1 >= j1) + { + break; + } + if (FragmentManagerImpl.DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("Instantiate ").append(backstackrecord).append(" set remove fragment #").append(mOps[i]).toString()); + } + Fragment fragment = (Fragment)fragmentmanagerimpl.mActive.get(mOps[i]); + op.removed.add(fragment); + i1++; + i++; + } while (true); + } + i = j; + backstackrecord.addOp(op); + } + + backstackrecord.mTransition = mTransition; + backstackrecord.mTransitionStyle = mTransitionStyle; + backstackrecord.mName = mName; + backstackrecord.mIndex = mIndex; + backstackrecord.mAddToBackStack = true; + backstackrecord.mBreadCrumbTitleRes = mBreadCrumbTitleRes; + backstackrecord.mBreadCrumbTitleText = mBreadCrumbTitleText; + backstackrecord.mBreadCrumbShortTitleRes = mBreadCrumbShortTitleRes; + backstackrecord.mBreadCrumbShortTitleText = mBreadCrumbShortTitleText; + backstackrecord.bumpBackStackNesting(1); + return backstackrecord; + } + + public void writeToParcel(Parcel parcel, int i) + { + parcel.writeIntArray(mOps); + parcel.writeInt(mTransition); + parcel.writeInt(mTransitionStyle); + parcel.writeString(mName); + parcel.writeInt(mIndex); + parcel.writeInt(mBreadCrumbTitleRes); + TextUtils.writeToParcel(mBreadCrumbTitleText, parcel, 0); + parcel.writeInt(mBreadCrumbShortTitleRes); + TextUtils.writeToParcel(mBreadCrumbShortTitleText, parcel, 0); + } + +} diff --git a/app/src/main/java/android/support/v4/app/Fragment$1.java b/app/src/main/java/android/support/v4/app/Fragment$1.java new file mode 100644 index 0000000..47d4121 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/Fragment$1.java @@ -0,0 +1,34 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.view.View; + +// Referenced classes of package android.support.v4.app: +// FragmentContainer, Fragment + +class this._cls0 + implements FragmentContainer +{ + + final Fragment this$0; + + public View findViewById(int i) + { + if (mView == null) + { + throw new IllegalStateException("Fragment does not have a view"); + } else + { + return mView.findViewById(i); + } + } + + tainer() + { + this$0 = Fragment.this; + super(); + } +} diff --git a/app/src/main/java/android/support/v4/app/Fragment$InstantiationException.java b/app/src/main/java/android/support/v4/app/Fragment$InstantiationException.java new file mode 100644 index 0000000..1ac0950 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/Fragment$InstantiationException.java @@ -0,0 +1,18 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + + +// Referenced classes of package android.support.v4.app: +// Fragment + +public static class extends RuntimeException +{ + + public (String s, Exception exception) + { + super(s, exception); + } +} diff --git a/app/src/main/java/android/support/v4/app/Fragment$SavedState$1.java b/app/src/main/java/android/support/v4/app/Fragment$SavedState$1.java new file mode 100644 index 0000000..29191c4 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/Fragment$SavedState$1.java @@ -0,0 +1,39 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.os.Parcel; + +// Referenced classes of package android.support.v4.app: +// Fragment + +static final class + implements android.os.avedState._cls1 +{ + + public createFromParcel(Parcel parcel) + { + return new nit>(parcel, null); + } + + public volatile Object createFromParcel(Parcel parcel) + { + return createFromParcel(parcel); + } + + public createFromParcel[] newArray(int i) + { + return new createFromParcel[i]; + } + + public volatile Object[] newArray(int i) + { + return newArray(i); + } + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/app/Fragment$SavedState.java b/app/src/main/java/android/support/v4/app/Fragment$SavedState.java new file mode 100644 index 0000000..772895a --- /dev/null +++ b/app/src/main/java/android/support/v4/app/Fragment$SavedState.java @@ -0,0 +1,62 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.os.Bundle; +import android.os.Parcel; +import android.os.Parcelable; + +// Referenced classes of package android.support.v4.app: +// Fragment + +public static class mState + implements Parcelable +{ + + public static final android.os..SavedState.mState CREATOR = new android.os.Parcelable.Creator() { + + public Fragment.SavedState createFromParcel(Parcel parcel) + { + return new Fragment.SavedState(parcel, null); + } + + public volatile Object createFromParcel(Parcel parcel) + { + return createFromParcel(parcel); + } + + public Fragment.SavedState[] newArray(int i) + { + return new Fragment.SavedState[i]; + } + + public volatile Object[] newArray(int i) + { + return newArray(i); + } + + }; + final Bundle mState; + + public int describeContents() + { + return 0; + } + + public void writeToParcel(Parcel parcel, int i) + { + parcel.writeBundle(mState); + } + + + _cls1(Parcel parcel, ClassLoader classloader) + { + mState = parcel.readBundle(); + if (classloader != null && mState != null) + { + mState.setClassLoader(classloader); + } + } +} diff --git a/app/src/main/java/android/support/v4/app/Fragment.java b/app/src/main/java/android/support/v4/app/Fragment.java new file mode 100644 index 0000000..9c1acac --- /dev/null +++ b/app/src/main/java/android/support/v4/app/Fragment.java @@ -0,0 +1,936 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.app.Activity; +import android.content.ComponentCallbacks; +import android.content.Context; +import android.content.Intent; +import android.content.res.Configuration; +import android.content.res.Resources; +import android.os.Bundle; +import android.os.Parcel; +import android.os.Parcelable; +import android.support.v4.util.DebugUtils; +import android.util.AttributeSet; +import android.util.SparseArray; +import android.view.ContextMenu; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.animation.Animation; +import java.io.FileDescriptor; +import java.io.PrintWriter; +import java.util.HashMap; + +// Referenced classes of package android.support.v4.app: +// LoaderManagerImpl, FragmentManagerImpl, FragmentActivity, SuperNotCalledException, +// FragmentContainer + +public class Fragment + implements ComponentCallbacks, android.view.View.OnCreateContextMenuListener +{ + public static class InstantiationException extends RuntimeException + { + + public InstantiationException(String s, Exception exception) + { + super(s, exception); + } + } + + public static class SavedState + implements Parcelable + { + + public static final android.os.Parcelable.Creator CREATOR = new android.os.Parcelable.Creator() { + + public SavedState createFromParcel(Parcel parcel) + { + return new SavedState(parcel, null); + } + + public volatile Object createFromParcel(Parcel parcel) + { + return createFromParcel(parcel); + } + + public SavedState[] newArray(int i) + { + return new SavedState[i]; + } + + public volatile Object[] newArray(int i) + { + return newArray(i); + } + + }; + final Bundle mState; + + public int describeContents() + { + return 0; + } + + public void writeToParcel(Parcel parcel, int i) + { + parcel.writeBundle(mState); + } + + + SavedState(Parcel parcel, ClassLoader classloader) + { + mState = parcel.readBundle(); + if (classloader != null && mState != null) + { + mState.setClassLoader(classloader); + } + } + } + + + private static final HashMap sClassMap = new HashMap(); + FragmentActivity mActivity; + boolean mAdded; + View mAnimatingAway; + Bundle mArguments; + int mBackStackNesting; + boolean mCalled; + boolean mCheckedForLoaderManager; + FragmentManagerImpl mChildFragmentManager; + ViewGroup mContainer; + int mContainerId; + boolean mDeferStart; + boolean mDetached; + int mFragmentId; + FragmentManagerImpl mFragmentManager; + boolean mFromLayout; + boolean mHasMenu; + boolean mHidden; + boolean mInLayout; + int mIndex; + View mInnerView; + LoaderManagerImpl mLoaderManager; + boolean mLoadersStarted; + boolean mMenuVisible; + int mNextAnim; + Fragment mParentFragment; + boolean mRemoving; + boolean mRestored; + boolean mResumed; + boolean mRetainInstance; + boolean mRetaining; + Bundle mSavedFragmentState; + SparseArray mSavedViewState; + int mState; + int mStateAfterAnimating; + String mTag; + Fragment mTarget; + int mTargetIndex; + int mTargetRequestCode; + boolean mUserVisibleHint; + View mView; + String mWho; + + public Fragment() + { + mState = 0; + mIndex = -1; + mTargetIndex = -1; + mMenuVisible = true; + mUserVisibleHint = true; + } + + public static Fragment instantiate(Context context, String s) + { + return instantiate(context, s, null); + } + + public static Fragment instantiate(Context context, String s, Bundle bundle) + { + Class class1; + Class class2; + try + { + class2 = (Class)sClassMap.get(s); + } + // Misplaced declaration of an exception variable + catch (Context context) + { + throw new InstantiationException((new StringBuilder()).append("Unable to instantiate fragment ").append(s).append(": make sure class name exists, is public, and has an").append(" empty constructor that is public").toString(), context); + } + // Misplaced declaration of an exception variable + catch (Context context) + { + throw new InstantiationException((new StringBuilder()).append("Unable to instantiate fragment ").append(s).append(": make sure class name exists, is public, and has an").append(" empty constructor that is public").toString(), context); + } + // Misplaced declaration of an exception variable + catch (Context context) + { + throw new InstantiationException((new StringBuilder()).append("Unable to instantiate fragment ").append(s).append(": make sure class name exists, is public, and has an").append(" empty constructor that is public").toString(), context); + } + class1 = class2; + if (class2 != null) + { + break MISSING_BLOCK_LABEL_38; + } + class1 = context.getClassLoader().loadClass(s); + sClassMap.put(s, class1); + context = (Fragment)class1.newInstance(); + if (bundle == null) + { + break MISSING_BLOCK_LABEL_66; + } + bundle.setClassLoader(context.getClass().getClassLoader()); + context.mArguments = bundle; + return context; + } + + public void dump(String s, FileDescriptor filedescriptor, PrintWriter printwriter, String as[]) + { + printwriter.print(s); + printwriter.print("mFragmentId=#"); + printwriter.print(Integer.toHexString(mFragmentId)); + printwriter.print(" mContainerId=#"); + printwriter.print(Integer.toHexString(mContainerId)); + printwriter.print(" mTag="); + printwriter.println(mTag); + printwriter.print(s); + printwriter.print("mState="); + printwriter.print(mState); + printwriter.print(" mIndex="); + printwriter.print(mIndex); + printwriter.print(" mWho="); + printwriter.print(mWho); + printwriter.print(" mBackStackNesting="); + printwriter.println(mBackStackNesting); + printwriter.print(s); + printwriter.print("mAdded="); + printwriter.print(mAdded); + printwriter.print(" mRemoving="); + printwriter.print(mRemoving); + printwriter.print(" mResumed="); + printwriter.print(mResumed); + printwriter.print(" mFromLayout="); + printwriter.print(mFromLayout); + printwriter.print(" mInLayout="); + printwriter.println(mInLayout); + printwriter.print(s); + printwriter.print("mHidden="); + printwriter.print(mHidden); + printwriter.print(" mDetached="); + printwriter.print(mDetached); + printwriter.print(" mMenuVisible="); + printwriter.print(mMenuVisible); + printwriter.print(" mHasMenu="); + printwriter.println(mHasMenu); + printwriter.print(s); + printwriter.print("mRetainInstance="); + printwriter.print(mRetainInstance); + printwriter.print(" mRetaining="); + printwriter.print(mRetaining); + printwriter.print(" mUserVisibleHint="); + printwriter.println(mUserVisibleHint); + if (mFragmentManager != null) + { + printwriter.print(s); + printwriter.print("mFragmentManager="); + printwriter.println(mFragmentManager); + } + if (mActivity != null) + { + printwriter.print(s); + printwriter.print("mActivity="); + printwriter.println(mActivity); + } + if (mParentFragment != null) + { + printwriter.print(s); + printwriter.print("mParentFragment="); + printwriter.println(mParentFragment); + } + if (mArguments != null) + { + printwriter.print(s); + printwriter.print("mArguments="); + printwriter.println(mArguments); + } + if (mSavedFragmentState != null) + { + printwriter.print(s); + printwriter.print("mSavedFragmentState="); + printwriter.println(mSavedFragmentState); + } + if (mSavedViewState != null) + { + printwriter.print(s); + printwriter.print("mSavedViewState="); + printwriter.println(mSavedViewState); + } + if (mTarget != null) + { + printwriter.print(s); + printwriter.print("mTarget="); + printwriter.print(mTarget); + printwriter.print(" mTargetRequestCode="); + printwriter.println(mTargetRequestCode); + } + if (mNextAnim != 0) + { + printwriter.print(s); + printwriter.print("mNextAnim="); + printwriter.println(mNextAnim); + } + if (mContainer != null) + { + printwriter.print(s); + printwriter.print("mContainer="); + printwriter.println(mContainer); + } + if (mView != null) + { + printwriter.print(s); + printwriter.print("mView="); + printwriter.println(mView); + } + if (mInnerView != null) + { + printwriter.print(s); + printwriter.print("mInnerView="); + printwriter.println(mView); + } + if (mAnimatingAway != null) + { + printwriter.print(s); + printwriter.print("mAnimatingAway="); + printwriter.println(mAnimatingAway); + printwriter.print(s); + printwriter.print("mStateAfterAnimating="); + printwriter.println(mStateAfterAnimating); + } + if (mLoaderManager != null) + { + printwriter.print(s); + printwriter.println("Loader Manager:"); + mLoaderManager.dump((new StringBuilder()).append(s).append(" ").toString(), filedescriptor, printwriter, as); + } + if (mChildFragmentManager != null) + { + printwriter.print(s); + printwriter.println((new StringBuilder()).append("Child ").append(mChildFragmentManager).append(":").toString()); + mChildFragmentManager.dump((new StringBuilder()).append(s).append(" ").toString(), filedescriptor, printwriter, as); + } + } + + public final boolean equals(Object obj) + { + return super.equals(obj); + } + + public final FragmentActivity getActivity() + { + return mActivity; + } + + public LayoutInflater getLayoutInflater(Bundle bundle) + { + return mActivity.getLayoutInflater(); + } + + public final Resources getResources() + { + if (mActivity == null) + { + throw new IllegalStateException((new StringBuilder()).append("Fragment ").append(this).append(" not attached to Activity").toString()); + } else + { + return mActivity.getResources(); + } + } + + public final int hashCode() + { + return super.hashCode(); + } + + void initState() + { + mIndex = -1; + mWho = null; + mAdded = false; + mRemoving = false; + mResumed = false; + mFromLayout = false; + mInLayout = false; + mRestored = false; + mBackStackNesting = 0; + mFragmentManager = null; + mActivity = null; + mFragmentId = 0; + mContainerId = 0; + mTag = null; + mHidden = false; + mDetached = false; + mRetaining = false; + mLoaderManager = null; + mLoadersStarted = false; + mCheckedForLoaderManager = false; + } + + void instantiateChildFragmentManager() + { + mChildFragmentManager = new FragmentManagerImpl(); + mChildFragmentManager.attachActivity(mActivity, new FragmentContainer() { + + final Fragment this$0; + + public View findViewById(int i) + { + if (mView == null) + { + throw new IllegalStateException("Fragment does not have a view"); + } else + { + return mView.findViewById(i); + } + } + + + { + this$0 = Fragment.this; + super(); + } + }, this); + } + + public final boolean isDetached() + { + return mDetached; + } + + final boolean isInBackStack() + { + return mBackStackNesting > 0; + } + + public void onActivityCreated(Bundle bundle) + { + mCalled = true; + } + + public void onActivityResult(int i, int j, Intent intent) + { + } + + public void onAttach(Activity activity) + { + mCalled = true; + } + + public void onConfigurationChanged(Configuration configuration) + { + mCalled = true; + } + + public boolean onContextItemSelected(MenuItem menuitem) + { + return false; + } + + public void onCreate(Bundle bundle) + { + mCalled = true; + } + + public Animation onCreateAnimation(int i, boolean flag, int j) + { + return null; + } + + public void onCreateContextMenu(ContextMenu contextmenu, View view, android.view.ContextMenu.ContextMenuInfo contextmenuinfo) + { + getActivity().onCreateContextMenu(contextmenu, view, contextmenuinfo); + } + + public void onCreateOptionsMenu(Menu menu, MenuInflater menuinflater) + { + } + + public View onCreateView(LayoutInflater layoutinflater, ViewGroup viewgroup, Bundle bundle) + { + return null; + } + + public void onDestroy() + { + mCalled = true; + if (!mCheckedForLoaderManager) + { + mCheckedForLoaderManager = true; + mLoaderManager = mActivity.getLoaderManager(mWho, mLoadersStarted, false); + } + if (mLoaderManager != null) + { + mLoaderManager.doDestroy(); + } + } + + public void onDestroyOptionsMenu() + { + } + + public void onDestroyView() + { + mCalled = true; + } + + public void onDetach() + { + mCalled = true; + } + + public void onHiddenChanged(boolean flag) + { + } + + public void onInflate(Activity activity, AttributeSet attributeset, Bundle bundle) + { + mCalled = true; + } + + public void onLowMemory() + { + mCalled = true; + } + + public boolean onOptionsItemSelected(MenuItem menuitem) + { + return false; + } + + public void onOptionsMenuClosed(Menu menu) + { + } + + public void onPause() + { + mCalled = true; + } + + public void onPrepareOptionsMenu(Menu menu) + { + } + + public void onResume() + { + mCalled = true; + } + + public void onSaveInstanceState(Bundle bundle) + { + } + + public void onStart() + { + mCalled = true; + if (!mLoadersStarted) + { + mLoadersStarted = true; + if (!mCheckedForLoaderManager) + { + mCheckedForLoaderManager = true; + mLoaderManager = mActivity.getLoaderManager(mWho, mLoadersStarted, false); + } + if (mLoaderManager != null) + { + mLoaderManager.doStart(); + } + } + } + + public void onStop() + { + mCalled = true; + } + + public void onViewCreated(View view, Bundle bundle) + { + } + + public void onViewStateRestored(Bundle bundle) + { + mCalled = true; + } + + void performActivityCreated(Bundle bundle) + { + if (mChildFragmentManager != null) + { + mChildFragmentManager.noteStateNotSaved(); + } + mCalled = false; + onActivityCreated(bundle); + if (!mCalled) + { + throw new SuperNotCalledException((new StringBuilder()).append("Fragment ").append(this).append(" did not call through to super.onActivityCreated()").toString()); + } + if (mChildFragmentManager != null) + { + mChildFragmentManager.dispatchActivityCreated(); + } + } + + void performConfigurationChanged(Configuration configuration) + { + onConfigurationChanged(configuration); + if (mChildFragmentManager != null) + { + mChildFragmentManager.dispatchConfigurationChanged(configuration); + } + } + + boolean performContextItemSelected(MenuItem menuitem) + { + while (!mHidden && (onContextItemSelected(menuitem) || mChildFragmentManager != null && mChildFragmentManager.dispatchContextItemSelected(menuitem))) + { + return true; + } + return false; + } + + void performCreate(Bundle bundle) + { + if (mChildFragmentManager != null) + { + mChildFragmentManager.noteStateNotSaved(); + } + mCalled = false; + onCreate(bundle); + if (!mCalled) + { + throw new SuperNotCalledException((new StringBuilder()).append("Fragment ").append(this).append(" did not call through to super.onCreate()").toString()); + } + if (bundle != null) + { + bundle = bundle.getParcelable("android:support:fragments"); + if (bundle != null) + { + if (mChildFragmentManager == null) + { + instantiateChildFragmentManager(); + } + mChildFragmentManager.restoreAllState(bundle, null); + mChildFragmentManager.dispatchCreate(); + } + } + } + + boolean performCreateOptionsMenu(Menu menu, MenuInflater menuinflater) + { + boolean flag1 = false; + boolean flag2 = false; + if (!mHidden) + { + boolean flag = flag2; + if (mHasMenu) + { + flag = flag2; + if (mMenuVisible) + { + flag = true; + onCreateOptionsMenu(menu, menuinflater); + } + } + flag1 = flag; + if (mChildFragmentManager != null) + { + flag1 = flag | mChildFragmentManager.dispatchCreateOptionsMenu(menu, menuinflater); + } + } + return flag1; + } + + View performCreateView(LayoutInflater layoutinflater, ViewGroup viewgroup, Bundle bundle) + { + if (mChildFragmentManager != null) + { + mChildFragmentManager.noteStateNotSaved(); + } + return onCreateView(layoutinflater, viewgroup, bundle); + } + + void performDestroy() + { + if (mChildFragmentManager != null) + { + mChildFragmentManager.dispatchDestroy(); + } + mCalled = false; + onDestroy(); + if (!mCalled) + { + throw new SuperNotCalledException((new StringBuilder()).append("Fragment ").append(this).append(" did not call through to super.onDestroy()").toString()); + } else + { + return; + } + } + + void performDestroyView() + { + if (mChildFragmentManager != null) + { + mChildFragmentManager.dispatchDestroyView(); + } + mCalled = false; + onDestroyView(); + if (!mCalled) + { + throw new SuperNotCalledException((new StringBuilder()).append("Fragment ").append(this).append(" did not call through to super.onDestroyView()").toString()); + } + if (mLoaderManager != null) + { + mLoaderManager.doReportNextStart(); + } + } + + void performLowMemory() + { + onLowMemory(); + if (mChildFragmentManager != null) + { + mChildFragmentManager.dispatchLowMemory(); + } + } + + boolean performOptionsItemSelected(MenuItem menuitem) + { + while (!mHidden && (mHasMenu && mMenuVisible && onOptionsItemSelected(menuitem) || mChildFragmentManager != null && mChildFragmentManager.dispatchOptionsItemSelected(menuitem))) + { + return true; + } + return false; + } + + void performOptionsMenuClosed(Menu menu) + { + if (!mHidden) + { + if (mHasMenu && mMenuVisible) + { + onOptionsMenuClosed(menu); + } + if (mChildFragmentManager != null) + { + mChildFragmentManager.dispatchOptionsMenuClosed(menu); + } + } + } + + void performPause() + { + if (mChildFragmentManager != null) + { + mChildFragmentManager.dispatchPause(); + } + mCalled = false; + onPause(); + if (!mCalled) + { + throw new SuperNotCalledException((new StringBuilder()).append("Fragment ").append(this).append(" did not call through to super.onPause()").toString()); + } else + { + return; + } + } + + boolean performPrepareOptionsMenu(Menu menu) + { + boolean flag1 = false; + boolean flag2 = false; + if (!mHidden) + { + boolean flag = flag2; + if (mHasMenu) + { + flag = flag2; + if (mMenuVisible) + { + flag = true; + onPrepareOptionsMenu(menu); + } + } + flag1 = flag; + if (mChildFragmentManager != null) + { + flag1 = flag | mChildFragmentManager.dispatchPrepareOptionsMenu(menu); + } + } + return flag1; + } + + void performReallyStop() + { +label0: + { + if (mChildFragmentManager != null) + { + mChildFragmentManager.dispatchReallyStop(); + } + if (mLoadersStarted) + { + mLoadersStarted = false; + if (!mCheckedForLoaderManager) + { + mCheckedForLoaderManager = true; + mLoaderManager = mActivity.getLoaderManager(mWho, mLoadersStarted, false); + } + if (mLoaderManager != null) + { + if (mActivity.mRetaining) + { + break label0; + } + mLoaderManager.doStop(); + } + } + return; + } + mLoaderManager.doRetain(); + } + + void performResume() + { + if (mChildFragmentManager != null) + { + mChildFragmentManager.noteStateNotSaved(); + mChildFragmentManager.execPendingActions(); + } + mCalled = false; + onResume(); + if (!mCalled) + { + throw new SuperNotCalledException((new StringBuilder()).append("Fragment ").append(this).append(" did not call through to super.onResume()").toString()); + } + if (mChildFragmentManager != null) + { + mChildFragmentManager.dispatchResume(); + mChildFragmentManager.execPendingActions(); + } + } + + void performSaveInstanceState(Bundle bundle) + { + onSaveInstanceState(bundle); + if (mChildFragmentManager != null) + { + Parcelable parcelable = mChildFragmentManager.saveAllState(); + if (parcelable != null) + { + bundle.putParcelable("android:support:fragments", parcelable); + } + } + } + + void performStart() + { + if (mChildFragmentManager != null) + { + mChildFragmentManager.noteStateNotSaved(); + mChildFragmentManager.execPendingActions(); + } + mCalled = false; + onStart(); + if (!mCalled) + { + throw new SuperNotCalledException((new StringBuilder()).append("Fragment ").append(this).append(" did not call through to super.onStart()").toString()); + } + if (mChildFragmentManager != null) + { + mChildFragmentManager.dispatchStart(); + } + if (mLoaderManager != null) + { + mLoaderManager.doReportStart(); + } + } + + void performStop() + { + if (mChildFragmentManager != null) + { + mChildFragmentManager.dispatchStop(); + } + mCalled = false; + onStop(); + if (!mCalled) + { + throw new SuperNotCalledException((new StringBuilder()).append("Fragment ").append(this).append(" did not call through to super.onStop()").toString()); + } else + { + return; + } + } + + final void restoreViewState(Bundle bundle) + { + if (mSavedViewState != null) + { + mInnerView.restoreHierarchyState(mSavedViewState); + mSavedViewState = null; + } + mCalled = false; + onViewStateRestored(bundle); + if (!mCalled) + { + throw new SuperNotCalledException((new StringBuilder()).append("Fragment ").append(this).append(" did not call through to super.onViewStateRestored()").toString()); + } else + { + return; + } + } + + final void setIndex(int i, Fragment fragment) + { + mIndex = i; + if (fragment != null) + { + mWho = (new StringBuilder()).append(fragment.mWho).append(":").append(mIndex).toString(); + return; + } else + { + mWho = (new StringBuilder()).append("android:fragment:").append(mIndex).toString(); + return; + } + } + + public String toString() + { + StringBuilder stringbuilder = new StringBuilder(128); + DebugUtils.buildShortClassTag(this, stringbuilder); + if (mIndex >= 0) + { + stringbuilder.append(" #"); + stringbuilder.append(mIndex); + } + if (mFragmentId != 0) + { + stringbuilder.append(" id=0x"); + stringbuilder.append(Integer.toHexString(mFragmentId)); + } + if (mTag != null) + { + stringbuilder.append(" "); + stringbuilder.append(mTag); + } + stringbuilder.append('}'); + return stringbuilder.toString(); + } + +} diff --git a/app/src/main/java/android/support/v4/app/FragmentActivity$FragmentTag.java b/app/src/main/java/android/support/v4/app/FragmentActivity$FragmentTag.java new file mode 100644 index 0000000..4147a1d --- /dev/null +++ b/app/src/main/java/android/support/v4/app/FragmentActivity$FragmentTag.java @@ -0,0 +1,18 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + + +// Referenced classes of package android.support.v4.app: +// FragmentActivity + +static class _cls9 +{ + + public static final int Fragment[] = { + 0x1010003, 0x10100d0, 0x10100d1 + }; + +} diff --git a/app/src/main/java/android/support/v4/app/FragmentActivity$NonConfigurationInstances.java b/app/src/main/java/android/support/v4/app/FragmentActivity$NonConfigurationInstances.java new file mode 100644 index 0000000..86e2e90 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/FragmentActivity$NonConfigurationInstances.java @@ -0,0 +1,25 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import java.util.ArrayList; +import java.util.HashMap; + +// Referenced classes of package android.support.v4.app: +// FragmentActivity + +static final class +{ + + Object activity; + HashMap children; + Object custom; + ArrayList fragments; + HashMap loaders; + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/app/FragmentActivity.java b/app/src/main/java/android/support/v4/app/FragmentActivity.java new file mode 100644 index 0000000..4bf0f27 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/FragmentActivity.java @@ -0,0 +1,835 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.content.res.Configuration; +import android.content.res.Resources; +import android.content.res.TypedArray; +import android.os.Bundle; +import android.os.Handler; +import android.util.AttributeSet; +import android.util.Log; +import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import java.io.FileDescriptor; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; + +// Referenced classes of package android.support.v4.app: +// LoaderManagerImpl, FragmentManagerImpl, Fragment, ActivityCompatHoneycomb, +// FragmentContainer + +public class FragmentActivity extends Activity +{ + static class FragmentTag + { + + public static final int Fragment[] = { + 0x1010003, 0x10100d0, 0x10100d1 + }; + + } + + static final class NonConfigurationInstances + { + + Object activity; + HashMap children; + Object custom; + ArrayList fragments; + HashMap loaders; + + NonConfigurationInstances() + { + } + } + + + HashMap mAllLoaderManagers; + boolean mCheckedForLoaderManager; + final FragmentContainer mContainer; + boolean mCreated; + final FragmentManagerImpl mFragments; + final Handler mHandler; + LoaderManagerImpl mLoaderManager; + boolean mLoadersStarted; + boolean mOptionsMenuInvalidated; + boolean mReallyStopped; + boolean mResumed; + boolean mRetaining; + boolean mStopped; + + private void dumpViewHierarchy(String s, PrintWriter printwriter, View view) + { + printwriter.print(s); + if (view != null) goto _L2; else goto _L1 +_L1: + printwriter.println("null"); +_L4: + return; +_L2: + printwriter.println(viewToString(view)); + if (view instanceof ViewGroup) + { + view = (ViewGroup)view; + int j = view.getChildCount(); + if (j > 0) + { + s = (new StringBuilder()).append(s).append(" ").toString(); + int i = 0; + while (i < j) + { + dumpViewHierarchy(s, printwriter, view.getChildAt(i)); + i++; + } + } + } + if (true) goto _L4; else goto _L3 +_L3: + } + + private static String viewToString(View view) + { + byte byte0; + byte byte1; + StringBuilder stringbuilder; + byte1 = 70; + byte0 = 46; + stringbuilder = new StringBuilder(128); + stringbuilder.append(view.getClass().getName()); + stringbuilder.append('{'); + stringbuilder.append(Integer.toHexString(System.identityHashCode(view))); + stringbuilder.append(' '); + view.getVisibility(); + JVM INSTR lookupswitch 3: default 100 + // 0: 523 + // 4: 534 + // 8: 545; + goto _L1 _L2 _L3 _L4 +_L1: + stringbuilder.append('.'); +_L11: + char c; + Object obj; + String s; + int i; + if (view.isFocusable()) + { + c = 'F'; + } else + { + c = '.'; + } + stringbuilder.append(c); + if (view.isEnabled()) + { + c = 'E'; + } else + { + c = '.'; + } + stringbuilder.append(c); + if (view.willNotDraw()) + { + c = '.'; + } else + { + c = 'D'; + } + stringbuilder.append(c); + if (view.isHorizontalScrollBarEnabled()) + { + c = 'H'; + } else + { + c = '.'; + } + stringbuilder.append(c); + if (view.isVerticalScrollBarEnabled()) + { + c = 'V'; + } else + { + c = '.'; + } + stringbuilder.append(c); + if (view.isClickable()) + { + c = 'C'; + } else + { + c = '.'; + } + stringbuilder.append(c); + if (view.isLongClickable()) + { + c = 'L'; + } else + { + c = '.'; + } + stringbuilder.append(c); + stringbuilder.append(' '); + if (view.isFocused()) + { + c = byte1; + } else + { + c = '.'; + } + stringbuilder.append(c); + if (view.isSelected()) + { + c = 'S'; + } else + { + c = '.'; + } + stringbuilder.append(c); + c = byte0; + if (view.isPressed()) + { + c = 'P'; + } + stringbuilder.append(c); + stringbuilder.append(' '); + stringbuilder.append(view.getLeft()); + stringbuilder.append(','); + stringbuilder.append(view.getTop()); + stringbuilder.append('-'); + stringbuilder.append(view.getRight()); + stringbuilder.append(','); + stringbuilder.append(view.getBottom()); + i = view.getId(); + if (i == -1) goto _L6; else goto _L5 +_L5: + stringbuilder.append(" #"); + stringbuilder.append(Integer.toHexString(i)); + obj = view.getResources(); + if (i == 0 || obj == null) goto _L6; else goto _L7 +_L7: + 0xff000000 & i; + JVM INSTR lookupswitch 2: default 436 + // 16777216: 616 + // 2130706432: 610; + goto _L8 _L9 _L10 +_L8: + view = ((Resources) (obj)).getResourcePackageName(i); +_L12: + s = ((Resources) (obj)).getResourceTypeName(i); + obj = ((Resources) (obj)).getResourceEntryName(i); + stringbuilder.append(" "); + stringbuilder.append(view); + stringbuilder.append(":"); + stringbuilder.append(s); + stringbuilder.append("/"); + stringbuilder.append(((String) (obj))); +_L6: + stringbuilder.append("}"); + return stringbuilder.toString(); +_L2: + stringbuilder.append('V'); + goto _L11 +_L3: + stringbuilder.append('I'); + goto _L11 +_L4: + stringbuilder.append('G'); + goto _L11 +_L10: + view = "app"; + goto _L12 +_L9: + view = "android"; + goto _L12 + view; + goto _L6 + } + + void doReallyStop(boolean flag) + { + if (!mReallyStopped) + { + mReallyStopped = true; + mRetaining = flag; + mHandler.removeMessages(1); + onReallyStop(); + } + } + + public void dump(String s, FileDescriptor filedescriptor, PrintWriter printwriter, String as[]) + { + if (android.os.Build.VERSION.SDK_INT < 11); + printwriter.print(s); + printwriter.print("Local FragmentActivity "); + printwriter.print(Integer.toHexString(System.identityHashCode(this))); + printwriter.println(" State:"); + String s1 = (new StringBuilder()).append(s).append(" ").toString(); + printwriter.print(s1); + printwriter.print("mCreated="); + printwriter.print(mCreated); + printwriter.print("mResumed="); + printwriter.print(mResumed); + printwriter.print(" mStopped="); + printwriter.print(mStopped); + printwriter.print(" mReallyStopped="); + printwriter.println(mReallyStopped); + printwriter.print(s1); + printwriter.print("mLoadersStarted="); + printwriter.println(mLoadersStarted); + if (mLoaderManager != null) + { + printwriter.print(s); + printwriter.print("Loader Manager "); + printwriter.print(Integer.toHexString(System.identityHashCode(mLoaderManager))); + printwriter.println(":"); + mLoaderManager.dump((new StringBuilder()).append(s).append(" ").toString(), filedescriptor, printwriter, as); + } + mFragments.dump(s, filedescriptor, printwriter, as); + printwriter.print(s); + printwriter.println("View Hierarchy:"); + dumpViewHierarchy((new StringBuilder()).append(s).append(" ").toString(), printwriter, getWindow().getDecorView()); + } + + LoaderManagerImpl getLoaderManager(String s, boolean flag, boolean flag1) + { + if (mAllLoaderManagers == null) + { + mAllLoaderManagers = new HashMap(); + } + LoaderManagerImpl loadermanagerimpl = (LoaderManagerImpl)mAllLoaderManagers.get(s); + if (loadermanagerimpl == null) + { + if (flag1) + { + loadermanagerimpl = new LoaderManagerImpl(s, this, flag); + mAllLoaderManagers.put(s, loadermanagerimpl); + } + return loadermanagerimpl; + } else + { + loadermanagerimpl.updateActivity(this); + return loadermanagerimpl; + } + } + + void invalidateSupportFragment(String s) + { + if (mAllLoaderManagers != null) + { + LoaderManagerImpl loadermanagerimpl = (LoaderManagerImpl)mAllLoaderManagers.get(s); + if (loadermanagerimpl != null && !loadermanagerimpl.mRetaining) + { + loadermanagerimpl.doDestroy(); + mAllLoaderManagers.remove(s); + } + } + } + + protected void onActivityResult(int i, int j, Intent intent) + { + mFragments.noteStateNotSaved(); + int k = i >> 16; + if (k != 0) + { + k--; + if (mFragments.mActive == null || k < 0 || k >= mFragments.mActive.size()) + { + Log.w("FragmentActivity", (new StringBuilder()).append("Activity result fragment index out of range: 0x").append(Integer.toHexString(i)).toString()); + return; + } + Fragment fragment = (Fragment)mFragments.mActive.get(k); + if (fragment == null) + { + Log.w("FragmentActivity", (new StringBuilder()).append("Activity result no fragment exists for index: 0x").append(Integer.toHexString(i)).toString()); + return; + } else + { + fragment.onActivityResult(0xffff & i, j, intent); + return; + } + } else + { + super.onActivityResult(i, j, intent); + return; + } + } + + public void onAttachFragment(Fragment fragment) + { + } + + public void onBackPressed() + { + if (!mFragments.popBackStackImmediate()) + { + finish(); + } + } + + public void onConfigurationChanged(Configuration configuration) + { + super.onConfigurationChanged(configuration); + mFragments.dispatchConfigurationChanged(configuration); + } + + protected void onCreate(Bundle bundle) + { + Object obj = null; + mFragments.attachActivity(this, mContainer, null); + if (getLayoutInflater().getFactory() == null) + { + getLayoutInflater().setFactory(this); + } + super.onCreate(bundle); + NonConfigurationInstances nonconfigurationinstances = (NonConfigurationInstances)getLastNonConfigurationInstance(); + if (nonconfigurationinstances != null) + { + mAllLoaderManagers = nonconfigurationinstances.loaders; + } + if (bundle != null) + { + android.os.Parcelable parcelable = bundle.getParcelable("android:support:fragments"); + FragmentManagerImpl fragmentmanagerimpl = mFragments; + bundle = obj; + if (nonconfigurationinstances != null) + { + bundle = nonconfigurationinstances.fragments; + } + fragmentmanagerimpl.restoreAllState(parcelable, bundle); + } + mFragments.dispatchCreate(); + } + + public boolean onCreatePanelMenu(int i, Menu menu) + { + if (i == 0) + { + boolean flag = super.onCreatePanelMenu(i, menu); + boolean flag1 = mFragments.dispatchCreateOptionsMenu(menu, getMenuInflater()); + if (android.os.Build.VERSION.SDK_INT >= 11) + { + return flag | flag1; + } else + { + return true; + } + } else + { + return super.onCreatePanelMenu(i, menu); + } + } + + public View onCreateView(String s, Context context, AttributeSet attributeset) + { + Object obj = null; + if (!"fragment".equals(s)) + { + return super.onCreateView(s, context, attributeset); + } + s = attributeset.getAttributeValue(null, "class"); + context = context.obtainStyledAttributes(attributeset, FragmentTag.Fragment); + String s1 = s; + if (s == null) + { + s1 = context.getString(0); + } + int j = context.getResourceId(1, -1); + String s2 = context.getString(2); + context.recycle(); + if (false) + { + throw new NullPointerException(); + } + if (-1 == 0 && j == -1 && s2 == null) + { + throw new IllegalArgumentException((new StringBuilder()).append(attributeset.getPositionDescription()).append(": Must specify unique android:id, android:tag, or have a parent with an id for ").append(s1).toString()); + } + context = obj; + if (j != -1) + { + context = mFragments.findFragmentById(j); + } + s = context; + if (context == null) + { + s = context; + if (s2 != null) + { + s = mFragments.findFragmentByTag(s2); + } + } + context = s; + if (s == null) + { + context = s; + if (-1 != 0) + { + context = mFragments.findFragmentById(0); + } + } + if (FragmentManagerImpl.DEBUG) + { + Log.v("FragmentActivity", (new StringBuilder()).append("onCreateView: id=0x").append(Integer.toHexString(j)).append(" fname=").append(s1).append(" existing=").append(context).toString()); + } + if (context == null) + { + context = Fragment.instantiate(this, s1); + context.mFromLayout = true; + int i; + if (j != 0) + { + i = j; + } else + { + i = 0; + } + context.mFragmentId = i; + context.mContainerId = 0; + context.mTag = s2; + context.mInLayout = true; + context.mFragmentManager = mFragments; + context.onInflate(this, attributeset, ((Fragment) (context)).mSavedFragmentState); + mFragments.addFragment(context, true); + } else + { + if (((Fragment) (context)).mInLayout) + { + throw new IllegalArgumentException((new StringBuilder()).append(attributeset.getPositionDescription()).append(": Duplicate id 0x").append(Integer.toHexString(j)).append(", tag ").append(s2).append(", or parent id 0x").append(Integer.toHexString(0)).append(" with another fragment for ").append(s1).toString()); + } + context.mInLayout = true; + if (!((Fragment) (context)).mRetaining) + { + context.onInflate(this, attributeset, ((Fragment) (context)).mSavedFragmentState); + } + mFragments.moveToState(context); + } + if (((Fragment) (context)).mView == null) + { + throw new IllegalStateException((new StringBuilder()).append("Fragment ").append(s1).append(" did not create a view.").toString()); + } + if (j != 0) + { + ((Fragment) (context)).mView.setId(j); + } + if (((Fragment) (context)).mView.getTag() == null) + { + ((Fragment) (context)).mView.setTag(s2); + } + return ((Fragment) (context)).mView; + } + + protected void onDestroy() + { + super.onDestroy(); + doReallyStop(false); + mFragments.dispatchDestroy(); + if (mLoaderManager != null) + { + mLoaderManager.doDestroy(); + } + } + + public boolean onKeyDown(int i, KeyEvent keyevent) + { + if (android.os.Build.VERSION.SDK_INT < 5 && i == 4 && keyevent.getRepeatCount() == 0) + { + onBackPressed(); + return true; + } else + { + return super.onKeyDown(i, keyevent); + } + } + + public void onLowMemory() + { + super.onLowMemory(); + mFragments.dispatchLowMemory(); + } + + public boolean onMenuItemSelected(int i, MenuItem menuitem) + { + if (super.onMenuItemSelected(i, menuitem)) + { + return true; + } + switch (i) + { + default: + return false; + + case 0: // '\0' + return mFragments.dispatchOptionsItemSelected(menuitem); + + case 6: // '\006' + return mFragments.dispatchContextItemSelected(menuitem); + } + } + + protected void onNewIntent(Intent intent) + { + super.onNewIntent(intent); + mFragments.noteStateNotSaved(); + } + + public void onPanelClosed(int i, Menu menu) + { + i; + JVM INSTR tableswitch 0 0: default 20 + // 0 27; + goto _L1 _L2 +_L1: + super.onPanelClosed(i, menu); + return; +_L2: + mFragments.dispatchOptionsMenuClosed(menu); + if (true) goto _L1; else goto _L3 +_L3: + } + + protected void onPause() + { + super.onPause(); + mResumed = false; + if (mHandler.hasMessages(2)) + { + mHandler.removeMessages(2); + onResumeFragments(); + } + mFragments.dispatchPause(); + } + + protected void onPostResume() + { + super.onPostResume(); + mHandler.removeMessages(2); + onResumeFragments(); + mFragments.execPendingActions(); + } + + public boolean onPreparePanel(int i, View view, Menu menu) + { + boolean flag1 = false; + if (i == 0 && menu != null) + { + if (mOptionsMenuInvalidated) + { + mOptionsMenuInvalidated = false; + menu.clear(); + onCreatePanelMenu(i, menu); + } + boolean flag = flag1; + if (super.onPreparePanel(i, view, menu) | mFragments.dispatchPrepareOptionsMenu(menu)) + { + flag = flag1; + if (menu.hasVisibleItems()) + { + flag = true; + } + } + return flag; + } else + { + return super.onPreparePanel(i, view, menu); + } + } + + void onReallyStop() + { + if (mLoadersStarted) + { + mLoadersStarted = false; + if (mLoaderManager != null) + { + if (!mRetaining) + { + mLoaderManager.doStop(); + } else + { + mLoaderManager.doRetain(); + } + } + } + mFragments.dispatchReallyStop(); + } + + protected void onResume() + { + super.onResume(); + mHandler.sendEmptyMessage(2); + mResumed = true; + mFragments.execPendingActions(); + } + + protected void onResumeFragments() + { + mFragments.dispatchResume(); + } + + public Object onRetainCustomNonConfigurationInstance() + { + return null; + } + + public final Object onRetainNonConfigurationInstance() + { + if (mStopped) + { + doReallyStop(true); + } + Object obj = onRetainCustomNonConfigurationInstance(); + ArrayList arraylist = mFragments.retainNonConfig(); + boolean flag1 = false; + boolean flag = false; + boolean flag2 = flag1; + if (mAllLoaderManagers != null) + { + LoaderManagerImpl aloadermanagerimpl[] = new LoaderManagerImpl[mAllLoaderManagers.size()]; + mAllLoaderManagers.values().toArray(aloadermanagerimpl); + flag2 = flag1; + if (aloadermanagerimpl != null) + { + int i = 0; + do + { + flag2 = flag; + if (i >= aloadermanagerimpl.length) + { + break; + } + LoaderManagerImpl loadermanagerimpl = aloadermanagerimpl[i]; + if (loadermanagerimpl.mRetaining) + { + flag = true; + } else + { + loadermanagerimpl.doDestroy(); + mAllLoaderManagers.remove(loadermanagerimpl.mWho); + } + i++; + } while (true); + } + } + if (arraylist == null && !flag2 && obj == null) + { + return null; + } else + { + NonConfigurationInstances nonconfigurationinstances = new NonConfigurationInstances(); + nonconfigurationinstances.activity = null; + nonconfigurationinstances.custom = obj; + nonconfigurationinstances.children = null; + nonconfigurationinstances.fragments = arraylist; + nonconfigurationinstances.loaders = mAllLoaderManagers; + return nonconfigurationinstances; + } + } + + protected void onSaveInstanceState(Bundle bundle) + { + super.onSaveInstanceState(bundle); + android.os.Parcelable parcelable = mFragments.saveAllState(); + if (parcelable != null) + { + bundle.putParcelable("android:support:fragments", parcelable); + } + } + + protected void onStart() + { + super.onStart(); + mStopped = false; + mReallyStopped = false; + mHandler.removeMessages(1); + if (!mCreated) + { + mCreated = true; + mFragments.dispatchActivityCreated(); + } + mFragments.noteStateNotSaved(); + mFragments.execPendingActions(); + if (mLoadersStarted) goto _L2; else goto _L1 +_L1: + mLoadersStarted = true; + if (mLoaderManager == null) goto _L4; else goto _L3 +_L3: + mLoaderManager.doStart(); +_L6: + mCheckedForLoaderManager = true; +_L2: + mFragments.dispatchStart(); + if (mAllLoaderManagers != null) + { + LoaderManagerImpl aloadermanagerimpl[] = new LoaderManagerImpl[mAllLoaderManagers.size()]; + mAllLoaderManagers.values().toArray(aloadermanagerimpl); + if (aloadermanagerimpl != null) + { + for (int i = 0; i < aloadermanagerimpl.length; i++) + { + LoaderManagerImpl loadermanagerimpl = aloadermanagerimpl[i]; + loadermanagerimpl.finishRetain(); + loadermanagerimpl.doReportStart(); + } + + } + } + break; /* Loop/switch isn't completed */ +_L4: + if (!mCheckedForLoaderManager) + { + mLoaderManager = getLoaderManager(null, mLoadersStarted, false); + if (mLoaderManager != null && !mLoaderManager.mStarted) + { + mLoaderManager.doStart(); + } + } + if (true) goto _L6; else goto _L5 +_L5: + } + + protected void onStop() + { + super.onStop(); + mStopped = true; + mHandler.sendEmptyMessage(1); + mFragments.dispatchStop(); + } + + public void startActivityForResult(Intent intent, int i) + { + if (i != -1 && (0xffff0000 & i) != 0) + { + throw new IllegalArgumentException("Can only use lower 16 bits for requestCode"); + } else + { + super.startActivityForResult(intent, i); + return; + } + } + + public void supportInvalidateOptionsMenu() + { + if (android.os.Build.VERSION.SDK_INT >= 11) + { + ActivityCompatHoneycomb.invalidateOptionsMenu(this); + return; + } else + { + mOptionsMenuInvalidated = true; + return; + } + } +} diff --git a/app/src/main/java/android/support/v4/app/FragmentContainer.java b/app/src/main/java/android/support/v4/app/FragmentContainer.java new file mode 100644 index 0000000..8c9a6c0 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/FragmentContainer.java @@ -0,0 +1,13 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.view.View; + +interface FragmentContainer +{ + + public abstract View findViewById(int i); +} diff --git a/app/src/main/java/android/support/v4/app/FragmentManager$OnBackStackChangedListener.java b/app/src/main/java/android/support/v4/app/FragmentManager$OnBackStackChangedListener.java new file mode 100644 index 0000000..c61e74e --- /dev/null +++ b/app/src/main/java/android/support/v4/app/FragmentManager$OnBackStackChangedListener.java @@ -0,0 +1,15 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + + +// Referenced classes of package android.support.v4.app: +// FragmentManager + +public static interface +{ + + public abstract void onBackStackChanged(); +} diff --git a/app/src/main/java/android/support/v4/app/FragmentManager.java b/app/src/main/java/android/support/v4/app/FragmentManager.java new file mode 100644 index 0000000..de673f2 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/FragmentManager.java @@ -0,0 +1,29 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + + +// Referenced classes of package android.support.v4.app: +// FragmentTransaction, Fragment + +public abstract class FragmentManager +{ + public static interface OnBackStackChangedListener + { + + public abstract void onBackStackChanged(); + } + + + public FragmentManager() + { + } + + public abstract FragmentTransaction beginTransaction(); + + public abstract boolean executePendingTransactions(); + + public abstract Fragment findFragmentByTag(String s); +} diff --git a/app/src/main/java/android/support/v4/app/FragmentManagerImpl$1.java b/app/src/main/java/android/support/v4/app/FragmentManagerImpl$1.java new file mode 100644 index 0000000..d7da8ba --- /dev/null +++ b/app/src/main/java/android/support/v4/app/FragmentManagerImpl$1.java @@ -0,0 +1,27 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + + +// Referenced classes of package android.support.v4.app: +// FragmentManagerImpl + +class this._cls0 + implements Runnable +{ + + final FragmentManagerImpl this$0; + + public void run() + { + execPendingActions(); + } + + () + { + this$0 = FragmentManagerImpl.this; + super(); + } +} diff --git a/app/src/main/java/android/support/v4/app/FragmentManagerImpl$5.java b/app/src/main/java/android/support/v4/app/FragmentManagerImpl$5.java new file mode 100644 index 0000000..33d030d --- /dev/null +++ b/app/src/main/java/android/support/v4/app/FragmentManagerImpl$5.java @@ -0,0 +1,42 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.view.animation.Animation; + +// Referenced classes of package android.support.v4.app: +// FragmentManagerImpl, Fragment + +class val.fragment + implements android.view.animation.tener +{ + + final FragmentManagerImpl this$0; + final Fragment val$fragment; + + public void onAnimationEnd(Animation animation) + { + if (val$fragment.mAnimatingAway != null) + { + val$fragment.mAnimatingAway = null; + moveToState(val$fragment, val$fragment.mStateAfterAnimating, 0, 0, false); + } + } + + public void onAnimationRepeat(Animation animation) + { + } + + public void onAnimationStart(Animation animation) + { + } + + tener() + { + this$0 = final_fragmentmanagerimpl; + val$fragment = Fragment.this; + super(); + } +} diff --git a/app/src/main/java/android/support/v4/app/FragmentManagerImpl.java b/app/src/main/java/android/support/v4/app/FragmentManagerImpl.java new file mode 100644 index 0000000..8d5ca4f --- /dev/null +++ b/app/src/main/java/android/support/v4/app/FragmentManagerImpl.java @@ -0,0 +1,2287 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.content.Context; +import android.content.res.Configuration; +import android.content.res.Resources; +import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.os.Parcelable; +import android.support.v4.util.DebugUtils; +import android.support.v4.util.LogWriter; +import android.util.Log; +import android.util.SparseArray; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.animation.AccelerateInterpolator; +import android.view.animation.AlphaAnimation; +import android.view.animation.Animation; +import android.view.animation.AnimationSet; +import android.view.animation.AnimationUtils; +import android.view.animation.DecelerateInterpolator; +import android.view.animation.Interpolator; +import android.view.animation.ScaleAnimation; +import java.io.FileDescriptor; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.Arrays; + +// Referenced classes of package android.support.v4.app: +// FragmentManager, FragmentActivity, Fragment, BackStackRecord, +// LoaderManagerImpl, SuperNotCalledException, NoSaveStateFrameLayout, FragmentContainer, +// FragmentManagerState, FragmentState, BackStackState, FragmentTransaction + +final class FragmentManagerImpl extends FragmentManager +{ + + static final Interpolator ACCELERATE_CUBIC = new AccelerateInterpolator(1.5F); + static final Interpolator ACCELERATE_QUINT = new AccelerateInterpolator(2.5F); + static boolean DEBUG = false; + static final Interpolator DECELERATE_CUBIC = new DecelerateInterpolator(1.5F); + static final Interpolator DECELERATE_QUINT = new DecelerateInterpolator(2.5F); + static final boolean HONEYCOMB; + ArrayList mActive; + FragmentActivity mActivity; + ArrayList mAdded; + ArrayList mAvailBackStackIndices; + ArrayList mAvailIndices; + ArrayList mBackStack; + ArrayList mBackStackChangeListeners; + ArrayList mBackStackIndices; + FragmentContainer mContainer; + ArrayList mCreatedMenus; + int mCurState; + boolean mDestroyed; + Runnable mExecCommit; + boolean mExecutingActions; + boolean mHavePendingDeferredStart; + boolean mNeedMenuInvalidate; + String mNoTransactionsBecause; + Fragment mParent; + ArrayList mPendingActions; + SparseArray mStateArray; + Bundle mStateBundle; + boolean mStateSaved; + Runnable mTmpActions[]; + + FragmentManagerImpl() + { + mCurState = 0; + mStateBundle = null; + mStateArray = null; + mExecCommit = new Runnable() { + + final FragmentManagerImpl this$0; + + public void run() + { + execPendingActions(); + } + + + { + this$0 = FragmentManagerImpl.this; + super(); + } + }; + } + + private void checkStateLoss() + { + if (mStateSaved) + { + throw new IllegalStateException("Can not perform this action after onSaveInstanceState"); + } + if (mNoTransactionsBecause != null) + { + throw new IllegalStateException((new StringBuilder()).append("Can not perform this action inside of ").append(mNoTransactionsBecause).toString()); + } else + { + return; + } + } + + static Animation makeFadeAnimation(Context context, float f, float f1) + { + context = new AlphaAnimation(f, f1); + context.setInterpolator(DECELERATE_CUBIC); + context.setDuration(220L); + return context; + } + + static Animation makeOpenCloseAnimation(Context context, float f, float f1, float f2, float f3) + { + context = new AnimationSet(false); + Object obj = new ScaleAnimation(f, f1, f, f1, 1, 0.5F, 1, 0.5F); + ((ScaleAnimation) (obj)).setInterpolator(DECELERATE_QUINT); + ((ScaleAnimation) (obj)).setDuration(220L); + context.addAnimation(((Animation) (obj))); + obj = new AlphaAnimation(f2, f3); + ((AlphaAnimation) (obj)).setInterpolator(DECELERATE_CUBIC); + ((AlphaAnimation) (obj)).setDuration(220L); + context.addAnimation(((Animation) (obj))); + return context; + } + + public static int reverseTransit(int i) + { + switch (i) + { + default: + return 0; + + case 4097: + return 8194; + + case 8194: + return 4097; + + case 4099: + return 4099; + } + } + + private void throwException(RuntimeException runtimeexception) + { + Log.e("FragmentManager", runtimeexception.getMessage()); + Log.e("FragmentManager", "Activity state:"); + Object obj = new PrintWriter(new LogWriter("FragmentManager")); + if (mActivity != null) + { + try + { + mActivity.dump(" ", null, ((PrintWriter) (obj)), new String[0]); + } + // Misplaced declaration of an exception variable + catch (Object obj) + { + Log.e("FragmentManager", "Failed dumping state", ((Throwable) (obj))); + } + } else + { + try + { + dump(" ", null, ((PrintWriter) (obj)), new String[0]); + } + catch (Exception exception) + { + Log.e("FragmentManager", "Failed dumping state", exception); + } + } + throw runtimeexception; + } + + public static int transitToStyleIndex(int i, boolean flag) + { + switch (i) + { + default: + return -1; + + case 4097: + return !flag ? 2 : 1; + + case 8194: + return !flag ? 4 : 3; + + case 4099: + break; + } + return !flag ? 6 : 5; + } + + void addBackStackState(BackStackRecord backstackrecord) + { + if (mBackStack == null) + { + mBackStack = new ArrayList(); + } + mBackStack.add(backstackrecord); + reportBackStackChanged(); + } + + public void addFragment(Fragment fragment, boolean flag) + { + if (mAdded == null) + { + mAdded = new ArrayList(); + } + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("add: ").append(fragment).toString()); + } + makeActive(fragment); + if (!fragment.mDetached) + { + if (mAdded.contains(fragment)) + { + throw new IllegalStateException((new StringBuilder()).append("Fragment already added: ").append(fragment).toString()); + } + mAdded.add(fragment); + fragment.mAdded = true; + fragment.mRemoving = false; + if (fragment.mHasMenu && fragment.mMenuVisible) + { + mNeedMenuInvalidate = true; + } + if (flag) + { + moveToState(fragment); + } + } + } + + public int allocBackStackIndex(BackStackRecord backstackrecord) + { + this; + JVM INSTR monitorenter ; + int i; + if (mAvailBackStackIndices != null && mAvailBackStackIndices.size() > 0) + { + break MISSING_BLOCK_LABEL_100; + } + if (mBackStackIndices == null) + { + mBackStackIndices = new ArrayList(); + } + i = mBackStackIndices.size(); + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("Setting back stack index ").append(i).append(" to ").append(backstackrecord).toString()); + } + mBackStackIndices.add(backstackrecord); + this; + JVM INSTR monitorexit ; + return i; + i = ((Integer)mAvailBackStackIndices.remove(mAvailBackStackIndices.size() - 1)).intValue(); + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("Adding back stack index ").append(i).append(" with ").append(backstackrecord).toString()); + } + mBackStackIndices.set(i, backstackrecord); + this; + JVM INSTR monitorexit ; + return i; + backstackrecord; + this; + JVM INSTR monitorexit ; + throw backstackrecord; + } + + public void attachActivity(FragmentActivity fragmentactivity, FragmentContainer fragmentcontainer, Fragment fragment) + { + if (mActivity != null) + { + throw new IllegalStateException("Already attached"); + } else + { + mActivity = fragmentactivity; + mContainer = fragmentcontainer; + mParent = fragment; + return; + } + } + + public void attachFragment(Fragment fragment, int i, int j) + { + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("attach: ").append(fragment).toString()); + } + if (fragment.mDetached) + { + fragment.mDetached = false; + if (!fragment.mAdded) + { + if (mAdded == null) + { + mAdded = new ArrayList(); + } + if (mAdded.contains(fragment)) + { + throw new IllegalStateException((new StringBuilder()).append("Fragment already added: ").append(fragment).toString()); + } + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("add from attach: ").append(fragment).toString()); + } + mAdded.add(fragment); + fragment.mAdded = true; + if (fragment.mHasMenu && fragment.mMenuVisible) + { + mNeedMenuInvalidate = true; + } + moveToState(fragment, mCurState, i, j, false); + } + } + } + + public FragmentTransaction beginTransaction() + { + return new BackStackRecord(this); + } + + public void detachFragment(Fragment fragment, int i, int j) + { + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("detach: ").append(fragment).toString()); + } + if (!fragment.mDetached) + { + fragment.mDetached = true; + if (fragment.mAdded) + { + if (mAdded != null) + { + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("remove from detach: ").append(fragment).toString()); + } + mAdded.remove(fragment); + } + if (fragment.mHasMenu && fragment.mMenuVisible) + { + mNeedMenuInvalidate = true; + } + fragment.mAdded = false; + moveToState(fragment, 1, i, j, false); + } + } + } + + public void dispatchActivityCreated() + { + mStateSaved = false; + moveToState(2, false); + } + + public void dispatchConfigurationChanged(Configuration configuration) + { + if (mAdded != null) + { + for (int i = 0; i < mAdded.size(); i++) + { + Fragment fragment = (Fragment)mAdded.get(i); + if (fragment != null) + { + fragment.performConfigurationChanged(configuration); + } + } + + } + } + + public boolean dispatchContextItemSelected(MenuItem menuitem) + { + if (mAdded != null) + { + for (int i = 0; i < mAdded.size(); i++) + { + Fragment fragment = (Fragment)mAdded.get(i); + if (fragment != null && fragment.performContextItemSelected(menuitem)) + { + return true; + } + } + + } + return false; + } + + public void dispatchCreate() + { + mStateSaved = false; + moveToState(1, false); + } + + public boolean dispatchCreateOptionsMenu(Menu menu, MenuInflater menuinflater) + { + boolean flag1 = false; + boolean flag = false; + ArrayList arraylist1 = null; + ArrayList arraylist = null; + if (mAdded != null) + { + int i = 0; + do + { + arraylist1 = arraylist; + flag1 = flag; + if (i >= mAdded.size()) + { + break; + } + Fragment fragment = (Fragment)mAdded.get(i); + arraylist1 = arraylist; + flag1 = flag; + if (fragment != null) + { + arraylist1 = arraylist; + flag1 = flag; + if (fragment.performCreateOptionsMenu(menu, menuinflater)) + { + flag1 = true; + arraylist1 = arraylist; + if (arraylist == null) + { + arraylist1 = new ArrayList(); + } + arraylist1.add(fragment); + } + } + i++; + arraylist = arraylist1; + flag = flag1; + } while (true); + } + if (mCreatedMenus != null) + { + for (int j = 0; j < mCreatedMenus.size(); j++) + { + menu = (Fragment)mCreatedMenus.get(j); + if (arraylist1 == null || !arraylist1.contains(menu)) + { + menu.onDestroyOptionsMenu(); + } + } + + } + mCreatedMenus = arraylist1; + return flag1; + } + + public void dispatchDestroy() + { + mDestroyed = true; + execPendingActions(); + moveToState(0, false); + mActivity = null; + mContainer = null; + mParent = null; + } + + public void dispatchDestroyView() + { + moveToState(1, false); + } + + public void dispatchLowMemory() + { + if (mAdded != null) + { + for (int i = 0; i < mAdded.size(); i++) + { + Fragment fragment = (Fragment)mAdded.get(i); + if (fragment != null) + { + fragment.performLowMemory(); + } + } + + } + } + + public boolean dispatchOptionsItemSelected(MenuItem menuitem) + { + if (mAdded != null) + { + for (int i = 0; i < mAdded.size(); i++) + { + Fragment fragment = (Fragment)mAdded.get(i); + if (fragment != null && fragment.performOptionsItemSelected(menuitem)) + { + return true; + } + } + + } + return false; + } + + public void dispatchOptionsMenuClosed(Menu menu) + { + if (mAdded != null) + { + for (int i = 0; i < mAdded.size(); i++) + { + Fragment fragment = (Fragment)mAdded.get(i); + if (fragment != null) + { + fragment.performOptionsMenuClosed(menu); + } + } + + } + } + + public void dispatchPause() + { + moveToState(4, false); + } + + public boolean dispatchPrepareOptionsMenu(Menu menu) + { + boolean flag1 = false; + boolean flag = false; + if (mAdded != null) + { + int i = 0; + do + { + flag1 = flag; + if (i >= mAdded.size()) + { + break; + } + Fragment fragment = (Fragment)mAdded.get(i); + flag1 = flag; + if (fragment != null) + { + flag1 = flag; + if (fragment.performPrepareOptionsMenu(menu)) + { + flag1 = true; + } + } + i++; + flag = flag1; + } while (true); + } + return flag1; + } + + public void dispatchReallyStop() + { + moveToState(2, false); + } + + public void dispatchResume() + { + mStateSaved = false; + moveToState(5, false); + } + + public void dispatchStart() + { + mStateSaved = false; + moveToState(4, false); + } + + public void dispatchStop() + { + mStateSaved = true; + moveToState(3, false); + } + + public void dump(String s, FileDescriptor filedescriptor, PrintWriter printwriter, String as[]) + { + String s1 = (new StringBuilder()).append(s).append(" ").toString(); + if (mActive != null) + { + int k1 = mActive.size(); + if (k1 > 0) + { + printwriter.print(s); + printwriter.print("Active Fragments in "); + printwriter.print(Integer.toHexString(System.identityHashCode(this))); + printwriter.println(":"); + for (int i = 0; i < k1; i++) + { + Fragment fragment = (Fragment)mActive.get(i); + printwriter.print(s); + printwriter.print(" #"); + printwriter.print(i); + printwriter.print(": "); + printwriter.println(fragment); + if (fragment != null) + { + fragment.dump(s1, filedescriptor, printwriter, as); + } + } + + } + } + if (mAdded != null) + { + int l1 = mAdded.size(); + if (l1 > 0) + { + printwriter.print(s); + printwriter.println("Added Fragments:"); + for (int j = 0; j < l1; j++) + { + Fragment fragment1 = (Fragment)mAdded.get(j); + printwriter.print(s); + printwriter.print(" #"); + printwriter.print(j); + printwriter.print(": "); + printwriter.println(fragment1.toString()); + } + + } + } + if (mCreatedMenus != null) + { + int i2 = mCreatedMenus.size(); + if (i2 > 0) + { + printwriter.print(s); + printwriter.println("Fragments Created Menus:"); + for (int k = 0; k < i2; k++) + { + Fragment fragment2 = (Fragment)mCreatedMenus.get(k); + printwriter.print(s); + printwriter.print(" #"); + printwriter.print(k); + printwriter.print(": "); + printwriter.println(fragment2.toString()); + } + + } + } + if (mBackStack != null) + { + int j2 = mBackStack.size(); + if (j2 > 0) + { + printwriter.print(s); + printwriter.println("Back Stack:"); + for (int l = 0; l < j2; l++) + { + BackStackRecord backstackrecord = (BackStackRecord)mBackStack.get(l); + printwriter.print(s); + printwriter.print(" #"); + printwriter.print(l); + printwriter.print(": "); + printwriter.println(backstackrecord.toString()); + backstackrecord.dump(s1, filedescriptor, printwriter, as); + } + + } + } + this; + JVM INSTR monitorenter ; + if (mBackStackIndices == null) goto _L2; else goto _L1 +_L1: + int k2 = mBackStackIndices.size(); + if (k2 <= 0) goto _L2; else goto _L3 +_L3: + printwriter.print(s); + printwriter.println("Back Stack Indices:"); + int i1 = 0; +_L4: + if (i1 >= k2) + { + break; /* Loop/switch isn't completed */ + } + filedescriptor = (BackStackRecord)mBackStackIndices.get(i1); + printwriter.print(s); + printwriter.print(" #"); + printwriter.print(i1); + printwriter.print(": "); + printwriter.println(filedescriptor); + i1++; + if (true) goto _L4; else goto _L2 +_L2: + if (mAvailBackStackIndices != null && mAvailBackStackIndices.size() > 0) + { + printwriter.print(s); + printwriter.print("mAvailBackStackIndices: "); + printwriter.println(Arrays.toString(mAvailBackStackIndices.toArray())); + } + this; + JVM INSTR monitorexit ; + if (mPendingActions != null) + { + int l2 = mPendingActions.size(); + if (l2 > 0) + { + printwriter.print(s); + printwriter.println("Pending Actions:"); + for (int j1 = 0; j1 < l2; j1++) + { + filedescriptor = (Runnable)mPendingActions.get(j1); + printwriter.print(s); + printwriter.print(" #"); + printwriter.print(j1); + printwriter.print(": "); + printwriter.println(filedescriptor); + } + + } + } + break MISSING_BLOCK_LABEL_706; + s; + this; + JVM INSTR monitorexit ; + throw s; + printwriter.print(s); + printwriter.println("FragmentManager misc state:"); + printwriter.print(s); + printwriter.print(" mActivity="); + printwriter.println(mActivity); + printwriter.print(s); + printwriter.print(" mContainer="); + printwriter.println(mContainer); + if (mParent != null) + { + printwriter.print(s); + printwriter.print(" mParent="); + printwriter.println(mParent); + } + printwriter.print(s); + printwriter.print(" mCurState="); + printwriter.print(mCurState); + printwriter.print(" mStateSaved="); + printwriter.print(mStateSaved); + printwriter.print(" mDestroyed="); + printwriter.println(mDestroyed); + if (mNeedMenuInvalidate) + { + printwriter.print(s); + printwriter.print(" mNeedMenuInvalidate="); + printwriter.println(mNeedMenuInvalidate); + } + if (mNoTransactionsBecause != null) + { + printwriter.print(s); + printwriter.print(" mNoTransactionsBecause="); + printwriter.println(mNoTransactionsBecause); + } + if (mAvailIndices != null && mAvailIndices.size() > 0) + { + printwriter.print(s); + printwriter.print(" mAvailIndices: "); + printwriter.println(Arrays.toString(mAvailIndices.toArray())); + } + return; + } + + public void enqueueAction(Runnable runnable, boolean flag) + { + if (!flag) + { + checkStateLoss(); + } + this; + JVM INSTR monitorenter ; + if (mActivity == null) + { + throw new IllegalStateException("Activity has been destroyed"); + } + break MISSING_BLOCK_LABEL_33; + runnable; + this; + JVM INSTR monitorexit ; + throw runnable; + if (mPendingActions == null) + { + mPendingActions = new ArrayList(); + } + mPendingActions.add(runnable); + if (mPendingActions.size() == 1) + { + mActivity.mHandler.removeCallbacks(mExecCommit); + mActivity.mHandler.post(mExecCommit); + } + this; + JVM INSTR monitorexit ; + } + + public boolean execPendingActions() + { + if (mExecutingActions) + { + throw new IllegalStateException("Recursive entry to executePendingTransactions"); + } + if (Looper.myLooper() != mActivity.mHandler.getLooper()) + { + throw new IllegalStateException("Must be called from main thread of process"); + } + boolean flag = false; +_L2: + this; + JVM INSTR monitorenter ; + if (mPendingActions != null && mPendingActions.size() != 0) + { + break MISSING_BLOCK_LABEL_141; + } + this; + JVM INSTR monitorexit ; + int k; + if (!mHavePendingDeferredStart) + { + break MISSING_BLOCK_LABEL_274; + } + k = 0; + for (int i = 0; i < mActive.size();) + { + Fragment fragment = (Fragment)mActive.get(i); + int l = k; + if (fragment != null) + { + l = k; + if (fragment.mLoaderManager != null) + { + l = k | fragment.mLoaderManager.hasRunningLoaders(); + } + } + i++; + k = l; + } + + break; /* Loop/switch isn't completed */ + k = mPendingActions.size(); + if (mTmpActions == null || mTmpActions.length < k) + { + mTmpActions = new Runnable[k]; + } + mPendingActions.toArray(mTmpActions); + mPendingActions.clear(); + mActivity.mHandler.removeCallbacks(mExecCommit); + this; + JVM INSTR monitorexit ; + mExecutingActions = true; + for (int j = 0; j < k; j++) + { + mTmpActions[j].run(); + mTmpActions[j] = null; + } + + break MISSING_BLOCK_LABEL_250; + Exception exception; + exception; + this; + JVM INSTR monitorexit ; + throw exception; + mExecutingActions = false; + flag = true; + if (true) goto _L2; else goto _L1 +_L1: + if (k == 0) + { + mHavePendingDeferredStart = false; + startPendingDeferredFragments(); + } + return flag; + } + + public boolean executePendingTransactions() + { + return execPendingActions(); + } + + public Fragment findFragmentById(int i) + { + if (mAdded == null) goto _L2; else goto _L1 +_L1: + int j = mAdded.size() - 1; +_L11: + if (j < 0) goto _L2; else goto _L3 +_L3: + Fragment fragment = (Fragment)mAdded.get(j); + if (fragment == null || fragment.mFragmentId != i) goto _L5; else goto _L4 +_L4: + return fragment; +_L5: + j--; + continue; /* Loop/switch isn't completed */ +_L2: + if (mActive == null) + { + break MISSING_BLOCK_LABEL_118; + } + j = mActive.size() - 1; +_L9: + if (j < 0) goto _L7; else goto _L6 +_L6: + Fragment fragment1; + fragment1 = (Fragment)mActive.get(j); + if (fragment1 == null) + { + continue; /* Loop/switch isn't completed */ + } + fragment = fragment1; + if (fragment1.mFragmentId == i) goto _L4; else goto _L8 +_L8: + j--; + goto _L9 +_L7: + return null; + if (true) goto _L11; else goto _L10 +_L10: + } + + public Fragment findFragmentByTag(String s) + { + if (mAdded == null || s == null) goto _L2; else goto _L1 +_L1: + int i = mAdded.size() - 1; +_L11: + if (i < 0) goto _L2; else goto _L3 +_L3: + Fragment fragment = (Fragment)mAdded.get(i); + if (fragment == null || !s.equals(fragment.mTag)) goto _L5; else goto _L4 +_L4: + return fragment; +_L5: + i--; + continue; /* Loop/switch isn't completed */ +_L2: + if (mActive == null || s == null) + { + break MISSING_BLOCK_LABEL_132; + } + i = mActive.size() - 1; +_L9: + if (i < 0) goto _L7; else goto _L6 +_L6: + Fragment fragment1; + fragment1 = (Fragment)mActive.get(i); + if (fragment1 == null) + { + continue; /* Loop/switch isn't completed */ + } + fragment = fragment1; + if (s.equals(fragment1.mTag)) goto _L4; else goto _L8 +_L8: + i--; + goto _L9 +_L7: + return null; + if (true) goto _L11; else goto _L10 +_L10: + } + + public void freeBackStackIndex(int i) + { + this; + JVM INSTR monitorenter ; + mBackStackIndices.set(i, null); + if (mAvailBackStackIndices == null) + { + mAvailBackStackIndices = new ArrayList(); + } + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("Freeing back stack index ").append(i).toString()); + } + mAvailBackStackIndices.add(Integer.valueOf(i)); + this; + JVM INSTR monitorexit ; + return; + Exception exception; + exception; + this; + JVM INSTR monitorexit ; + throw exception; + } + + public Fragment getFragment(Bundle bundle, String s) + { + int i = bundle.getInt(s, -1); + if (i == -1) + { + bundle = null; + } else + { + if (i >= mActive.size()) + { + throwException(new IllegalStateException((new StringBuilder()).append("Fragement no longer exists for key ").append(s).append(": index ").append(i).toString())); + } + Fragment fragment = (Fragment)mActive.get(i); + bundle = fragment; + if (fragment == null) + { + throwException(new IllegalStateException((new StringBuilder()).append("Fragement no longer exists for key ").append(s).append(": index ").append(i).toString())); + return fragment; + } + } + return bundle; + } + + public void hideFragment(Fragment fragment, int i, int j) + { + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("hide: ").append(fragment).toString()); + } + if (!fragment.mHidden) + { + fragment.mHidden = true; + if (fragment.mView != null) + { + Animation animation = loadAnimation(fragment, i, true, j); + if (animation != null) + { + fragment.mView.startAnimation(animation); + } + fragment.mView.setVisibility(8); + } + if (fragment.mAdded && fragment.mHasMenu && fragment.mMenuVisible) + { + mNeedMenuInvalidate = true; + } + fragment.onHiddenChanged(true); + } + } + + Animation loadAnimation(Fragment fragment, int i, boolean flag, int j) + { + Animation animation = fragment.onCreateAnimation(i, flag, fragment.mNextAnim); + if (animation != null) + { + return animation; + } + if (fragment.mNextAnim != 0) + { + fragment = AnimationUtils.loadAnimation(mActivity, fragment.mNextAnim); + if (fragment != null) + { + return fragment; + } + } + if (i == 0) + { + return null; + } + i = transitToStyleIndex(i, flag); + if (i < 0) + { + return null; + } + switch (i) + { + default: + i = j; + if (j == 0) + { + i = j; + if (mActivity.getWindow() != null) + { + i = mActivity.getWindow().getAttributes().windowAnimations; + } + } + if (i == 0) + { + return null; + } else + { + return null; + } + + case 1: // '\001' + return makeOpenCloseAnimation(mActivity, 1.125F, 1.0F, 0.0F, 1.0F); + + case 2: // '\002' + return makeOpenCloseAnimation(mActivity, 1.0F, 0.975F, 1.0F, 0.0F); + + case 3: // '\003' + return makeOpenCloseAnimation(mActivity, 0.975F, 1.0F, 0.0F, 1.0F); + + case 4: // '\004' + return makeOpenCloseAnimation(mActivity, 1.0F, 1.075F, 1.0F, 0.0F); + + case 5: // '\005' + return makeFadeAnimation(mActivity, 0.0F, 1.0F); + + case 6: // '\006' + return makeFadeAnimation(mActivity, 1.0F, 0.0F); + } + } + + void makeActive(Fragment fragment) + { + if (fragment.mIndex < 0) + { + if (mAvailIndices == null || mAvailIndices.size() <= 0) + { + if (mActive == null) + { + mActive = new ArrayList(); + } + fragment.setIndex(mActive.size(), mParent); + mActive.add(fragment); + } else + { + fragment.setIndex(((Integer)mAvailIndices.remove(mAvailIndices.size() - 1)).intValue(), mParent); + mActive.set(fragment.mIndex, fragment); + } + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("Allocated fragment index ").append(fragment).toString()); + return; + } + } + } + + void makeInactive(Fragment fragment) + { + if (fragment.mIndex < 0) + { + return; + } + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("Freeing fragment index ").append(fragment).toString()); + } + mActive.set(fragment.mIndex, null); + if (mAvailIndices == null) + { + mAvailIndices = new ArrayList(); + } + mAvailIndices.add(Integer.valueOf(fragment.mIndex)); + mActivity.invalidateSupportFragment(fragment.mWho); + fragment.initState(); + } + + void moveToState(int i, int j, int k, boolean flag) + { + if (mActivity == null && i != 0) + { + throw new IllegalStateException("No activity"); + } + if (flag || mCurState != i) + { + mCurState = i; + if (mActive != null) + { + boolean flag1 = false; + for (int l = 0; l < mActive.size();) + { + Fragment fragment = (Fragment)mActive.get(l); + boolean flag2 = flag1; + if (fragment != null) + { + moveToState(fragment, i, j, k, false); + flag2 = flag1; + if (fragment.mLoaderManager != null) + { + flag2 = flag1 | fragment.mLoaderManager.hasRunningLoaders(); + } + } + l++; + flag1 = flag2; + } + + if (!flag1) + { + startPendingDeferredFragments(); + } + if (mNeedMenuInvalidate && mActivity != null && mCurState == 5) + { + mActivity.supportInvalidateOptionsMenu(); + mNeedMenuInvalidate = false; + return; + } + } + } + } + + void moveToState(int i, boolean flag) + { + moveToState(i, 0, 0, flag); + } + + void moveToState(Fragment fragment) + { + moveToState(fragment, mCurState, 0, 0, false); + } + + void moveToState(final Fragment fragment, int i, int j, int k, boolean flag) + { + int l; +label0: + { + if (fragment.mAdded) + { + l = i; + if (!fragment.mDetached) + { + break label0; + } + } + l = i; + if (i > 1) + { + l = 1; + } + } + int j1 = l; + if (fragment.mRemoving) + { + j1 = l; + if (l > fragment.mState) + { + j1 = fragment.mState; + } + } + i = j1; + if (fragment.mDeferStart) + { + i = j1; + if (fragment.mState < 4) + { + i = j1; + if (j1 > 3) + { + i = 3; + } + } + } + if (fragment.mState >= i) goto _L2; else goto _L1 +_L1: + int i1; + int k1; + int l1; + if (fragment.mFromLayout && !fragment.mInLayout) + { + return; + } + if (fragment.mAnimatingAway != null) + { + fragment.mAnimatingAway = null; + moveToState(fragment, fragment.mStateAfterAnimating, 0, 0, true); + } + i1 = i; + l1 = i; + k1 = i; + fragment.mState; + JVM INSTR tableswitch 0 4: default 184 + // 0 194 + // 1 557 + // 2 878 + // 3 878 + // 4 928; + goto _L3 _L4 _L5 _L6 _L6 _L7 +_L3: + i1 = i; +_L16: + fragment.mState = i1; + return; +_L4: + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("moveto CREATED: ").append(fragment).toString()); + } + k1 = i; + if (fragment.mSavedFragmentState != null) + { + fragment.mSavedViewState = fragment.mSavedFragmentState.getSparseParcelableArray("android:view_state"); + fragment.mTarget = getFragment(fragment.mSavedFragmentState, "android:target_state"); + if (fragment.mTarget != null) + { + fragment.mTargetRequestCode = fragment.mSavedFragmentState.getInt("android:target_req_state", 0); + } + fragment.mUserVisibleHint = fragment.mSavedFragmentState.getBoolean("android:user_visible_hint", true); + k1 = i; + if (!fragment.mUserVisibleHint) + { + fragment.mDeferStart = true; + k1 = i; + if (i > 3) + { + k1 = 3; + } + } + } + fragment.mActivity = mActivity; + fragment.mParentFragment = mParent; + FragmentManagerImpl fragmentmanagerimpl; + if (mParent != null) + { + fragmentmanagerimpl = mParent.mChildFragmentManager; + } else + { + fragmentmanagerimpl = mActivity.mFragments; + } + fragment.mFragmentManager = fragmentmanagerimpl; + fragment.mCalled = false; + fragment.onAttach(mActivity); + if (!fragment.mCalled) + { + throw new SuperNotCalledException((new StringBuilder()).append("Fragment ").append(fragment).append(" did not call through to super.onAttach()").toString()); + } + if (fragment.mParentFragment == null) + { + mActivity.onAttachFragment(fragment); + } + if (!fragment.mRetaining) + { + fragment.performCreate(fragment.mSavedFragmentState); + } + fragment.mRetaining = false; + i1 = k1; + if (fragment.mFromLayout) + { + fragment.mView = fragment.performCreateView(fragment.getLayoutInflater(fragment.mSavedFragmentState), null, fragment.mSavedFragmentState); + ViewGroup viewgroup; + Object obj; + if (fragment.mView != null) + { + fragment.mInnerView = fragment.mView; + fragment.mView = NoSaveStateFrameLayout.wrap(fragment.mView); + if (fragment.mHidden) + { + fragment.mView.setVisibility(8); + } + fragment.onViewCreated(fragment.mView, fragment.mSavedFragmentState); + i1 = k1; + } else + { + fragment.mInnerView = null; + i1 = k1; + } + } +_L5: + l1 = i1; + if (i1 > 1) + { + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("moveto ACTIVITY_CREATED: ").append(fragment).toString()); + } + if (!fragment.mFromLayout) + { + viewgroup = null; + if (fragment.mContainerId != 0) + { + obj = (ViewGroup)mContainer.findViewById(fragment.mContainerId); + viewgroup = ((ViewGroup) (obj)); + if (obj == null) + { + viewgroup = ((ViewGroup) (obj)); + if (!fragment.mRestored) + { + throwException(new IllegalArgumentException((new StringBuilder()).append("No view found for id 0x").append(Integer.toHexString(fragment.mContainerId)).append(" (").append(fragment.getResources().getResourceName(fragment.mContainerId)).append(") for fragment ").append(fragment).toString())); + viewgroup = ((ViewGroup) (obj)); + } + } + } + fragment.mContainer = viewgroup; + fragment.mView = fragment.performCreateView(fragment.getLayoutInflater(fragment.mSavedFragmentState), viewgroup, fragment.mSavedFragmentState); + if (fragment.mView != null) + { + fragment.mInnerView = fragment.mView; + fragment.mView = NoSaveStateFrameLayout.wrap(fragment.mView); + if (viewgroup != null) + { + obj = loadAnimation(fragment, j, true, k); + if (obj != null) + { + fragment.mView.startAnimation(((Animation) (obj))); + } + viewgroup.addView(fragment.mView); + } + if (fragment.mHidden) + { + fragment.mView.setVisibility(8); + } + fragment.onViewCreated(fragment.mView, fragment.mSavedFragmentState); + } else + { + fragment.mInnerView = null; + } + } + fragment.performActivityCreated(fragment.mSavedFragmentState); + if (fragment.mView != null) + { + fragment.restoreViewState(fragment.mSavedFragmentState); + } + fragment.mSavedFragmentState = null; + l1 = i1; + } +_L6: + k1 = l1; + if (l1 > 3) + { + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("moveto STARTED: ").append(fragment).toString()); + } + fragment.performStart(); + k1 = l1; + } +_L7: + i1 = k1; + if (k1 > 4) + { + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("moveto RESUMED: ").append(fragment).toString()); + } + fragment.mResumed = true; + fragment.performResume(); + fragment.mSavedFragmentState = null; + fragment.mSavedViewState = null; + i1 = k1; + } + continue; /* Loop/switch isn't completed */ +_L2: + i1 = i; + if (fragment.mState <= i) + { + continue; /* Loop/switch isn't completed */ + } + fragment.mState; + JVM INSTR tableswitch 1 5: default 1064 + // 1 1070 + // 2 1254 + // 3 1213 + // 4 1172 + // 5 1126; + goto _L8 _L9 _L10 _L11 _L12 _L13 +_L8: + i1 = i; + break; /* Loop/switch isn't completed */ +_L9: + i1 = i; + if (i >= 1) + { + break; /* Loop/switch isn't completed */ + } + if (mDestroyed && fragment.mAnimatingAway != null) + { + View view = fragment.mAnimatingAway; + fragment.mAnimatingAway = null; + view.clearAnimation(); + } + if (fragment.mAnimatingAway != null) + { + fragment.mStateAfterAnimating = i; + i1 = 1; + break; /* Loop/switch isn't completed */ + } + break; /* Loop/switch isn't completed */ +_L13: + if (i < 5) + { + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("movefrom RESUMED: ").append(fragment).toString()); + } + fragment.performPause(); + fragment.mResumed = false; + } +_L12: + if (i < 4) + { + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("movefrom STARTED: ").append(fragment).toString()); + } + fragment.performStop(); + } +_L11: + if (i < 3) + { + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("movefrom STOPPED: ").append(fragment).toString()); + } + fragment.performReallyStop(); + } +_L10: + if (i < 2) + { + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("movefrom ACTIVITY_CREATED: ").append(fragment).toString()); + } + if (fragment.mView != null && !mActivity.isFinishing() && fragment.mSavedViewState == null) + { + saveFragmentViewState(fragment); + } + fragment.performDestroyView(); + if (fragment.mView != null && fragment.mContainer != null) + { + Object obj1 = null; + Animation animation = obj1; + if (mCurState > 0) + { + animation = obj1; + if (!mDestroyed) + { + animation = loadAnimation(fragment, j, false, k); + } + } + if (animation != null) + { + fragment.mAnimatingAway = fragment.mView; + fragment.mStateAfterAnimating = i; + animation.setAnimationListener(new android.view.animation.Animation.AnimationListener() { + + final FragmentManagerImpl this$0; + final Fragment val$fragment; + + public void onAnimationEnd(Animation animation1) + { + if (fragment.mAnimatingAway != null) + { + fragment.mAnimatingAway = null; + moveToState(fragment, fragment.mStateAfterAnimating, 0, 0, false); + } + } + + public void onAnimationRepeat(Animation animation1) + { + } + + public void onAnimationStart(Animation animation1) + { + } + + + { + this$0 = FragmentManagerImpl.this; + fragment = fragment1; + super(); + } + }); + fragment.mView.startAnimation(animation); + } + fragment.mContainer.removeView(fragment.mView); + } + fragment.mContainer = null; + fragment.mView = null; + fragment.mInnerView = null; + } + if (true) goto _L9; else goto _L14 +_L14: + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("movefrom CREATED: ").append(fragment).toString()); + } + if (!fragment.mRetaining) + { + fragment.performDestroy(); + } + fragment.mCalled = false; + fragment.onDetach(); + if (!fragment.mCalled) + { + throw new SuperNotCalledException((new StringBuilder()).append("Fragment ").append(fragment).append(" did not call through to super.onDetach()").toString()); + } + i1 = i; + if (!flag) + { + if (!fragment.mRetaining) + { + makeInactive(fragment); + i1 = i; + } else + { + fragment.mActivity = null; + fragment.mFragmentManager = null; + i1 = i; + } + } + if (true) goto _L16; else goto _L15 +_L15: + } + + public void noteStateNotSaved() + { + mStateSaved = false; + } + + public void performPendingDeferredStart(Fragment fragment) + { +label0: + { + if (fragment.mDeferStart) + { + if (!mExecutingActions) + { + break label0; + } + mHavePendingDeferredStart = true; + } + return; + } + fragment.mDeferStart = false; + moveToState(fragment, mCurState, 0, 0, false); + } + + public boolean popBackStackImmediate() + { + checkStateLoss(); + executePendingTransactions(); + return popBackStackState(mActivity.mHandler, null, -1, 0); + } + + boolean popBackStackState(Handler handler, String s, int i, int j) + { + if (mBackStack != null) goto _L2; else goto _L1 +_L1: + return false; +_L2: + if (s != null || i >= 0 || (j & 1) != 0) goto _L4; else goto _L3 +_L3: + if ((i = mBackStack.size() - 1) < 0) goto _L1; else goto _L5 +_L5: + ((BackStackRecord)mBackStack.remove(i)).popFromBackStack(true); + reportBackStackChanged(); +_L8: + return true; +_L4: + int k; + int l; + k = -1; + if (s == null && i < 0) + { + continue; /* Loop/switch isn't completed */ + } + l = mBackStack.size() - 1; + break MISSING_BLOCK_LABEL_81; + if (l < 0) goto _L1; else goto _L6 +_L6: + k = l; + if ((j & 1) == 0) + { + continue; /* Loop/switch isn't completed */ + } + j = l - 1; + do + { + k = j; + if (j < 0) + { + continue; /* Loop/switch isn't completed */ + } + handler = (BackStackRecord)mBackStack.get(j); + if (s == null || !s.equals(handler.getName())) + { + k = j; + if (i < 0) + { + continue; /* Loop/switch isn't completed */ + } + k = j; + if (i != ((BackStackRecord) (handler)).mIndex) + { + continue; /* Loop/switch isn't completed */ + } + } + j--; + } while (true); + do + { + if (l < 0) + { + continue; /* Loop/switch isn't completed */ + } + handler = (BackStackRecord)mBackStack.get(l); + if (s != null && s.equals(handler.getName()) || i >= 0 && i == ((BackStackRecord) (handler)).mIndex) + { + continue; /* Loop/switch isn't completed */ + } + l--; + } while (true); + if (k == mBackStack.size() - 1) goto _L1; else goto _L7 +_L7: + handler = new ArrayList(); + for (i = mBackStack.size() - 1; i > k; i--) + { + handler.add(mBackStack.remove(i)); + } + + j = handler.size() - 1; + i = 0; + while (i <= j) + { + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("Popping back stack state: ").append(handler.get(i)).toString()); + } + s = (BackStackRecord)handler.get(i); + boolean flag; + if (i == j) + { + flag = true; + } else + { + flag = false; + } + s.popFromBackStack(flag); + i++; + } + reportBackStackChanged(); + goto _L8 + } + + public void putFragment(Bundle bundle, String s, Fragment fragment) + { + if (fragment.mIndex < 0) + { + throwException(new IllegalStateException((new StringBuilder()).append("Fragment ").append(fragment).append(" is not currently in the FragmentManager").toString())); + } + bundle.putInt(s, fragment.mIndex); + } + + public void removeFragment(Fragment fragment, int i, int j) + { + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("remove: ").append(fragment).append(" nesting=").append(fragment.mBackStackNesting).toString()); + } + int k; + if (!fragment.isInBackStack()) + { + k = 1; + } else + { + k = 0; + } + if (!fragment.mDetached || k != 0) + { + if (mAdded != null) + { + mAdded.remove(fragment); + } + if (fragment.mHasMenu && fragment.mMenuVisible) + { + mNeedMenuInvalidate = true; + } + fragment.mAdded = false; + fragment.mRemoving = true; + if (k != 0) + { + k = 0; + } else + { + k = 1; + } + moveToState(fragment, k, i, j, false); + } + } + + void reportBackStackChanged() + { + if (mBackStackChangeListeners != null) + { + for (int i = 0; i < mBackStackChangeListeners.size(); i++) + { + ((FragmentManager.OnBackStackChangedListener)mBackStackChangeListeners.get(i)).onBackStackChanged(); + } + + } + } + + void restoreAllState(Parcelable parcelable, ArrayList arraylist) + { + if (parcelable != null) goto _L2; else goto _L1 +_L1: + return; +_L2: + if (((FragmentManagerState) (parcelable = (FragmentManagerState)parcelable)).mActive != null) + { + if (arraylist != null) + { + for (int i = 0; i < arraylist.size(); i++) + { + Fragment fragment = (Fragment)arraylist.get(i); + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("restoreAllState: re-attaching retained ").append(fragment).toString()); + } + FragmentState fragmentstate1 = ((FragmentManagerState) (parcelable)).mActive[fragment.mIndex]; + fragmentstate1.mInstance = fragment; + fragment.mSavedViewState = null; + fragment.mBackStackNesting = 0; + fragment.mInLayout = false; + fragment.mAdded = false; + fragment.mTarget = null; + if (fragmentstate1.mSavedFragmentState != null) + { + fragmentstate1.mSavedFragmentState.setClassLoader(mActivity.getClassLoader()); + fragment.mSavedViewState = fragmentstate1.mSavedFragmentState.getSparseParcelableArray("android:view_state"); + } + } + + } + mActive = new ArrayList(((FragmentManagerState) (parcelable)).mActive.length); + if (mAvailIndices != null) + { + mAvailIndices.clear(); + } + int j = 0; + while (j < ((FragmentManagerState) (parcelable)).mActive.length) + { + FragmentState fragmentstate = ((FragmentManagerState) (parcelable)).mActive[j]; + if (fragmentstate != null) + { + Fragment fragment2 = fragmentstate.instantiate(mActivity, mParent); + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("restoreAllState: active #").append(j).append(": ").append(fragment2).toString()); + } + mActive.add(fragment2); + fragmentstate.mInstance = null; + } else + { + mActive.add(null); + if (mAvailIndices == null) + { + mAvailIndices = new ArrayList(); + } + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("restoreAllState: avail #").append(j).toString()); + } + mAvailIndices.add(Integer.valueOf(j)); + } + j++; + } + if (arraylist != null) + { + int k = 0; + while (k < arraylist.size()) + { + Fragment fragment1 = (Fragment)arraylist.get(k); + if (fragment1.mTargetIndex >= 0) + { + if (fragment1.mTargetIndex < mActive.size()) + { + fragment1.mTarget = (Fragment)mActive.get(fragment1.mTargetIndex); + } else + { + Log.w("FragmentManager", (new StringBuilder()).append("Re-attaching retained fragment ").append(fragment1).append(" target no longer exists: ").append(fragment1.mTargetIndex).toString()); + fragment1.mTarget = null; + } + } + k++; + } + } + if (((FragmentManagerState) (parcelable)).mAdded != null) + { + mAdded = new ArrayList(((FragmentManagerState) (parcelable)).mAdded.length); + for (int l = 0; l < ((FragmentManagerState) (parcelable)).mAdded.length; l++) + { + arraylist = (Fragment)mActive.get(((FragmentManagerState) (parcelable)).mAdded[l]); + if (arraylist == null) + { + throwException(new IllegalStateException((new StringBuilder()).append("No instantiated fragment for index #").append(((FragmentManagerState) (parcelable)).mAdded[l]).toString())); + } + arraylist.mAdded = true; + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("restoreAllState: added #").append(l).append(": ").append(arraylist).toString()); + } + if (mAdded.contains(arraylist)) + { + throw new IllegalStateException("Already added!"); + } + mAdded.add(arraylist); + } + + } else + { + mAdded = null; + } + if (((FragmentManagerState) (parcelable)).mBackStack != null) + { + mBackStack = new ArrayList(((FragmentManagerState) (parcelable)).mBackStack.length); + int i1 = 0; + while (i1 < ((FragmentManagerState) (parcelable)).mBackStack.length) + { + arraylist = ((FragmentManagerState) (parcelable)).mBackStack[i1].instantiate(this); + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("restoreAllState: back stack #").append(i1).append(" (index ").append(((BackStackRecord) (arraylist)).mIndex).append("): ").append(arraylist).toString()); + arraylist.dump(" ", new PrintWriter(new LogWriter("FragmentManager")), false); + } + mBackStack.add(arraylist); + if (((BackStackRecord) (arraylist)).mIndex >= 0) + { + setBackStackIndex(((BackStackRecord) (arraylist)).mIndex, arraylist); + } + i1++; + } + } else + { + mBackStack = null; + return; + } + } + if (true) goto _L1; else goto _L3 +_L3: + } + + ArrayList retainNonConfig() + { + ArrayList arraylist1 = null; + ArrayList arraylist = null; + if (mActive != null) + { + int i = 0; + do + { + arraylist1 = arraylist; + if (i >= mActive.size()) + { + break; + } + Fragment fragment = (Fragment)mActive.get(i); + ArrayList arraylist2 = arraylist; + if (fragment != null) + { + arraylist2 = arraylist; + if (fragment.mRetainInstance) + { + arraylist1 = arraylist; + if (arraylist == null) + { + arraylist1 = new ArrayList(); + } + arraylist1.add(fragment); + fragment.mRetaining = true; + int j; + if (fragment.mTarget != null) + { + j = fragment.mTarget.mIndex; + } else + { + j = -1; + } + fragment.mTargetIndex = j; + arraylist2 = arraylist1; + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("retainNonConfig: keeping retained ").append(fragment).toString()); + arraylist2 = arraylist1; + } + } + } + i++; + arraylist = arraylist2; + } while (true); + } + return arraylist1; + } + + Parcelable saveAllState() + { + execPendingActions(); + if (HONEYCOMB) + { + mStateSaved = true; + } + if (mActive != null && mActive.size() > 0) + { + int j1 = mActive.size(); + FragmentState afragmentstate[] = new FragmentState[j1]; + boolean flag = false; + int i = 0; + while (i < j1) + { + Fragment fragment = (Fragment)mActive.get(i); + if (fragment == null) + { + continue; + } + if (fragment.mIndex < 0) + { + throwException(new IllegalStateException((new StringBuilder()).append("Failure saving state: active ").append(fragment).append(" has cleared index: ").append(fragment.mIndex).toString())); + } + boolean flag1 = true; + FragmentState fragmentstate = new FragmentState(fragment); + afragmentstate[i] = fragmentstate; + if (fragment.mState > 0 && fragmentstate.mSavedFragmentState == null) + { + fragmentstate.mSavedFragmentState = saveFragmentBasicState(fragment); + if (fragment.mTarget != null) + { + if (fragment.mTarget.mIndex < 0) + { + throwException(new IllegalStateException((new StringBuilder()).append("Failure saving state: ").append(fragment).append(" has target not in fragment manager: ").append(fragment.mTarget).toString())); + } + if (fragmentstate.mSavedFragmentState == null) + { + fragmentstate.mSavedFragmentState = new Bundle(); + } + putFragment(fragmentstate.mSavedFragmentState, "android:target_state", fragment.mTarget); + if (fragment.mTargetRequestCode != 0) + { + fragmentstate.mSavedFragmentState.putInt("android:target_req_state", fragment.mTargetRequestCode); + } + } + } else + { + fragmentstate.mSavedFragmentState = fragment.mSavedFragmentState; + } + flag = flag1; + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("Saved state of ").append(fragment).append(": ").append(fragmentstate.mSavedFragmentState).toString()); + flag = flag1; + } + i++; + } + if (!flag) + { + if (DEBUG) + { + Log.v("FragmentManager", "saveAllState: no fragments!"); + return null; + } + } else + { + Object aobj[] = null; + FragmentManagerState fragmentmanagerstate = null; + int ai[] = ((int []) (aobj)); + if (mAdded != null) + { + int l = mAdded.size(); + ai = ((int []) (aobj)); + if (l > 0) + { + aobj = new int[l]; + int j = 0; + do + { + ai = ((int []) (aobj)); + if (j >= l) + { + break; + } + aobj[j] = ((Fragment)mAdded.get(j)).mIndex; + if (aobj[j] < 0) + { + throwException(new IllegalStateException((new StringBuilder()).append("Failure saving state: active ").append(mAdded.get(j)).append(" has cleared index: ").append(aobj[j]).toString())); + } + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("saveAllState: adding fragment #").append(j).append(": ").append(mAdded.get(j)).toString()); + } + j++; + } while (true); + } + } + aobj = fragmentmanagerstate; + if (mBackStack != null) + { + int i1 = mBackStack.size(); + aobj = fragmentmanagerstate; + if (i1 > 0) + { + BackStackState abackstackstate[] = new BackStackState[i1]; + int k = 0; + do + { + aobj = abackstackstate; + if (k >= i1) + { + break; + } + abackstackstate[k] = new BackStackState(this, (BackStackRecord)mBackStack.get(k)); + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("saveAllState: adding back stack #").append(k).append(": ").append(mBackStack.get(k)).toString()); + } + k++; + } while (true); + } + } + abackstackstate = new FragmentManagerState(); + abackstackstate.mActive = afragmentstate; + abackstackstate.mAdded = ai; + abackstackstate.mBackStack = ((BackStackState []) (aobj)); + return abackstackstate; + } + } + return null; + } + + Bundle saveFragmentBasicState(Fragment fragment) + { + Bundle bundle1 = null; + if (mStateBundle == null) + { + mStateBundle = new Bundle(); + } + fragment.performSaveInstanceState(mStateBundle); + if (!mStateBundle.isEmpty()) + { + bundle1 = mStateBundle; + mStateBundle = null; + } + if (fragment.mView != null) + { + saveFragmentViewState(fragment); + } + Bundle bundle = bundle1; + if (fragment.mSavedViewState != null) + { + bundle = bundle1; + if (bundle1 == null) + { + bundle = new Bundle(); + } + bundle.putSparseParcelableArray("android:view_state", fragment.mSavedViewState); + } + bundle1 = bundle; + if (!fragment.mUserVisibleHint) + { + bundle1 = bundle; + if (bundle == null) + { + bundle1 = new Bundle(); + } + bundle1.putBoolean("android:user_visible_hint", fragment.mUserVisibleHint); + } + return bundle1; + } + + void saveFragmentViewState(Fragment fragment) + { + if (fragment.mInnerView != null) + { + if (mStateArray == null) + { + mStateArray = new SparseArray(); + } else + { + mStateArray.clear(); + } + fragment.mInnerView.saveHierarchyState(mStateArray); + if (mStateArray.size() > 0) + { + fragment.mSavedViewState = mStateArray; + mStateArray = null; + return; + } + } + } + + public void setBackStackIndex(int i, BackStackRecord backstackrecord) + { + this; + JVM INSTR monitorenter ; + int k; + if (mBackStackIndices == null) + { + mBackStackIndices = new ArrayList(); + } + k = mBackStackIndices.size(); + int j = k; + if (i >= k) goto _L2; else goto _L1 +_L1: + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("Setting back stack index ").append(i).append(" to ").append(backstackrecord).toString()); + } + mBackStackIndices.set(i, backstackrecord); +_L4: + this; + JVM INSTR monitorexit ; + return; +_L2: + if (j >= i) + { + break; /* Loop/switch isn't completed */ + } + mBackStackIndices.add(null); + if (mAvailBackStackIndices == null) + { + mAvailBackStackIndices = new ArrayList(); + } + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("Adding available back stack index ").append(j).toString()); + } + mAvailBackStackIndices.add(Integer.valueOf(j)); + j++; + if (true) goto _L2; else goto _L3 +_L3: + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("Adding back stack index ").append(i).append(" with ").append(backstackrecord).toString()); + } + mBackStackIndices.add(backstackrecord); + goto _L4 + backstackrecord; + this; + JVM INSTR monitorexit ; + throw backstackrecord; + } + + public void showFragment(Fragment fragment, int i, int j) + { + if (DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("show: ").append(fragment).toString()); + } + if (fragment.mHidden) + { + fragment.mHidden = false; + if (fragment.mView != null) + { + Animation animation = loadAnimation(fragment, i, true, j); + if (animation != null) + { + fragment.mView.startAnimation(animation); + } + fragment.mView.setVisibility(0); + } + if (fragment.mAdded && fragment.mHasMenu && fragment.mMenuVisible) + { + mNeedMenuInvalidate = true; + } + fragment.onHiddenChanged(false); + } + } + + void startPendingDeferredFragments() + { + if (mActive != null) + { + int i = 0; + while (i < mActive.size()) + { + Fragment fragment = (Fragment)mActive.get(i); + if (fragment != null) + { + performPendingDeferredStart(fragment); + } + i++; + } + } + } + + public String toString() + { + StringBuilder stringbuilder = new StringBuilder(128); + stringbuilder.append("FragmentManager{"); + stringbuilder.append(Integer.toHexString(System.identityHashCode(this))); + stringbuilder.append(" in "); + if (mParent != null) + { + DebugUtils.buildShortClassTag(mParent, stringbuilder); + } else + { + DebugUtils.buildShortClassTag(mActivity, stringbuilder); + } + stringbuilder.append("}}"); + return stringbuilder.toString(); + } + + static + { + boolean flag = false; + if (android.os.Build.VERSION.SDK_INT >= 11) + { + flag = true; + } + HONEYCOMB = flag; + } +} diff --git a/app/src/main/java/android/support/v4/app/FragmentManagerState$1.java b/app/src/main/java/android/support/v4/app/FragmentManagerState$1.java new file mode 100644 index 0000000..bf99117 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/FragmentManagerState$1.java @@ -0,0 +1,39 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.os.Parcel; + +// Referenced classes of package android.support.v4.app: +// FragmentManagerState + +static final class + implements android.os.agerState._cls1 +{ + + public FragmentManagerState createFromParcel(Parcel parcel) + { + return new FragmentManagerState(parcel); + } + + public volatile Object createFromParcel(Parcel parcel) + { + return createFromParcel(parcel); + } + + public FragmentManagerState[] newArray(int i) + { + return new FragmentManagerState[i]; + } + + public volatile Object[] newArray(int i) + { + return newArray(i); + } + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/app/FragmentManagerState.java b/app/src/main/java/android/support/v4/app/FragmentManagerState.java new file mode 100644 index 0000000..9b9f47e --- /dev/null +++ b/app/src/main/java/android/support/v4/app/FragmentManagerState.java @@ -0,0 +1,67 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.os.Parcel; +import android.os.Parcelable; + +// Referenced classes of package android.support.v4.app: +// FragmentState, BackStackState + +final class FragmentManagerState + implements Parcelable +{ + + public static final android.os.Parcelable.Creator CREATOR = new android.os.Parcelable.Creator() { + + public FragmentManagerState createFromParcel(Parcel parcel) + { + return new FragmentManagerState(parcel); + } + + public volatile Object createFromParcel(Parcel parcel) + { + return createFromParcel(parcel); + } + + public FragmentManagerState[] newArray(int i) + { + return new FragmentManagerState[i]; + } + + public volatile Object[] newArray(int i) + { + return newArray(i); + } + + }; + FragmentState mActive[]; + int mAdded[]; + BackStackState mBackStack[]; + + public FragmentManagerState() + { + } + + public FragmentManagerState(Parcel parcel) + { + mActive = (FragmentState[])parcel.createTypedArray(FragmentState.CREATOR); + mAdded = parcel.createIntArray(); + mBackStack = (BackStackState[])parcel.createTypedArray(BackStackState.CREATOR); + } + + public int describeContents() + { + return 0; + } + + public void writeToParcel(Parcel parcel, int i) + { + parcel.writeTypedArray(mActive, i); + parcel.writeIntArray(mAdded); + parcel.writeTypedArray(mBackStack, i); + } + +} diff --git a/app/src/main/java/android/support/v4/app/FragmentState$1.java b/app/src/main/java/android/support/v4/app/FragmentState$1.java new file mode 100644 index 0000000..52fb4a5 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/FragmentState$1.java @@ -0,0 +1,39 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.os.Parcel; + +// Referenced classes of package android.support.v4.app: +// FragmentState + +static final class + implements android.os.or +{ + + public FragmentState createFromParcel(Parcel parcel) + { + return new FragmentState(parcel); + } + + public volatile Object createFromParcel(Parcel parcel) + { + return createFromParcel(parcel); + } + + public FragmentState[] newArray(int i) + { + return new FragmentState[i]; + } + + public volatile Object[] newArray(int i) + { + return newArray(i); + } + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/app/FragmentState.java b/app/src/main/java/android/support/v4/app/FragmentState.java new file mode 100644 index 0000000..1b4e391 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/FragmentState.java @@ -0,0 +1,178 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.os.Bundle; +import android.os.Parcel; +import android.os.Parcelable; +import android.util.Log; + +// Referenced classes of package android.support.v4.app: +// Fragment, FragmentActivity, FragmentManagerImpl + +final class FragmentState + implements Parcelable +{ + + public static final android.os.Parcelable.Creator CREATOR = new android.os.Parcelable.Creator() { + + public FragmentState createFromParcel(Parcel parcel) + { + return new FragmentState(parcel); + } + + public volatile Object createFromParcel(Parcel parcel) + { + return createFromParcel(parcel); + } + + public FragmentState[] newArray(int i) + { + return new FragmentState[i]; + } + + public volatile Object[] newArray(int i) + { + return newArray(i); + } + + }; + final Bundle mArguments; + final String mClassName; + final int mContainerId; + final boolean mDetached; + final int mFragmentId; + final boolean mFromLayout; + final int mIndex; + Fragment mInstance; + final boolean mRetainInstance; + Bundle mSavedFragmentState; + final String mTag; + + public FragmentState(Parcel parcel) + { + boolean flag1 = true; + super(); + mClassName = parcel.readString(); + mIndex = parcel.readInt(); + boolean flag; + if (parcel.readInt() != 0) + { + flag = true; + } else + { + flag = false; + } + mFromLayout = flag; + mFragmentId = parcel.readInt(); + mContainerId = parcel.readInt(); + mTag = parcel.readString(); + if (parcel.readInt() != 0) + { + flag = true; + } else + { + flag = false; + } + mRetainInstance = flag; + if (parcel.readInt() != 0) + { + flag = flag1; + } else + { + flag = false; + } + mDetached = flag; + mArguments = parcel.readBundle(); + mSavedFragmentState = parcel.readBundle(); + } + + public FragmentState(Fragment fragment) + { + mClassName = fragment.getClass().getName(); + mIndex = fragment.mIndex; + mFromLayout = fragment.mFromLayout; + mFragmentId = fragment.mFragmentId; + mContainerId = fragment.mContainerId; + mTag = fragment.mTag; + mRetainInstance = fragment.mRetainInstance; + mDetached = fragment.mDetached; + mArguments = fragment.mArguments; + } + + public int describeContents() + { + return 0; + } + + public Fragment instantiate(FragmentActivity fragmentactivity, Fragment fragment) + { + if (mInstance != null) + { + return mInstance; + } + if (mArguments != null) + { + mArguments.setClassLoader(fragmentactivity.getClassLoader()); + } + mInstance = Fragment.instantiate(fragmentactivity, mClassName, mArguments); + if (mSavedFragmentState != null) + { + mSavedFragmentState.setClassLoader(fragmentactivity.getClassLoader()); + mInstance.mSavedFragmentState = mSavedFragmentState; + } + mInstance.setIndex(mIndex, fragment); + mInstance.mFromLayout = mFromLayout; + mInstance.mRestored = true; + mInstance.mFragmentId = mFragmentId; + mInstance.mContainerId = mContainerId; + mInstance.mTag = mTag; + mInstance.mRetainInstance = mRetainInstance; + mInstance.mDetached = mDetached; + mInstance.mFragmentManager = fragmentactivity.mFragments; + if (FragmentManagerImpl.DEBUG) + { + Log.v("FragmentManager", (new StringBuilder()).append("Instantiated fragment ").append(mInstance).toString()); + } + return mInstance; + } + + public void writeToParcel(Parcel parcel, int i) + { + boolean flag = true; + parcel.writeString(mClassName); + parcel.writeInt(mIndex); + if (mFromLayout) + { + i = 1; + } else + { + i = 0; + } + parcel.writeInt(i); + parcel.writeInt(mFragmentId); + parcel.writeInt(mContainerId); + parcel.writeString(mTag); + if (mRetainInstance) + { + i = 1; + } else + { + i = 0; + } + parcel.writeInt(i); + if (mDetached) + { + i = ((flag) ? 1 : 0); + } else + { + i = 0; + } + parcel.writeInt(i); + parcel.writeBundle(mArguments); + parcel.writeBundle(mSavedFragmentState); + } + +} diff --git a/app/src/main/java/android/support/v4/app/FragmentTabHost$1.java b/app/src/main/java/android/support/v4/app/FragmentTabHost$1.java new file mode 100644 index 0000000..2d5bc1b --- /dev/null +++ b/app/src/main/java/android/support/v4/app/FragmentTabHost$1.java @@ -0,0 +1,13 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + + +// Referenced classes of package android.support.v4.app: +// FragmentTabHost + +static class +{ +} diff --git a/app/src/main/java/android/support/v4/app/FragmentTabHost$SavedState$1.java b/app/src/main/java/android/support/v4/app/FragmentTabHost$SavedState$1.java new file mode 100644 index 0000000..319c728 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/FragmentTabHost$SavedState$1.java @@ -0,0 +1,39 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.os.Parcel; + +// Referenced classes of package android.support.v4.app: +// FragmentTabHost + +static final class _cls9 + implements android.os.avedState._cls1 +{ + + public _cls9 createFromParcel(Parcel parcel) + { + return new nit>(parcel, null); + } + + public volatile Object createFromParcel(Parcel parcel) + { + return createFromParcel(parcel); + } + + public createFromParcel[] newArray(int i) + { + return new createFromParcel[i]; + } + + public volatile Object[] newArray(int i) + { + return newArray(i); + } + + _cls9() + { + } +} diff --git a/app/src/main/java/android/support/v4/app/FragmentTabHost$SavedState.java b/app/src/main/java/android/support/v4/app/FragmentTabHost$SavedState.java new file mode 100644 index 0000000..9ead1eb --- /dev/null +++ b/app/src/main/java/android/support/v4/app/FragmentTabHost$SavedState.java @@ -0,0 +1,68 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.os.Parcel; +import android.os.Parcelable; + +// Referenced classes of package android.support.v4.app: +// FragmentTabHost + +static class extends android.view.avedState +{ + + public static final android.os..SavedState.curTab CREATOR = new android.os.Parcelable.Creator() { + + public FragmentTabHost.SavedState createFromParcel(Parcel parcel) + { + return new FragmentTabHost.SavedState(parcel, null); + } + + public volatile Object createFromParcel(Parcel parcel) + { + return createFromParcel(parcel); + } + + public FragmentTabHost.SavedState[] newArray(int i) + { + return new FragmentTabHost.SavedState[i]; + } + + public volatile Object[] newArray(int i) + { + return newArray(i); + } + + }; + String curTab; + + public String toString() + { + return (new StringBuilder()).append("FragmentTabHost.SavedState{").append(Integer.toHexString(System.identityHashCode(this))).append(" curTab=").append(curTab).append("}").toString(); + } + + public void writeToParcel(Parcel parcel, int i) + { + super.Parcel(parcel, i); + parcel.writeString(curTab); + } + + + private _cls1(Parcel parcel) + { + super(parcel); + curTab = parcel.readString(); + } + + curTab(Parcel parcel, curTab curtab) + { + this(parcel); + } + + (Parcelable parcelable) + { + super(parcelable); + } +} diff --git a/app/src/main/java/android/support/v4/app/FragmentTabHost$TabInfo.java b/app/src/main/java/android/support/v4/app/FragmentTabHost$TabInfo.java new file mode 100644 index 0000000..85b37a6 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/FragmentTabHost$TabInfo.java @@ -0,0 +1,33 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.os.Bundle; + +// Referenced classes of package android.support.v4.app: +// FragmentTabHost, Fragment + +static final class fragment +{ + + private final Bundle args; + private final Class clss; + private Fragment fragment; + private final String tag; + + + +/* + static Fragment access$102( , Fragment fragment1) + { + .fragment = fragment1; + return fragment1; + } + +*/ + + + +} diff --git a/app/src/main/java/android/support/v4/app/FragmentTabHost.java b/app/src/main/java/android/support/v4/app/FragmentTabHost.java new file mode 100644 index 0000000..f313174 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/FragmentTabHost.java @@ -0,0 +1,237 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.content.Context; +import android.os.Bundle; +import android.os.Parcel; +import android.os.Parcelable; +import android.widget.TabHost; +import java.util.ArrayList; + +// Referenced classes of package android.support.v4.app: +// FragmentManager, FragmentTransaction, Fragment + +public class FragmentTabHost extends TabHost + implements android.widget.TabHost.OnTabChangeListener +{ + static class SavedState extends android.view.View.BaseSavedState + { + + public static final android.os.Parcelable.Creator CREATOR = new android.os.Parcelable.Creator() { + + public SavedState createFromParcel(Parcel parcel) + { + return new SavedState(parcel); + } + + public volatile Object createFromParcel(Parcel parcel) + { + return createFromParcel(parcel); + } + + public SavedState[] newArray(int i) + { + return new SavedState[i]; + } + + public volatile Object[] newArray(int i) + { + return newArray(i); + } + + }; + String curTab; + + public String toString() + { + return (new StringBuilder()).append("FragmentTabHost.SavedState{").append(Integer.toHexString(System.identityHashCode(this))).append(" curTab=").append(curTab).append("}").toString(); + } + + public void writeToParcel(Parcel parcel, int i) + { + super.writeToParcel(parcel, i); + parcel.writeString(curTab); + } + + + private SavedState(Parcel parcel) + { + super(parcel); + curTab = parcel.readString(); + } + + + SavedState(Parcelable parcelable) + { + super(parcelable); + } + } + + static final class TabInfo + { + + private final Bundle args; + private final Class clss; + private Fragment fragment; + private final String tag; + + + +/* + static Fragment access$102(TabInfo tabinfo, Fragment fragment1) + { + tabinfo.fragment = fragment1; + return fragment1; + } + +*/ + + + + } + + + private boolean mAttached; + private int mContainerId; + private Context mContext; + private FragmentManager mFragmentManager; + private TabInfo mLastTab; + private android.widget.TabHost.OnTabChangeListener mOnTabChangeListener; + private final ArrayList mTabs; + + private FragmentTransaction doTabChanged(String s, FragmentTransaction fragmenttransaction) + { + TabInfo tabinfo = null; + for (int i = 0; i < mTabs.size(); i++) + { + TabInfo tabinfo1 = (TabInfo)mTabs.get(i); + if (tabinfo1.tag.equals(s)) + { + tabinfo = tabinfo1; + } + } + + if (tabinfo == null) + { + throw new IllegalStateException((new StringBuilder()).append("No tab known for tag ").append(s).toString()); + } + s = fragmenttransaction; + if (mLastTab != tabinfo) + { + s = fragmenttransaction; + if (fragmenttransaction == null) + { + s = mFragmentManager.beginTransaction(); + } + if (mLastTab != null && mLastTab.fragment != null) + { + s.detach(mLastTab.fragment); + } + if (tabinfo != null) + { + if (tabinfo.fragment == null) + { + tabinfo.fragment = Fragment.instantiate(mContext, tabinfo.clss.getName(), tabinfo.args); + s.add(mContainerId, tabinfo.fragment, tabinfo.tag); + } else + { + s.attach(tabinfo.fragment); + } + } + mLastTab = tabinfo; + } + return s; + } + + protected void onAttachedToWindow() + { + super.onAttachedToWindow(); + String s = getCurrentTabTag(); + FragmentTransaction fragmenttransaction = null; + int i = 0; + while (i < mTabs.size()) + { + TabInfo tabinfo = (TabInfo)mTabs.get(i); + tabinfo.fragment = mFragmentManager.findFragmentByTag(tabinfo.tag); + FragmentTransaction fragmenttransaction1 = fragmenttransaction; + if (tabinfo.fragment != null) + { + fragmenttransaction1 = fragmenttransaction; + if (!tabinfo.fragment.isDetached()) + { + if (tabinfo.tag.equals(s)) + { + mLastTab = tabinfo; + fragmenttransaction1 = fragmenttransaction; + } else + { + fragmenttransaction1 = fragmenttransaction; + if (fragmenttransaction == null) + { + fragmenttransaction1 = mFragmentManager.beginTransaction(); + } + fragmenttransaction1.detach(tabinfo.fragment); + } + } + } + i++; + fragmenttransaction = fragmenttransaction1; + } + mAttached = true; + fragmenttransaction = doTabChanged(s, fragmenttransaction); + if (fragmenttransaction != null) + { + fragmenttransaction.commit(); + mFragmentManager.executePendingTransactions(); + } + } + + protected void onDetachedFromWindow() + { + super.onDetachedFromWindow(); + mAttached = false; + } + + protected void onRestoreInstanceState(Parcelable parcelable) + { + parcelable = (SavedState)parcelable; + super.onRestoreInstanceState(parcelable.getSuperState()); + setCurrentTabByTag(((SavedState) (parcelable)).curTab); + } + + protected Parcelable onSaveInstanceState() + { + SavedState savedstate = new SavedState(super.onSaveInstanceState()); + savedstate.curTab = getCurrentTabTag(); + return savedstate; + } + + public void onTabChanged(String s) + { + if (mAttached) + { + FragmentTransaction fragmenttransaction = doTabChanged(s, null); + if (fragmenttransaction != null) + { + fragmenttransaction.commit(); + } + } + if (mOnTabChangeListener != null) + { + mOnTabChangeListener.onTabChanged(s); + } + } + + public void setOnTabChangedListener(android.widget.TabHost.OnTabChangeListener ontabchangelistener) + { + mOnTabChangeListener = ontabchangelistener; + } + + public void setup() + { + throw new IllegalStateException("Must call setup() that takes a Context and FragmentManager"); + } +} diff --git a/app/src/main/java/android/support/v4/app/FragmentTransaction.java b/app/src/main/java/android/support/v4/app/FragmentTransaction.java new file mode 100644 index 0000000..4abc8c6 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/FragmentTransaction.java @@ -0,0 +1,25 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + + +// Referenced classes of package android.support.v4.app: +// Fragment + +public abstract class FragmentTransaction +{ + + public FragmentTransaction() + { + } + + public abstract FragmentTransaction add(int i, Fragment fragment, String s); + + public abstract FragmentTransaction attach(Fragment fragment); + + public abstract int commit(); + + public abstract FragmentTransaction detach(Fragment fragment); +} diff --git a/app/src/main/java/android/support/v4/app/LoaderManager$LoaderCallbacks.java b/app/src/main/java/android/support/v4/app/LoaderManager$LoaderCallbacks.java new file mode 100644 index 0000000..123fab2 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/LoaderManager$LoaderCallbacks.java @@ -0,0 +1,21 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.os.Bundle; +import android.support.v4.content.Loader; + +// Referenced classes of package android.support.v4.app: +// LoaderManager + +public static interface +{ + + public abstract Loader onCreateLoader(int i, Bundle bundle); + + public abstract void onLoadFinished(Loader loader, Object obj); + + public abstract void onLoaderReset(Loader loader); +} diff --git a/app/src/main/java/android/support/v4/app/LoaderManager.java b/app/src/main/java/android/support/v4/app/LoaderManager.java new file mode 100644 index 0000000..3f1f250 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/LoaderManager.java @@ -0,0 +1,31 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.os.Bundle; +import android.support.v4.content.Loader; + +public abstract class LoaderManager +{ + public static interface LoaderCallbacks + { + + public abstract Loader onCreateLoader(int i, Bundle bundle); + + public abstract void onLoadFinished(Loader loader, Object obj); + + public abstract void onLoaderReset(Loader loader); + } + + + public LoaderManager() + { + } + + public boolean hasRunningLoaders() + { + return false; + } +} diff --git a/app/src/main/java/android/support/v4/app/LoaderManagerImpl$LoaderInfo.java b/app/src/main/java/android/support/v4/app/LoaderManagerImpl$LoaderInfo.java new file mode 100644 index 0000000..ea480e4 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/LoaderManagerImpl$LoaderInfo.java @@ -0,0 +1,282 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.os.Bundle; +import android.support.v4.content.Loader; +import android.support.v4.util.DebugUtils; +import android.util.Log; +import java.io.FileDescriptor; +import java.io.PrintWriter; +import java.lang.reflect.Modifier; + +// Referenced classes of package android.support.v4.app: +// LoaderManagerImpl, FragmentActivity, FragmentManagerImpl + +final class + implements android.support.v4.content. +{ + + final Bundle mArgs; + mCallbacks; + Object mData; + boolean mDeliveredData; + boolean mDestroyed; + boolean mHaveData; + final int mId; + boolean mListenerRegistered; + Loader mLoader; + mPendingLoader; + boolean mReportNextStart; + boolean mRetaining; + boolean mRetainingStarted; + boolean mStarted; + final LoaderManagerImpl this$0; + + void callOnLoadFinished(Loader loader, Object obj) + { + String s; + if (mCallbacks == null) + { + break MISSING_BLOCK_LABEL_132; + } + s = null; + if (mActivity != null) + { + s = mActivity.mFragments.mNoTransactionsBecause; + mActivity.mFragments.mNoTransactionsBecause = "onLoadFinished"; + } + if (LoaderManagerImpl.DEBUG) + { + Log.v("LoaderManager", (new StringBuilder()).append(" onLoadFinished in ").append(loader).append(": ").append(loader.dataToString(obj)).toString()); + } + mCallbacks.onLoadFinished(loader, obj); + if (mActivity != null) + { + mActivity.mFragments.mNoTransactionsBecause = s; + } + mDeliveredData = true; + return; + loader; + if (mActivity != null) + { + mActivity.mFragments.mNoTransactionsBecause = s; + } + throw loader; + } + + void destroy() + { + String s; + if (LoaderManagerImpl.DEBUG) + { + Log.v("LoaderManager", (new StringBuilder()).append(" Destroying: ").append(this).toString()); + } + mDestroyed = true; + boolean flag = mDeliveredData; + mDeliveredData = false; + if (mCallbacks == null || mLoader == null || !mHaveData || !flag) + { + break MISSING_BLOCK_LABEL_180; + } + if (LoaderManagerImpl.DEBUG) + { + Log.v("LoaderManager", (new StringBuilder()).append(" Reseting: ").append(this).toString()); + } + s = null; + if (mActivity != null) + { + s = mActivity.mFragments.mNoTransactionsBecause; + mActivity.mFragments.mNoTransactionsBecause = "onLoaderReset"; + } + mCallbacks.onLoaderReset(mLoader); + if (mActivity != null) + { + mActivity.mFragments.mNoTransactionsBecause = s; + } + mCallbacks = null; + mData = null; + mHaveData = false; + if (mLoader != null) + { + if (mListenerRegistered) + { + mListenerRegistered = false; + mLoader.unregisterListener(this); + } + mLoader.reset(); + } + if (mPendingLoader != null) + { + mPendingLoader.destroy(); + } + return; + Exception exception; + exception; + if (mActivity != null) + { + mActivity.mFragments.mNoTransactionsBecause = s; + } + throw exception; + } + + public void dump(String s, FileDescriptor filedescriptor, PrintWriter printwriter, String as[]) + { + printwriter.print(s); + printwriter.print("mId="); + printwriter.print(mId); + printwriter.print(" mArgs="); + printwriter.println(mArgs); + printwriter.print(s); + printwriter.print("mCallbacks="); + printwriter.println(mCallbacks); + printwriter.print(s); + printwriter.print("mLoader="); + printwriter.println(mLoader); + if (mLoader != null) + { + mLoader.dump((new StringBuilder()).append(s).append(" ").toString(), filedescriptor, printwriter, as); + } + if (mHaveData || mDeliveredData) + { + printwriter.print(s); + printwriter.print("mHaveData="); + printwriter.print(mHaveData); + printwriter.print(" mDeliveredData="); + printwriter.println(mDeliveredData); + printwriter.print(s); + printwriter.print("mData="); + printwriter.println(mData); + } + printwriter.print(s); + printwriter.print("mStarted="); + printwriter.print(mStarted); + printwriter.print(" mReportNextStart="); + printwriter.print(mReportNextStart); + printwriter.print(" mDestroyed="); + printwriter.println(mDestroyed); + printwriter.print(s); + printwriter.print("mRetaining="); + printwriter.print(mRetaining); + printwriter.print(" mRetainingStarted="); + printwriter.print(mRetainingStarted); + printwriter.print(" mListenerRegistered="); + printwriter.println(mListenerRegistered); + if (mPendingLoader != null) + { + printwriter.print(s); + printwriter.println("Pending Loader "); + printwriter.print(mPendingLoader); + printwriter.println(":"); + mPendingLoader.dump((new StringBuilder()).append(s).append(" ").toString(), filedescriptor, printwriter, as); + } + } + + void finishRetain() + { + if (mRetaining) + { + if (LoaderManagerImpl.DEBUG) + { + Log.v("LoaderManager", (new StringBuilder()).append(" Finished Retaining: ").append(this).toString()); + } + mRetaining = false; + if (mStarted != mRetainingStarted && !mStarted) + { + stop(); + } + } + if (mStarted && mHaveData && !mReportNextStart) + { + callOnLoadFinished(mLoader, mData); + } + } + + void reportStart() + { + if (mStarted && mReportNextStart) + { + mReportNextStart = false; + if (mHaveData) + { + callOnLoadFinished(mLoader, mData); + } + } + } + + void retain() + { + if (LoaderManagerImpl.DEBUG) + { + Log.v("LoaderManager", (new StringBuilder()).append(" Retaining: ").append(this).toString()); + } + mRetaining = true; + mRetainingStarted = mStarted; + mStarted = false; + mCallbacks = null; + } + + void start() + { + if (mRetaining && mRetainingStarted) + { + mStarted = true; + } else + if (!mStarted) + { + mStarted = true; + if (LoaderManagerImpl.DEBUG) + { + Log.v("LoaderManager", (new StringBuilder()).append(" Starting: ").append(this).toString()); + } + if (mLoader == null && mCallbacks != null) + { + mLoader = mCallbacks.onCreateLoader(mId, mArgs); + } + if (mLoader != null) + { + if (mLoader.getClass().isMemberClass() && !Modifier.isStatic(mLoader.getClass().getModifiers())) + { + throw new IllegalArgumentException((new StringBuilder()).append("Object returned from onCreateLoader must not be a non-static inner member class: ").append(mLoader).toString()); + } + if (!mListenerRegistered) + { + mLoader.registerListener(mId, this); + mListenerRegistered = true; + } + mLoader.startLoading(); + return; + } + } + } + + void stop() + { + if (LoaderManagerImpl.DEBUG) + { + Log.v("LoaderManager", (new StringBuilder()).append(" Stopping: ").append(this).toString()); + } + mStarted = false; + if (!mRetaining && mLoader != null && mListenerRegistered) + { + mListenerRegistered = false; + mLoader.unregisterListener(this); + mLoader.stopLoading(); + } + } + + public String toString() + { + StringBuilder stringbuilder = new StringBuilder(64); + stringbuilder.append("LoaderInfo{"); + stringbuilder.append(Integer.toHexString(System.identityHashCode(this))); + stringbuilder.append(" #"); + stringbuilder.append(mId); + stringbuilder.append(" : "); + DebugUtils.buildShortClassTag(mLoader, stringbuilder); + stringbuilder.append("}}"); + return stringbuilder.toString(); + } +} diff --git a/app/src/main/java/android/support/v4/app/LoaderManagerImpl.java b/app/src/main/java/android/support/v4/app/LoaderManagerImpl.java new file mode 100644 index 0000000..6aec49b --- /dev/null +++ b/app/src/main/java/android/support/v4/app/LoaderManagerImpl.java @@ -0,0 +1,508 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.os.Bundle; +import android.support.v4.content.Loader; +import android.support.v4.util.DebugUtils; +import android.support.v4.util.SparseArrayCompat; +import android.util.Log; +import java.io.FileDescriptor; +import java.io.PrintWriter; +import java.lang.reflect.Modifier; + +// Referenced classes of package android.support.v4.app: +// LoaderManager, FragmentActivity, FragmentManagerImpl + +class LoaderManagerImpl extends LoaderManager +{ + final class LoaderInfo + implements android.support.v4.content.Loader.OnLoadCompleteListener + { + + final Bundle mArgs; + LoaderManager.LoaderCallbacks mCallbacks; + Object mData; + boolean mDeliveredData; + boolean mDestroyed; + boolean mHaveData; + final int mId; + boolean mListenerRegistered; + Loader mLoader; + LoaderInfo mPendingLoader; + boolean mReportNextStart; + boolean mRetaining; + boolean mRetainingStarted; + boolean mStarted; + final LoaderManagerImpl this$0; + + void callOnLoadFinished(Loader loader, Object obj) + { + String s; + if (mCallbacks == null) + { + break MISSING_BLOCK_LABEL_132; + } + s = null; + if (mActivity != null) + { + s = mActivity.mFragments.mNoTransactionsBecause; + mActivity.mFragments.mNoTransactionsBecause = "onLoadFinished"; + } + if (LoaderManagerImpl.DEBUG) + { + Log.v("LoaderManager", (new StringBuilder()).append(" onLoadFinished in ").append(loader).append(": ").append(loader.dataToString(obj)).toString()); + } + mCallbacks.onLoadFinished(loader, obj); + if (mActivity != null) + { + mActivity.mFragments.mNoTransactionsBecause = s; + } + mDeliveredData = true; + return; + loader; + if (mActivity != null) + { + mActivity.mFragments.mNoTransactionsBecause = s; + } + throw loader; + } + + void destroy() + { + String s; + if (LoaderManagerImpl.DEBUG) + { + Log.v("LoaderManager", (new StringBuilder()).append(" Destroying: ").append(this).toString()); + } + mDestroyed = true; + boolean flag = mDeliveredData; + mDeliveredData = false; + if (mCallbacks == null || mLoader == null || !mHaveData || !flag) + { + break MISSING_BLOCK_LABEL_180; + } + if (LoaderManagerImpl.DEBUG) + { + Log.v("LoaderManager", (new StringBuilder()).append(" Reseting: ").append(this).toString()); + } + s = null; + if (mActivity != null) + { + s = mActivity.mFragments.mNoTransactionsBecause; + mActivity.mFragments.mNoTransactionsBecause = "onLoaderReset"; + } + mCallbacks.onLoaderReset(mLoader); + if (mActivity != null) + { + mActivity.mFragments.mNoTransactionsBecause = s; + } + mCallbacks = null; + mData = null; + mHaveData = false; + if (mLoader != null) + { + if (mListenerRegistered) + { + mListenerRegistered = false; + mLoader.unregisterListener(this); + } + mLoader.reset(); + } + if (mPendingLoader != null) + { + mPendingLoader.destroy(); + } + return; + Exception exception; + exception; + if (mActivity != null) + { + mActivity.mFragments.mNoTransactionsBecause = s; + } + throw exception; + } + + public void dump(String s, FileDescriptor filedescriptor, PrintWriter printwriter, String as[]) + { + printwriter.print(s); + printwriter.print("mId="); + printwriter.print(mId); + printwriter.print(" mArgs="); + printwriter.println(mArgs); + printwriter.print(s); + printwriter.print("mCallbacks="); + printwriter.println(mCallbacks); + printwriter.print(s); + printwriter.print("mLoader="); + printwriter.println(mLoader); + if (mLoader != null) + { + mLoader.dump((new StringBuilder()).append(s).append(" ").toString(), filedescriptor, printwriter, as); + } + if (mHaveData || mDeliveredData) + { + printwriter.print(s); + printwriter.print("mHaveData="); + printwriter.print(mHaveData); + printwriter.print(" mDeliveredData="); + printwriter.println(mDeliveredData); + printwriter.print(s); + printwriter.print("mData="); + printwriter.println(mData); + } + printwriter.print(s); + printwriter.print("mStarted="); + printwriter.print(mStarted); + printwriter.print(" mReportNextStart="); + printwriter.print(mReportNextStart); + printwriter.print(" mDestroyed="); + printwriter.println(mDestroyed); + printwriter.print(s); + printwriter.print("mRetaining="); + printwriter.print(mRetaining); + printwriter.print(" mRetainingStarted="); + printwriter.print(mRetainingStarted); + printwriter.print(" mListenerRegistered="); + printwriter.println(mListenerRegistered); + if (mPendingLoader != null) + { + printwriter.print(s); + printwriter.println("Pending Loader "); + printwriter.print(mPendingLoader); + printwriter.println(":"); + mPendingLoader.dump((new StringBuilder()).append(s).append(" ").toString(), filedescriptor, printwriter, as); + } + } + + void finishRetain() + { + if (mRetaining) + { + if (LoaderManagerImpl.DEBUG) + { + Log.v("LoaderManager", (new StringBuilder()).append(" Finished Retaining: ").append(this).toString()); + } + mRetaining = false; + if (mStarted != mRetainingStarted && !mStarted) + { + stop(); + } + } + if (mStarted && mHaveData && !mReportNextStart) + { + callOnLoadFinished(mLoader, mData); + } + } + + void reportStart() + { + if (mStarted && mReportNextStart) + { + mReportNextStart = false; + if (mHaveData) + { + callOnLoadFinished(mLoader, mData); + } + } + } + + void retain() + { + if (LoaderManagerImpl.DEBUG) + { + Log.v("LoaderManager", (new StringBuilder()).append(" Retaining: ").append(this).toString()); + } + mRetaining = true; + mRetainingStarted = mStarted; + mStarted = false; + mCallbacks = null; + } + + void start() + { + if (mRetaining && mRetainingStarted) + { + mStarted = true; + } else + if (!mStarted) + { + mStarted = true; + if (LoaderManagerImpl.DEBUG) + { + Log.v("LoaderManager", (new StringBuilder()).append(" Starting: ").append(this).toString()); + } + if (mLoader == null && mCallbacks != null) + { + mLoader = mCallbacks.onCreateLoader(mId, mArgs); + } + if (mLoader != null) + { + if (mLoader.getClass().isMemberClass() && !Modifier.isStatic(mLoader.getClass().getModifiers())) + { + throw new IllegalArgumentException((new StringBuilder()).append("Object returned from onCreateLoader must not be a non-static inner member class: ").append(mLoader).toString()); + } + if (!mListenerRegistered) + { + mLoader.registerListener(mId, this); + mListenerRegistered = true; + } + mLoader.startLoading(); + return; + } + } + } + + void stop() + { + if (LoaderManagerImpl.DEBUG) + { + Log.v("LoaderManager", (new StringBuilder()).append(" Stopping: ").append(this).toString()); + } + mStarted = false; + if (!mRetaining && mLoader != null && mListenerRegistered) + { + mListenerRegistered = false; + mLoader.unregisterListener(this); + mLoader.stopLoading(); + } + } + + public String toString() + { + StringBuilder stringbuilder = new StringBuilder(64); + stringbuilder.append("LoaderInfo{"); + stringbuilder.append(Integer.toHexString(System.identityHashCode(this))); + stringbuilder.append(" #"); + stringbuilder.append(mId); + stringbuilder.append(" : "); + DebugUtils.buildShortClassTag(mLoader, stringbuilder); + stringbuilder.append("}}"); + return stringbuilder.toString(); + } + } + + + static boolean DEBUG = false; + FragmentActivity mActivity; + final SparseArrayCompat mInactiveLoaders = new SparseArrayCompat(); + final SparseArrayCompat mLoaders = new SparseArrayCompat(); + boolean mRetaining; + boolean mStarted; + final String mWho; + + LoaderManagerImpl(String s, FragmentActivity fragmentactivity, boolean flag) + { + mWho = s; + mActivity = fragmentactivity; + mStarted = flag; + } + + void doDestroy() + { + if (!mRetaining) + { + if (DEBUG) + { + Log.v("LoaderManager", (new StringBuilder()).append("Destroying Active in ").append(this).toString()); + } + for (int i = mLoaders.size() - 1; i >= 0; i--) + { + ((LoaderInfo)mLoaders.valueAt(i)).destroy(); + } + + } + if (DEBUG) + { + Log.v("LoaderManager", (new StringBuilder()).append("Destroying Inactive in ").append(this).toString()); + } + for (int j = mInactiveLoaders.size() - 1; j >= 0; j--) + { + ((LoaderInfo)mInactiveLoaders.valueAt(j)).destroy(); + } + + mInactiveLoaders.clear(); + } + + void doReportNextStart() + { + for (int i = mLoaders.size() - 1; i >= 0; i--) + { + ((LoaderInfo)mLoaders.valueAt(i)).mReportNextStart = true; + } + + } + + void doReportStart() + { + for (int i = mLoaders.size() - 1; i >= 0; i--) + { + ((LoaderInfo)mLoaders.valueAt(i)).reportStart(); + } + + } + + void doRetain() + { + if (DEBUG) + { + Log.v("LoaderManager", (new StringBuilder()).append("Retaining in ").append(this).toString()); + } + if (!mStarted) + { + RuntimeException runtimeexception = new RuntimeException("here"); + runtimeexception.fillInStackTrace(); + Log.w("LoaderManager", (new StringBuilder()).append("Called doRetain when not started: ").append(this).toString(), runtimeexception); + } else + { + mRetaining = true; + mStarted = false; + int i = mLoaders.size() - 1; + while (i >= 0) + { + ((LoaderInfo)mLoaders.valueAt(i)).retain(); + i--; + } + } + } + + void doStart() + { + if (DEBUG) + { + Log.v("LoaderManager", (new StringBuilder()).append("Starting in ").append(this).toString()); + } + if (mStarted) + { + RuntimeException runtimeexception = new RuntimeException("here"); + runtimeexception.fillInStackTrace(); + Log.w("LoaderManager", (new StringBuilder()).append("Called doStart when already started: ").append(this).toString(), runtimeexception); + } else + { + mStarted = true; + int i = mLoaders.size() - 1; + while (i >= 0) + { + ((LoaderInfo)mLoaders.valueAt(i)).start(); + i--; + } + } + } + + void doStop() + { + if (DEBUG) + { + Log.v("LoaderManager", (new StringBuilder()).append("Stopping in ").append(this).toString()); + } + if (!mStarted) + { + RuntimeException runtimeexception = new RuntimeException("here"); + runtimeexception.fillInStackTrace(); + Log.w("LoaderManager", (new StringBuilder()).append("Called doStop when not started: ").append(this).toString(), runtimeexception); + return; + } + for (int i = mLoaders.size() - 1; i >= 0; i--) + { + ((LoaderInfo)mLoaders.valueAt(i)).stop(); + } + + mStarted = false; + } + + public void dump(String s, FileDescriptor filedescriptor, PrintWriter printwriter, String as[]) + { + if (mLoaders.size() > 0) + { + printwriter.print(s); + printwriter.println("Active Loaders:"); + String s1 = (new StringBuilder()).append(s).append(" ").toString(); + for (int i = 0; i < mLoaders.size(); i++) + { + LoaderInfo loaderinfo = (LoaderInfo)mLoaders.valueAt(i); + printwriter.print(s); + printwriter.print(" #"); + printwriter.print(mLoaders.keyAt(i)); + printwriter.print(": "); + printwriter.println(loaderinfo.toString()); + loaderinfo.dump(s1, filedescriptor, printwriter, as); + } + + } + if (mInactiveLoaders.size() > 0) + { + printwriter.print(s); + printwriter.println("Inactive Loaders:"); + String s2 = (new StringBuilder()).append(s).append(" ").toString(); + for (int j = 0; j < mInactiveLoaders.size(); j++) + { + LoaderInfo loaderinfo1 = (LoaderInfo)mInactiveLoaders.valueAt(j); + printwriter.print(s); + printwriter.print(" #"); + printwriter.print(mInactiveLoaders.keyAt(j)); + printwriter.print(": "); + printwriter.println(loaderinfo1.toString()); + loaderinfo1.dump(s2, filedescriptor, printwriter, as); + } + + } + } + + void finishRetain() + { + if (mRetaining) + { + if (DEBUG) + { + Log.v("LoaderManager", (new StringBuilder()).append("Finished Retaining in ").append(this).toString()); + } + mRetaining = false; + for (int i = mLoaders.size() - 1; i >= 0; i--) + { + ((LoaderInfo)mLoaders.valueAt(i)).finishRetain(); + } + + } + } + + public boolean hasRunningLoaders() + { + boolean flag1 = false; + int j = mLoaders.size(); + int i = 0; + while (i < j) + { + LoaderInfo loaderinfo = (LoaderInfo)mLoaders.valueAt(i); + boolean flag; + if (loaderinfo.mStarted && !loaderinfo.mDeliveredData) + { + flag = true; + } else + { + flag = false; + } + flag1 |= flag; + i++; + } + return flag1; + } + + public String toString() + { + StringBuilder stringbuilder = new StringBuilder(128); + stringbuilder.append("LoaderManager{"); + stringbuilder.append(Integer.toHexString(System.identityHashCode(this))); + stringbuilder.append(" in "); + DebugUtils.buildShortClassTag(mActivity, stringbuilder); + stringbuilder.append("}}"); + return stringbuilder.toString(); + } + + void updateActivity(FragmentActivity fragmentactivity) + { + mActivity = fragmentactivity; + } + +} diff --git a/app/src/main/java/android/support/v4/app/NoSaveStateFrameLayout.java b/app/src/main/java/android/support/v4/app/NoSaveStateFrameLayout.java new file mode 100644 index 0000000..d7f9855 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/NoSaveStateFrameLayout.java @@ -0,0 +1,43 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.content.Context; +import android.util.SparseArray; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; + +class NoSaveStateFrameLayout extends FrameLayout +{ + + public NoSaveStateFrameLayout(Context context) + { + super(context); + } + + static ViewGroup wrap(View view) + { + NoSaveStateFrameLayout nosavestateframelayout = new NoSaveStateFrameLayout(view.getContext()); + android.view.ViewGroup.LayoutParams layoutparams = view.getLayoutParams(); + if (layoutparams != null) + { + nosavestateframelayout.setLayoutParams(layoutparams); + } + view.setLayoutParams(new android.widget.FrameLayout.LayoutParams(-1, -1)); + nosavestateframelayout.addView(view); + return nosavestateframelayout; + } + + protected void dispatchRestoreInstanceState(SparseArray sparsearray) + { + dispatchThawSelfOnly(sparsearray); + } + + protected void dispatchSaveInstanceState(SparseArray sparsearray) + { + dispatchFreezeSelfOnly(sparsearray); + } +} diff --git a/app/src/main/java/android/support/v4/app/NotificationCompat$Action.java b/app/src/main/java/android/support/v4/app/NotificationCompat$Action.java new file mode 100644 index 0000000..ba24075 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/NotificationCompat$Action.java @@ -0,0 +1,18 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.app.PendingIntent; + +// Referenced classes of package android.support.v4.app: +// NotificationCompat + +public static class +{ + + public PendingIntent actionIntent; + public int icon; + public CharSequence title; +} diff --git a/app/src/main/java/android/support/v4/app/NotificationCompat$BigPictureStyle.java b/app/src/main/java/android/support/v4/app/NotificationCompat$BigPictureStyle.java new file mode 100644 index 0000000..fbde680 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/NotificationCompat$BigPictureStyle.java @@ -0,0 +1,20 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.graphics.Bitmap; + +// Referenced classes of package android.support.v4.app: +// NotificationCompat + +public static class extends +{ + + Bitmap mPicture; + + public () + { + } +} diff --git a/app/src/main/java/android/support/v4/app/NotificationCompat$BigTextStyle.java b/app/src/main/java/android/support/v4/app/NotificationCompat$BigTextStyle.java new file mode 100644 index 0000000..e853151 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/NotificationCompat$BigTextStyle.java @@ -0,0 +1,19 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + + +// Referenced classes of package android.support.v4.app: +// NotificationCompat + +public static class extends +{ + + CharSequence mBigText; + + public () + { + } +} diff --git a/app/src/main/java/android/support/v4/app/NotificationCompat$Builder.java b/app/src/main/java/android/support/v4/app/NotificationCompat$Builder.java new file mode 100644 index 0000000..044d960 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/NotificationCompat$Builder.java @@ -0,0 +1,135 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.app.Notification; +import android.app.PendingIntent; +import android.content.Context; +import android.graphics.Bitmap; +import android.net.Uri; +import android.widget.RemoteViews; +import java.util.ArrayList; + +// Referenced classes of package android.support.v4.app: +// NotificationCompat + +public static class mPriority +{ + + ArrayList mActions; + CharSequence mContentInfo; + PendingIntent mContentIntent; + CharSequence mContentText; + CharSequence mContentTitle; + Context mContext; + PendingIntent mFullScreenIntent; + Bitmap mLargeIcon; + Notification mNotification; + int mNumber; + int mPriority; + int mProgress; + boolean mProgressIndeterminate; + int mProgressMax; + mNotification mStyle; + CharSequence mSubText; + RemoteViews mTickerView; + boolean mUseChronometer; + + private void setFlag(int i, boolean flag) + { + if (flag) + { + Notification notification = mNotification; + notification.flags = notification.flags | i; + return; + } else + { + Notification notification1 = mNotification; + notification1.flags = notification1.flags & ~i; + return; + } + } + + public Notification build() + { + return NotificationCompat.access$000().build(this); + } + + public tionCompatImpl.build setAutoCancel(boolean flag) + { + setFlag(16, flag); + return this; + } + + public setFlag setContentIntent(PendingIntent pendingintent) + { + mContentIntent = pendingintent; + return this; + } + + public mContentIntent setContentText(CharSequence charsequence) + { + mContentText = charsequence; + return this; + } + + public mContentText setContentTitle(CharSequence charsequence) + { + mContentTitle = charsequence; + return this; + } + + public mContentTitle setDefaults(int i) + { + mNotification.defaults = i; + if ((i & 4) != 0) + { + Notification notification = mNotification; + notification.flags = notification.flags | 1; + } + return this; + } + + public mNotification setNumber(int i) + { + mNumber = i; + return this; + } + + public mNumber setSmallIcon(int i) + { + mNotification.icon = i; + return this; + } + + public mNotification setSound(Uri uri) + { + mNotification.sound = uri; + mNotification.audioStreamType = -1; + return this; + } + + public mNotification setTicker(CharSequence charsequence) + { + mNotification.tickerText = charsequence; + return this; + } + + public mNotification setWhen(long l) + { + mNotification.when = l; + return this; + } + + public tionCompatImpl(Context context) + { + mActions = new ArrayList(); + mNotification = new Notification(); + mContext = context; + mNotification.when = System.currentTimeMillis(); + mNotification.audioStreamType = -1; + mPriority = 0; + } +} diff --git a/app/src/main/java/android/support/v4/app/NotificationCompat$InboxStyle.java b/app/src/main/java/android/support/v4/app/NotificationCompat$InboxStyle.java new file mode 100644 index 0000000..1d4972b --- /dev/null +++ b/app/src/main/java/android/support/v4/app/NotificationCompat$InboxStyle.java @@ -0,0 +1,21 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import java.util.ArrayList; + +// Referenced classes of package android.support.v4.app: +// NotificationCompat + +public static class mTexts extends mTexts +{ + + ArrayList mTexts; + + public () + { + mTexts = new ArrayList(); + } +} diff --git a/app/src/main/java/android/support/v4/app/NotificationCompat$NotificationCompatImpl.java b/app/src/main/java/android/support/v4/app/NotificationCompat$NotificationCompatImpl.java new file mode 100644 index 0000000..bf6d5aa --- /dev/null +++ b/app/src/main/java/android/support/v4/app/NotificationCompat$NotificationCompatImpl.java @@ -0,0 +1,16 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.app.Notification; + +// Referenced classes of package android.support.v4.app: +// NotificationCompat + +static interface +{ + + public abstract Notification build( ); +} diff --git a/app/src/main/java/android/support/v4/app/NotificationCompat$NotificationCompatImplBase.java b/app/src/main/java/android/support/v4/app/NotificationCompat$NotificationCompatImplBase.java new file mode 100644 index 0000000..cc78cb0 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/NotificationCompat$NotificationCompatImplBase.java @@ -0,0 +1,30 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.app.Notification; + +// Referenced classes of package android.support.v4.app: +// NotificationCompat + +static class + implements +{ + + public Notification build( ) + { + Notification notification = .; + notification.setLatestEventInfo(., ., ., .); + if (. > 0) + { + notification.flags = notification.flags | 0x80; + } + return notification; + } + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/app/NotificationCompat$NotificationCompatImplHoneycomb.java b/app/src/main/java/android/support/v4/app/NotificationCompat$NotificationCompatImplHoneycomb.java new file mode 100644 index 0000000..a30ea96 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/NotificationCompat$NotificationCompatImplHoneycomb.java @@ -0,0 +1,24 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.app.Notification; + +// Referenced classes of package android.support.v4.app: +// NotificationCompat, NotificationCompatHoneycomb + +static class + implements +{ + + public Notification build( ) + { + return NotificationCompatHoneycomb.add(., ., ., ., ., ., ., ., ., .); + } + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/app/NotificationCompat$NotificationCompatImplIceCreamSandwich.java b/app/src/main/java/android/support/v4/app/NotificationCompat$NotificationCompatImplIceCreamSandwich.java new file mode 100644 index 0000000..e7eed04 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/NotificationCompat$NotificationCompatImplIceCreamSandwich.java @@ -0,0 +1,24 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.app.Notification; + +// Referenced classes of package android.support.v4.app: +// NotificationCompat, NotificationCompatIceCreamSandwich + +static class + implements +{ + + public Notification build( ) + { + return NotificationCompatIceCreamSandwich.add(., ., ., ., ., ., ., ., ., ., ., ., .); + } + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/app/NotificationCompat$NotificationCompatImplJellybean.java b/app/src/main/java/android/support/v4/app/NotificationCompat$NotificationCompatImplJellybean.java new file mode 100644 index 0000000..250ea84 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/NotificationCompat$NotificationCompatImplJellybean.java @@ -0,0 +1,54 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.app.Notification; +import java.util.ArrayList; +import java.util.Iterator; + +// Referenced classes of package android.support.v4.app: +// NotificationCompat, NotificationCompatJellybean + +static class + implements +{ + + public Notification build( ) + { + NotificationCompatJellybean notificationcompatjellybean; + notificationcompatjellybean = new NotificationCompatJellybean(., ., ., ., ., ., ., ., ., ., ., ., ., ., ., .); + 1; + for (Iterator iterator = ..iterator(); iterator.hasNext(); notificationcompatjellybean.addAction(1., 1., 1.)) + { + 1 = ()iterator.next(); + } + + if (. == null) goto _L2; else goto _L1 +_L1: + if (!(. instanceof )) goto _L4; else goto _L3 +_L3: + = ().; + notificationcompatjellybean.addBigTextStyle((() ())., (() ())., (() ())., (() ()).); +_L2: + return notificationcompatjellybean.build(); +_L4: + if (. instanceof ) + { + = ().; + notificationcompatjellybean.addInboxStyle((() ())., (() ())., (() ())., (() ()).); + } else + if (. instanceof ) + { + = ().; + notificationcompatjellybean.addBigPictureStyle((() ())., (() ())., (() ())., (() ()).); + } + if (true) goto _L2; else goto _L5 +_L5: + } + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/app/NotificationCompat$Style.java b/app/src/main/java/android/support/v4/app/NotificationCompat$Style.java new file mode 100644 index 0000000..54b6eb9 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/NotificationCompat$Style.java @@ -0,0 +1,22 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + + +// Referenced classes of package android.support.v4.app: +// NotificationCompat + +public static abstract class mSummaryTextSet +{ + + CharSequence mBigContentTitle; + CharSequence mSummaryText; + boolean mSummaryTextSet; + + public () + { + mSummaryTextSet = false; + } +} diff --git a/app/src/main/java/android/support/v4/app/NotificationCompat.java b/app/src/main/java/android/support/v4/app/NotificationCompat.java new file mode 100644 index 0000000..d1d0583 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/NotificationCompat.java @@ -0,0 +1,310 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.app.Notification; +import android.app.PendingIntent; +import android.content.Context; +import android.graphics.Bitmap; +import android.net.Uri; +import android.widget.RemoteViews; +import java.util.ArrayList; +import java.util.Iterator; + +// Referenced classes of package android.support.v4.app: +// NotificationCompatHoneycomb, NotificationCompatIceCreamSandwich, NotificationCompatJellybean + +public class NotificationCompat +{ + public static class Action + { + + public PendingIntent actionIntent; + public int icon; + public CharSequence title; + } + + public static class BigPictureStyle extends Style + { + + Bitmap mPicture; + + public BigPictureStyle() + { + } + } + + public static class BigTextStyle extends Style + { + + CharSequence mBigText; + + public BigTextStyle() + { + } + } + + public static class Builder + { + + ArrayList mActions; + CharSequence mContentInfo; + PendingIntent mContentIntent; + CharSequence mContentText; + CharSequence mContentTitle; + Context mContext; + PendingIntent mFullScreenIntent; + Bitmap mLargeIcon; + Notification mNotification; + int mNumber; + int mPriority; + int mProgress; + boolean mProgressIndeterminate; + int mProgressMax; + Style mStyle; + CharSequence mSubText; + RemoteViews mTickerView; + boolean mUseChronometer; + + private void setFlag(int i, boolean flag) + { + if (flag) + { + Notification notification = mNotification; + notification.flags = notification.flags | i; + return; + } else + { + Notification notification1 = mNotification; + notification1.flags = notification1.flags & ~i; + return; + } + } + + public Notification build() + { + return NotificationCompat.IMPL.build(this); + } + + public Builder setAutoCancel(boolean flag) + { + setFlag(16, flag); + return this; + } + + public Builder setContentIntent(PendingIntent pendingintent) + { + mContentIntent = pendingintent; + return this; + } + + public Builder setContentText(CharSequence charsequence) + { + mContentText = charsequence; + return this; + } + + public Builder setContentTitle(CharSequence charsequence) + { + mContentTitle = charsequence; + return this; + } + + public Builder setDefaults(int i) + { + mNotification.defaults = i; + if ((i & 4) != 0) + { + Notification notification = mNotification; + notification.flags = notification.flags | 1; + } + return this; + } + + public Builder setNumber(int i) + { + mNumber = i; + return this; + } + + public Builder setSmallIcon(int i) + { + mNotification.icon = i; + return this; + } + + public Builder setSound(Uri uri) + { + mNotification.sound = uri; + mNotification.audioStreamType = -1; + return this; + } + + public Builder setTicker(CharSequence charsequence) + { + mNotification.tickerText = charsequence; + return this; + } + + public Builder setWhen(long l) + { + mNotification.when = l; + return this; + } + + public Builder(Context context) + { + mActions = new ArrayList(); + mNotification = new Notification(); + mContext = context; + mNotification.when = System.currentTimeMillis(); + mNotification.audioStreamType = -1; + mPriority = 0; + } + } + + public static class InboxStyle extends Style + { + + ArrayList mTexts; + + public InboxStyle() + { + mTexts = new ArrayList(); + } + } + + static interface NotificationCompatImpl + { + + public abstract Notification build(Builder builder); + } + + static class NotificationCompatImplBase + implements NotificationCompatImpl + { + + public Notification build(Builder builder) + { + Notification notification = builder.mNotification; + notification.setLatestEventInfo(builder.mContext, builder.mContentTitle, builder.mContentText, builder.mContentIntent); + if (builder.mPriority > 0) + { + notification.flags = notification.flags | 0x80; + } + return notification; + } + + NotificationCompatImplBase() + { + } + } + + static class NotificationCompatImplHoneycomb + implements NotificationCompatImpl + { + + public Notification build(Builder builder) + { + return NotificationCompatHoneycomb.add(builder.mContext, builder.mNotification, builder.mContentTitle, builder.mContentText, builder.mContentInfo, builder.mTickerView, builder.mNumber, builder.mContentIntent, builder.mFullScreenIntent, builder.mLargeIcon); + } + + NotificationCompatImplHoneycomb() + { + } + } + + static class NotificationCompatImplIceCreamSandwich + implements NotificationCompatImpl + { + + public Notification build(Builder builder) + { + return NotificationCompatIceCreamSandwich.add(builder.mContext, builder.mNotification, builder.mContentTitle, builder.mContentText, builder.mContentInfo, builder.mTickerView, builder.mNumber, builder.mContentIntent, builder.mFullScreenIntent, builder.mLargeIcon, builder.mProgressMax, builder.mProgress, builder.mProgressIndeterminate); + } + + NotificationCompatImplIceCreamSandwich() + { + } + } + + static class NotificationCompatImplJellybean + implements NotificationCompatImpl + { + + public Notification build(Builder builder) + { + NotificationCompatJellybean notificationcompatjellybean; + notificationcompatjellybean = new NotificationCompatJellybean(builder.mContext, builder.mNotification, builder.mContentTitle, builder.mContentText, builder.mContentInfo, builder.mTickerView, builder.mNumber, builder.mContentIntent, builder.mFullScreenIntent, builder.mLargeIcon, builder.mProgressMax, builder.mProgress, builder.mProgressIndeterminate, builder.mUseChronometer, builder.mPriority, builder.mSubText); + Action action; + for (Iterator iterator = builder.mActions.iterator(); iterator.hasNext(); notificationcompatjellybean.addAction(action.icon, action.title, action.actionIntent)) + { + action = (Action)iterator.next(); + } + + if (builder.mStyle == null) goto _L2; else goto _L1 +_L1: + if (!(builder.mStyle instanceof BigTextStyle)) goto _L4; else goto _L3 +_L3: + builder = (BigTextStyle)builder.mStyle; + notificationcompatjellybean.addBigTextStyle(((BigTextStyle) (builder)).mBigContentTitle, ((BigTextStyle) (builder)).mSummaryTextSet, ((BigTextStyle) (builder)).mSummaryText, ((BigTextStyle) (builder)).mBigText); +_L2: + return notificationcompatjellybean.build(); +_L4: + if (builder.mStyle instanceof InboxStyle) + { + builder = (InboxStyle)builder.mStyle; + notificationcompatjellybean.addInboxStyle(((InboxStyle) (builder)).mBigContentTitle, ((InboxStyle) (builder)).mSummaryTextSet, ((InboxStyle) (builder)).mSummaryText, ((InboxStyle) (builder)).mTexts); + } else + if (builder.mStyle instanceof BigPictureStyle) + { + builder = (BigPictureStyle)builder.mStyle; + notificationcompatjellybean.addBigPictureStyle(((BigPictureStyle) (builder)).mBigContentTitle, ((BigPictureStyle) (builder)).mSummaryTextSet, ((BigPictureStyle) (builder)).mSummaryText, ((BigPictureStyle) (builder)).mPicture); + } + if (true) goto _L2; else goto _L5 +_L5: + } + + NotificationCompatImplJellybean() + { + } + } + + public static abstract class Style + { + + CharSequence mBigContentTitle; + CharSequence mSummaryText; + boolean mSummaryTextSet; + + public Style() + { + mSummaryTextSet = false; + } + } + + + private static final NotificationCompatImpl IMPL; + + static + { + if (android.os.Build.VERSION.SDK_INT >= 16) + { + IMPL = new NotificationCompatImplJellybean(); + } else + if (android.os.Build.VERSION.SDK_INT >= 14) + { + IMPL = new NotificationCompatImplIceCreamSandwich(); + } else + if (android.os.Build.VERSION.SDK_INT >= 11) + { + IMPL = new NotificationCompatImplHoneycomb(); + } else + { + IMPL = new NotificationCompatImplBase(); + } + } + +} diff --git a/app/src/main/java/android/support/v4/app/NotificationCompatHoneycomb.java b/app/src/main/java/android/support/v4/app/NotificationCompatHoneycomb.java new file mode 100644 index 0000000..94ed6e6 --- /dev/null +++ b/app/src/main/java/android/support/v4/app/NotificationCompatHoneycomb.java @@ -0,0 +1,54 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.app.Notification; +import android.app.PendingIntent; +import android.content.Context; +import android.graphics.Bitmap; +import android.widget.RemoteViews; + +class NotificationCompatHoneycomb +{ + + static Notification add(Context context, Notification notification, CharSequence charsequence, CharSequence charsequence1, CharSequence charsequence2, RemoteViews remoteviews, int i, PendingIntent pendingintent, + PendingIntent pendingintent1, Bitmap bitmap) + { + context = (new android.app.Notification.Builder(context)).setWhen(notification.when).setSmallIcon(notification.icon, notification.iconLevel).setContent(notification.contentView).setTicker(notification.tickerText, remoteviews).setSound(notification.sound, notification.audioStreamType).setVibrate(notification.vibrate).setLights(notification.ledARGB, notification.ledOnMS, notification.ledOffMS); + boolean flag; + if ((notification.flags & 2) != 0) + { + flag = true; + } else + { + flag = false; + } + context = context.setOngoing(flag); + if ((notification.flags & 8) != 0) + { + flag = true; + } else + { + flag = false; + } + context = context.setOnlyAlertOnce(flag); + if ((notification.flags & 0x10) != 0) + { + flag = true; + } else + { + flag = false; + } + context = context.setAutoCancel(flag).setDefaults(notification.defaults).setContentTitle(charsequence).setContentText(charsequence1).setContentInfo(charsequence2).setContentIntent(pendingintent).setDeleteIntent(notification.deleteIntent); + if ((notification.flags & 0x80) != 0) + { + flag = true; + } else + { + flag = false; + } + return context.setFullScreenIntent(pendingintent1, flag).setLargeIcon(bitmap).setNumber(i).getNotification(); + } +} diff --git a/app/src/main/java/android/support/v4/app/NotificationCompatIceCreamSandwich.java b/app/src/main/java/android/support/v4/app/NotificationCompatIceCreamSandwich.java new file mode 100644 index 0000000..7c7f66b --- /dev/null +++ b/app/src/main/java/android/support/v4/app/NotificationCompatIceCreamSandwich.java @@ -0,0 +1,54 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.app.Notification; +import android.app.PendingIntent; +import android.content.Context; +import android.graphics.Bitmap; +import android.widget.RemoteViews; + +class NotificationCompatIceCreamSandwich +{ + + static Notification add(Context context, Notification notification, CharSequence charsequence, CharSequence charsequence1, CharSequence charsequence2, RemoteViews remoteviews, int i, PendingIntent pendingintent, + PendingIntent pendingintent1, Bitmap bitmap, int j, int k, boolean flag) + { + context = (new android.app.Notification.Builder(context)).setWhen(notification.when).setSmallIcon(notification.icon, notification.iconLevel).setContent(notification.contentView).setTicker(notification.tickerText, remoteviews).setSound(notification.sound, notification.audioStreamType).setVibrate(notification.vibrate).setLights(notification.ledARGB, notification.ledOnMS, notification.ledOffMS); + boolean flag1; + if ((notification.flags & 2) != 0) + { + flag1 = true; + } else + { + flag1 = false; + } + context = context.setOngoing(flag1); + if ((notification.flags & 8) != 0) + { + flag1 = true; + } else + { + flag1 = false; + } + context = context.setOnlyAlertOnce(flag1); + if ((notification.flags & 0x10) != 0) + { + flag1 = true; + } else + { + flag1 = false; + } + context = context.setAutoCancel(flag1).setDefaults(notification.defaults).setContentTitle(charsequence).setContentText(charsequence1).setContentInfo(charsequence2).setContentIntent(pendingintent).setDeleteIntent(notification.deleteIntent); + if ((notification.flags & 0x80) != 0) + { + flag1 = true; + } else + { + flag1 = false; + } + return context.setFullScreenIntent(pendingintent1, flag1).setLargeIcon(bitmap).setNumber(i).setProgress(j, k, flag).getNotification(); + } +} diff --git a/app/src/main/java/android/support/v4/app/NotificationCompatJellybean.java b/app/src/main/java/android/support/v4/app/NotificationCompatJellybean.java new file mode 100644 index 0000000..e431b4d --- /dev/null +++ b/app/src/main/java/android/support/v4/app/NotificationCompatJellybean.java @@ -0,0 +1,97 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.app.Notification; +import android.app.PendingIntent; +import android.content.Context; +import android.graphics.Bitmap; +import android.widget.RemoteViews; +import java.util.ArrayList; +import java.util.Iterator; + +class NotificationCompatJellybean +{ + + private android.app.Notification.Builder b; + + public NotificationCompatJellybean(Context context, Notification notification, CharSequence charsequence, CharSequence charsequence1, CharSequence charsequence2, RemoteViews remoteviews, int i, + PendingIntent pendingintent, PendingIntent pendingintent1, Bitmap bitmap, int j, int k, boolean flag, boolean flag1, + int l, CharSequence charsequence3) + { + context = (new android.app.Notification.Builder(context)).setWhen(notification.when).setSmallIcon(notification.icon, notification.iconLevel).setContent(notification.contentView).setTicker(notification.tickerText, remoteviews).setSound(notification.sound, notification.audioStreamType).setVibrate(notification.vibrate).setLights(notification.ledARGB, notification.ledOnMS, notification.ledOffMS); + boolean flag2; + if ((notification.flags & 2) != 0) + { + flag2 = true; + } else + { + flag2 = false; + } + context = context.setOngoing(flag2); + if ((notification.flags & 8) != 0) + { + flag2 = true; + } else + { + flag2 = false; + } + context = context.setOnlyAlertOnce(flag2); + if ((notification.flags & 0x10) != 0) + { + flag2 = true; + } else + { + flag2 = false; + } + context = context.setAutoCancel(flag2).setDefaults(notification.defaults).setContentTitle(charsequence).setContentText(charsequence1).setSubText(charsequence3).setContentInfo(charsequence2).setContentIntent(pendingintent).setDeleteIntent(notification.deleteIntent); + if ((notification.flags & 0x80) != 0) + { + flag2 = true; + } else + { + flag2 = false; + } + b = context.setFullScreenIntent(pendingintent1, flag2).setLargeIcon(bitmap).setNumber(i).setUsesChronometer(flag1).setPriority(l).setProgress(j, k, flag); + } + + public void addAction(int i, CharSequence charsequence, PendingIntent pendingintent) + { + b.addAction(i, charsequence, pendingintent); + } + + public void addBigPictureStyle(CharSequence charsequence, boolean flag, CharSequence charsequence1, Bitmap bitmap) + { + charsequence = (new android.app.Notification.BigPictureStyle(b)).setBigContentTitle(charsequence).bigPicture(bitmap); + if (flag) + { + charsequence.setSummaryText(charsequence1); + } + } + + public void addBigTextStyle(CharSequence charsequence, boolean flag, CharSequence charsequence1, CharSequence charsequence2) + { + charsequence = (new android.app.Notification.BigTextStyle(b)).setBigContentTitle(charsequence).bigText(charsequence2); + if (flag) + { + charsequence.setSummaryText(charsequence1); + } + } + + public void addInboxStyle(CharSequence charsequence, boolean flag, CharSequence charsequence1, ArrayList arraylist) + { + charsequence = (new android.app.Notification.InboxStyle(b)).setBigContentTitle(charsequence); + if (flag) + { + charsequence.setSummaryText(charsequence1); + } + for (charsequence1 = arraylist.iterator(); charsequence1.hasNext(); charsequence.addLine((CharSequence)charsequence1.next())) { } + } + + public Notification build() + { + return b.build(); + } +} diff --git a/app/src/main/java/android/support/v4/app/SuperNotCalledException.java b/app/src/main/java/android/support/v4/app/SuperNotCalledException.java new file mode 100644 index 0000000..b45634e --- /dev/null +++ b/app/src/main/java/android/support/v4/app/SuperNotCalledException.java @@ -0,0 +1,16 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.app; + +import android.util.AndroidRuntimeException; + +final class SuperNotCalledException extends AndroidRuntimeException +{ + + public SuperNotCalledException(String s) + { + super(s); + } +} diff --git a/app/src/main/java/android/support/v4/content/Loader$OnLoadCompleteListener.java b/app/src/main/java/android/support/v4/content/Loader$OnLoadCompleteListener.java new file mode 100644 index 0000000..307e81d --- /dev/null +++ b/app/src/main/java/android/support/v4/content/Loader$OnLoadCompleteListener.java @@ -0,0 +1,13 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.content; + + +// Referenced classes of package android.support.v4.content: +// Loader + +public static interface +{ +} diff --git a/app/src/main/java/android/support/v4/content/Loader.java b/app/src/main/java/android/support/v4/content/Loader.java new file mode 100644 index 0000000..6168f77 --- /dev/null +++ b/app/src/main/java/android/support/v4/content/Loader.java @@ -0,0 +1,124 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.content; + +import android.support.v4.util.DebugUtils; +import java.io.FileDescriptor; +import java.io.PrintWriter; + +public class Loader +{ + public static interface OnLoadCompleteListener + { + } + + + boolean mAbandoned; + boolean mContentChanged; + int mId; + OnLoadCompleteListener mListener; + boolean mReset; + boolean mStarted; + + public String dataToString(Object obj) + { + StringBuilder stringbuilder = new StringBuilder(64); + DebugUtils.buildShortClassTag(obj, stringbuilder); + stringbuilder.append("}"); + return stringbuilder.toString(); + } + + public void dump(String s, FileDescriptor filedescriptor, PrintWriter printwriter, String as[]) + { + printwriter.print(s); + printwriter.print("mId="); + printwriter.print(mId); + printwriter.print(" mListener="); + printwriter.println(mListener); + printwriter.print(s); + printwriter.print("mStarted="); + printwriter.print(mStarted); + printwriter.print(" mContentChanged="); + printwriter.print(mContentChanged); + printwriter.print(" mAbandoned="); + printwriter.print(mAbandoned); + printwriter.print(" mReset="); + printwriter.println(mReset); + } + + protected void onReset() + { + } + + protected void onStartLoading() + { + } + + protected void onStopLoading() + { + } + + public void registerListener(int i, OnLoadCompleteListener onloadcompletelistener) + { + if (mListener != null) + { + throw new IllegalStateException("There is already a listener registered"); + } else + { + mListener = onloadcompletelistener; + mId = i; + return; + } + } + + public void reset() + { + onReset(); + mReset = true; + mStarted = false; + mAbandoned = false; + mContentChanged = false; + } + + public final void startLoading() + { + mStarted = true; + mReset = false; + mAbandoned = false; + onStartLoading(); + } + + public void stopLoading() + { + mStarted = false; + onStopLoading(); + } + + public String toString() + { + StringBuilder stringbuilder = new StringBuilder(64); + DebugUtils.buildShortClassTag(this, stringbuilder); + stringbuilder.append(" id="); + stringbuilder.append(mId); + stringbuilder.append("}"); + return stringbuilder.toString(); + } + + public void unregisterListener(OnLoadCompleteListener onloadcompletelistener) + { + if (mListener == null) + { + throw new IllegalStateException("No listener register"); + } + if (mListener != onloadcompletelistener) + { + throw new IllegalArgumentException("Attempting to unregister the wrong listener"); + } else + { + mListener = null; + return; + } + } +} diff --git a/app/src/main/java/android/support/v4/os/ParcelableCompat$CompatCreator.java b/app/src/main/java/android/support/v4/os/ParcelableCompat$CompatCreator.java new file mode 100644 index 0000000..a08ea39 --- /dev/null +++ b/app/src/main/java/android/support/v4/os/ParcelableCompat$CompatCreator.java @@ -0,0 +1,32 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.os; + +import android.os.Parcel; + +// Referenced classes of package android.support.v4.os: +// ParcelableCompat, ParcelableCompatCreatorCallbacks + +static class mCallbacks + implements android.os.patCreator +{ + + final ParcelableCompatCreatorCallbacks mCallbacks; + + public Object createFromParcel(Parcel parcel) + { + return mCallbacks.createFromParcel(parcel, null); + } + + public Object[] newArray(int i) + { + return mCallbacks.newArray(i); + } + + public s(ParcelableCompatCreatorCallbacks parcelablecompatcreatorcallbacks) + { + mCallbacks = parcelablecompatcreatorcallbacks; + } +} diff --git a/app/src/main/java/android/support/v4/os/ParcelableCompat.java b/app/src/main/java/android/support/v4/os/ParcelableCompat.java new file mode 100644 index 0000000..779b8da --- /dev/null +++ b/app/src/main/java/android/support/v4/os/ParcelableCompat.java @@ -0,0 +1,45 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.os; + +import android.os.Parcel; + +// Referenced classes of package android.support.v4.os: +// ParcelableCompatCreatorHoneycombMR2Stub, ParcelableCompatCreatorCallbacks + +public class ParcelableCompat +{ + static class CompatCreator + implements android.os.Parcelable.Creator + { + + final ParcelableCompatCreatorCallbacks mCallbacks; + + public Object createFromParcel(Parcel parcel) + { + return mCallbacks.createFromParcel(parcel, null); + } + + public Object[] newArray(int i) + { + return mCallbacks.newArray(i); + } + + public CompatCreator(ParcelableCompatCreatorCallbacks parcelablecompatcreatorcallbacks) + { + mCallbacks = parcelablecompatcreatorcallbacks; + } + } + + + public static android.os.Parcelable.Creator newCreator(ParcelableCompatCreatorCallbacks parcelablecompatcreatorcallbacks) + { + if (android.os.Build.VERSION.SDK_INT >= 13) + { + ParcelableCompatCreatorHoneycombMR2Stub.instantiate(parcelablecompatcreatorcallbacks); + } + return new CompatCreator(parcelablecompatcreatorcallbacks); + } +} diff --git a/app/src/main/java/android/support/v4/os/ParcelableCompatCreatorCallbacks.java b/app/src/main/java/android/support/v4/os/ParcelableCompatCreatorCallbacks.java new file mode 100644 index 0000000..00f40b8 --- /dev/null +++ b/app/src/main/java/android/support/v4/os/ParcelableCompatCreatorCallbacks.java @@ -0,0 +1,15 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.os; + +import android.os.Parcel; + +public interface ParcelableCompatCreatorCallbacks +{ + + public abstract Object createFromParcel(Parcel parcel, ClassLoader classloader); + + public abstract Object[] newArray(int i); +} diff --git a/app/src/main/java/android/support/v4/os/ParcelableCompatCreatorHoneycombMR2.java b/app/src/main/java/android/support/v4/os/ParcelableCompatCreatorHoneycombMR2.java new file mode 100644 index 0000000..132fc7a --- /dev/null +++ b/app/src/main/java/android/support/v4/os/ParcelableCompatCreatorHoneycombMR2.java @@ -0,0 +1,37 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.os; + +import android.os.Parcel; + +// Referenced classes of package android.support.v4.os: +// ParcelableCompatCreatorCallbacks + +class ParcelableCompatCreatorHoneycombMR2 + implements android.os.Parcelable.ClassLoaderCreator +{ + + private final ParcelableCompatCreatorCallbacks mCallbacks; + + public ParcelableCompatCreatorHoneycombMR2(ParcelableCompatCreatorCallbacks parcelablecompatcreatorcallbacks) + { + mCallbacks = parcelablecompatcreatorcallbacks; + } + + public Object createFromParcel(Parcel parcel) + { + return mCallbacks.createFromParcel(parcel, null); + } + + public Object createFromParcel(Parcel parcel, ClassLoader classloader) + { + return mCallbacks.createFromParcel(parcel, classloader); + } + + public Object[] newArray(int i) + { + return mCallbacks.newArray(i); + } +} diff --git a/app/src/main/java/android/support/v4/os/ParcelableCompatCreatorHoneycombMR2Stub.java b/app/src/main/java/android/support/v4/os/ParcelableCompatCreatorHoneycombMR2Stub.java new file mode 100644 index 0000000..51b59d4 --- /dev/null +++ b/app/src/main/java/android/support/v4/os/ParcelableCompatCreatorHoneycombMR2Stub.java @@ -0,0 +1,18 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.os; + + +// Referenced classes of package android.support.v4.os: +// ParcelableCompatCreatorHoneycombMR2, ParcelableCompatCreatorCallbacks + +class ParcelableCompatCreatorHoneycombMR2Stub +{ + + static android.os.Parcelable.Creator instantiate(ParcelableCompatCreatorCallbacks parcelablecompatcreatorcallbacks) + { + return new ParcelableCompatCreatorHoneycombMR2(parcelablecompatcreatorcallbacks); + } +} diff --git a/app/src/main/java/android/support/v4/util/DebugUtils.java b/app/src/main/java/android/support/v4/util/DebugUtils.java new file mode 100644 index 0000000..8320edb --- /dev/null +++ b/app/src/main/java/android/support/v4/util/DebugUtils.java @@ -0,0 +1,42 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.util; + + +public class DebugUtils +{ + + public static void buildShortClassTag(Object obj, StringBuilder stringbuilder) + { + String s; +label0: + { + if (obj == null) + { + stringbuilder.append("null"); + return; + } + String s1 = obj.getClass().getSimpleName(); + if (s1 != null) + { + s = s1; + if (s1.length() > 0) + { + break label0; + } + } + s1 = obj.getClass().getName(); + int i = s1.lastIndexOf('.'); + s = s1; + if (i > 0) + { + s = s1.substring(i + 1); + } + } + stringbuilder.append(s); + stringbuilder.append('{'); + stringbuilder.append(Integer.toHexString(System.identityHashCode(obj))); + } +} diff --git a/app/src/main/java/android/support/v4/util/LogWriter.java b/app/src/main/java/android/support/v4/util/LogWriter.java new file mode 100644 index 0000000..468ac5a --- /dev/null +++ b/app/src/main/java/android/support/v4/util/LogWriter.java @@ -0,0 +1,57 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.util; + +import android.util.Log; +import java.io.Writer; + +public class LogWriter extends Writer +{ + + private StringBuilder mBuilder; + private final String mTag; + + public LogWriter(String s) + { + mBuilder = new StringBuilder(128); + mTag = s; + } + + private void flushBuilder() + { + if (mBuilder.length() > 0) + { + Log.d(mTag, mBuilder.toString()); + mBuilder.delete(0, mBuilder.length()); + } + } + + public void close() + { + flushBuilder(); + } + + public void flush() + { + flushBuilder(); + } + + public void write(char ac[], int i, int j) + { + int k = 0; + while (k < j) + { + char c = ac[i + k]; + if (c == '\n') + { + flushBuilder(); + } else + { + mBuilder.append(c); + } + k++; + } + } +} diff --git a/app/src/main/java/android/support/v4/util/SparseArrayCompat.java b/app/src/main/java/android/support/v4/util/SparseArrayCompat.java new file mode 100644 index 0000000..09ed08d --- /dev/null +++ b/app/src/main/java/android/support/v4/util/SparseArrayCompat.java @@ -0,0 +1,125 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.util; + + +public class SparseArrayCompat +{ + + private static final Object DELETED = new Object(); + private boolean mGarbage; + private int mKeys[]; + private int mSize; + private Object mValues[]; + + public SparseArrayCompat() + { + this(10); + } + + public SparseArrayCompat(int i) + { + mGarbage = false; + i = idealIntArraySize(i); + mKeys = new int[i]; + mValues = new Object[i]; + mSize = 0; + } + + private void gc() + { + int l = mSize; + int j = 0; + int ai[] = mKeys; + Object aobj[] = mValues; + for (int i = 0; i < l;) + { + Object obj = aobj[i]; + int k = j; + if (obj != DELETED) + { + if (i != j) + { + ai[j] = ai[i]; + aobj[j] = obj; + } + k = j + 1; + } + i++; + j = k; + } + + mGarbage = false; + mSize = j; + } + + static int idealByteArraySize(int i) + { + int j = 4; + do + { +label0: + { + int k = i; + if (j < 32) + { + if (i > (1 << j) - 12) + { + break label0; + } + k = (1 << j) - 12; + } + return k; + } + j++; + } while (true); + } + + static int idealIntArraySize(int i) + { + return idealByteArraySize(i * 4) / 4; + } + + public void clear() + { + int j = mSize; + Object aobj[] = mValues; + for (int i = 0; i < j; i++) + { + aobj[i] = null; + } + + mSize = 0; + mGarbage = false; + } + + public int keyAt(int i) + { + if (mGarbage) + { + gc(); + } + return mKeys[i]; + } + + public int size() + { + if (mGarbage) + { + gc(); + } + return mSize; + } + + public Object valueAt(int i) + { + if (mGarbage) + { + gc(); + } + return mValues[i]; + } + +} diff --git a/app/src/main/java/android/support/v4/view/KeyEventCompat$BaseKeyEventVersionImpl.java b/app/src/main/java/android/support/v4/view/KeyEventCompat$BaseKeyEventVersionImpl.java new file mode 100644 index 0000000..ac7d8eb --- /dev/null +++ b/app/src/main/java/android/support/v4/view/KeyEventCompat$BaseKeyEventVersionImpl.java @@ -0,0 +1,80 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + + +// Referenced classes of package android.support.v4.view: +// KeyEventCompat + +static class + implements +{ + + private static int metaStateFilterDirectionalModifiers(int i, int j, int k, int l, int i1) + { + boolean flag1 = true; + boolean flag; + if ((j & k) != 0) + { + flag = true; + } else + { + flag = false; + } + l |= i1; + if ((j & l) != 0) + { + j = ((flag1) ? 1 : 0); + } else + { + j = 0; + } + if (flag) + { + if (j != 0) + { + throw new IllegalArgumentException("bad arguments"); + } + l = i & ~l; + } else + { + l = i; + if (j != 0) + { + return i & ~k; + } + } + return l; + } + + public boolean metaStateHasModifiers(int i, int j) + { + return metaStateFilterDirectionalModifiers(metaStateFilterDirectionalModifiers(normalizeMetaState(i) & 0xf7, j, 1, 64, 128), j, 2, 16, 32) == j; + } + + public boolean metaStateHasNoModifiers(int i) + { + return (normalizeMetaState(i) & 0xf7) == 0; + } + + public int normalizeMetaState(int i) + { + int j = i; + if ((i & 0xc0) != 0) + { + j = i | 1; + } + i = j; + if ((j & 0x30) != 0) + { + i = j | 2; + } + return i & 0xf7; + } + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/view/KeyEventCompat$HoneycombKeyEventVersionImpl.java b/app/src/main/java/android/support/v4/view/KeyEventCompat$HoneycombKeyEventVersionImpl.java new file mode 100644 index 0000000..5194041 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/KeyEventCompat$HoneycombKeyEventVersionImpl.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + + +// Referenced classes of package android.support.v4.view: +// KeyEventCompat, KeyEventCompatHoneycomb + +static class I + implements I +{ + + public boolean metaStateHasModifiers(int i, int j) + { + return KeyEventCompatHoneycomb.metaStateHasModifiers(i, j); + } + + public boolean metaStateHasNoModifiers(int i) + { + return KeyEventCompatHoneycomb.metaStateHasNoModifiers(i); + } + + I() + { + } +} diff --git a/app/src/main/java/android/support/v4/view/KeyEventCompat$KeyEventVersionImpl.java b/app/src/main/java/android/support/v4/view/KeyEventCompat$KeyEventVersionImpl.java new file mode 100644 index 0000000..0855d71 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/KeyEventCompat$KeyEventVersionImpl.java @@ -0,0 +1,17 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + + +// Referenced classes of package android.support.v4.view: +// KeyEventCompat + +static interface +{ + + public abstract boolean metaStateHasModifiers(int i, int j); + + public abstract boolean metaStateHasNoModifiers(int i); +} diff --git a/app/src/main/java/android/support/v4/view/KeyEventCompat.java b/app/src/main/java/android/support/v4/view/KeyEventCompat.java new file mode 100644 index 0000000..b74025e --- /dev/null +++ b/app/src/main/java/android/support/v4/view/KeyEventCompat.java @@ -0,0 +1,135 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.KeyEvent; + +// Referenced classes of package android.support.v4.view: +// KeyEventCompatHoneycomb + +public class KeyEventCompat +{ + static class BaseKeyEventVersionImpl + implements KeyEventVersionImpl + { + + private static int metaStateFilterDirectionalModifiers(int i, int j, int k, int l, int i1) + { + boolean flag1 = true; + boolean flag; + if ((j & k) != 0) + { + flag = true; + } else + { + flag = false; + } + l |= i1; + if ((j & l) != 0) + { + j = ((flag1) ? 1 : 0); + } else + { + j = 0; + } + if (flag) + { + if (j != 0) + { + throw new IllegalArgumentException("bad arguments"); + } + l = i & ~l; + } else + { + l = i; + if (j != 0) + { + return i & ~k; + } + } + return l; + } + + public boolean metaStateHasModifiers(int i, int j) + { + return metaStateFilterDirectionalModifiers(metaStateFilterDirectionalModifiers(normalizeMetaState(i) & 0xf7, j, 1, 64, 128), j, 2, 16, 32) == j; + } + + public boolean metaStateHasNoModifiers(int i) + { + return (normalizeMetaState(i) & 0xf7) == 0; + } + + public int normalizeMetaState(int i) + { + int j = i; + if ((i & 0xc0) != 0) + { + j = i | 1; + } + i = j; + if ((j & 0x30) != 0) + { + i = j | 2; + } + return i & 0xf7; + } + + BaseKeyEventVersionImpl() + { + } + } + + static class HoneycombKeyEventVersionImpl + implements KeyEventVersionImpl + { + + public boolean metaStateHasModifiers(int i, int j) + { + return KeyEventCompatHoneycomb.metaStateHasModifiers(i, j); + } + + public boolean metaStateHasNoModifiers(int i) + { + return KeyEventCompatHoneycomb.metaStateHasNoModifiers(i); + } + + HoneycombKeyEventVersionImpl() + { + } + } + + static interface KeyEventVersionImpl + { + + public abstract boolean metaStateHasModifiers(int i, int j); + + public abstract boolean metaStateHasNoModifiers(int i); + } + + + static final KeyEventVersionImpl IMPL; + + public static boolean hasModifiers(KeyEvent keyevent, int i) + { + return IMPL.metaStateHasModifiers(keyevent.getMetaState(), i); + } + + public static boolean hasNoModifiers(KeyEvent keyevent) + { + return IMPL.metaStateHasNoModifiers(keyevent.getMetaState()); + } + + static + { + if (android.os.Build.VERSION.SDK_INT >= 11) + { + IMPL = new HoneycombKeyEventVersionImpl(); + } else + { + IMPL = new BaseKeyEventVersionImpl(); + } + } +} diff --git a/app/src/main/java/android/support/v4/view/KeyEventCompatHoneycomb.java b/app/src/main/java/android/support/v4/view/KeyEventCompatHoneycomb.java new file mode 100644 index 0000000..17c452a --- /dev/null +++ b/app/src/main/java/android/support/v4/view/KeyEventCompatHoneycomb.java @@ -0,0 +1,21 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.KeyEvent; + +class KeyEventCompatHoneycomb +{ + + public static boolean metaStateHasModifiers(int i, int j) + { + return KeyEvent.metaStateHasModifiers(i, j); + } + + public static boolean metaStateHasNoModifiers(int i) + { + return KeyEvent.metaStateHasNoModifiers(i); + } +} diff --git a/app/src/main/java/android/support/v4/view/MotionEventCompat$BaseMotionEventVersionImpl.java b/app/src/main/java/android/support/v4/view/MotionEventCompat$BaseMotionEventVersionImpl.java new file mode 100644 index 0000000..4714d0c --- /dev/null +++ b/app/src/main/java/android/support/v4/view/MotionEventCompat$BaseMotionEventVersionImpl.java @@ -0,0 +1,57 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.MotionEvent; + +// Referenced classes of package android.support.v4.view: +// MotionEventCompat + +static class + implements +{ + + public int findPointerIndex(MotionEvent motionevent, int i) + { + return i != 0 ? -1 : 0; + } + + public int getPointerId(MotionEvent motionevent, int i) + { + if (i == 0) + { + return 0; + } else + { + throw new IndexOutOfBoundsException("Pre-Eclair does not support multiple pointers"); + } + } + + public float getX(MotionEvent motionevent, int i) + { + if (i == 0) + { + return motionevent.getX(); + } else + { + throw new IndexOutOfBoundsException("Pre-Eclair does not support multiple pointers"); + } + } + + public float getY(MotionEvent motionevent, int i) + { + if (i == 0) + { + return motionevent.getY(); + } else + { + throw new IndexOutOfBoundsException("Pre-Eclair does not support multiple pointers"); + } + } + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/view/MotionEventCompat$EclairMotionEventVersionImpl.java b/app/src/main/java/android/support/v4/view/MotionEventCompat$EclairMotionEventVersionImpl.java new file mode 100644 index 0000000..8dc86a5 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/MotionEventCompat$EclairMotionEventVersionImpl.java @@ -0,0 +1,39 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.MotionEvent; + +// Referenced classes of package android.support.v4.view: +// MotionEventCompat, MotionEventCompatEclair + +static class + implements +{ + + public int findPointerIndex(MotionEvent motionevent, int i) + { + return MotionEventCompatEclair.findPointerIndex(motionevent, i); + } + + public int getPointerId(MotionEvent motionevent, int i) + { + return MotionEventCompatEclair.getPointerId(motionevent, i); + } + + public float getX(MotionEvent motionevent, int i) + { + return MotionEventCompatEclair.getX(motionevent, i); + } + + public float getY(MotionEvent motionevent, int i) + { + return MotionEventCompatEclair.getY(motionevent, i); + } + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/view/MotionEventCompat$MotionEventVersionImpl.java b/app/src/main/java/android/support/v4/view/MotionEventCompat$MotionEventVersionImpl.java new file mode 100644 index 0000000..e234504 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/MotionEventCompat$MotionEventVersionImpl.java @@ -0,0 +1,22 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.MotionEvent; + +// Referenced classes of package android.support.v4.view: +// MotionEventCompat + +static interface +{ + + public abstract int findPointerIndex(MotionEvent motionevent, int i); + + public abstract int getPointerId(MotionEvent motionevent, int i); + + public abstract float getX(MotionEvent motionevent, int i); + + public abstract float getY(MotionEvent motionevent, int i); +} diff --git a/app/src/main/java/android/support/v4/view/MotionEventCompat.java b/app/src/main/java/android/support/v4/view/MotionEventCompat.java new file mode 100644 index 0000000..3c64e0f --- /dev/null +++ b/app/src/main/java/android/support/v4/view/MotionEventCompat.java @@ -0,0 +1,140 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.MotionEvent; + +// Referenced classes of package android.support.v4.view: +// MotionEventCompatEclair + +public class MotionEventCompat +{ + static class BaseMotionEventVersionImpl + implements MotionEventVersionImpl + { + + public int findPointerIndex(MotionEvent motionevent, int i) + { + return i != 0 ? -1 : 0; + } + + public int getPointerId(MotionEvent motionevent, int i) + { + if (i == 0) + { + return 0; + } else + { + throw new IndexOutOfBoundsException("Pre-Eclair does not support multiple pointers"); + } + } + + public float getX(MotionEvent motionevent, int i) + { + if (i == 0) + { + return motionevent.getX(); + } else + { + throw new IndexOutOfBoundsException("Pre-Eclair does not support multiple pointers"); + } + } + + public float getY(MotionEvent motionevent, int i) + { + if (i == 0) + { + return motionevent.getY(); + } else + { + throw new IndexOutOfBoundsException("Pre-Eclair does not support multiple pointers"); + } + } + + BaseMotionEventVersionImpl() + { + } + } + + static class EclairMotionEventVersionImpl + implements MotionEventVersionImpl + { + + public int findPointerIndex(MotionEvent motionevent, int i) + { + return MotionEventCompatEclair.findPointerIndex(motionevent, i); + } + + public int getPointerId(MotionEvent motionevent, int i) + { + return MotionEventCompatEclair.getPointerId(motionevent, i); + } + + public float getX(MotionEvent motionevent, int i) + { + return MotionEventCompatEclair.getX(motionevent, i); + } + + public float getY(MotionEvent motionevent, int i) + { + return MotionEventCompatEclair.getY(motionevent, i); + } + + EclairMotionEventVersionImpl() + { + } + } + + static interface MotionEventVersionImpl + { + + public abstract int findPointerIndex(MotionEvent motionevent, int i); + + public abstract int getPointerId(MotionEvent motionevent, int i); + + public abstract float getX(MotionEvent motionevent, int i); + + public abstract float getY(MotionEvent motionevent, int i); + } + + + static final MotionEventVersionImpl IMPL; + + public static int findPointerIndex(MotionEvent motionevent, int i) + { + return IMPL.findPointerIndex(motionevent, i); + } + + public static int getActionIndex(MotionEvent motionevent) + { + return (motionevent.getAction() & 0xff00) >> 8; + } + + public static int getPointerId(MotionEvent motionevent, int i) + { + return IMPL.getPointerId(motionevent, i); + } + + public static float getX(MotionEvent motionevent, int i) + { + return IMPL.getX(motionevent, i); + } + + public static float getY(MotionEvent motionevent, int i) + { + return IMPL.getY(motionevent, i); + } + + static + { + if (android.os.Build.VERSION.SDK_INT >= 5) + { + IMPL = new EclairMotionEventVersionImpl(); + } else + { + IMPL = new BaseMotionEventVersionImpl(); + } + } +} diff --git a/app/src/main/java/android/support/v4/view/MotionEventCompatEclair.java b/app/src/main/java/android/support/v4/view/MotionEventCompatEclair.java new file mode 100644 index 0000000..2a084cd --- /dev/null +++ b/app/src/main/java/android/support/v4/view/MotionEventCompatEclair.java @@ -0,0 +1,31 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.MotionEvent; + +class MotionEventCompatEclair +{ + + public static int findPointerIndex(MotionEvent motionevent, int i) + { + return motionevent.findPointerIndex(i); + } + + public static int getPointerId(MotionEvent motionevent, int i) + { + return motionevent.getPointerId(i); + } + + public static float getX(MotionEvent motionevent, int i) + { + return motionevent.getX(i); + } + + public static float getY(MotionEvent motionevent, int i) + { + return motionevent.getY(i); + } +} diff --git a/app/src/main/java/android/support/v4/view/PagerAdapter.java b/app/src/main/java/android/support/v4/view/PagerAdapter.java new file mode 100644 index 0000000..a5096e7 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/PagerAdapter.java @@ -0,0 +1,97 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.database.DataSetObservable; +import android.database.DataSetObserver; +import android.os.Parcelable; +import android.view.View; +import android.view.ViewGroup; + +public abstract class PagerAdapter +{ + + private DataSetObservable mObservable; + + public void destroyItem(View view, int i, Object obj) + { + throw new UnsupportedOperationException("Required method destroyItem was not overridden"); + } + + public void destroyItem(ViewGroup viewgroup, int i, Object obj) + { + destroyItem(((View) (viewgroup)), i, obj); + } + + public void finishUpdate(View view) + { + } + + public void finishUpdate(ViewGroup viewgroup) + { + finishUpdate(((View) (viewgroup))); + } + + public abstract int getCount(); + + public int getItemPosition(Object obj) + { + return -1; + } + + public float getPageWidth(int i) + { + return 1.0F; + } + + public Object instantiateItem(View view, int i) + { + throw new UnsupportedOperationException("Required method instantiateItem was not overridden"); + } + + public Object instantiateItem(ViewGroup viewgroup, int i) + { + return instantiateItem(((View) (viewgroup)), i); + } + + public abstract boolean isViewFromObject(View view, Object obj); + + void registerDataSetObserver(DataSetObserver datasetobserver) + { + mObservable.registerObserver(datasetobserver); + } + + public void restoreState(Parcelable parcelable, ClassLoader classloader) + { + } + + public Parcelable saveState() + { + return null; + } + + public void setPrimaryItem(View view, int i, Object obj) + { + } + + public void setPrimaryItem(ViewGroup viewgroup, int i, Object obj) + { + setPrimaryItem(((View) (viewgroup)), i, obj); + } + + public void startUpdate(View view) + { + } + + public void startUpdate(ViewGroup viewgroup) + { + startUpdate(((View) (viewgroup))); + } + + void unregisterDataSetObserver(DataSetObserver datasetobserver) + { + mObservable.unregisterObserver(datasetobserver); + } +} diff --git a/app/src/main/java/android/support/v4/view/VelocityTrackerCompat$BaseVelocityTrackerVersionImpl.java b/app/src/main/java/android/support/v4/view/VelocityTrackerCompat$BaseVelocityTrackerVersionImpl.java new file mode 100644 index 0000000..e3d3bcb --- /dev/null +++ b/app/src/main/java/android/support/v4/view/VelocityTrackerCompat$BaseVelocityTrackerVersionImpl.java @@ -0,0 +1,24 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.VelocityTracker; + +// Referenced classes of package android.support.v4.view: +// VelocityTrackerCompat + +static class + implements +{ + + public float getXVelocity(VelocityTracker velocitytracker, int i) + { + return velocitytracker.getXVelocity(); + } + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/view/VelocityTrackerCompat$HoneycombVelocityTrackerVersionImpl.java b/app/src/main/java/android/support/v4/view/VelocityTrackerCompat$HoneycombVelocityTrackerVersionImpl.java new file mode 100644 index 0000000..568cd40 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/VelocityTrackerCompat$HoneycombVelocityTrackerVersionImpl.java @@ -0,0 +1,24 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.VelocityTracker; + +// Referenced classes of package android.support.v4.view: +// VelocityTrackerCompat, VelocityTrackerCompatHoneycomb + +static class + implements +{ + + public float getXVelocity(VelocityTracker velocitytracker, int i) + { + return VelocityTrackerCompatHoneycomb.getXVelocity(velocitytracker, i); + } + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/view/VelocityTrackerCompat$VelocityTrackerVersionImpl.java b/app/src/main/java/android/support/v4/view/VelocityTrackerCompat$VelocityTrackerVersionImpl.java new file mode 100644 index 0000000..0311a81 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/VelocityTrackerCompat$VelocityTrackerVersionImpl.java @@ -0,0 +1,16 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.VelocityTracker; + +// Referenced classes of package android.support.v4.view: +// VelocityTrackerCompat + +static interface +{ + + public abstract float getXVelocity(VelocityTracker velocitytracker, int i); +} diff --git a/app/src/main/java/android/support/v4/view/VelocityTrackerCompat.java b/app/src/main/java/android/support/v4/view/VelocityTrackerCompat.java new file mode 100644 index 0000000..d194964 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/VelocityTrackerCompat.java @@ -0,0 +1,66 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.VelocityTracker; + +// Referenced classes of package android.support.v4.view: +// VelocityTrackerCompatHoneycomb + +public class VelocityTrackerCompat +{ + static class BaseVelocityTrackerVersionImpl + implements VelocityTrackerVersionImpl + { + + public float getXVelocity(VelocityTracker velocitytracker, int i) + { + return velocitytracker.getXVelocity(); + } + + BaseVelocityTrackerVersionImpl() + { + } + } + + static class HoneycombVelocityTrackerVersionImpl + implements VelocityTrackerVersionImpl + { + + public float getXVelocity(VelocityTracker velocitytracker, int i) + { + return VelocityTrackerCompatHoneycomb.getXVelocity(velocitytracker, i); + } + + HoneycombVelocityTrackerVersionImpl() + { + } + } + + static interface VelocityTrackerVersionImpl + { + + public abstract float getXVelocity(VelocityTracker velocitytracker, int i); + } + + + static final VelocityTrackerVersionImpl IMPL; + + public static float getXVelocity(VelocityTracker velocitytracker, int i) + { + return IMPL.getXVelocity(velocitytracker, i); + } + + static + { + if (android.os.Build.VERSION.SDK_INT >= 11) + { + IMPL = new HoneycombVelocityTrackerVersionImpl(); + } else + { + IMPL = new BaseVelocityTrackerVersionImpl(); + } + } +} diff --git a/app/src/main/java/android/support/v4/view/VelocityTrackerCompatHoneycomb.java b/app/src/main/java/android/support/v4/view/VelocityTrackerCompatHoneycomb.java new file mode 100644 index 0000000..423d025 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/VelocityTrackerCompatHoneycomb.java @@ -0,0 +1,16 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.VelocityTracker; + +class VelocityTrackerCompatHoneycomb +{ + + public static float getXVelocity(VelocityTracker velocitytracker, int i) + { + return velocitytracker.getXVelocity(i); + } +} diff --git a/app/src/main/java/android/support/v4/view/ViewCompat$BaseViewCompatImpl.java b/app/src/main/java/android/support/v4/view/ViewCompat$BaseViewCompatImpl.java new file mode 100644 index 0000000..11b32a1 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewCompat$BaseViewCompatImpl.java @@ -0,0 +1,49 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.graphics.Paint; +import android.view.View; + +// Referenced classes of package android.support.v4.view: +// ViewCompat + +static class + implements +{ + + public boolean canScrollHorizontally(View view, int i) + { + return false; + } + + long getFrameTime() + { + return 10L; + } + + public int getOverScrollMode(View view) + { + return 2; + } + + public void postInvalidateOnAnimation(View view) + { + view.postInvalidateDelayed(getFrameTime()); + } + + public void postOnAnimation(View view, Runnable runnable) + { + view.postDelayed(runnable, getFrameTime()); + } + + public void setLayerType(View view, int i, Paint paint) + { + } + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/view/ViewCompat$GBViewCompatImpl.java b/app/src/main/java/android/support/v4/view/ViewCompat$GBViewCompatImpl.java new file mode 100644 index 0000000..7bda675 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewCompat$GBViewCompatImpl.java @@ -0,0 +1,23 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.View; + +// Referenced classes of package android.support.v4.view: +// ViewCompat, ViewCompatGingerbread + +static class l extends l +{ + + public int getOverScrollMode(View view) + { + return ViewCompatGingerbread.getOverScrollMode(view); + } + + l() + { + } +} diff --git a/app/src/main/java/android/support/v4/view/ViewCompat$HCViewCompatImpl.java b/app/src/main/java/android/support/v4/view/ViewCompat$HCViewCompatImpl.java new file mode 100644 index 0000000..bc5733e --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewCompat$HCViewCompatImpl.java @@ -0,0 +1,29 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.graphics.Paint; +import android.view.View; + +// Referenced classes of package android.support.v4.view: +// ViewCompat, ViewCompatHC + +static class _cls9 extends _cls9 +{ + + long getFrameTime() + { + return ViewCompatHC.getFrameTime(); + } + + public void setLayerType(View view, int i, Paint paint) + { + ViewCompatHC.setLayerType(view, i, paint); + } + + _cls9() + { + } +} diff --git a/app/src/main/java/android/support/v4/view/ViewCompat$ICSViewCompatImpl.java b/app/src/main/java/android/support/v4/view/ViewCompat$ICSViewCompatImpl.java new file mode 100644 index 0000000..75a6e6a --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewCompat$ICSViewCompatImpl.java @@ -0,0 +1,23 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.View; + +// Referenced classes of package android.support.v4.view: +// ViewCompat, ViewCompatICS + +static class extends +{ + + public boolean canScrollHorizontally(View view, int i) + { + return ViewCompatICS.canScrollHorizontally(view, i); + } + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/view/ViewCompat$JBViewCompatImpl.java b/app/src/main/java/android/support/v4/view/ViewCompat$JBViewCompatImpl.java new file mode 100644 index 0000000..3baed6f --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewCompat$JBViewCompatImpl.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.View; + +// Referenced classes of package android.support.v4.view: +// ViewCompat, ViewCompatJB + +static class extends +{ + + public void postInvalidateOnAnimation(View view) + { + ViewCompatJB.postInvalidateOnAnimation(view); + } + + public void postOnAnimation(View view, Runnable runnable) + { + ViewCompatJB.postOnAnimation(view, runnable); + } + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/view/ViewCompat$JbMr1ViewCompatImpl.java b/app/src/main/java/android/support/v4/view/ViewCompat$JbMr1ViewCompatImpl.java new file mode 100644 index 0000000..e48b4ac --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewCompat$JbMr1ViewCompatImpl.java @@ -0,0 +1,17 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + + +// Referenced classes of package android.support.v4.view: +// ViewCompat + +static class extends +{ + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/view/ViewCompat$ViewCompatImpl.java b/app/src/main/java/android/support/v4/view/ViewCompat$ViewCompatImpl.java new file mode 100644 index 0000000..2e3b091 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewCompat$ViewCompatImpl.java @@ -0,0 +1,25 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.graphics.Paint; +import android.view.View; + +// Referenced classes of package android.support.v4.view: +// ViewCompat + +static interface +{ + + public abstract boolean canScrollHorizontally(View view, int i); + + public abstract int getOverScrollMode(View view); + + public abstract void postInvalidateOnAnimation(View view); + + public abstract void postOnAnimation(View view, Runnable runnable); + + public abstract void setLayerType(View view, int i, Paint paint); +} diff --git a/app/src/main/java/android/support/v4/view/ViewCompat.java b/app/src/main/java/android/support/v4/view/ViewCompat.java new file mode 100644 index 0000000..afe4e1b --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewCompat.java @@ -0,0 +1,192 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.graphics.Paint; +import android.view.View; + +// Referenced classes of package android.support.v4.view: +// ViewCompatGingerbread, ViewCompatHC, ViewCompatICS, ViewCompatJB + +public class ViewCompat +{ + static class BaseViewCompatImpl + implements ViewCompatImpl + { + + public boolean canScrollHorizontally(View view, int i) + { + return false; + } + + long getFrameTime() + { + return 10L; + } + + public int getOverScrollMode(View view) + { + return 2; + } + + public void postInvalidateOnAnimation(View view) + { + view.postInvalidateDelayed(getFrameTime()); + } + + public void postOnAnimation(View view, Runnable runnable) + { + view.postDelayed(runnable, getFrameTime()); + } + + public void setLayerType(View view, int i, Paint paint) + { + } + + BaseViewCompatImpl() + { + } + } + + static class GBViewCompatImpl extends BaseViewCompatImpl + { + + public int getOverScrollMode(View view) + { + return ViewCompatGingerbread.getOverScrollMode(view); + } + + GBViewCompatImpl() + { + } + } + + static class HCViewCompatImpl extends GBViewCompatImpl + { + + long getFrameTime() + { + return ViewCompatHC.getFrameTime(); + } + + public void setLayerType(View view, int i, Paint paint) + { + ViewCompatHC.setLayerType(view, i, paint); + } + + HCViewCompatImpl() + { + } + } + + static class ICSViewCompatImpl extends HCViewCompatImpl + { + + public boolean canScrollHorizontally(View view, int i) + { + return ViewCompatICS.canScrollHorizontally(view, i); + } + + ICSViewCompatImpl() + { + } + } + + static class JBViewCompatImpl extends ICSViewCompatImpl + { + + public void postInvalidateOnAnimation(View view) + { + ViewCompatJB.postInvalidateOnAnimation(view); + } + + public void postOnAnimation(View view, Runnable runnable) + { + ViewCompatJB.postOnAnimation(view, runnable); + } + + JBViewCompatImpl() + { + } + } + + static class JbMr1ViewCompatImpl extends JBViewCompatImpl + { + + JbMr1ViewCompatImpl() + { + } + } + + static interface ViewCompatImpl + { + + public abstract boolean canScrollHorizontally(View view, int i); + + public abstract int getOverScrollMode(View view); + + public abstract void postInvalidateOnAnimation(View view); + + public abstract void postOnAnimation(View view, Runnable runnable); + + public abstract void setLayerType(View view, int i, Paint paint); + } + + + static final ViewCompatImpl IMPL; + + public static boolean canScrollHorizontally(View view, int i) + { + return IMPL.canScrollHorizontally(view, i); + } + + public static int getOverScrollMode(View view) + { + return IMPL.getOverScrollMode(view); + } + + public static void postInvalidateOnAnimation(View view) + { + IMPL.postInvalidateOnAnimation(view); + } + + public static void postOnAnimation(View view, Runnable runnable) + { + IMPL.postOnAnimation(view, runnable); + } + + public static void setLayerType(View view, int i, Paint paint) + { + IMPL.setLayerType(view, i, paint); + } + + static + { + int i = android.os.Build.VERSION.SDK_INT; + if (i >= 17) + { + IMPL = new JbMr1ViewCompatImpl(); + } else + if (i >= 16) + { + IMPL = new JBViewCompatImpl(); + } else + if (i >= 14) + { + IMPL = new ICSViewCompatImpl(); + } else + if (i >= 11) + { + IMPL = new HCViewCompatImpl(); + } else + if (i >= 9) + { + IMPL = new GBViewCompatImpl(); + } else + { + IMPL = new BaseViewCompatImpl(); + } + } +} diff --git a/app/src/main/java/android/support/v4/view/ViewCompatGingerbread.java b/app/src/main/java/android/support/v4/view/ViewCompatGingerbread.java new file mode 100644 index 0000000..0715c93 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewCompatGingerbread.java @@ -0,0 +1,16 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.View; + +class ViewCompatGingerbread +{ + + public static int getOverScrollMode(View view) + { + return view.getOverScrollMode(); + } +} diff --git a/app/src/main/java/android/support/v4/view/ViewCompatHC.java b/app/src/main/java/android/support/v4/view/ViewCompatHC.java new file mode 100644 index 0000000..a6e6fe6 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewCompatHC.java @@ -0,0 +1,23 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.animation.ValueAnimator; +import android.graphics.Paint; +import android.view.View; + +class ViewCompatHC +{ + + static long getFrameTime() + { + return ValueAnimator.getFrameDelay(); + } + + public static void setLayerType(View view, int i, Paint paint) + { + view.setLayerType(i, paint); + } +} diff --git a/app/src/main/java/android/support/v4/view/ViewCompatICS.java b/app/src/main/java/android/support/v4/view/ViewCompatICS.java new file mode 100644 index 0000000..b5b8a6b --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewCompatICS.java @@ -0,0 +1,16 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.View; + +class ViewCompatICS +{ + + public static boolean canScrollHorizontally(View view, int i) + { + return view.canScrollHorizontally(i); + } +} diff --git a/app/src/main/java/android/support/v4/view/ViewCompatJB.java b/app/src/main/java/android/support/v4/view/ViewCompatJB.java new file mode 100644 index 0000000..49fc563 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewCompatJB.java @@ -0,0 +1,21 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.View; + +public class ViewCompatJB +{ + + public static void postInvalidateOnAnimation(View view) + { + view.postInvalidateOnAnimation(); + } + + public static void postOnAnimation(View view, Runnable runnable) + { + view.postOnAnimation(runnable); + } +} diff --git a/app/src/main/java/android/support/v4/view/ViewPager$1.java b/app/src/main/java/android/support/v4/view/ViewPager$1.java new file mode 100644 index 0000000..e69de29 diff --git a/app/src/main/java/android/support/v4/view/ViewPager$2.java b/app/src/main/java/android/support/v4/view/ViewPager$2.java new file mode 100644 index 0000000..2e636dc --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewPager$2.java @@ -0,0 +1,25 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.animation.Interpolator; + +// Referenced classes of package android.support.v4.view: +// ViewPager + +static final class + implements Interpolator +{ + + public float getInterpolation(float f) + { + f--; + return f * f * f * f * f + 1.0F; + } + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/view/ViewPager$Decor.java b/app/src/main/java/android/support/v4/view/ViewPager$Decor.java new file mode 100644 index 0000000..e3c6fcb --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewPager$Decor.java @@ -0,0 +1,13 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + + +// Referenced classes of package android.support.v4.view: +// ViewPager + +static interface +{ +} diff --git a/app/src/main/java/android/support/v4/view/ViewPager$ItemInfo.java b/app/src/main/java/android/support/v4/view/ViewPager$ItemInfo.java new file mode 100644 index 0000000..e157e1e --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewPager$ItemInfo.java @@ -0,0 +1,23 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + + +// Referenced classes of package android.support.v4.view: +// ViewPager + +static class +{ + + Object object; + float offset; + int position; + boolean scrolling; + float widthFactor; + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/view/ViewPager$LayoutParams.java b/app/src/main/java/android/support/v4/view/ViewPager$LayoutParams.java new file mode 100644 index 0000000..09eed53 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewPager$LayoutParams.java @@ -0,0 +1,38 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; + +// Referenced classes of package android.support.v4.view: +// ViewPager + +public static class gravity extends android.view.youtParams +{ + + int childIndex; + public int gravity; + public boolean isDecor; + boolean needsMeasure; + int position; + float widthFactor; + + public () + { + super(-1, -1); + widthFactor = 0.0F; + } + + public widthFactor(Context context, AttributeSet attributeset) + { + super(context, attributeset); + widthFactor = 0.0F; + context = context.obtainStyledAttributes(attributeset, ViewPager.access$400()); + gravity = context.getInteger(0, 48); + context.recycle(); + } +} diff --git a/app/src/main/java/android/support/v4/view/ViewPager$OnAdapterChangeListener.java b/app/src/main/java/android/support/v4/view/ViewPager$OnAdapterChangeListener.java new file mode 100644 index 0000000..e2ceffe --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewPager$OnAdapterChangeListener.java @@ -0,0 +1,15 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + + +// Referenced classes of package android.support.v4.view: +// ViewPager, PagerAdapter + +static interface +{ + + public abstract void onAdapterChanged(PagerAdapter pageradapter, PagerAdapter pageradapter1); +} diff --git a/app/src/main/java/android/support/v4/view/ViewPager$OnPageChangeListener.java b/app/src/main/java/android/support/v4/view/ViewPager$OnPageChangeListener.java new file mode 100644 index 0000000..4f8b2fa --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewPager$OnPageChangeListener.java @@ -0,0 +1,19 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + + +// Referenced classes of package android.support.v4.view: +// ViewPager + +public static interface +{ + + public abstract void onPageScrollStateChanged(int i); + + public abstract void onPageScrolled(int i, float f, int j); + + public abstract void onPageSelected(int i); +} diff --git a/app/src/main/java/android/support/v4/view/ViewPager$PageTransformer.java b/app/src/main/java/android/support/v4/view/ViewPager$PageTransformer.java new file mode 100644 index 0000000..3356ad7 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewPager$PageTransformer.java @@ -0,0 +1,16 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.View; + +// Referenced classes of package android.support.v4.view: +// ViewPager + +public static interface +{ + + public abstract void transformPage(View view, float f); +} diff --git a/app/src/main/java/android/support/v4/view/ViewPager$PagerObserver.java b/app/src/main/java/android/support/v4/view/ViewPager$PagerObserver.java new file mode 100644 index 0000000..af43650 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewPager$PagerObserver.java @@ -0,0 +1,37 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.database.DataSetObserver; + +// Referenced classes of package android.support.v4.view: +// ViewPager + +private class extends DataSetObserver +{ + + final ViewPager this$0; + + public void onChanged() + { + dataSetChanged(); + } + + public void onInvalidated() + { + dataSetChanged(); + } + + private () + { + this$0 = ViewPager.this; + super(); + } + + this._cls0(this._cls0 _pcls0) + { + this(); + } +} diff --git a/app/src/main/java/android/support/v4/view/ViewPager$SavedState$1.java b/app/src/main/java/android/support/v4/view/ViewPager$SavedState$1.java new file mode 100644 index 0000000..1bba031 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewPager$SavedState$1.java @@ -0,0 +1,40 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.os.Parcel; +import android.support.v4.os.ParcelableCompatCreatorCallbacks; + +// Referenced classes of package android.support.v4.view: +// ViewPager + +static final class llbacks + implements ParcelableCompatCreatorCallbacks +{ + + public llbacks createFromParcel(Parcel parcel, ClassLoader classloader) + { + return new nit>(parcel, classloader); + } + + public volatile Object createFromParcel(Parcel parcel, ClassLoader classloader) + { + return createFromParcel(parcel, classloader); + } + + public createFromParcel[] newArray(int i) + { + return new createFromParcel[i]; + } + + public volatile Object[] newArray(int i) + { + return newArray(i); + } + + llbacks() + { + } +} diff --git a/app/src/main/java/android/support/v4/view/ViewPager$SavedState.java b/app/src/main/java/android/support/v4/view/ViewPager$SavedState.java new file mode 100644 index 0000000..e9c9ff4 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewPager$SavedState.java @@ -0,0 +1,75 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.os.Parcel; +import android.os.Parcelable; +import android.support.v4.os.ParcelableCompat; +import android.support.v4.os.ParcelableCompatCreatorCallbacks; + +// Referenced classes of package android.support.v4.view: +// ViewPager + +public static class loader extends android.view.SavedState +{ + + public static final android.os.CompatCreatorCallbacks CREATOR = ParcelableCompat.newCreator(new ParcelableCompatCreatorCallbacks() { + + public ViewPager.SavedState createFromParcel(Parcel parcel, ClassLoader classloader) + { + return new ViewPager.SavedState(parcel, classloader); + } + + public volatile Object createFromParcel(Parcel parcel, ClassLoader classloader) + { + return createFromParcel(parcel, classloader); + } + + public ViewPager.SavedState[] newArray(int i) + { + return new ViewPager.SavedState[i]; + } + + public volatile Object[] newArray(int i) + { + return newArray(i); + } + + }); + Parcelable adapterState; + ClassLoader loader; + int position; + + public String toString() + { + return (new StringBuilder()).append("FragmentPager.SavedState{").append(Integer.toHexString(System.identityHashCode(this))).append(" position=").append(position).append("}").toString(); + } + + public void writeToParcel(Parcel parcel, int i) + { + super.riteToParcel(parcel, i); + parcel.writeInt(position); + parcel.writeParcelable(adapterState, i); + } + + + _cls1(Parcel parcel, ClassLoader classloader) + { + super(parcel); + ClassLoader classloader1 = classloader; + if (classloader == null) + { + classloader1 = getClass().getClassLoader(); + } + position = parcel.readInt(); + adapterState = parcel.readParcelable(classloader1); + loader = classloader1; + } + + public loader(Parcelable parcelable) + { + super(parcelable); + } +} diff --git a/app/src/main/java/android/support/v4/view/ViewPager$ViewPositionComparator.java b/app/src/main/java/android/support/v4/view/ViewPager$ViewPositionComparator.java new file mode 100644 index 0000000..0420790 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewPager$ViewPositionComparator.java @@ -0,0 +1,38 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.view.View; +import java.util.Comparator; + +// Referenced classes of package android.support.v4.view: +// ViewPager + +static class + implements Comparator +{ + + public int compare(View view, View view1) + { + view = ()view.getLayoutParams(); + view1 = ()view1.getLayoutParams(); + if ((() (view)). != (() (view1)).) + { + return !(() (view)). ? -1 : 1; + } else + { + return (() (view)). - (() (view1)).; + } + } + + public volatile int compare(Object obj, Object obj1) + { + return compare((View)obj, (View)obj1); + } + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/view/ViewPager.java b/app/src/main/java/android/support/v4/view/ViewPager.java new file mode 100644 index 0000000..6222df7 --- /dev/null +++ b/app/src/main/java/android/support/v4/view/ViewPager.java @@ -0,0 +1,2779 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.view; + +import android.content.Context; +import android.content.res.Resources; +import android.content.res.TypedArray; +import android.database.DataSetObserver; +import android.graphics.Canvas; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.os.Parcel; +import android.os.Parcelable; +import android.support.v4.os.ParcelableCompat; +import android.support.v4.os.ParcelableCompatCreatorCallbacks; +import android.support.v4.widget.EdgeEffectCompat; +import android.util.AttributeSet; +import android.util.FloatMath; +import android.util.Log; +import android.view.FocusFinder; +import android.view.KeyEvent; +import android.view.MotionEvent; +import android.view.SoundEffectConstants; +import android.view.VelocityTracker; +import android.view.View; +import android.view.ViewGroup; +import android.view.accessibility.AccessibilityEvent; +import android.view.animation.Interpolator; +import android.widget.Scroller; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; + +// Referenced classes of package android.support.v4.view: +// PagerAdapter, ViewCompat, MotionEventCompat, KeyEventCompat, +// VelocityTrackerCompat + +public class ViewPager extends ViewGroup +{ + static interface Decor + { + } + + static class ItemInfo + { + + Object object; + float offset; + int position; + boolean scrolling; + float widthFactor; + + ItemInfo() + { + } + } + + public static class LayoutParams extends android.view.ViewGroup.LayoutParams + { + + int childIndex; + public int gravity; + public boolean isDecor; + boolean needsMeasure; + int position; + float widthFactor; + + public LayoutParams() + { + super(-1, -1); + widthFactor = 0.0F; + } + + public LayoutParams(Context context, AttributeSet attributeset) + { + super(context, attributeset); + widthFactor = 0.0F; + context = context.obtainStyledAttributes(attributeset, ViewPager.LAYOUT_ATTRS); + gravity = context.getInteger(0, 48); + context.recycle(); + } + } + + static interface OnAdapterChangeListener + { + + public abstract void onAdapterChanged(PagerAdapter pageradapter, PagerAdapter pageradapter1); + } + + public static interface OnPageChangeListener + { + + public abstract void onPageScrollStateChanged(int i); + + public abstract void onPageScrolled(int i, float f, int j); + + public abstract void onPageSelected(int i); + } + + public static interface PageTransformer + { + + public abstract void transformPage(View view, float f); + } + + private class PagerObserver extends DataSetObserver + { + + final ViewPager this$0; + + public void onChanged() + { + dataSetChanged(); + } + + public void onInvalidated() + { + dataSetChanged(); + } + + private PagerObserver() + { + this$0 = ViewPager.this; + super(); + } + + } + + public static class SavedState extends android.view.View.BaseSavedState + { + + public static final android.os.Parcelable.Creator CREATOR = ParcelableCompat.newCreator(new ParcelableCompatCreatorCallbacks() { + + public SavedState createFromParcel(Parcel parcel, ClassLoader classloader) + { + return new SavedState(parcel, classloader); + } + + public volatile Object createFromParcel(Parcel parcel, ClassLoader classloader) + { + return createFromParcel(parcel, classloader); + } + + public SavedState[] newArray(int i) + { + return new SavedState[i]; + } + + public volatile Object[] newArray(int i) + { + return newArray(i); + } + + }); + Parcelable adapterState; + ClassLoader loader; + int position; + + public String toString() + { + return (new StringBuilder()).append("FragmentPager.SavedState{").append(Integer.toHexString(System.identityHashCode(this))).append(" position=").append(position).append("}").toString(); + } + + public void writeToParcel(Parcel parcel, int i) + { + super.writeToParcel(parcel, i); + parcel.writeInt(position); + parcel.writeParcelable(adapterState, i); + } + + + SavedState(Parcel parcel, ClassLoader classloader) + { + super(parcel); + ClassLoader classloader1 = classloader; + if (classloader == null) + { + classloader1 = getClass().getClassLoader(); + } + position = parcel.readInt(); + adapterState = parcel.readParcelable(classloader1); + loader = classloader1; + } + + public SavedState(Parcelable parcelable) + { + super(parcelable); + } + } + + static class ViewPositionComparator + implements Comparator + { + + public int compare(View view, View view1) + { + view = (LayoutParams)view.getLayoutParams(); + view1 = (LayoutParams)view1.getLayoutParams(); + if (((LayoutParams) (view)).isDecor != ((LayoutParams) (view1)).isDecor) + { + return !((LayoutParams) (view)).isDecor ? -1 : 1; + } else + { + return ((LayoutParams) (view)).position - ((LayoutParams) (view1)).position; + } + } + + public volatile int compare(Object obj, Object obj1) + { + return compare((View)obj, (View)obj1); + } + + ViewPositionComparator() + { + } + } + + + private static final Comparator COMPARATOR = new Comparator() { + + public int compare(ItemInfo iteminfo, ItemInfo iteminfo1) + { + return iteminfo.position - iteminfo1.position; + } + + public volatile int compare(Object obj, Object obj1) + { + return compare((ItemInfo)obj, (ItemInfo)obj1); + } + + }; + private static final int LAYOUT_ATTRS[] = { + 0x10100b3 + }; + private static final Interpolator sInterpolator = new Interpolator() { + + public float getInterpolation(float f) + { + f--; + return f * f * f * f * f + 1.0F; + } + + }; + private static final ViewPositionComparator sPositionComparator = new ViewPositionComparator(); + private int mActivePointerId; + private PagerAdapter mAdapter; + private OnAdapterChangeListener mAdapterChangeListener; + private int mBottomPageBounds; + private boolean mCalledSuper; + private int mChildHeightMeasureSpec; + private int mChildWidthMeasureSpec; + private int mCloseEnough; + private int mCurItem; + private int mDecorChildCount; + private int mDefaultGutterSize; + private int mDrawingOrder; + private ArrayList mDrawingOrderedChildren; + private final Runnable mEndScrollRunnable; + private boolean mFakeDragging; + private boolean mFirstLayout; + private float mFirstOffset; + private int mFlingDistance; + private int mGutterSize; + private boolean mInLayout; + private float mInitialMotionX; + private OnPageChangeListener mInternalPageChangeListener; + private boolean mIsBeingDragged; + private boolean mIsUnableToDrag; + private final ArrayList mItems; + private float mLastMotionX; + private float mLastMotionY; + private float mLastOffset; + private EdgeEffectCompat mLeftEdge; + private Drawable mMarginDrawable; + private int mMaximumVelocity; + private int mMinimumVelocity; + private boolean mNeedCalculatePageOffsets; + private PagerObserver mObserver; + private int mOffscreenPageLimit; + private OnPageChangeListener mOnPageChangeListener; + private int mPageMargin; + private PageTransformer mPageTransformer; + private boolean mPopulatePending; + private Parcelable mRestoredAdapterState; + private ClassLoader mRestoredClassLoader; + private int mRestoredCurItem; + private EdgeEffectCompat mRightEdge; + private int mScrollState; + private Scroller mScroller; + private boolean mScrollingCacheEnabled; + private int mSeenPositionMax; + private int mSeenPositionMin; + private Method mSetChildrenDrawingOrderEnabled; + private final ItemInfo mTempItem; + private final Rect mTempRect; + private int mTopPageBounds; + private int mTouchSlop; + private VelocityTracker mVelocityTracker; + + private void calculatePageOffsets(ItemInfo iteminfo, int i, ItemInfo iteminfo1) + { + int j2 = mAdapter.getCount(); + int j = getWidth(); + float f3; + if (j > 0) + { + f3 = (float)mPageMargin / (float)j; + } else + { + f3 = 0.0F; + } + if (iteminfo1 != null) + { + j = iteminfo1.position; + if (j < iteminfo.position) + { + int l = 0; + float f = iteminfo1.offset + iteminfo1.widthFactor + f3; + int k1; + for (j++; j <= iteminfo.position && l < mItems.size(); j = k1 + 1) + { + iteminfo1 = (ItemInfo)mItems.get(l); + float f4; + do + { + f4 = f; + k1 = j; + if (j <= iteminfo1.position) + { + break; + } + f4 = f; + k1 = j; + if (l >= mItems.size() - 1) + { + break; + } + l++; + iteminfo1 = (ItemInfo)mItems.get(l); + } while (true); + for (; k1 < iteminfo1.position; k1++) + { + f4 += mAdapter.getPageWidth(k1) + f3; + } + + iteminfo1.offset = f4; + f = f4 + (iteminfo1.widthFactor + f3); + } + + } else + if (j > iteminfo.position) + { + int i1 = mItems.size() - 1; + float f1 = iteminfo1.offset; + int l1; + for (j--; j >= iteminfo.position && i1 >= 0; j = l1 - 1) + { + iteminfo1 = (ItemInfo)mItems.get(i1); + float f5; + do + { + f5 = f1; + l1 = j; + if (j >= iteminfo1.position) + { + break; + } + f5 = f1; + l1 = j; + if (i1 <= 0) + { + break; + } + i1--; + iteminfo1 = (ItemInfo)mItems.get(i1); + } while (true); + for (; l1 > iteminfo1.position; l1--) + { + f5 -= mAdapter.getPageWidth(l1) + f3; + } + + f1 = f5 - (iteminfo1.widthFactor + f3); + iteminfo1.offset = f1; + } + + } + } + int i2 = mItems.size(); + float f6 = iteminfo.offset; + j = iteminfo.position - 1; + float f2; + int j1; + if (iteminfo.position == 0) + { + f2 = iteminfo.offset; + } else + { + f2 = -3.402823E+38F; + } + mFirstOffset = f2; + if (iteminfo.position == j2 - 1) + { + f2 = (iteminfo.offset + iteminfo.widthFactor) - 1.0F; + } else + { + f2 = 3.402823E+38F; + } + mLastOffset = f2; + j1 = i - 1; + f2 = f6; + while (j1 >= 0) + { + for (iteminfo1 = (ItemInfo)mItems.get(j1); j > iteminfo1.position; j--) + { + f2 -= mAdapter.getPageWidth(j) + f3; + } + + f2 -= iteminfo1.widthFactor + f3; + iteminfo1.offset = f2; + if (iteminfo1.position == 0) + { + mFirstOffset = f2; + } + j1--; + j--; + } + f2 = iteminfo.offset + iteminfo.widthFactor + f3; + j = iteminfo.position + 1; + j1 = i + 1; + i = j; + for (int k = j1; k < i2;) + { + for (iteminfo = (ItemInfo)mItems.get(k); i < iteminfo.position; i++) + { + f2 += mAdapter.getPageWidth(i) + f3; + } + + if (iteminfo.position == j2 - 1) + { + mLastOffset = (iteminfo.widthFactor + f2) - 1.0F; + } + iteminfo.offset = f2; + f2 += iteminfo.widthFactor + f3; + k++; + i++; + } + + mNeedCalculatePageOffsets = false; + } + + private void completeScroll(boolean flag) + { +label0: + { + int i; + boolean flag1; + boolean flag2; + if (mScrollState == 2) + { + i = 1; + } else + { + i = 0; + } + if (i != 0) + { + setScrollingCacheEnabled(false); + mScroller.abortAnimation(); + int j = getScrollX(); + int k = getScrollY(); + int l = mScroller.getCurrX(); + int i1 = mScroller.getCurrY(); + if (j != l || k != i1) + { + scrollTo(l, i1); + } + } + mPopulatePending = false; + flag2 = false; + flag1 = i; + for (i = ((flag2) ? 1 : 0); i < mItems.size(); i++) + { + ItemInfo iteminfo = (ItemInfo)mItems.get(i); + if (iteminfo.scrolling) + { + flag1 = true; + iteminfo.scrolling = false; + } + } + + if (flag1) + { + if (!flag) + { + break label0; + } + ViewCompat.postOnAnimation(this, mEndScrollRunnable); + } + return; + } + mEndScrollRunnable.run(); + } + + private int determineTargetPage(int i, float f, int j, int k) + { + if (Math.abs(k) > mFlingDistance && Math.abs(j) > mMinimumVelocity) + { + if (j <= 0) + { + i++; + } + } else + if (mSeenPositionMin >= 0 && mSeenPositionMin < i && f < 0.5F) + { + i++; + } else + if (mSeenPositionMax >= 0 && mSeenPositionMax > i + 1 && f >= 0.5F) + { + i--; + } else + { + i = (int)((float)i + f + 0.5F); + } + j = i; + if (mItems.size() > 0) + { + ItemInfo iteminfo = (ItemInfo)mItems.get(0); + ItemInfo iteminfo1 = (ItemInfo)mItems.get(mItems.size() - 1); + j = Math.max(iteminfo.position, Math.min(i, iteminfo1.position)); + } + return j; + } + + private void enableLayers(boolean flag) + { + int j = getChildCount(); + int i = 0; + while (i < j) + { + byte byte0; + if (flag) + { + byte0 = 2; + } else + { + byte0 = 0; + } + ViewCompat.setLayerType(getChildAt(i), byte0, null); + i++; + } + } + + private void endDrag() + { + mIsBeingDragged = false; + mIsUnableToDrag = false; + if (mVelocityTracker != null) + { + mVelocityTracker.recycle(); + mVelocityTracker = null; + } + } + + private Rect getChildRectInPagerCoordinates(Rect rect, View view) + { + Rect rect1 = rect; + if (rect == null) + { + rect1 = new Rect(); + } + if (view == null) + { + rect1.set(0, 0, 0, 0); + } else + { + rect1.left = view.getLeft(); + rect1.right = view.getRight(); + rect1.top = view.getTop(); + rect1.bottom = view.getBottom(); + rect = view.getParent(); + while ((rect instanceof ViewGroup) && rect != this) + { + rect = (ViewGroup)rect; + rect1.left = rect1.left + rect.getLeft(); + rect1.right = rect1.right + rect.getRight(); + rect1.top = rect1.top + rect.getTop(); + rect1.bottom = rect1.bottom + rect.getBottom(); + rect = rect.getParent(); + } + } + return rect1; + } + + private ItemInfo infoForCurrentScrollPosition() + { + float f1 = 0.0F; + int i = getWidth(); + float f; + float f2; + float f3; + ItemInfo iteminfo1; + boolean flag; + int j; + if (i > 0) + { + f = (float)getScrollX() / (float)i; + } else + { + f = 0.0F; + } + if (i > 0) + { + f1 = (float)mPageMargin / (float)i; + } + j = -1; + f2 = 0.0F; + f3 = 0.0F; + flag = true; + iteminfo1 = null; + i = 0; + do + { + ItemInfo iteminfo; + int k; +label0: + { + ItemInfo iteminfo2; +label1: + { + iteminfo2 = iteminfo1; + if (i >= mItems.size()) + { + break label1; + } + iteminfo2 = (ItemInfo)mItems.get(i); + k = i; + iteminfo = iteminfo2; + if (!flag) + { + k = i; + iteminfo = iteminfo2; + if (iteminfo2.position != j + 1) + { + iteminfo = mTempItem; + iteminfo.offset = f2 + f3 + f1; + iteminfo.position = j + 1; + iteminfo.widthFactor = mAdapter.getPageWidth(iteminfo.position); + k = i - 1; + } + } + f2 = iteminfo.offset; + f3 = iteminfo.widthFactor; + if (!flag) + { + iteminfo2 = iteminfo1; + if (f < f2) + { + break label1; + } + } + if (f >= f3 + f2 + f1 && k != mItems.size() - 1) + { + break label0; + } + iteminfo2 = iteminfo; + } + return iteminfo2; + } + flag = false; + j = iteminfo.position; + f3 = iteminfo.widthFactor; + i = k + 1; + iteminfo1 = iteminfo; + } while (true); + } + + private boolean isGutterDrag(float f, float f1) + { + return f < (float)mGutterSize && f1 > 0.0F || f > (float)(getWidth() - mGutterSize) && f1 < 0.0F; + } + + private void onSecondaryPointerUp(MotionEvent motionevent) + { + int i = MotionEventCompat.getActionIndex(motionevent); + if (MotionEventCompat.getPointerId(motionevent, i) == mActivePointerId) + { + if (i == 0) + { + i = 1; + } else + { + i = 0; + } + mLastMotionX = MotionEventCompat.getX(motionevent, i); + mActivePointerId = MotionEventCompat.getPointerId(motionevent, i); + if (mVelocityTracker != null) + { + mVelocityTracker.clear(); + } + } + } + + private boolean pageScrolled(int i) + { + boolean flag = false; + if (mItems.size() == 0) + { + mCalledSuper = false; + onPageScrolled(0, 0.0F, 0); + if (!mCalledSuper) + { + throw new IllegalStateException("onPageScrolled did not call superclass implementation"); + } + } else + { + ItemInfo iteminfo = infoForCurrentScrollPosition(); + int k = getWidth(); + int l = mPageMargin; + float f = (float)mPageMargin / (float)k; + int j = iteminfo.position; + f = ((float)i / (float)k - iteminfo.offset) / (iteminfo.widthFactor + f); + i = (int)((float)(k + l) * f); + mCalledSuper = false; + onPageScrolled(j, f, i); + if (!mCalledSuper) + { + throw new IllegalStateException("onPageScrolled did not call superclass implementation"); + } + flag = true; + } + return flag; + } + + private boolean performDrag(float f) + { + float f1; + float f2; + boolean flag; + boolean flag1; + int i; + boolean flag2; + boolean flag3; + boolean flag4; + flag4 = false; + flag3 = false; + flag2 = false; + f1 = mLastMotionX; + mLastMotionX = f; + f2 = (float)getScrollX() + (f1 - f); + i = getWidth(); + f = (float)i * mFirstOffset; + f1 = (float)i * mLastOffset; + flag = true; + flag1 = true; + ItemInfo iteminfo = (ItemInfo)mItems.get(0); + ItemInfo iteminfo1 = (ItemInfo)mItems.get(mItems.size() - 1); + if (iteminfo.position != 0) + { + flag = false; + f = iteminfo.offset * (float)i; + } + if (iteminfo1.position != mAdapter.getCount() - 1) + { + flag1 = false; + f1 = iteminfo1.offset * (float)i; + } + if (f2 >= f) goto _L2; else goto _L1 +_L1: + if (flag) + { + flag2 = mLeftEdge.onPull(Math.abs(f - f2) / (float)i); + } +_L4: + mLastMotionX = mLastMotionX + (f - (float)(int)f); + scrollTo((int)f, getScrollY()); + pageScrolled((int)f); + return flag2; +_L2: + flag2 = flag4; + f = f2; + if (f2 > f1) + { + flag2 = flag3; + if (flag1) + { + flag2 = mRightEdge.onPull(Math.abs(f2 - f1) / (float)i); + } + f = f1; + } + if (true) goto _L4; else goto _L3 +_L3: + } + + private void recomputeScrollPosition(int i, int j, int k, int l) + { + if (j > 0 && !mItems.isEmpty()) + { + float f = (float)getScrollX() / (float)(j + l); + j = (int)((float)(i + k) * f); + scrollTo(j, getScrollY()); + if (!mScroller.isFinished()) + { + k = mScroller.getDuration(); + l = mScroller.timePassed(); + ItemInfo iteminfo = infoForPosition(mCurItem); + mScroller.startScroll(j, 0, (int)(iteminfo.offset * (float)i), 0, k - l); + } + } else + { + ItemInfo iteminfo1 = infoForPosition(mCurItem); + float f1; + if (iteminfo1 != null) + { + f1 = Math.min(iteminfo1.offset, mLastOffset); + } else + { + f1 = 0.0F; + } + i = (int)((float)i * f1); + if (i != getScrollX()) + { + completeScroll(false); + scrollTo(i, getScrollY()); + return; + } + } + } + + private void removeNonDecorViews() + { + int j; + for (int i = 0; i < getChildCount(); i = j + 1) + { + j = i; + if (!((LayoutParams)getChildAt(i).getLayoutParams()).isDecor) + { + removeViewAt(i); + j = i - 1; + } + } + + } + + private void scrollToItem(int i, boolean flag, int j, boolean flag1) + { + ItemInfo iteminfo = infoForPosition(i); + int k = 0; + if (iteminfo != null) + { + k = (int)((float)getWidth() * Math.max(mFirstOffset, Math.min(iteminfo.offset, mLastOffset))); + } + if (flag) + { + smoothScrollTo(k, 0, j); + if (flag1 && mOnPageChangeListener != null) + { + mOnPageChangeListener.onPageSelected(i); + } + if (flag1 && mInternalPageChangeListener != null) + { + mInternalPageChangeListener.onPageSelected(i); + } + return; + } + if (flag1 && mOnPageChangeListener != null) + { + mOnPageChangeListener.onPageSelected(i); + } + if (flag1 && mInternalPageChangeListener != null) + { + mInternalPageChangeListener.onPageSelected(i); + } + completeScroll(false); + scrollTo(k, 0); + } + + private void setScrollState(int i) + { + boolean flag = true; + if (mScrollState != i) + { + mScrollState = i; + if (i == 1) + { + mSeenPositionMax = -1; + mSeenPositionMin = -1; + } + if (mPageTransformer != null) + { + if (i == 0) + { + flag = false; + } + enableLayers(flag); + } + if (mOnPageChangeListener != null) + { + mOnPageChangeListener.onPageScrollStateChanged(i); + return; + } + } + } + + private void setScrollingCacheEnabled(boolean flag) + { + if (mScrollingCacheEnabled != flag) + { + mScrollingCacheEnabled = flag; + } + } + + public void addFocusables(ArrayList arraylist, int i, int j) + { + int l = arraylist.size(); + int i1 = getDescendantFocusability(); + if (i1 != 0x60000) + { + for (int k = 0; k < getChildCount(); k++) + { + View view = getChildAt(k); + if (view.getVisibility() == 0) + { + ItemInfo iteminfo = infoForChild(view); + if (iteminfo != null && iteminfo.position == mCurItem) + { + view.addFocusables(arraylist, i, j); + } + } + } + + } + while (i1 == 0x40000 && l != arraylist.size() || !isFocusable() || (j & 1) == 1 && isInTouchMode() && !isFocusableInTouchMode() || arraylist == null) + { + return; + } + arraylist.add(this); + } + + ItemInfo addNewItem(int i, int j) + { + ItemInfo iteminfo = new ItemInfo(); + iteminfo.position = i; + iteminfo.object = mAdapter.instantiateItem(this, i); + iteminfo.widthFactor = mAdapter.getPageWidth(i); + if (j < 0 || j >= mItems.size()) + { + mItems.add(iteminfo); + return iteminfo; + } else + { + mItems.add(j, iteminfo); + return iteminfo; + } + } + + public void addTouchables(ArrayList arraylist) + { + for (int i = 0; i < getChildCount(); i++) + { + View view = getChildAt(i); + if (view.getVisibility() != 0) + { + continue; + } + ItemInfo iteminfo = infoForChild(view); + if (iteminfo != null && iteminfo.position == mCurItem) + { + view.addTouchables(arraylist); + } + } + + } + + public void addView(View view, int i, android.view.ViewGroup.LayoutParams layoutparams) + { + android.view.ViewGroup.LayoutParams layoutparams1 = layoutparams; + if (!checkLayoutParams(layoutparams)) + { + layoutparams1 = generateLayoutParams(layoutparams); + } + layoutparams = (LayoutParams)layoutparams1; + layoutparams.isDecor = ((LayoutParams) (layoutparams)).isDecor | (view instanceof Decor); + if (mInLayout) + { + if (layoutparams != null && ((LayoutParams) (layoutparams)).isDecor) + { + throw new IllegalStateException("Cannot add pager decor view during layout"); + } else + { + layoutparams.needsMeasure = true; + addViewInLayout(view, i, layoutparams1); + return; + } + } else + { + super.addView(view, i, layoutparams1); + return; + } + } + + public boolean arrowScroll(int i) + { + View view; + View view1; + boolean flag; + view1 = findFocus(); + view = view1; + if (view1 == this) + { + view = null; + } + flag = false; + view1 = FocusFinder.getInstance().findNextFocus(this, view, i); + if (view1 == null || view1 == view) goto _L2; else goto _L1 +_L1: + if (i != 17) goto _L4; else goto _L3 +_L3: + int j = getChildRectInPagerCoordinates(mTempRect, view1).left; + int l = getChildRectInPagerCoordinates(mTempRect, view).left; + if (view != null && j >= l) + { + flag = pageLeft(); + } else + { + flag = view1.requestFocus(); + } +_L6: + if (flag) + { + playSoundEffect(SoundEffectConstants.getContantForFocusDirection(i)); + } + return flag; +_L4: + if (i == 66) + { + int k = getChildRectInPagerCoordinates(mTempRect, view1).left; + int i1 = getChildRectInPagerCoordinates(mTempRect, view).left; + if (view != null && k <= i1) + { + flag = pageRight(); + } else + { + flag = view1.requestFocus(); + } + } + continue; /* Loop/switch isn't completed */ +_L2: + if (i == 17 || i == 1) + { + flag = pageLeft(); + } else + if (i == 66 || i == 2) + { + flag = pageRight(); + } + if (true) goto _L6; else goto _L5 +_L5: + } + + protected boolean canScroll(View view, boolean flag, int i, int j, int k) + { + if (view instanceof ViewGroup) + { + ViewGroup viewgroup = (ViewGroup)view; + int i1 = view.getScrollX(); + int j1 = view.getScrollY(); + for (int l = viewgroup.getChildCount() - 1; l >= 0; l--) + { + View view1 = viewgroup.getChildAt(l); + if (j + i1 >= view1.getLeft() && j + i1 < view1.getRight() && k + j1 >= view1.getTop() && k + j1 < view1.getBottom() && canScroll(view1, true, i, (j + i1) - view1.getLeft(), (k + j1) - view1.getTop())) + { + return true; + } + } + + } + return flag && ViewCompat.canScrollHorizontally(view, -i); + } + + protected boolean checkLayoutParams(android.view.ViewGroup.LayoutParams layoutparams) + { + return (layoutparams instanceof LayoutParams) && super.checkLayoutParams(layoutparams); + } + + public void computeScroll() + { + if (!mScroller.isFinished() && mScroller.computeScrollOffset()) + { + int i = getScrollX(); + int j = getScrollY(); + int k = mScroller.getCurrX(); + int l = mScroller.getCurrY(); + if (i != k || j != l) + { + scrollTo(k, l); + if (!pageScrolled(k)) + { + mScroller.abortAnimation(); + scrollTo(0, l); + } + } + ViewCompat.postInvalidateOnAnimation(this); + return; + } else + { + completeScroll(true); + return; + } + } + + void dataSetChanged() + { + boolean flag; + int j; + boolean flag1; + int l; + if (mItems.size() < mOffscreenPageLimit * 2 + 1 && mItems.size() < mAdapter.getCount()) + { + flag = true; + } else + { + flag = false; + } + j = mCurItem; + flag1 = false; + l = 0; + while (l < mItems.size()) + { + ItemInfo iteminfo = (ItemInfo)mItems.get(l); + int l1 = mAdapter.getItemPosition(iteminfo.object); + int i1; + int j1; + int k1; + if (l1 == -1) + { + i1 = j; + j1 = ((flag1) ? 1 : 0); + k1 = l; + } else + if (l1 == -2) + { + mItems.remove(l); + l1 = l - 1; + l = ((flag1) ? 1 : 0); + if (!flag1) + { + mAdapter.startUpdate(this); + l = 1; + } + mAdapter.destroyItem(this, iteminfo.position, iteminfo.object); + flag = true; + k1 = l1; + j1 = l; + i1 = j; + if (mCurItem == iteminfo.position) + { + i1 = Math.max(0, Math.min(mCurItem, mAdapter.getCount() - 1)); + flag = true; + k1 = l1; + j1 = l; + } + } else + { + k1 = l; + j1 = ((flag1) ? 1 : 0); + i1 = j; + if (iteminfo.position != l1) + { + if (iteminfo.position == mCurItem) + { + j = l1; + } + iteminfo.position = l1; + flag = true; + k1 = l; + j1 = ((flag1) ? 1 : 0); + i1 = j; + } + } + l = k1 + 1; + flag1 = j1; + j = i1; + } + if (flag1) + { + mAdapter.finishUpdate(this); + } + Collections.sort(mItems, COMPARATOR); + if (flag) + { + int k = getChildCount(); + for (int i = 0; i < k; i++) + { + LayoutParams layoutparams = (LayoutParams)getChildAt(i).getLayoutParams(); + if (!layoutparams.isDecor) + { + layoutparams.widthFactor = 0.0F; + } + } + + setCurrentItemInternal(j, false, true); + requestLayout(); + } + } + + public boolean dispatchKeyEvent(KeyEvent keyevent) + { + return super.dispatchKeyEvent(keyevent) || executeKeyEvent(keyevent); + } + + public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent accessibilityevent) + { + int j = getChildCount(); + for (int i = 0; i < j; i++) + { + View view = getChildAt(i); + if (view.getVisibility() != 0) + { + continue; + } + ItemInfo iteminfo = infoForChild(view); + if (iteminfo != null && iteminfo.position == mCurItem && view.dispatchPopulateAccessibilityEvent(accessibilityevent)) + { + return true; + } + } + + return false; + } + + float distanceInfluenceForSnapDuration(float f) + { + return (float)Math.sin((float)((double)(f - 0.5F) * 0.4712389167638204D)); + } + + public void draw(Canvas canvas) + { + super.draw(canvas); + int j = 0; + int i = 0; + int k = ViewCompat.getOverScrollMode(this); + if (k == 0 || k == 1 && mAdapter != null && mAdapter.getCount() > 1) + { + if (!mLeftEdge.isFinished()) + { + j = canvas.save(); + i = getHeight() - getPaddingTop() - getPaddingBottom(); + int l = getWidth(); + canvas.rotate(270F); + canvas.translate(-i + getPaddingTop(), mFirstOffset * (float)l); + mLeftEdge.setSize(i, l); + i = false | mLeftEdge.draw(canvas); + canvas.restoreToCount(j); + } + j = i; + if (!mRightEdge.isFinished()) + { + int i1 = canvas.save(); + j = getWidth(); + int j1 = getHeight(); + int k1 = getPaddingTop(); + int l1 = getPaddingBottom(); + canvas.rotate(90F); + canvas.translate(-getPaddingTop(), -(mLastOffset + 1.0F) * (float)j); + mRightEdge.setSize(j1 - k1 - l1, j); + j = i | mRightEdge.draw(canvas); + canvas.restoreToCount(i1); + } + } else + { + mLeftEdge.finish(); + mRightEdge.finish(); + } + if (j != 0) + { + ViewCompat.postInvalidateOnAnimation(this); + } + } + + protected void drawableStateChanged() + { + super.drawableStateChanged(); + Drawable drawable = mMarginDrawable; + if (drawable != null && drawable.isStateful()) + { + drawable.setState(getDrawableState()); + } + } + + public boolean executeKeyEvent(KeyEvent keyevent) + { + if (keyevent.getAction() != 0) goto _L2; else goto _L1 +_L1: + keyevent.getKeyCode(); + JVM INSTR lookupswitch 3: default 44 + // 21: 46 + // 22: 53 + // 61: 60; + goto _L2 _L3 _L4 _L5 +_L2: + return false; +_L3: + return arrowScroll(17); +_L4: + return arrowScroll(66); +_L5: + if (android.os.Build.VERSION.SDK_INT >= 11) + { + if (KeyEventCompat.hasNoModifiers(keyevent)) + { + return arrowScroll(2); + } + if (KeyEventCompat.hasModifiers(keyevent, 1)) + { + return arrowScroll(1); + } + } + if (true) goto _L2; else goto _L6 +_L6: + } + + protected android.view.ViewGroup.LayoutParams generateDefaultLayoutParams() + { + return new LayoutParams(); + } + + public android.view.ViewGroup.LayoutParams generateLayoutParams(AttributeSet attributeset) + { + return new LayoutParams(getContext(), attributeset); + } + + protected android.view.ViewGroup.LayoutParams generateLayoutParams(android.view.ViewGroup.LayoutParams layoutparams) + { + return generateDefaultLayoutParams(); + } + + public PagerAdapter getAdapter() + { + return mAdapter; + } + + protected int getChildDrawingOrder(int i, int j) + { + if (mDrawingOrder == 2) + { + i = i - 1 - j; + } else + { + i = j; + } + return ((LayoutParams)((View)mDrawingOrderedChildren.get(i)).getLayoutParams()).childIndex; + } + + public int getCurrentItem() + { + return mCurItem; + } + + public int getOffscreenPageLimit() + { + return mOffscreenPageLimit; + } + + public int getPageMargin() + { + return mPageMargin; + } + + ItemInfo infoForAnyChild(View view) + { + do + { + android.view.ViewParent viewparent = view.getParent(); + if (viewparent != this) + { + if (viewparent == null || !(viewparent instanceof View)) + { + return null; + } + view = (View)viewparent; + } else + { + return infoForChild(view); + } + } while (true); + } + + ItemInfo infoForChild(View view) + { + for (int i = 0; i < mItems.size(); i++) + { + ItemInfo iteminfo = (ItemInfo)mItems.get(i); + if (mAdapter.isViewFromObject(view, iteminfo.object)) + { + return iteminfo; + } + } + + return null; + } + + ItemInfo infoForPosition(int i) + { + for (int j = 0; j < mItems.size(); j++) + { + ItemInfo iteminfo = (ItemInfo)mItems.get(j); + if (iteminfo.position == i) + { + return iteminfo; + } + } + + return null; + } + + protected void onAttachedToWindow() + { + super.onAttachedToWindow(); + mFirstLayout = true; + } + + protected void onDetachedFromWindow() + { + removeCallbacks(mEndScrollRunnable); + super.onDetachedFromWindow(); + } + + protected void onDraw(Canvas canvas) + { + super.onDraw(canvas); + if (mPageMargin <= 0 || mMarginDrawable == null || mItems.size() <= 0 || mAdapter == null) goto _L2; else goto _L1 +_L1: + float f; + float f2; + Object obj; + int i; + int j; + int k; + int l; + int i1; + int j1; + k = getScrollX(); + l = getWidth(); + f2 = (float)mPageMargin / (float)l; + j = 0; + obj = (ItemInfo)mItems.get(0); + f = ((ItemInfo) (obj)).offset; + i1 = mItems.size(); + i = ((ItemInfo) (obj)).position; + j1 = ((ItemInfo)mItems.get(i1 - 1)).position; +_L6: + if (i >= j1) goto _L2; else goto _L3 +_L3: + for (; i > ((ItemInfo) (obj)).position && j < i1; obj = (ItemInfo)((ArrayList) (obj)).get(j)) + { + obj = mItems; + j++; + } + + float f1; + if (i == ((ItemInfo) (obj)).position) + { + f1 = (((ItemInfo) (obj)).offset + ((ItemInfo) (obj)).widthFactor) * (float)l; + f = ((ItemInfo) (obj)).offset + ((ItemInfo) (obj)).widthFactor + f2; + } else + { + float f3 = mAdapter.getPageWidth(i); + f1 = (f + f3) * (float)l; + f += f3 + f2; + } + if ((float)mPageMargin + f1 > (float)k) + { + mMarginDrawable.setBounds((int)f1, mTopPageBounds, (int)((float)mPageMargin + f1 + 0.5F), mBottomPageBounds); + mMarginDrawable.draw(canvas); + } + if (f1 <= (float)(k + l)) goto _L4; else goto _L2 +_L2: + return; +_L4: + i++; + if (true) goto _L6; else goto _L5 +_L5: + } + + public boolean onInterceptTouchEvent(MotionEvent motionevent) + { + int i; + i = motionevent.getAction() & 0xff; + if (i == 3 || i == 1) + { + mIsBeingDragged = false; + mIsUnableToDrag = false; + mActivePointerId = -1; + if (mVelocityTracker != null) + { + mVelocityTracker.recycle(); + mVelocityTracker = null; + } + return false; + } + if (i != 0) + { + if (mIsBeingDragged) + { + return true; + } + if (mIsUnableToDrag) + { + return false; + } + } + i; + JVM INSTR lookupswitch 3: default 116 + // 0: 371 + // 2: 143 + // 6: 491; + goto _L1 _L2 _L3 _L4 +_L1: + if (mVelocityTracker == null) + { + mVelocityTracker = VelocityTracker.obtain(); + } + mVelocityTracker.addMovement(motionevent); + return mIsBeingDragged; +_L3: + float f; + float f2; + float f3; + float f5; + int j = mActivePointerId; + if (j == -1) + { + continue; /* Loop/switch isn't completed */ + } + j = MotionEventCompat.findPointerIndex(motionevent, j); + f2 = MotionEventCompat.getX(motionevent, j); + f = f2 - mLastMotionX; + f3 = Math.abs(f); + float f4 = MotionEventCompat.getY(motionevent, j); + f5 = Math.abs(f4 - mLastMotionY); + if (f != 0.0F && !isGutterDrag(mLastMotionX, f) && canScroll(this, false, (int)f, (int)f2, (int)f4)) + { + mLastMotionX = f2; + mInitialMotionX = f2; + mLastMotionY = f4; + mIsUnableToDrag = true; + return false; + } + if (f3 <= (float)mTouchSlop || f3 <= f5) goto _L6; else goto _L5 +_L5: + mIsBeingDragged = true; + setScrollState(1); + if (f > 0.0F) + { + f = mInitialMotionX + (float)mTouchSlop; + } else + { + f = mInitialMotionX - (float)mTouchSlop; + } + mLastMotionX = f; + setScrollingCacheEnabled(true); +_L7: + if (mIsBeingDragged && performDrag(f2)) + { + ViewCompat.postInvalidateOnAnimation(this); + } + continue; /* Loop/switch isn't completed */ +_L6: + if (f5 > (float)mTouchSlop) + { + mIsUnableToDrag = true; + } + if (true) goto _L7; else goto _L2 +_L2: + float f1 = motionevent.getX(); + mInitialMotionX = f1; + mLastMotionX = f1; + mLastMotionY = motionevent.getY(); + mActivePointerId = MotionEventCompat.getPointerId(motionevent, 0); + mIsUnableToDrag = false; + mScroller.computeScrollOffset(); + if (mScrollState == 2 && Math.abs(mScroller.getFinalX() - mScroller.getCurrX()) > mCloseEnough) + { + mScroller.abortAnimation(); + mPopulatePending = false; + populate(); + mIsBeingDragged = true; + setScrollState(1); + } else + { + completeScroll(false); + mIsBeingDragged = false; + } + continue; /* Loop/switch isn't completed */ +_L4: + onSecondaryPointerUp(motionevent); + if (true) goto _L1; else goto _L8 +_L8: + } + + protected void onLayout(boolean flag, int i, int j, int k, int l) + { + int i1; + int l1; + int i2; + int i3; + int j3; + int k3; + int l3; + mInLayout = true; + populate(); + mInLayout = false; + i3 = getChildCount(); + j3 = k - i; + k3 = l - j; + j = getPaddingLeft(); + i = getPaddingTop(); + i1 = getPaddingRight(); + l = getPaddingBottom(); + l3 = getScrollX(); + l1 = 0; + i2 = 0; +_L17: + if (i2 >= i3) goto _L2; else goto _L1 +_L1: + View view; + int j1; + int j2; + int k2; + int l2; + view = getChildAt(i2); + l2 = l1; + k2 = l; + j1 = j; + j2 = i1; + k = i; + if (view.getVisibility() == 8) goto _L4; else goto _L3 +_L3: + LayoutParams layoutparams; + layoutparams = (LayoutParams)view.getLayoutParams(); + l2 = l1; + k2 = l; + j1 = j; + j2 = i1; + k = i; + if (!layoutparams.isDecor) goto _L4; else goto _L5 +_L5: + k = layoutparams.gravity; + j2 = layoutparams.gravity; + k & 7; + JVM INSTR tableswitch 1 5: default 200 + // 1 335 + // 2 200 + // 3 320 + // 4 200 + // 5 357; + goto _L6 _L7 _L6 _L8 _L6 _L9 +_L6: + k = j; + j1 = j; +_L14: + j2 & 0x70; + JVM INSTR lookupswitch 3: default 244 + // 16: 399 + // 48: 386 + // 80: 417; + goto _L10 _L11 _L12 _L13 +_L10: + j = i; +_L15: + k += l3; + view.layout(k, j, view.getMeasuredWidth() + k, view.getMeasuredHeight() + j); + l2 = l1 + 1; + k = i; + j2 = i1; + k2 = l; +_L4: + i2++; + l1 = l2; + l = k2; + j = j1; + i1 = j2; + i = k; + continue; /* Loop/switch isn't completed */ +_L8: + k = j; + j1 = j + view.getMeasuredWidth(); + goto _L14 +_L7: + k = Math.max((j3 - view.getMeasuredWidth()) / 2, j); + j1 = j; + goto _L14 +_L9: + k = j3 - i1 - view.getMeasuredWidth(); + i1 += view.getMeasuredWidth(); + j1 = j; + goto _L14 +_L12: + j = i; + i += view.getMeasuredHeight(); + goto _L15 +_L11: + j = Math.max((k3 - view.getMeasuredHeight()) / 2, i); + goto _L15 +_L13: + j = k3 - l - view.getMeasuredHeight(); + l += view.getMeasuredHeight(); + goto _L15 +_L2: + for (k = 0; k < i3; k++) + { + View view1 = getChildAt(k); + if (view1.getVisibility() == 8) + { + continue; + } + LayoutParams layoutparams1 = (LayoutParams)view1.getLayoutParams(); + if (layoutparams1.isDecor) + { + continue; + } + ItemInfo iteminfo = infoForChild(view1); + if (iteminfo == null) + { + continue; + } + int k1 = j + (int)((float)j3 * iteminfo.offset); + if (layoutparams1.needsMeasure) + { + layoutparams1.needsMeasure = false; + view1.measure(android.view.View.MeasureSpec.makeMeasureSpec((int)((float)(j3 - j - i1) * layoutparams1.widthFactor), 0x40000000), android.view.View.MeasureSpec.makeMeasureSpec(k3 - i - l, 0x40000000)); + } + view1.layout(k1, i, view1.getMeasuredWidth() + k1, view1.getMeasuredHeight() + i); + } + + mTopPageBounds = i; + mBottomPageBounds = k3 - l; + mDecorChildCount = l1; + mFirstLayout = false; + return; + if (true) goto _L17; else goto _L16 +_L16: + } + + protected void onMeasure(int i, int j) + { + setMeasuredDimension(getDefaultSize(0, i), getDefaultSize(0, j)); + i = getMeasuredWidth(); + mGutterSize = Math.min(i / 10, mDefaultGutterSize); + i = i - getPaddingLeft() - getPaddingRight(); + j = getMeasuredHeight() - getPaddingTop() - getPaddingBottom(); + int i3 = getChildCount(); + int j1 = 0; + do + { + if (j1 < i3) + { + View view = getChildAt(j1); + int k = j; + int i1 = i; + if (view.getVisibility() != 8) + { + LayoutParams layoutparams = (LayoutParams)view.getLayoutParams(); + k = j; + i1 = i; + if (layoutparams != null) + { + k = j; + i1 = i; + if (layoutparams.isDecor) + { + i1 = layoutparams.gravity & 7; + int k1 = layoutparams.gravity & 0x70; + int l1 = 0x80000000; + k = 0x80000000; + boolean flag; + boolean flag1; + int i2; + int j2; + if (k1 == 48 || k1 == 80) + { + flag = true; + } else + { + flag = false; + } + if (i1 == 3 || i1 == 5) + { + flag1 = true; + } else + { + flag1 = false; + } + if (flag) + { + i1 = 0x40000000; + } else + { + i1 = l1; + if (flag1) + { + k = 0x40000000; + i1 = l1; + } + } + j2 = i; + l1 = j; + i2 = j2; + if (layoutparams.width != -2) + { + int k2 = 0x40000000; + i1 = k2; + i2 = j2; + if (layoutparams.width != -1) + { + i2 = layoutparams.width; + i1 = k2; + } + } + j2 = l1; + if (layoutparams.height != -2) + { + int l2 = 0x40000000; + k = l2; + j2 = l1; + if (layoutparams.height != -1) + { + j2 = layoutparams.height; + k = l2; + } + } + view.measure(android.view.View.MeasureSpec.makeMeasureSpec(i2, i1), android.view.View.MeasureSpec.makeMeasureSpec(j2, k)); + if (flag) + { + k = j - view.getMeasuredHeight(); + i1 = i; + } else + { + k = j; + i1 = i; + if (flag1) + { + i1 = i - view.getMeasuredWidth(); + k = j; + } + } + } + } + } + j1++; + j = k; + i = i1; + continue; + } + mChildWidthMeasureSpec = android.view.View.MeasureSpec.makeMeasureSpec(i, 0x40000000); + mChildHeightMeasureSpec = android.view.View.MeasureSpec.makeMeasureSpec(j, 0x40000000); + mInLayout = true; + populate(); + mInLayout = false; + int l = getChildCount(); + for (j = 0; j < l; j++) + { + View view1 = getChildAt(j); + if (view1.getVisibility() == 8) + { + continue; + } + LayoutParams layoutparams1 = (LayoutParams)view1.getLayoutParams(); + if (layoutparams1 == null || !layoutparams1.isDecor) + { + view1.measure(android.view.View.MeasureSpec.makeMeasureSpec((int)((float)i * layoutparams1.widthFactor), 0x40000000), mChildHeightMeasureSpec); + } + } + + return; + } while (true); + } + + protected void onPageScrolled(int i, float f, int j) + { + int k; + int j1; + int k1; + int i2; + int j2; + int k2; + if (mDecorChildCount <= 0) + { + break MISSING_BLOCK_LABEL_251; + } + i2 = getScrollX(); + k = getPaddingLeft(); + j1 = getPaddingRight(); + j2 = getWidth(); + k2 = getChildCount(); + k1 = 0; +_L2: + View view; + LayoutParams layoutparams; + int i1; + int l1; + if (k1 >= k2) + { + break MISSING_BLOCK_LABEL_251; + } + view = getChildAt(k1); + layoutparams = (LayoutParams)view.getLayoutParams(); + if (layoutparams.isDecor) + { + break; /* Loop/switch isn't completed */ + } + i1 = j1; + l1 = k; +_L7: + k1++; + k = l1; + j1 = i1; + if (true) goto _L2; else goto _L1 +_L1: + layoutparams.gravity & 7; + JVM INSTR tableswitch 1 5: default 140 + // 1 205 + // 2 140 + // 3 188 + // 4 140 + // 5 225; + goto _L3 _L4 _L3 _L5 _L3 _L6 +_L6: + break MISSING_BLOCK_LABEL_225; +_L3: + i1 = k; +_L8: + int l2 = (i1 + i2) - view.getLeft(); + l1 = k; + i1 = j1; + if (l2 != 0) + { + view.offsetLeftAndRight(l2); + l1 = k; + i1 = j1; + } + goto _L7 +_L5: + i1 = k; + k += view.getWidth(); + goto _L8 +_L4: + i1 = Math.max((j2 - view.getMeasuredWidth()) / 2, k); + goto _L8 + i1 = j2 - j1 - view.getMeasuredWidth(); + j1 += view.getMeasuredWidth(); + goto _L8 + if (mSeenPositionMin < 0 || i < mSeenPositionMin) + { + mSeenPositionMin = i; + } + if (mSeenPositionMax < 0 || FloatMath.ceil((float)i + f) > (float)mSeenPositionMax) + { + mSeenPositionMax = i + 1; + } + if (mOnPageChangeListener != null) + { + mOnPageChangeListener.onPageScrolled(i, f, j); + } + if (mInternalPageChangeListener != null) + { + mInternalPageChangeListener.onPageScrolled(i, f, j); + } + if (mPageTransformer != null) + { + j = getScrollX(); + int l = getChildCount(); + i = 0; + while (i < l) + { + View view1 = getChildAt(i); + if (!((LayoutParams)view1.getLayoutParams()).isDecor) + { + f = (float)(view1.getLeft() - j) / (float)getWidth(); + mPageTransformer.transformPage(view1, f); + } + i++; + } + } + mCalledSuper = true; + return; + goto _L7 + } + + protected boolean onRequestFocusInDescendants(int i, Rect rect) + { + int k = getChildCount(); + int j; + byte byte0; + if ((i & 2) != 0) + { + j = 0; + byte0 = 1; + } else + { + j = k - 1; + byte0 = -1; + k = -1; + } + for (; j != k; j += byte0) + { + View view = getChildAt(j); + if (view.getVisibility() != 0) + { + continue; + } + ItemInfo iteminfo = infoForChild(view); + if (iteminfo != null && iteminfo.position == mCurItem && view.requestFocus(i, rect)) + { + return true; + } + } + + return false; + } + + public void onRestoreInstanceState(Parcelable parcelable) + { + if (!(parcelable instanceof SavedState)) + { + super.onRestoreInstanceState(parcelable); + return; + } + parcelable = (SavedState)parcelable; + super.onRestoreInstanceState(parcelable.getSuperState()); + if (mAdapter != null) + { + mAdapter.restoreState(((SavedState) (parcelable)).adapterState, ((SavedState) (parcelable)).loader); + setCurrentItemInternal(((SavedState) (parcelable)).position, false, true); + return; + } else + { + mRestoredCurItem = ((SavedState) (parcelable)).position; + mRestoredAdapterState = ((SavedState) (parcelable)).adapterState; + mRestoredClassLoader = ((SavedState) (parcelable)).loader; + return; + } + } + + public Parcelable onSaveInstanceState() + { + SavedState savedstate = new SavedState(super.onSaveInstanceState()); + savedstate.position = mCurItem; + if (mAdapter != null) + { + savedstate.adapterState = mAdapter.saveState(); + } + return savedstate; + } + + protected void onSizeChanged(int i, int j, int k, int l) + { + super.onSizeChanged(i, j, k, l); + if (i != k) + { + recomputeScrollPosition(i, k, mPageMargin, mPageMargin); + } + } + + public boolean onTouchEvent(MotionEvent motionevent) + { + int i; + int j; + int k; + if (mFakeDragging) + { + return true; + } + if (motionevent.getAction() == 0 && motionevent.getEdgeFlags() != 0) + { + return false; + } + if (mAdapter == null || mAdapter.getCount() == 0) + { + return false; + } + if (mVelocityTracker == null) + { + mVelocityTracker = VelocityTracker.obtain(); + } + mVelocityTracker.addMovement(motionevent); + k = motionevent.getAction(); + j = 0; + i = j; + k & 0xff; + JVM INSTR tableswitch 0 6: default 128 + // 0 143 + // 1 357 + // 2 200 + // 3 507 + // 4 132 + // 5 558 + // 6 591; + goto _L1 _L2 _L3 _L4 _L5 _L6 _L7 _L8 +_L6: + break; /* Loop/switch isn't completed */ +_L1: + i = j; +_L10: + if (i != 0) + { + ViewCompat.postInvalidateOnAnimation(this); + } + return true; +_L2: + mScroller.abortAnimation(); + mPopulatePending = false; + populate(); + mIsBeingDragged = true; + setScrollState(1); + float f = motionevent.getX(); + mInitialMotionX = f; + mLastMotionX = f; + mActivePointerId = MotionEventCompat.getPointerId(motionevent, 0); + i = j; + continue; /* Loop/switch isn't completed */ +_L4: + if (!mIsBeingDragged) + { + i = MotionEventCompat.findPointerIndex(motionevent, mActivePointerId); + float f1 = MotionEventCompat.getX(motionevent, i); + float f2 = Math.abs(f1 - mLastMotionX); + float f3 = Math.abs(MotionEventCompat.getY(motionevent, i) - mLastMotionY); + if (f2 > (float)mTouchSlop && f2 > f3) + { + mIsBeingDragged = true; + if (f1 - mInitialMotionX > 0.0F) + { + f1 = mInitialMotionX + (float)mTouchSlop; + } else + { + f1 = mInitialMotionX - (float)mTouchSlop; + } + mLastMotionX = f1; + setScrollState(1); + setScrollingCacheEnabled(true); + } + } + i = j; + if (mIsBeingDragged) + { + i = false | performDrag(MotionEventCompat.getX(motionevent, MotionEventCompat.findPointerIndex(motionevent, mActivePointerId))); + } + continue; /* Loop/switch isn't completed */ +_L3: + i = j; + if (mIsBeingDragged) + { + Object obj = mVelocityTracker; + ((VelocityTracker) (obj)).computeCurrentVelocity(1000, mMaximumVelocity); + i = (int)VelocityTrackerCompat.getXVelocity(((VelocityTracker) (obj)), mActivePointerId); + mPopulatePending = true; + j = getWidth(); + int l = getScrollX(); + obj = infoForCurrentScrollPosition(); + setCurrentItemInternal(determineTargetPage(((ItemInfo) (obj)).position, ((float)l / (float)j - ((ItemInfo) (obj)).offset) / ((ItemInfo) (obj)).widthFactor, i, (int)(MotionEventCompat.getX(motionevent, MotionEventCompat.findPointerIndex(motionevent, mActivePointerId)) - mInitialMotionX)), true, true, i); + mActivePointerId = -1; + endDrag(); + i = mLeftEdge.onRelease() | mRightEdge.onRelease(); + } + continue; /* Loop/switch isn't completed */ +_L5: + i = j; + if (mIsBeingDragged) + { + scrollToItem(mCurItem, true, 0, false); + mActivePointerId = -1; + endDrag(); + i = mLeftEdge.onRelease() | mRightEdge.onRelease(); + } + continue; /* Loop/switch isn't completed */ +_L7: + i = MotionEventCompat.getActionIndex(motionevent); + mLastMotionX = MotionEventCompat.getX(motionevent, i); + mActivePointerId = MotionEventCompat.getPointerId(motionevent, i); + i = j; + continue; /* Loop/switch isn't completed */ +_L8: + onSecondaryPointerUp(motionevent); + mLastMotionX = MotionEventCompat.getX(motionevent, MotionEventCompat.findPointerIndex(motionevent, mActivePointerId)); + i = j; + if (true) goto _L10; else goto _L9 +_L9: + } + + boolean pageLeft() + { + if (mCurItem > 0) + { + setCurrentItem(mCurItem - 1, true); + return true; + } else + { + return false; + } + } + + boolean pageRight() + { + if (mAdapter != null && mCurItem < mAdapter.getCount() - 1) + { + setCurrentItem(mCurItem + 1, true); + return true; + } else + { + return false; + } + } + + void populate() + { + populate(mCurItem); + } + + void populate(int i) + { + Object obj2; + obj2 = null; + if (mCurItem != i) + { + obj2 = infoForPosition(mCurItem); + mCurItem = i; + } + break MISSING_BLOCK_LABEL_26; +_L22: + ItemInfo iteminfo1; + int j1; + int k1; + int l1; + do + { + return; + } while (mAdapter == null || mPopulatePending || getWindowToken() == null); + mAdapter.startUpdate(this); + i = mOffscreenPageLimit; + l1 = Math.max(0, mCurItem - i); + j1 = mAdapter.getCount(); + k1 = Math.min(j1 - 1, mCurItem + i); + iteminfo1 = null; + i = 0; +_L16: + Object obj = iteminfo1; + if (i >= mItems.size()) goto _L2; else goto _L1 +_L1: + ItemInfo iteminfo2 = (ItemInfo)mItems.get(i); + if (iteminfo2.position < mCurItem) goto _L4; else goto _L3 +_L3: + obj = iteminfo1; + if (iteminfo2.position == mCurItem) + { + obj = iteminfo2; + } +_L2: + iteminfo1 = ((ItemInfo) (obj)); + if (obj == null) + { + iteminfo1 = ((ItemInfo) (obj)); + if (j1 > 0) + { + iteminfo1 = addNewItem(mCurItem, i); + } + } + if (iteminfo1 == null) goto _L6; else goto _L5 +_L5: + float f2; + int j; + int k; + int l; + int i1; + f2 = 0.0F; + i1 = i - 1; + float f3; + if (i1 >= 0) + { + obj = (ItemInfo)mItems.get(i1); + } else + { + obj = null; + } + f3 = iteminfo1.widthFactor; + l = mCurItem - 1; + iteminfo2 = ((ItemInfo) (obj)); + k = i; +_L17: + if (l < 0) goto _L8; else goto _L7 +_L7: + if (f2 < 2.0F - f3 || l >= l1) goto _L10; else goto _L9 +_L9: + if (iteminfo2 != null) goto _L11; else goto _L8 +_L8: + f2 = iteminfo1.widthFactor; + l = k + 1; + if (f2 >= 2.0F) goto _L13; else goto _L12 +_L12: + float f; + if (l < mItems.size()) + { + obj = (ItemInfo)mItems.get(l); + } else + { + obj = null; + } + j = mCurItem + 1; + iteminfo2 = ((ItemInfo) (obj)); +_L19: + if (j >= j1) goto _L13; else goto _L14 +_L14: + if (f2 < 2.0F || j <= k1) + { + break MISSING_BLOCK_LABEL_931; + } + if (iteminfo2 != null) goto _L15; else goto _L13 +_L13: + calculatePageOffsets(iteminfo1, k, ((ItemInfo) (obj2))); +_L6: + obj2 = mAdapter; + i = mCurItem; + float f1; + if (iteminfo1 != null) + { + obj = iteminfo1.object; + } else + { + obj = null; + } + ((PagerAdapter) (obj2)).setPrimaryItem(this, i, obj); + mAdapter.finishUpdate(this); + if (mDrawingOrder != 0) + { + i = 1; + } else + { + i = 0; + } + if (i != 0) + { + if (mDrawingOrderedChildren == null) + { + mDrawingOrderedChildren = new ArrayList(); + } else + { + mDrawingOrderedChildren.clear(); + } + } + k = getChildCount(); + for (j = 0; j < k; j++) + { + obj = getChildAt(j); + obj2 = (LayoutParams)((View) (obj)).getLayoutParams(); + obj2.childIndex = j; + if (!((LayoutParams) (obj2)).isDecor && ((LayoutParams) (obj2)).widthFactor == 0.0F) + { + iteminfo1 = infoForChild(((View) (obj))); + if (iteminfo1 != null) + { + obj2.widthFactor = iteminfo1.widthFactor; + obj2.position = iteminfo1.position; + } + } + if (i != 0) + { + mDrawingOrderedChildren.add(obj); + } + } + + break MISSING_BLOCK_LABEL_1069; +_L4: + i++; + goto _L16 +_L11: + i = k; + f = f2; + obj = iteminfo2; + j = i1; + if (l == iteminfo2.position) + { + i = k; + f = f2; + obj = iteminfo2; + j = i1; + if (!iteminfo2.scrolling) + { + mItems.remove(i1); + mAdapter.destroyItem(this, l, iteminfo2.object); + j = i1 - 1; + i = k - 1; + if (j >= 0) + { + obj = (ItemInfo)mItems.get(j); + f = f2; + } else + { + obj = null; + f = f2; + } + } + } +_L18: + l--; + k = i; + f2 = f; + iteminfo2 = ((ItemInfo) (obj)); + i1 = j; + goto _L17 +_L10: + if (iteminfo2 != null && l == iteminfo2.position) + { + f = f2 + iteminfo2.widthFactor; + j = i1 - 1; + if (j >= 0) + { + obj = (ItemInfo)mItems.get(j); + } else + { + obj = null; + } + i = k; + } else + { + f = f2 + addNewItem(l, i1 + 1).widthFactor; + i = k + 1; + if (i1 >= 0) + { + obj = (ItemInfo)mItems.get(i1); + } else + { + obj = null; + } + j = i1; + } + goto _L18 +_L15: + f1 = f2; + obj = iteminfo2; + i = l; + if (j == iteminfo2.position) + { + f1 = f2; + obj = iteminfo2; + i = l; + if (!iteminfo2.scrolling) + { + mItems.remove(l); + mAdapter.destroyItem(this, j, iteminfo2.object); + if (l < mItems.size()) + { + obj = (ItemInfo)mItems.get(l); + i = l; + f1 = f2; + } else + { + obj = null; + f1 = f2; + i = l; + } + } + } +_L20: + j++; + f2 = f1; + iteminfo2 = ((ItemInfo) (obj)); + l = i; + goto _L19 + if (iteminfo2 != null && j == iteminfo2.position) + { + f1 = f2 + iteminfo2.widthFactor; + i = l + 1; + if (i < mItems.size()) + { + obj = (ItemInfo)mItems.get(i); + } else + { + obj = null; + } + } else + { + obj = addNewItem(j, l); + i = l + 1; + f1 = f2 + ((ItemInfo) (obj)).widthFactor; + if (i < mItems.size()) + { + obj = (ItemInfo)mItems.get(i); + } else + { + obj = null; + } + } + goto _L20 + if (i != 0) + { + Collections.sort(mDrawingOrderedChildren, sPositionComparator); + } + if (!hasFocus()) goto _L22; else goto _L21 +_L21: + Object obj1 = findFocus(); + ItemInfo iteminfo; + if (obj1 != null) + { + obj1 = infoForAnyChild(((View) (obj1))); + } else + { + obj1 = null; + } + if (obj1 != null && ((ItemInfo) (obj1)).position == mCurItem) goto _L22; else goto _L23 +_L23: + i = 0; +_L26: + if (i >= getChildCount()) goto _L22; else goto _L24 +_L24: + obj1 = getChildAt(i); + iteminfo = infoForChild(((View) (obj1))); + if (iteminfo != null && iteminfo.position == mCurItem && ((View) (obj1)).requestFocus(2)) goto _L22; else goto _L25 +_L25: + i++; + goto _L26 + } + + public void setAdapter(PagerAdapter pageradapter) + { + if (mAdapter != null) + { + mAdapter.unregisterDataSetObserver(mObserver); + mAdapter.startUpdate(this); + for (int i = 0; i < mItems.size(); i++) + { + ItemInfo iteminfo = (ItemInfo)mItems.get(i); + mAdapter.destroyItem(this, iteminfo.position, iteminfo.object); + } + + mAdapter.finishUpdate(this); + mItems.clear(); + removeNonDecorViews(); + mCurItem = 0; + scrollTo(0, 0); + } + PagerAdapter pageradapter1 = mAdapter; + mAdapter = pageradapter; + if (mAdapter != null) + { + if (mObserver == null) + { + mObserver = new PagerObserver(); + } + mAdapter.registerDataSetObserver(mObserver); + mPopulatePending = false; + mFirstLayout = true; + if (mRestoredCurItem >= 0) + { + mAdapter.restoreState(mRestoredAdapterState, mRestoredClassLoader); + setCurrentItemInternal(mRestoredCurItem, false, true); + mRestoredCurItem = -1; + mRestoredAdapterState = null; + mRestoredClassLoader = null; + } else + { + populate(); + } + } + if (mAdapterChangeListener != null && pageradapter1 != pageradapter) + { + mAdapterChangeListener.onAdapterChanged(pageradapter1, pageradapter); + } + } + + void setChildrenDrawingOrderEnabledCompat(boolean flag) + { + if (mSetChildrenDrawingOrderEnabled == null) + { + try + { + mSetChildrenDrawingOrderEnabled = android/view/ViewGroup.getDeclaredMethod("setChildrenDrawingOrderEnabled", new Class[] { + Boolean.TYPE + }); + } + catch (NoSuchMethodException nosuchmethodexception) + { + Log.e("ViewPager", "Can't find setChildrenDrawingOrderEnabled", nosuchmethodexception); + } + } + try + { + mSetChildrenDrawingOrderEnabled.invoke(this, new Object[] { + Boolean.valueOf(flag) + }); + return; + } + catch (Exception exception) + { + Log.e("ViewPager", "Error changing children drawing order", exception); + } + } + + public void setCurrentItem(int i) + { + mPopulatePending = false; + boolean flag; + if (!mFirstLayout) + { + flag = true; + } else + { + flag = false; + } + setCurrentItemInternal(i, flag, false); + } + + public void setCurrentItem(int i, boolean flag) + { + mPopulatePending = false; + setCurrentItemInternal(i, flag, false); + } + + void setCurrentItemInternal(int i, boolean flag, boolean flag1) + { + setCurrentItemInternal(i, flag, flag1, 0); + } + + void setCurrentItemInternal(int i, boolean flag, boolean flag1, int j) + { + boolean flag2; + flag2 = true; + if (mAdapter == null || mAdapter.getCount() <= 0) + { + setScrollingCacheEnabled(false); + return; + } + if (!flag1 && mCurItem == i && mItems.size() != 0) + { + setScrollingCacheEnabled(false); + return; + } + if (i >= 0) goto _L2; else goto _L1 +_L1: + int k = 0; +_L4: + i = mOffscreenPageLimit; + if (k > mCurItem + i || k < mCurItem - i) + { + for (i = 0; i < mItems.size(); i++) + { + ((ItemInfo)mItems.get(i)).scrolling = true; + } + + } + break; /* Loop/switch isn't completed */ +_L2: + k = i; + if (i >= mAdapter.getCount()) + { + k = mAdapter.getCount() - 1; + } + if (true) goto _L4; else goto _L3 +_L3: + if (mCurItem != k) + { + flag1 = flag2; + } else + { + flag1 = false; + } + populate(k); + scrollToItem(k, flag, j, flag1); + return; + } + + public void setOffscreenPageLimit(int i) + { + int j = i; + if (i < 1) + { + Log.w("ViewPager", (new StringBuilder()).append("Requested offscreen page limit ").append(i).append(" too small; defaulting to ").append(1).toString()); + j = 1; + } + if (j != mOffscreenPageLimit) + { + mOffscreenPageLimit = j; + populate(); + } + } + + void setOnAdapterChangeListener(OnAdapterChangeListener onadapterchangelistener) + { + mAdapterChangeListener = onadapterchangelistener; + } + + public void setOnPageChangeListener(OnPageChangeListener onpagechangelistener) + { + mOnPageChangeListener = onpagechangelistener; + } + + public void setPageMargin(int i) + { + int j = mPageMargin; + mPageMargin = i; + int k = getWidth(); + recomputeScrollPosition(k, k, i, j); + requestLayout(); + } + + public void setPageMarginDrawable(int i) + { + setPageMarginDrawable(getContext().getResources().getDrawable(i)); + } + + public void setPageMarginDrawable(Drawable drawable) + { + mMarginDrawable = drawable; + if (drawable != null) + { + refreshDrawableState(); + } + boolean flag; + if (drawable == null) + { + flag = true; + } else + { + flag = false; + } + setWillNotDraw(flag); + invalidate(); + } + + void smoothScrollTo(int i, int j, int k) + { + if (getChildCount() == 0) + { + setScrollingCacheEnabled(false); + return; + } + int l = getScrollX(); + int i1 = getScrollY(); + int j1 = i - l; + j -= i1; + if (j1 == 0 && j == 0) + { + completeScroll(false); + populate(); + setScrollState(0); + return; + } + setScrollingCacheEnabled(true); + setScrollState(2); + i = getWidth(); + int k1 = i / 2; + float f4 = Math.min(1.0F, (1.0F * (float)Math.abs(j1)) / (float)i); + float f = k1; + float f2 = k1; + f4 = distanceInfluenceForSnapDuration(f4); + k = Math.abs(k); + if (k > 0) + { + i = Math.round(1000F * Math.abs((f + f2 * f4) / (float)k)) * 4; + } else + { + float f1 = i; + float f3 = mAdapter.getPageWidth(mCurItem); + i = (int)((1.0F + (float)Math.abs(j1) / ((float)mPageMargin + f1 * f3)) * 100F); + } + i = Math.min(i, 600); + mScroller.startScroll(l, i1, j1, j, i); + ViewCompat.postInvalidateOnAnimation(this); + } + + protected boolean verifyDrawable(Drawable drawable) + { + return super.verifyDrawable(drawable) || drawable == mMarginDrawable; + } + + +} diff --git a/app/src/main/java/android/support/v4/widget/EdgeEffectCompat$BaseEdgeEffectImpl.java b/app/src/main/java/android/support/v4/widget/EdgeEffectCompat$BaseEdgeEffectImpl.java new file mode 100644 index 0000000..6818d19 --- /dev/null +++ b/app/src/main/java/android/support/v4/widget/EdgeEffectCompat$BaseEdgeEffectImpl.java @@ -0,0 +1,47 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.widget; + +import android.graphics.Canvas; + +// Referenced classes of package android.support.v4.widget: +// EdgeEffectCompat + +static class + implements +{ + + public boolean draw(Object obj, Canvas canvas) + { + return false; + } + + public void finish(Object obj) + { + } + + public boolean isFinished(Object obj) + { + return true; + } + + public boolean onPull(Object obj, float f) + { + return false; + } + + public boolean onRelease(Object obj) + { + return false; + } + + public void setSize(Object obj, int i, int j) + { + } + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/widget/EdgeEffectCompat$EdgeEffectIcsImpl.java b/app/src/main/java/android/support/v4/widget/EdgeEffectCompat$EdgeEffectIcsImpl.java new file mode 100644 index 0000000..0658a14 --- /dev/null +++ b/app/src/main/java/android/support/v4/widget/EdgeEffectCompat$EdgeEffectIcsImpl.java @@ -0,0 +1,49 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.widget; + +import android.graphics.Canvas; + +// Referenced classes of package android.support.v4.widget: +// EdgeEffectCompat, EdgeEffectCompatIcs + +static class + implements +{ + + public boolean draw(Object obj, Canvas canvas) + { + return EdgeEffectCompatIcs.draw(obj, canvas); + } + + public void finish(Object obj) + { + EdgeEffectCompatIcs.finish(obj); + } + + public boolean isFinished(Object obj) + { + return EdgeEffectCompatIcs.isFinished(obj); + } + + public boolean onPull(Object obj, float f) + { + return EdgeEffectCompatIcs.onPull(obj, f); + } + + public boolean onRelease(Object obj) + { + return EdgeEffectCompatIcs.onRelease(obj); + } + + public void setSize(Object obj, int i, int j) + { + EdgeEffectCompatIcs.setSize(obj, i, j); + } + + () + { + } +} diff --git a/app/src/main/java/android/support/v4/widget/EdgeEffectCompat$EdgeEffectImpl.java b/app/src/main/java/android/support/v4/widget/EdgeEffectCompat$EdgeEffectImpl.java new file mode 100644 index 0000000..c2cde1c --- /dev/null +++ b/app/src/main/java/android/support/v4/widget/EdgeEffectCompat$EdgeEffectImpl.java @@ -0,0 +1,26 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.widget; + +import android.graphics.Canvas; + +// Referenced classes of package android.support.v4.widget: +// EdgeEffectCompat + +static interface +{ + + public abstract boolean draw(Object obj, Canvas canvas); + + public abstract void finish(Object obj); + + public abstract boolean isFinished(Object obj); + + public abstract boolean onPull(Object obj, float f); + + public abstract boolean onRelease(Object obj); + + public abstract void setSize(Object obj, int i, int j); +} diff --git a/app/src/main/java/android/support/v4/widget/EdgeEffectCompat.java b/app/src/main/java/android/support/v4/widget/EdgeEffectCompat.java new file mode 100644 index 0000000..245a727 --- /dev/null +++ b/app/src/main/java/android/support/v4/widget/EdgeEffectCompat.java @@ -0,0 +1,150 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.widget; + +import android.graphics.Canvas; + +// Referenced classes of package android.support.v4.widget: +// EdgeEffectCompatIcs + +public class EdgeEffectCompat +{ + static class BaseEdgeEffectImpl + implements EdgeEffectImpl + { + + public boolean draw(Object obj, Canvas canvas) + { + return false; + } + + public void finish(Object obj) + { + } + + public boolean isFinished(Object obj) + { + return true; + } + + public boolean onPull(Object obj, float f) + { + return false; + } + + public boolean onRelease(Object obj) + { + return false; + } + + public void setSize(Object obj, int i, int j) + { + } + + BaseEdgeEffectImpl() + { + } + } + + static class EdgeEffectIcsImpl + implements EdgeEffectImpl + { + + public boolean draw(Object obj, Canvas canvas) + { + return EdgeEffectCompatIcs.draw(obj, canvas); + } + + public void finish(Object obj) + { + EdgeEffectCompatIcs.finish(obj); + } + + public boolean isFinished(Object obj) + { + return EdgeEffectCompatIcs.isFinished(obj); + } + + public boolean onPull(Object obj, float f) + { + return EdgeEffectCompatIcs.onPull(obj, f); + } + + public boolean onRelease(Object obj) + { + return EdgeEffectCompatIcs.onRelease(obj); + } + + public void setSize(Object obj, int i, int j) + { + EdgeEffectCompatIcs.setSize(obj, i, j); + } + + EdgeEffectIcsImpl() + { + } + } + + static interface EdgeEffectImpl + { + + public abstract boolean draw(Object obj, Canvas canvas); + + public abstract void finish(Object obj); + + public abstract boolean isFinished(Object obj); + + public abstract boolean onPull(Object obj, float f); + + public abstract boolean onRelease(Object obj); + + public abstract void setSize(Object obj, int i, int j); + } + + + private static final EdgeEffectImpl IMPL; + private Object mEdgeEffect; + + public boolean draw(Canvas canvas) + { + return IMPL.draw(mEdgeEffect, canvas); + } + + public void finish() + { + IMPL.finish(mEdgeEffect); + } + + public boolean isFinished() + { + return IMPL.isFinished(mEdgeEffect); + } + + public boolean onPull(float f) + { + return IMPL.onPull(mEdgeEffect, f); + } + + public boolean onRelease() + { + return IMPL.onRelease(mEdgeEffect); + } + + public void setSize(int i, int j) + { + IMPL.setSize(mEdgeEffect, i, j); + } + + static + { + if (android.os.Build.VERSION.SDK_INT >= 14) + { + IMPL = new EdgeEffectIcsImpl(); + } else + { + IMPL = new BaseEdgeEffectImpl(); + } + } +} diff --git a/app/src/main/java/android/support/v4/widget/EdgeEffectCompatIcs.java b/app/src/main/java/android/support/v4/widget/EdgeEffectCompatIcs.java new file mode 100644 index 0000000..2f51dac --- /dev/null +++ b/app/src/main/java/android/support/v4/widget/EdgeEffectCompatIcs.java @@ -0,0 +1,45 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package android.support.v4.widget; + +import android.graphics.Canvas; +import android.widget.EdgeEffect; + +class EdgeEffectCompatIcs +{ + + public static boolean draw(Object obj, Canvas canvas) + { + return ((EdgeEffect)obj).draw(canvas); + } + + public static void finish(Object obj) + { + ((EdgeEffect)obj).finish(); + } + + public static boolean isFinished(Object obj) + { + return ((EdgeEffect)obj).isFinished(); + } + + public static boolean onPull(Object obj, float f) + { + ((EdgeEffect)obj).onPull(f); + return true; + } + + public static boolean onRelease(Object obj) + { + obj = (EdgeEffect)obj; + ((EdgeEffect) (obj)).onRelease(); + return ((EdgeEffect) (obj)).isFinished(); + } + + public static void setSize(Object obj, int i, int j) + { + ((EdgeEffect)obj).setSize(i, j); + } +} diff --git a/app/src/main/java/com/glaforge/i18n/io/CharsetToolkit.java b/app/src/main/java/com/glaforge/i18n/io/CharsetToolkit.java new file mode 100644 index 0000000..c29291e --- /dev/null +++ b/app/src/main/java/com/glaforge/i18n/io/CharsetToolkit.java @@ -0,0 +1,197 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package com.glaforge.i18n.io; + + +public class CharsetToolkit +{ + + public static String guessEncoding(byte abyte0[], int i, String s) + { + if (!hasUTF8Bom(abyte0)) goto _L2; else goto _L1 +_L1: + abyte0 = "UTF-8"; +_L5: + return abyte0; +_L2: + boolean flag1; + int k; + boolean flag2; + flag1 = false; + flag2 = true; + k = 0; +_L8: + if (k < i) goto _L4; else goto _L3 +_L3: + k = ((flag1) ? 1 : 0); +_L7: + abyte0 = s; + if (k != 0) + { + abyte0 = s; + if (flag2) + { + return "UTF-8"; + } + } + goto _L5 +_L4: + byte byte5 = abyte0[k]; + byte byte0; + byte byte1; + byte byte2; + byte byte3; + byte byte4; + boolean flag; + int j; + if (k + 1 >= i) + { + byte0 = -1; + } else + { + byte0 = abyte0[k + 1]; + } + if (k + 2 >= i) + { + byte1 = -1; + } else + { + byte1 = abyte0[k + 2]; + } + if (k + 3 >= i) + { + byte2 = -1; + } else + { + byte2 = abyte0[k + 3]; + } + if (k + 4 >= i) + { + byte3 = -1; + } else + { + byte3 = abyte0[k + 4]; + } + if (k + 5 >= i) + { + byte4 = -1; + } else + { + byte4 = abyte0[k + 5]; + } + j = k; + flag = flag2; + if (byte5 < 0) + { + flag1 = true; + if (isTwoBytesSequence(byte5)) + { + if (!isContinuationChar(byte0)) + { + flag = false; + j = k; + } else + { + j = k + 1; + flag = flag2; + } + } else + if (isThreeBytesSequence(byte5)) + { + if (!isContinuationChar(byte0) || !isContinuationChar(byte1)) + { + flag = false; + j = k; + } else + { + j = k + 2; + flag = flag2; + } + } else + if (isFourBytesSequence(byte5)) + { + if (!isContinuationChar(byte0) || !isContinuationChar(byte1) || !isContinuationChar(byte2)) + { + flag = false; + j = k; + } else + { + j = k + 3; + flag = flag2; + } + } else + if (isFiveBytesSequence(byte5)) + { + if (!isContinuationChar(byte0) || !isContinuationChar(byte1) || !isContinuationChar(byte2) || !isContinuationChar(byte3)) + { + flag = false; + j = k; + } else + { + j = k + 4; + flag = flag2; + } + } else + if (isSixBytesSequence(byte5)) + { + if (!isContinuationChar(byte0) || !isContinuationChar(byte1) || !isContinuationChar(byte2) || !isContinuationChar(byte3) || !isContinuationChar(byte4)) + { + flag = false; + j = k; + } else + { + j = k + 5; + flag = flag2; + } + } else + { + flag = false; + j = k; + } + } + k = ((flag1) ? 1 : 0); + flag2 = flag; + if (!flag) goto _L7; else goto _L6 +_L6: + k = j + 1; + flag2 = flag; + goto _L8 + } + + private static boolean hasUTF8Bom(byte abyte0[]) + { + return abyte0[0] == -17 && abyte0[1] == -69 && abyte0[2] == -65; + } + + private static boolean isContinuationChar(byte byte0) + { + return -128 <= byte0 && byte0 <= -65; + } + + private static boolean isFiveBytesSequence(byte byte0) + { + return -8 <= byte0 && byte0 <= -5; + } + + private static boolean isFourBytesSequence(byte byte0) + { + return -16 <= byte0 && byte0 <= -9; + } + + private static boolean isSixBytesSequence(byte byte0) + { + return -4 <= byte0 && byte0 <= -3; + } + + private static boolean isThreeBytesSequence(byte byte0) + { + return -32 <= byte0 && byte0 <= -17; + } + + private static boolean isTwoBytesSequence(byte byte0) + { + return -64 <= byte0 && byte0 <= -33; + } +} diff --git a/app/src/main/java/com/markupartist/android/widget/ActionBar$ActionBarItemClickHandler.java b/app/src/main/java/com/markupartist/android/widget/ActionBar$ActionBarItemClickHandler.java new file mode 100644 index 0000000..af878f8 --- /dev/null +++ b/app/src/main/java/com/markupartist/android/widget/ActionBar$ActionBarItemClickHandler.java @@ -0,0 +1,16 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package com.markupartist.android.widget; + +import android.view.View; + +// Referenced classes of package com.markupartist.android.widget: +// ActionBar + +public static interface I +{ + + public abstract void onActionBarItemClicked(I i, View view); +} diff --git a/app/src/main/java/com/markupartist/android/widget/ActionBar$GenericAction.java b/app/src/main/java/com/markupartist/android/widget/ActionBar$GenericAction.java new file mode 100644 index 0000000..d33fa81 --- /dev/null +++ b/app/src/main/java/com/markupartist/android/widget/ActionBar$GenericAction.java @@ -0,0 +1,34 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package com.markupartist.android.widget; + + +// Referenced classes of package com.markupartist.android.widget: +// ActionBar + +public static final class mDescription +{ + + private String mDescription; + private int mDrawable; + + public String getDescription() + { + return mDescription; + } + + public int getDrawable() + { + return mDrawable; + } + + + + public (int i, String s) + { + mDrawable = i; + mDescription = s; + } +} diff --git a/app/src/main/java/com/markupartist/android/widget/ActionBar.java b/app/src/main/java/com/markupartist/android/widget/ActionBar.java new file mode 100644 index 0000000..24b75ef --- /dev/null +++ b/app/src/main/java/com/markupartist/android/widget/ActionBar.java @@ -0,0 +1,178 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package com.markupartist.android.widget; + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.ImageButton; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; +import android.widget.Toast; + +public class ActionBar extends RelativeLayout + implements android.view.View.OnClickListener, android.view.View.OnLongClickListener +{ + public static interface ActionBarItemClickHandler + { + + public abstract void onActionBarItemClicked(GenericAction genericaction, View view); + } + + public static final class GenericAction + { + + private String mDescription; + private int mDrawable; + + public String getDescription() + { + return mDescription; + } + + public int getDrawable() + { + return mDrawable; + } + + + + public GenericAction(int i, String s) + { + mDrawable = i; + mDescription = s; + } + } + + + private ActionBarItemClickHandler mActionClickListener; + private LinearLayout mActionsView; + private RelativeLayout mBarView; + private LayoutInflater mInflater; + private TextView mTitleView; + + public ActionBar(Context context, AttributeSet attributeset) + { + super(context, attributeset); + mInflater = (LayoutInflater)context.getSystemService("layout_inflater"); + mBarView = (RelativeLayout)mInflater.inflate(R.layout.actionbar, null); + addView(mBarView); + mTitleView = (TextView)mBarView.findViewById(R.id.actionbar_title); + mActionsView = (LinearLayout)mBarView.findViewById(R.id.actionbar_actions); + context = context.obtainStyledAttributes(attributeset, R.styleable.ActionBar); + attributeset = context.getString(0); + if (attributeset != null) + { + setTitle(attributeset); + } + context.recycle(); + } + + private View get(int i) + { + return mActionsView.getChildAt(i); + } + + private View inflateAction(GenericAction genericaction) + { + View view = mInflater.inflate(R.layout.actionbar_item, mActionsView, false); + ImageButton imagebutton = (ImageButton)view.findViewById(R.id.actionbar_item); + if (genericaction.getDrawable() != -1) + { + imagebutton.setImageResource(genericaction.getDrawable()); + } + view.setTag(genericaction); + view.setOnClickListener(this); + view.setOnLongClickListener(this); + return view; + } + + public void addAction(GenericAction genericaction) + { + addAction(genericaction, mActionsView.getChildCount()); + } + + public void addAction(GenericAction genericaction, int i) + { + mActionsView.addView(inflateAction(genericaction), i); + } + + public void onClick(View view) + { + Object obj = view.getTag(); + if (obj instanceof GenericAction) + { + obj = (GenericAction)obj; + if (mActionClickListener != null) + { + mActionClickListener.onActionBarItemClicked(((GenericAction) (obj)), view); + } + } + } + + public boolean onLongClick(View view) + { +label0: + { + view = ((View) (view.getTag())); + if (view instanceof GenericAction) + { + view = ((GenericAction)view).getDescription(); + if (view != null) + { + break label0; + } + } + return false; + } + Toast.makeText(getContext(), view, 0).show(); + return true; + } + + public void setActionDescription(int i, int j) + { + setActionDescription(i, getContext().getString(j)); + } + + public void setActionDescription(int i, String s) + { + ((GenericAction)get(i).getTag()).mDescription = s; + } + + public void setActionDrawable(int i, int j) + { + ImageButton imagebutton = (ImageButton)get(i).findViewById(R.id.actionbar_item); + imagebutton.setImageResource(j); + ((GenericAction)imagebutton.getTag()).mDrawable = j; + } + + public void setActionEnabled(int i, boolean flag) + { + get(i).setEnabled(flag); + } + + public void setActionVisibility(int i, int j) + { + get(i).setVisibility(j); + } + + public void setOnActionClickListener(ActionBarItemClickHandler actionbaritemclickhandler) + { + mActionClickListener = actionbaritemclickhandler; + } + + public void setTitle(int i) + { + mTitleView.setText(i); + } + + public void setTitle(CharSequence charsequence) + { + mTitleView.setText(charsequence); + } +} diff --git a/app/src/main/java/com/markupartist/android/widget/R$id.java b/app/src/main/java/com/markupartist/android/widget/R$id.java new file mode 100644 index 0000000..194ab9e --- /dev/null +++ b/app/src/main/java/com/markupartist/android/widget/R$id.java @@ -0,0 +1,26 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package com.markupartist.android.widget; + + +// Referenced classes of package com.markupartist.android.widget: +// R + +public static final class +{ + + public static final int actionbar = 0x7f080012; + public static final int actionbar_actions = 0x7f08001c; + public static final int actionbar_home = 0x7f080017; + public static final int actionbar_home_bg = 0x7f080019; + public static final int actionbar_home_btn = 0x7f08001a; + public static final int actionbar_home_is_back = 0x7f08001b; + public static final int actionbar_home_logo = 0x7f080018; + public static final int actionbar_item = 0x7f08001f; + public static final int actionbar_progress = 0x7f08001d; + public static final int actionbar_title = 0x7f08001e; + public static final int overflowitemid = 0x7f080000; + public static final int screen = 0x7f080016; +} diff --git a/app/src/main/java/com/markupartist/android/widget/R$layout.java b/app/src/main/java/com/markupartist/android/widget/R$layout.java new file mode 100644 index 0000000..8314854 --- /dev/null +++ b/app/src/main/java/com/markupartist/android/widget/R$layout.java @@ -0,0 +1,17 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package com.markupartist.android.widget; + + +// Referenced classes of package com.markupartist.android.widget: +// R + +public static final class +{ + + public static final int action_bar_inflated = 0x7f030000; + public static final int actionbar = 0x7f030004; + public static final int actionbar_item = 0x7f030005; +} diff --git a/app/src/main/java/com/markupartist/android/widget/R$styleable.java b/app/src/main/java/com/markupartist/android/widget/R$styleable.java new file mode 100644 index 0000000..c9ef080 --- /dev/null +++ b/app/src/main/java/com/markupartist/android/widget/R$styleable.java @@ -0,0 +1,19 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package com.markupartist.android.widget; + + +// Referenced classes of package com.markupartist.android.widget: +// R + +public static final class +{ + + public static final int ActionBar[] = { + 0x7f010000 + }; + public static final int ActionBar_title = 0; + +} diff --git a/app/src/main/java/com/markupartist/android/widget/R.java b/app/src/main/java/com/markupartist/android/widget/R.java new file mode 100644 index 0000000..a2a9cc7 --- /dev/null +++ b/app/src/main/java/com/markupartist/android/widget/R.java @@ -0,0 +1,45 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package com.markupartist.android.widget; + + +public final class R +{ + public static final class id + { + + public static final int actionbar = 0x7f080012; + public static final int actionbar_actions = 0x7f08001c; + public static final int actionbar_home = 0x7f080017; + public static final int actionbar_home_bg = 0x7f080019; + public static final int actionbar_home_btn = 0x7f08001a; + public static final int actionbar_home_is_back = 0x7f08001b; + public static final int actionbar_home_logo = 0x7f080018; + public static final int actionbar_item = 0x7f08001f; + public static final int actionbar_progress = 0x7f08001d; + public static final int actionbar_title = 0x7f08001e; + public static final int overflowitemid = 0x7f080000; + public static final int screen = 0x7f080016; + } + + public static final class layout + { + + public static final int action_bar_inflated = 0x7f030000; + public static final int actionbar = 0x7f030004; + public static final int actionbar_item = 0x7f030005; + } + + public static final class styleable + { + + public static final int ActionBar[] = { + 0x7f010000 + }; + public static final int ActionBar_title = 0; + + } + +} diff --git a/app/src/main/java/com/markupartist/android/widget/ScrollingTextView.java b/app/src/main/java/com/markupartist/android/widget/ScrollingTextView.java new file mode 100644 index 0000000..7e5a936 --- /dev/null +++ b/app/src/main/java/com/markupartist/android/widget/ScrollingTextView.java @@ -0,0 +1,50 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package com.markupartist.android.widget; + +import android.content.Context; +import android.graphics.Rect; +import android.util.AttributeSet; +import android.widget.TextView; + +public class ScrollingTextView extends TextView +{ + + public ScrollingTextView(Context context) + { + super(context); + } + + public ScrollingTextView(Context context, AttributeSet attributeset) + { + super(context, attributeset); + } + + public ScrollingTextView(Context context, AttributeSet attributeset, int i) + { + super(context, attributeset, i); + } + + public boolean isFocused() + { + return true; + } + + protected void onFocusChanged(boolean flag, int i, Rect rect) + { + if (flag) + { + super.onFocusChanged(flag, i, rect); + } + } + + public void onWindowFocusChanged(boolean flag) + { + if (flag) + { + super.onWindowFocusChanged(flag); + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/AuthPicker$1.java b/app/src/main/java/net/andchat/donate/Activities/AuthPicker$1.java new file mode 100644 index 0000000..5418c36 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/AuthPicker$1.java @@ -0,0 +1,82 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.widget.CompoundButton; +import android.widget.EditText; + +// Referenced classes of package net.andchat.donate.Activities: +// AuthPicker + +class val.saslPassword + implements android.widget.n.OnCheckedChangeListener +{ + + final AuthPicker this$0; + private final EditText val$nickservPassword; + private final EditText val$passwordEntry; + private final EditText val$saslPassword; + private final EditText val$saslUsername; + + public void onCheckedChanged(CompoundButton compoundbutton, boolean flag) + { + switch (compoundbutton.getId()) + { + case 2131230776: + case 2131230778: + default: + return; + + case 2131230775: + val$passwordEntry.setEnabled(flag); + if (flag) + { + val$passwordEntry.requestFocus(); + return; + } else + { + val$passwordEntry.setError(null); + return; + } + + case 2131230777: + val$nickservPassword.setEnabled(flag); + if (flag) + { + val$nickservPassword.requestFocus(); + return; + } else + { + val$nickservPassword.setError(null); + return; + } + + case 2131230779: + val$saslUsername.setEnabled(flag); + val$saslPassword.setEnabled(flag); + break; + } + if (flag) + { + val$saslUsername.requestFocus(); + return; + } else + { + val$saslUsername.setError(null); + val$saslPassword.setError(null); + return; + } + } + + geListener() + { + this$0 = final_authpicker; + val$passwordEntry = edittext; + val$nickservPassword = edittext1; + val$saslUsername = edittext2; + val$saslPassword = EditText.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/AuthPicker$2.java b/app/src/main/java/net/andchat/donate/Activities/AuthPicker$2.java new file mode 100644 index 0000000..3c4a98e --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/AuthPicker$2.java @@ -0,0 +1,107 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.Intent; +import android.os.Bundle; +import android.text.Editable; +import android.text.TextUtils; +import android.view.View; +import android.widget.CheckBox; +import android.widget.EditText; +import net.andchat.donate.Misc.ServerProfile; + +// Referenced classes of package net.andchat.donate.Activities: +// AuthPicker + +class val.saslCheckbox + implements android.view.istener +{ + + final AuthPicker this$0; + private final CheckBox val$nickservCheckbox; + private final EditText val$nickservPassword; + private final CheckBox val$passwordCheckbox; + private final EditText val$passwordEntry; + private final CheckBox val$saslCheckbox; + private final EditText val$saslPassword; + private final EditText val$saslUsername; + + public void onClick(View view) + { + view = val$passwordEntry.getText().toString(); + String s = val$nickservPassword.getText().toString(); + String s1 = val$saslUsername.getText().toString(); + String s2 = val$saslPassword.getText().toString(); + if (val$passwordCheckbox.isChecked() && TextUtils.isEmpty(view)) + { + val$passwordEntry.setError(getString(0x7f0a0159)); + val$passwordEntry.requestFocus(); + return; + } + if (val$nickservCheckbox.isChecked() && TextUtils.isEmpty(s)) + { + val$nickservPassword.setError(getString(0x7f0a0159)); + val$nickservPassword.requestFocus(); + return; + } + if (val$saslCheckbox.isChecked()) + { + if (TextUtils.isEmpty(s1)) + { + val$saslUsername.setError(getString(0x7f0a015a)); + val$saslUsername.requestFocus(); + return; + } + if (TextUtils.isEmpty(s2)) + { + val$saslPassword.setError(getString(0x7f0a0159)); + val$saslPassword.requestFocus(); + return; + } + } + Bundle bundle = new Bundle(); + if (val$passwordCheckbox.isChecked()) + { + AuthPicker.access$0(AuthPicker.this).addAuthMode(net.andchat.donate.Misc..AuthenticationModes.MODE_PASSWORD); + AuthPicker.access$0(AuthPicker.this).setServerPassword(view); + } else + { + AuthPicker.access$0(AuthPicker.this).removeAuthMode(net.andchat.donate.Misc..AuthenticationModes.MODE_PASSWORD); + } + if (val$nickservCheckbox.isChecked()) + { + AuthPicker.access$0(AuthPicker.this).addAuthMode(net.andchat.donate.Misc..AuthenticationModes.MODE_NICKSERV); + AuthPicker.access$0(AuthPicker.this).setNickServDetails(s); + } else + { + AuthPicker.access$0(AuthPicker.this).removeAuthMode(net.andchat.donate.Misc..AuthenticationModes.MODE_NICKSERV); + } + if (val$saslCheckbox.isChecked()) + { + AuthPicker.access$0(AuthPicker.this).addAuthMode(net.andchat.donate.Misc..AuthenticationModes.MODE_SASL); + AuthPicker.access$0(AuthPicker.this).setSASLDetails(s1, s2); + } else + { + AuthPicker.access$0(AuthPicker.this).removeAuthMode(net.andchat.donate.Misc..AuthenticationModes.MODE_SASL); + } + bundle.putParcelable("server_profile", AuthPicker.access$0(AuthPicker.this)); + setResult(-1, (new Intent()).putExtras(bundle)); + finish(); + } + + nticationModes() + { + this$0 = final_authpicker; + val$passwordEntry = edittext; + val$nickservPassword = edittext1; + val$saslUsername = edittext2; + val$saslPassword = edittext3; + val$passwordCheckbox = checkbox; + val$nickservCheckbox = checkbox1; + val$saslCheckbox = CheckBox.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/AuthPicker$3.java b/app/src/main/java/net/andchat/donate/Activities/AuthPicker$3.java new file mode 100644 index 0000000..7723f15 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/AuthPicker$3.java @@ -0,0 +1,29 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.view.View; + +// Referenced classes of package net.andchat.donate.Activities: +// AuthPicker + +class this._cls0 + implements android.view.istener +{ + + final AuthPicker this$0; + + public void onClick(View view) + { + setResult(0); + finish(); + } + + () + { + this$0 = AuthPicker.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/AuthPicker.java b/app/src/main/java/net/andchat/donate/Activities/AuthPicker.java new file mode 100644 index 0000000..b33c26b --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/AuthPicker.java @@ -0,0 +1,266 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.text.Editable; +import android.text.TextUtils; +import android.view.View; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.EditText; +import net.andchat.donate.Misc.ServerProfile; +import net.andchat.donate.Misc.Utils; + +public class AuthPicker extends Activity +{ + + private ServerProfile mEditingProfile; + + public AuthPicker() + { + } + + public void onCreate(final Bundle passwordCheckbox) + { + super.onCreate(passwordCheckbox); + setContentView(0x7f03000c); + mEditingProfile = (ServerProfile)getIntent().getParcelableExtra("server_profile"); + final EditText passwordEntry; + final CheckBox nickservCheckbox; + final EditText nickservPassword; + final CheckBox saslCheckbox; + final EditText saslUsername; + final EditText saslPassword; + android.widget.CompoundButton.OnCheckedChangeListener oncheckedchangelistener; + if (mEditingProfile != null) + { + if (mEditingProfile.usesEncryption()) + { + mEditingProfile.decryptSelf(Utils.getCrypt(this)); + } + } else + { + mEditingProfile = new ServerProfile(); + } + passwordCheckbox = (CheckBox)findViewById(0x7f080037); + passwordEntry = (EditText)findViewById(0x7f080038); + nickservCheckbox = (CheckBox)findViewById(0x7f080039); + nickservPassword = (EditText)findViewById(0x7f08003a); + saslCheckbox = (CheckBox)findViewById(0x7f08003b); + saslUsername = (EditText)findViewById(0x7f08003c); + saslPassword = (EditText)findViewById(0x7f08003d); + oncheckedchangelistener = new android.widget.CompoundButton.OnCheckedChangeListener() { + + final AuthPicker this$0; + private final EditText val$nickservPassword; + private final EditText val$passwordEntry; + private final EditText val$saslPassword; + private final EditText val$saslUsername; + + public void onCheckedChanged(CompoundButton compoundbutton, boolean flag3) + { + switch (compoundbutton.getId()) + { + case 2131230776: + case 2131230778: + default: + return; + + case 2131230775: + passwordEntry.setEnabled(flag3); + if (flag3) + { + passwordEntry.requestFocus(); + return; + } else + { + passwordEntry.setError(null); + return; + } + + case 2131230777: + nickservPassword.setEnabled(flag3); + if (flag3) + { + nickservPassword.requestFocus(); + return; + } else + { + nickservPassword.setError(null); + return; + } + + case 2131230779: + saslUsername.setEnabled(flag3); + saslPassword.setEnabled(flag3); + break; + } + if (flag3) + { + saslUsername.requestFocus(); + return; + } else + { + saslUsername.setError(null); + saslPassword.setError(null); + return; + } + } + + + { + this$0 = AuthPicker.this; + passwordEntry = edittext; + nickservPassword = edittext1; + saslUsername = edittext2; + saslPassword = edittext3; + super(); + } + }; + passwordCheckbox.setOnCheckedChangeListener(oncheckedchangelistener); + nickservCheckbox.setOnCheckedChangeListener(oncheckedchangelistener); + saslCheckbox.setOnCheckedChangeListener(oncheckedchangelistener); + if (mEditingProfile != null) + { + ServerProfile serverprofile = mEditingProfile; + int i = serverprofile.getAuthModes(); + boolean flag = Utils.isBitSet(i, net.andchat.donate.Misc.ServerProfile.AuthenticationModes.MODE_PASSWORD); + boolean flag1 = Utils.isBitSet(i, net.andchat.donate.Misc.ServerProfile.AuthenticationModes.MODE_NICKSERV); + boolean flag2 = Utils.isBitSet(i, net.andchat.donate.Misc.ServerProfile.AuthenticationModes.MODE_SASL); + if (!flag) + { + passwordCheckbox.setChecked(false); + } else + { + passwordCheckbox.setChecked(true); + passwordEntry.setText(serverprofile.getServerPassword()); + } + if (!flag1) + { + nickservCheckbox.setChecked(false); + } else + { + nickservCheckbox.setChecked(true); + nickservPassword.setText(serverprofile.getNickservPassword()); + } + if (!flag2) + { + saslCheckbox.setChecked(false); + } else + { + saslCheckbox.setChecked(true); + saslUsername.setText(serverprofile.getSASLUsername()); + saslPassword.setText(serverprofile.getSASLPassword()); + } + } + findViewById(0x7f080067).setOnClickListener(new android.view.View.OnClickListener() { + + final AuthPicker this$0; + private final CheckBox val$nickservCheckbox; + private final EditText val$nickservPassword; + private final CheckBox val$passwordCheckbox; + private final EditText val$passwordEntry; + private final CheckBox val$saslCheckbox; + private final EditText val$saslPassword; + private final EditText val$saslUsername; + + public void onClick(View view) + { + view = passwordEntry.getText().toString(); + String s = nickservPassword.getText().toString(); + String s1 = saslUsername.getText().toString(); + String s2 = saslPassword.getText().toString(); + if (passwordCheckbox.isChecked() && TextUtils.isEmpty(view)) + { + passwordEntry.setError(getString(0x7f0a0159)); + passwordEntry.requestFocus(); + return; + } + if (nickservCheckbox.isChecked() && TextUtils.isEmpty(s)) + { + nickservPassword.setError(getString(0x7f0a0159)); + nickservPassword.requestFocus(); + return; + } + if (saslCheckbox.isChecked()) + { + if (TextUtils.isEmpty(s1)) + { + saslUsername.setError(getString(0x7f0a015a)); + saslUsername.requestFocus(); + return; + } + if (TextUtils.isEmpty(s2)) + { + saslPassword.setError(getString(0x7f0a0159)); + saslPassword.requestFocus(); + return; + } + } + Bundle bundle = new Bundle(); + if (passwordCheckbox.isChecked()) + { + mEditingProfile.addAuthMode(net.andchat.donate.Misc.ServerProfile.AuthenticationModes.MODE_PASSWORD); + mEditingProfile.setServerPassword(view); + } else + { + mEditingProfile.removeAuthMode(net.andchat.donate.Misc.ServerProfile.AuthenticationModes.MODE_PASSWORD); + } + if (nickservCheckbox.isChecked()) + { + mEditingProfile.addAuthMode(net.andchat.donate.Misc.ServerProfile.AuthenticationModes.MODE_NICKSERV); + mEditingProfile.setNickServDetails(s); + } else + { + mEditingProfile.removeAuthMode(net.andchat.donate.Misc.ServerProfile.AuthenticationModes.MODE_NICKSERV); + } + if (saslCheckbox.isChecked()) + { + mEditingProfile.addAuthMode(net.andchat.donate.Misc.ServerProfile.AuthenticationModes.MODE_SASL); + mEditingProfile.setSASLDetails(s1, s2); + } else + { + mEditingProfile.removeAuthMode(net.andchat.donate.Misc.ServerProfile.AuthenticationModes.MODE_SASL); + } + bundle.putParcelable("server_profile", mEditingProfile); + setResult(-1, (new Intent()).putExtras(bundle)); + finish(); + } + + + { + this$0 = AuthPicker.this; + passwordEntry = edittext; + nickservPassword = edittext1; + saslUsername = edittext2; + saslPassword = edittext3; + passwordCheckbox = checkbox; + nickservCheckbox = checkbox1; + saslCheckbox = checkbox2; + super(); + } + }); + findViewById(0x7f080068).setOnClickListener(new android.view.View.OnClickListener() { + + final AuthPicker this$0; + + public void onClick(View view) + { + setResult(0); + finish(); + } + + + { + this$0 = AuthPicker.this; + super(); + } + }); + } + +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$1.java b/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$1.java new file mode 100644 index 0000000..c4c06fc --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$1.java @@ -0,0 +1,36 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.widget.ListView; + +// Referenced classes of package net.andchat.donate.Activities: +// ChannelSwitcherFragment, ChatWindow + +class this._cls0 + implements Runnable +{ + + final ChannelSwitcherFragment this$0; + + public void run() + { + if (ChannelSwitcherFragment.access$0(ChannelSwitcherFragment.this) == null) + { + return; + } else + { + setListAdapter(new annelListAdapter(ChannelSwitcherFragment.this, ChannelSwitcherFragment.access$0(ChannelSwitcherFragment.this).mService)); + getListView().setSelectionFromTop(ChannelSwitcherFragment.sIdx, ChannelSwitcherFragment.sPos); + return; + } + } + + annelListAdapter() + { + this$0 = ChannelSwitcherFragment.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$2.java b/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$2.java new file mode 100644 index 0000000..000f71e --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$2.java @@ -0,0 +1,64 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.os.Handler; +import android.widget.ListView; + +// Referenced classes of package net.andchat.donate.Activities: +// ChannelSwitcherFragment + +class this._cls0 + implements Runnable +{ + + final ChannelSwitcherFragment this$0; + + public void run() + { + ListView listview; + boolean flag; + flag = false; + listview = null; + ListView listview1 = getListView(); + if (listview1 != null) goto _L2; else goto _L1 +_L1: + flag = true; + listview = listview1; +_L4: + if (flag) + { + if (ChannelSwitcherFragment.access$1(ChannelSwitcherFragment.this) != null) + { + ChannelSwitcherFragment.access$1(ChannelSwitcherFragment.this).postDelayed(this, 1000L); + } + return; + } + break; /* Loop/switch isn't completed */ +_L2: + listview = listview1; + ChannelSwitcherFragment.access$1(ChannelSwitcherFragment.this).removeCallbacks(this); + listview = listview1; + continue; /* Loop/switch isn't completed */ + IllegalStateException illegalstateexception; + illegalstateexception; + flag = true; + if (true) goto _L4; else goto _L3 +_L3: + android.widget.ListAdapter listadapter = getListAdapter(); + if (listadapter != null) + { + ((annelListAdapter)listadapter).notifyDataSetInvalidated(); + } + listview.setSelectionFromTop(ChannelSwitcherFragment.sIdx, ChannelSwitcherFragment.sPos); + return; + } + + annelListAdapter() + { + this$0 = ChannelSwitcherFragment.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$3.java b/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$3.java new file mode 100644 index 0000000..eee2fe8 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$3.java @@ -0,0 +1,32 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.Context; + +// Referenced classes of package net.andchat.donate.Activities: +// ChannelSwitcherFragment + +class this._cls0 extends net.andchat.donate.Misc.ent._cls3 +{ + + final ChannelSwitcherFragment this$0; + + public void onLeftToRightSwipe() + { + ((net.andchat.donate.Misc.ent)ChannelSwitcherFragment.access$0(ChannelSwitcherFragment.this)).LeftToRightSwipe(ChannelSwitcherFragment.this); + } + + public void onRightToLeftSwipe() + { + ((net.andchat.donate.Misc.ent)ChannelSwitcherFragment.access$0(ChannelSwitcherFragment.this)).RightToLeftSwipe(ChannelSwitcherFragment.this); + } + + (Context context, net.andchat.donate.Misc. ) + { + this$0 = ChannelSwitcherFragment.this; + super(context, ); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$4.java b/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$4.java new file mode 100644 index 0000000..a8050c3 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$4.java @@ -0,0 +1,32 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.view.GestureDetector; +import android.view.MotionEvent; +import android.view.View; + +// Referenced classes of package net.andchat.donate.Activities: +// ChannelSwitcherFragment + +class val.gd + implements android.view.itcherFragment._cls4 +{ + + final ChannelSwitcherFragment this$0; + private final GestureDetector val$gd; + + public boolean onTouch(View view, MotionEvent motionevent) + { + return val$gd.onTouchEvent(motionevent); + } + + () + { + this$0 = final_channelswitcherfragment; + val$gd = GestureDetector.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$5.java b/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$5.java new file mode 100644 index 0000000..37bcf03 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$5.java @@ -0,0 +1,31 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + + +// Referenced classes of package net.andchat.donate.Activities: +// ChannelSwitcherFragment + +class this._cls0 + implements Runnable +{ + + final ChannelSwitcherFragment this$0; + + public void run() + { + android.widget.ListAdapter listadapter = getListAdapter(); + if (listadapter != null) + { + ((annelListAdapter)listadapter).notifyDataSetChanged(); + } + } + + annelListAdapter() + { + this$0 = ChannelSwitcherFragment.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$ChannelListAdapter.java b/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$ChannelListAdapter.java new file mode 100644 index 0000000..2c3a169 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$ChannelListAdapter.java @@ -0,0 +1,254 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.res.Resources; +import android.graphics.drawable.Drawable; +import android.text.SpannableStringBuilder; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; +import java.util.Arrays; +import net.andchat.donate.Backend.IRCService; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.Misc.Colours; +import net.andchat.donate.Misc.ServerProfile; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Activities: +// ChannelSwitcherFragment, ChatWindow + +private class mIndicator extends BaseAdapter +{ + + private final Drawable mIndicator; + private final SessionManager mManagers[]; + private final int mSessionCounts[]; + private final String mSessionNames[]; + final ChannelSwitcherFragment this$0; + + public SessionManager findManagerForPosition(int i) + { + SessionManager asessionmanager[] = mManagers; + int l = asessionmanager.length; + int k = 0; + int j = 0; + do + { + if (j >= l) + { + return null; + } + k += mSessionCounts[j]; + if (i < k) + { + return asessionmanager[j]; + } + j++; + } while (true); + } + + public int getCount() + { + return mSessionNames.length; + } + + public volatile Object getItem(int i) + { + return getItem(i); + } + + public String getItem(int i) + { + return mSessionNames[i]; + } + + public long getItemId(int i) + { + return (long)i; + } + + public View getView(int i, View view, ViewGroup viewgroup) + { + SessionManager sessionmanager = findManagerForPosition(i); + Object obj; + StringBuilder stringbuilder; + boolean flag; + boolean flag1; + boolean flag2; + int j; + if (view == null) + { + view = (TextView)LayoutInflater.from(ChannelSwitcherFragment.access$0(ChannelSwitcherFragment.this)).inflate(0x7f030015, viewgroup, false); + } else + { + view = (TextView)view; + } + flag = false; + obj = sessionmanager.getSession(mSessionNames[i]); + viewgroup = ((ViewGroup) (obj)); + if (obj == null) + { + viewgroup = sessionmanager.getDefaultSession(); + } + if (viewgroup.getType() == 0) + { + flag = true; + obj = sessionmanager.getProfile().getName(); + } else + { + obj = mSessionNames[i]; + } + j = viewgroup.getCurrentTextType(); + if (viewgroup.isActive()) + { + flag1 = false; + } else + { + flag1 = true; + } + stringbuilder = new StringBuilder(); + if (viewgroup == ChannelSwitcherFragment.access$0(ChannelSwitcherFragment.this).pCurrentSession) + { + flag2 = true; + } else + { + flag2 = false; + } + if (!flag2) + { + if (!flag) + { + stringbuilder.append(" "); + } + } else + if (flag) + { + stringbuilder.append(" "); + } else + { + stringbuilder.append(" "); + } + i = 1; + if (ChannelSwitcherFragment.access$0(ChannelSwitcherFragment.this).getSessionManager() == sessionmanager) + { + if (ChannelSwitcherFragment.access$0(ChannelSwitcherFragment.this).pCurrentSession != viewgroup) + { + i = 1; + } else + { + i = 0; + } + } + if (flag1) + { + stringbuilder.append("("); + } + stringbuilder.append(((String) (obj))); + if (flag1) + { + stringbuilder.append(")"); + } + viewgroup = new SpannableStringBuilder(stringbuilder); + if (i == 0) goto _L2; else goto _L1 +_L1: + j; + JVM INSTR tableswitch 1 3: default 252 + // 1 371 + // 2 393 + // 3 415; + goto _L3 _L4 _L5 _L6 +_L3: + break; /* Loop/switch isn't completed */ +_L6: + break MISSING_BLOCK_LABEL_415; +_L2: + if (flag2) + { + view.setCompoundDrawablesWithIntrinsicBounds(mIndicator, null, null, null); + } else + { + view.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); + } + view.setText(viewgroup); + view.setTypeface(ChannelSwitcherFragment.access$2(ChannelSwitcherFragment.this)); + if (flag) + { + i = ChannelSwitcherFragment.access$3(ChannelSwitcherFragment.this) + 7; + } else + { + i = ChannelSwitcherFragment.access$3(ChannelSwitcherFragment.this); + } + view.setTextSize(i); + return view; +_L4: + Utils.addColour(false, viewgroup, Colours.getInstance().getColourForEvent(0x7f0b000a), 0, viewgroup.length()); + goto _L2 +_L5: + Utils.addColour(false, viewgroup, Colours.getInstance().getColourForEvent(0x7f0b000c), 0, viewgroup.length()); + goto _L2 + Utils.addColour(false, viewgroup, Colours.getInstance().getColourForEvent(0x7f0b000b), 0, viewgroup.length()); + goto _L2 + } + + public (IRCService ircservice) + { + SessionManager asessionmanager[]; + int ai[]; + int ai1[]; + int i; + int j; + int k; + this$0 = ChannelSwitcherFragment.this; + super(); + ai1 = ircservice.getActiveServerIds(); + k = ai1.length; + asessionmanager = new SessionManager[k]; + ai = new int[k]; + j = 0; + i = 0; +_L5: + if (i < k) goto _L2; else goto _L1 +_L1: + Arrays.sort(asessionmanager); + i = 0; +_L6: + if (i < k) goto _L4; else goto _L3 +_L3: + ircservice = new String[j]; + j = 0; + k = asessionmanager.length; + i = 0; +_L7: + if (i >= k) + { + mManagers = asessionmanager; + mSessionCounts = ai; + mSessionNames = ircservice; + mIndicator = getResources().getDrawable(0x7f020035); + return; + } + break MISSING_BLOCK_LABEL_166; +_L2: + asessionmanager[i] = ircservice.getSessionManagerForId(ai1[i]); + i++; + goto _L5 +_L4: + int l = asessionmanager[i].getSessionCount(); + ai[i] = l; + j += l; + i++; + goto _L6 + String as[] = asessionmanager[i].getSessionList(); + Arrays.sort(as, Utils.STRING_COMPARE); + System.arraycopy(as, 0, ircservice, j, as.length); + j += as.length; + i++; + goto _L7 + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$RunCommand.java b/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$RunCommand.java new file mode 100644 index 0000000..57151ae --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$RunCommand.java @@ -0,0 +1,27 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + + +// Referenced classes of package net.andchat.donate.Activities: +// ChannelSwitcherFragment + +class command +{ + + public final String command; + public final int id; + public final String params; + final ChannelSwitcherFragment this$0; + + public (int i, String s, String s1) + { + this$0 = ChannelSwitcherFragment.this; + super(); + id = i; + params = s1; + command = s; + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$SwitchChannelInfo.java b/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$SwitchChannelInfo.java new file mode 100644 index 0000000..f014ab1 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment$SwitchChannelInfo.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import net.andchat.donate.Backend.Sessions.SessionManager; + +// Referenced classes of package net.andchat.donate.Activities: +// ChannelSwitcherFragment + +class id +{ + + public final int id; + public final SessionManager manager; + public final String sessionName; + final ChannelSwitcherFragment this$0; + + public (SessionManager sessionmanager, String s, int i) + { + this$0 = ChannelSwitcherFragment.this; + super(); + manager = sessionmanager; + sessionName = s; + id = i; + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment.java b/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment.java new file mode 100644 index 0000000..91fc08c --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChannelSwitcherFragment.java @@ -0,0 +1,686 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.Activity; +import android.app.ListFragment; +import android.content.Context; +import android.content.SharedPreferences; +import android.content.res.Resources; +import android.graphics.Typeface; +import android.graphics.drawable.Drawable; +import android.os.Handler; +import android.os.Message; +import android.text.SpannableStringBuilder; +import android.view.ContextMenu; +import android.view.GestureDetector; +import android.view.LayoutInflater; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AbsListView; +import android.widget.AdapterView; +import android.widget.BaseAdapter; +import android.widget.ListView; +import android.widget.TextView; +import java.util.Arrays; +import net.andchat.donate.Backend.IRCService; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.IRCApp; +import net.andchat.donate.Misc.Colours; +import net.andchat.donate.Misc.ServerProfile; +import net.andchat.donate.Misc.Utils; +import net.andchat.donate.View.TextStyleDialog; + +// Referenced classes of package net.andchat.donate.Activities: +// ChatWindow + +public class ChannelSwitcherFragment extends ListFragment + implements android.widget.AbsListView.OnScrollListener, android.widget.AdapterView.OnItemClickListener, android.widget.AdapterView.OnItemLongClickListener, net.andchat.donate.Backend.Sessions.SessionManager.GlobalEventWatcher, net.andchat.donate.IRCApp.PreferenceChangeWatcher +{ + private class ChannelListAdapter extends BaseAdapter + { + + private final Drawable mIndicator; + private final SessionManager mManagers[]; + private final int mSessionCounts[]; + private final String mSessionNames[]; + final ChannelSwitcherFragment this$0; + + public SessionManager findManagerForPosition(int i) + { + SessionManager asessionmanager[] = mManagers; + int l = asessionmanager.length; + int k = 0; + int j = 0; + do + { + if (j >= l) + { + return null; + } + k += mSessionCounts[j]; + if (i < k) + { + return asessionmanager[j]; + } + j++; + } while (true); + } + + public int getCount() + { + return mSessionNames.length; + } + + public volatile Object getItem(int i) + { + return getItem(i); + } + + public String getItem(int i) + { + return mSessionNames[i]; + } + + public long getItemId(int i) + { + return (long)i; + } + + public View getView(int i, View view, ViewGroup viewgroup) + { + SessionManager sessionmanager = findManagerForPosition(i); + Object obj; + StringBuilder stringbuilder; + boolean flag; + boolean flag1; + boolean flag2; + int j; + if (view == null) + { + view = (TextView)LayoutInflater.from(mChat).inflate(0x7f030015, viewgroup, false); + } else + { + view = (TextView)view; + } + flag = false; + obj = sessionmanager.getSession(mSessionNames[i]); + viewgroup = ((ViewGroup) (obj)); + if (obj == null) + { + viewgroup = sessionmanager.getDefaultSession(); + } + if (viewgroup.getType() == 0) + { + flag = true; + obj = sessionmanager.getProfile().getName(); + } else + { + obj = mSessionNames[i]; + } + j = viewgroup.getCurrentTextType(); + if (viewgroup.isActive()) + { + flag1 = false; + } else + { + flag1 = true; + } + stringbuilder = new StringBuilder(); + if (viewgroup == mChat.pCurrentSession) + { + flag2 = true; + } else + { + flag2 = false; + } + if (!flag2) + { + if (!flag) + { + stringbuilder.append(" "); + } + } else + if (flag) + { + stringbuilder.append(" "); + } else + { + stringbuilder.append(" "); + } + i = 1; + if (mChat.getSessionManager() == sessionmanager) + { + if (mChat.pCurrentSession != viewgroup) + { + i = 1; + } else + { + i = 0; + } + } + if (flag1) + { + stringbuilder.append("("); + } + stringbuilder.append(((String) (obj))); + if (flag1) + { + stringbuilder.append(")"); + } + viewgroup = new SpannableStringBuilder(stringbuilder); + if (i == 0) goto _L2; else goto _L1 +_L1: + j; + JVM INSTR tableswitch 1 3: default 252 + // 1 371 + // 2 393 + // 3 415; + goto _L3 _L4 _L5 _L6 +_L3: + break; /* Loop/switch isn't completed */ +_L6: + break MISSING_BLOCK_LABEL_415; +_L2: + if (flag2) + { + view.setCompoundDrawablesWithIntrinsicBounds(mIndicator, null, null, null); + } else + { + view.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); + } + view.setText(viewgroup); + view.setTypeface(mFont); + if (flag) + { + i = mTextSize + 7; + } else + { + i = mTextSize; + } + view.setTextSize(i); + return view; +_L4: + Utils.addColour(false, viewgroup, Colours.getInstance().getColourForEvent(0x7f0b000a), 0, viewgroup.length()); + goto _L2 +_L5: + Utils.addColour(false, viewgroup, Colours.getInstance().getColourForEvent(0x7f0b000c), 0, viewgroup.length()); + goto _L2 + Utils.addColour(false, viewgroup, Colours.getInstance().getColourForEvent(0x7f0b000b), 0, viewgroup.length()); + goto _L2 + } + + public ChannelListAdapter(IRCService ircservice) + { + SessionManager asessionmanager[]; + int ai[]; + int ai1[]; + int i; + int j; + int k; + this$0 = ChannelSwitcherFragment.this; + super(); + ai1 = ircservice.getActiveServerIds(); + k = ai1.length; + asessionmanager = new SessionManager[k]; + ai = new int[k]; + j = 0; + i = 0; +_L5: + if (i < k) goto _L2; else goto _L1 +_L1: + Arrays.sort(asessionmanager); + i = 0; +_L6: + if (i < k) goto _L4; else goto _L3 +_L3: + ircservice = new String[j]; + j = 0; + k = asessionmanager.length; + i = 0; +_L7: + if (i >= k) + { + mManagers = asessionmanager; + mSessionCounts = ai; + mSessionNames = ircservice; + mIndicator = getResources().getDrawable(0x7f020035); + return; + } + break MISSING_BLOCK_LABEL_166; +_L2: + asessionmanager[i] = ircservice.getSessionManagerForId(ai1[i]); + i++; + goto _L5 +_L4: + int l = asessionmanager[i].getSessionCount(); + ai[i] = l; + j += l; + i++; + goto _L6 + String as[] = asessionmanager[i].getSessionList(); + Arrays.sort(as, Utils.STRING_COMPARE); + System.arraycopy(as, 0, ircservice, j, as.length); + j += as.length; + i++; + goto _L7 + } + } + + class RunCommand + { + + public final String command; + public final int id; + public final String params; + final ChannelSwitcherFragment this$0; + + public RunCommand(int i, String s, String s1) + { + this$0 = ChannelSwitcherFragment.this; + super(); + id = i; + params = s1; + command = s; + } + } + + class SwitchChannelInfo + { + + public final int id; + public final SessionManager manager; + public final String sessionName; + final ChannelSwitcherFragment this$0; + + public SwitchChannelInfo(SessionManager sessionmanager, String s, int i) + { + this$0 = ChannelSwitcherFragment.this; + super(); + manager = sessionmanager; + sessionName = s; + id = i; + } + } + + + private static final String TAG = net/andchat/donate/Activities/ChannelSwitcherFragment.getName(); + static int sIdx; + static int sPos; + private ChatWindow mChat; + private int mCurPos; + private net.andchat.donate.Misc.Utils.Detector mDetector; + private Typeface mFont; + private Handler mHandler; + private final Runnable mNotifyDatasetInvalidated = new Runnable() { + + final ChannelSwitcherFragment this$0; + + public void run() + { + ListView listview; + boolean flag; + flag = false; + listview = null; + ListView listview1 = getListView(); + if (listview1 != null) goto _L2; else goto _L1 +_L1: + flag = true; + listview = listview1; +_L4: + if (flag) + { + if (mHandler != null) + { + mHandler.postDelayed(this, 1000L); + } + return; + } + break; /* Loop/switch isn't completed */ +_L2: + listview = listview1; + mHandler.removeCallbacks(this); + listview = listview1; + continue; /* Loop/switch isn't completed */ + IllegalStateException illegalstateexception; + illegalstateexception; + flag = true; + if (true) goto _L4; else goto _L3 +_L3: + android.widget.ListAdapter listadapter = getListAdapter(); + if (listadapter != null) + { + ((ChannelListAdapter)listadapter).notifyDataSetInvalidated(); + } + listview.setSelectionFromTop(ChannelSwitcherFragment.sIdx, ChannelSwitcherFragment.sPos); + return; + } + + + { + this$0 = ChannelSwitcherFragment.this; + super(); + } + }; + private final Runnable mSetAdapter = new Runnable() { + + final ChannelSwitcherFragment this$0; + + public void run() + { + if (mChat == null) + { + return; + } else + { + setListAdapter(new ChannelListAdapter(mChat.mService)); + getListView().setSelectionFromTop(ChannelSwitcherFragment.sIdx, ChannelSwitcherFragment.sPos); + return; + } + } + + + { + this$0 = ChannelSwitcherFragment.this; + super(); + } + }; + private int mTextSize; + + public ChannelSwitcherFragment() + { + mHandler = new Handler(); + } + + private void init() + { + if (mChat == null) + { + return; + } + SessionManager.addEventWatcher(this); + ListView listview; + try + { + listview = getListView(); + } + catch (IllegalStateException illegalstateexception) + { + return; + } + registerForContextMenu(listview); + listview.setFastScrollEnabled(true); + listview.setOnItemClickListener(this); + listview.setOnItemLongClickListener(this); + listview.setOnScrollListener(this); + mDetector = new net.andchat.donate.Misc.Utils.Detector(mChat, net.andchat.donate.Misc.Utils.Detector.Y_DEVIATION.STRICT) { + + final ChannelSwitcherFragment this$0; + + public void onLeftToRightSwipe() + { + ((net.andchat.donate.Misc.Utils.ListSwipeListener)mChat).onLeftToRightSwipe(ChannelSwitcherFragment.this); + } + + public void onRightToLeftSwipe() + { + ((net.andchat.donate.Misc.Utils.ListSwipeListener)mChat).onRightToLeftSwipe(ChannelSwitcherFragment.this); + } + + + { + this$0 = ChannelSwitcherFragment.this; + super(context, y_deviation); + } + }; + listview.setOnTouchListener(new android.view.View.OnTouchListener() { + + final ChannelSwitcherFragment this$0; + private final GestureDetector val$gd; + + public boolean onTouch(View view, MotionEvent motionevent) + { + return gd.onTouchEvent(motionevent); + } + + + { + this$0 = ChannelSwitcherFragment.this; + gd = gesturedetector; + super(); + } + }); + post(mSetAdapter, 0); + } + + private void post(Runnable runnable, int i) + { + if (mHandler == null) + { + return; + } + if (i > 0) + { + mHandler.postDelayed(runnable, i); + return; + } else + { + mHandler.post(runnable); + return; + } + } + + void firstRun() + { + init(); + } + + public boolean onContextItemSelected(MenuItem menuitem) + { + SessionManager sessionmanager; + String s; + ListView listview = getListView(); + sessionmanager = ((ChannelListAdapter)listview.getAdapter()).findManagerForPosition(mCurPos); + s = (String)listview.getItemAtPosition(mCurPos); + menuitem.getItemId(); + JVM INSTR tableswitch 2131230855 2131230856: default 60 + // 2131230855 70 + // 2131230856 111; + goto _L1 _L2 _L3 +_L1: + throw new RuntimeException("Unknown command"); +_L2: + Object obj = "/clear"; +_L5: + obj = new RunCommand(sessionmanager.getId(), ((String) (obj)), s); + Message.obtain(mChat.pFragmentBridge, menuitem.getItemId(), obj).sendToTarget(); + return true; +_L3: + obj = "/wc"; + if (true) goto _L5; else goto _L4 +_L4: + } + + public void onCreateContextMenu(ContextMenu contextmenu, View view, android.view.ContextMenu.ContextMenuInfo contextmenuinfo) + { + contextmenuinfo = (ListView)view; + view = ((ChannelListAdapter)contextmenuinfo.getAdapter()).findManagerForPosition(mCurPos); + contextmenuinfo = (String)contextmenuinfo.getItemAtPosition(mCurPos); + getActivity().getMenuInflater().inflate(0x7f0f0007, contextmenu); + boolean flag = contextmenuinfo.equalsIgnoreCase("Status"); + contextmenu.setHeaderTitle((new StringBuilder(String.valueOf(contextmenuinfo))).append(" /").append(view.getProfile().getName()).toString()); + contextmenu = contextmenu.findItem(0x7f080088); + if (flag) + { + contextmenu.setEnabled(false); + return; + } else + { + contextmenu.setEnabled(true); + return; + } + } + + public void onCurrentSessionChanged(int i, String s) + { + post(mNotifyDatasetInvalidated, 0); + } + + public void onDestroyView() + { + super.onDestroyView(); + SessionManager.removeEventWatcher(this); + mHandler.removeCallbacks(mSetAdapter); + mHandler.removeCallbacks(mNotifyDatasetInvalidated); + mHandler = null; + ((IRCApp)mChat.getApplication()).removeWatcher(this); + } + + public void onItemClick(AdapterView adapterview, View view, int i, long l) + { + if (mDetector.haveSwipeAction()) + { + return; + } else + { + adapterview = (ChannelListAdapter)adapterview.getAdapter(); + view = adapterview.findManagerForPosition(i); + adapterview = new SwitchChannelInfo(view, adapterview.getItem(i), view.getId()); + Message.obtain(mChat.pFragmentBridge, 8, adapterview).sendToTarget(); + return; + } + } + + public boolean onItemLongClick(AdapterView adapterview, View view, int i, long l) + { + mCurPos = i; + return mDetector.haveSwipeAction(); + } + + public void onMessageReceived(String s, int i, int j) + { + if (j != mChat.pId || !s.equalsIgnoreCase(mChat.pCurrentSession.getSessionName())) + { + if ((s = mChat.mService.getSessionManagerForId(j).getSession(s)) == null || s.getCurrentTextType() != i) + { + post(mNotifyDatasetInvalidated, 0); + return; + } + } + } + + public void onPreferencesChanged() + { + int i = Utils.parseInt(Utils.getPrefs(getActivity()).getString(getString(0x7f0a0016), "18"), 18); + int j = Utils.getPrefs(getActivity()).getInt(getString(0x7f0a0032), 0); + Typeface typeface = TextStyleDialog.TYPES[j]; + if (i != mTextSize || typeface != mFont) + { + mTextSize = i; + mFont = typeface; + mHandler.post(new Runnable() { + + final ChannelSwitcherFragment this$0; + + public void run() + { + android.widget.ListAdapter listadapter = getListAdapter(); + if (listadapter != null) + { + ((ChannelListAdapter)listadapter).notifyDataSetChanged(); + } + } + + + { + this$0 = ChannelSwitcherFragment.this; + super(); + } + }); + } + } + + public void onScroll(AbsListView abslistview, int i, int j, int k) + { + k = 0; + if (j == 0) + { + return; + } + sIdx = i; + abslistview = getListView().getChildAt(0); + if (abslistview == null) + { + i = k; + } else + { + i = abslistview.getTop(); + } + sPos = i; + } + + public void onScrollStateChanged(AbsListView abslistview, int i) + { + } + + public void onSessionActivated(String s, int i) + { + post(mNotifyDatasetInvalidated, 0); + } + + public void onSessionAdded(String s, int i, int j) + { + post(mSetAdapter, 0); + } + + public void onSessionDeactivated(String s, int i) + { + post(mNotifyDatasetInvalidated, 0); + } + + public void onSessionManagerDeleted(int i) + { + post(mSetAdapter, 500); + } + + public void onSessionRemoved(String s, int i) + { + post(mSetAdapter, 0); + } + + public void onSessionRenamed(String s, String s1) + { + post(mSetAdapter, 0); + } + + public void onSessionTextStateCleared() + { + post(mNotifyDatasetInvalidated, 0); + } + + public void onStart() + { + super.onStart(); + mChat = (ChatWindow)getActivity(); + if (!(mChat instanceof net.andchat.donate.Misc.Utils.ListSwipeListener)) + { + throw new RuntimeException((new StringBuilder("Activity (")).append(mChat).append(") must implement ListSwipeListener").toString()); + } else + { + ((IRCApp)mChat.getApplication()).addWatcher(this); + onPreferencesChanged(); + return; + } + } + + + + + +} diff --git a/app/src/main/java/net/andchat/donate/Activities/CharsetPicker.java b/app/src/main/java/net/andchat/donate/Activities/CharsetPicker.java new file mode 100644 index 0000000..72b53f6 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/CharsetPicker.java @@ -0,0 +1,129 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.ListActivity; +import android.content.Intent; +import android.content.res.Configuration; +import android.content.res.Resources; +import android.os.Bundle; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.Window; +import android.view.inputmethod.InputMethodManager; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; +import com.markupartist.android.widget.ActionBar; +import java.nio.charset.Charset; +import java.util.Set; +import java.util.SortedMap; +import net.andchat.donate.IRCApp; + +public class CharsetPicker extends ListActivity + implements android.widget.AdapterView.OnItemClickListener, com.markupartist.android.widget.ActionBar.ActionBarItemClickHandler +{ + + private boolean mHaveKeyboard; + + public CharsetPicker() + { + } + + private void initiateSearch() + { + if (mHaveKeyboard) + { + Toast.makeText(this, 0x7f0a01bc, 0).show(); + return; + } else + { + ((InputMethodManager)getSystemService("input_method")).showSoftInput(getListView(), 1); + Toast.makeText(this, 0x7f0a01bc, 0).show(); + return; + } + } + + public void onActionBarItemClicked(com.markupartist.android.widget.ActionBar.GenericAction genericaction, View view) + { + initiateSearch(); + } + + protected void onCreate(Bundle bundle) + { + boolean flag1 = true; + if (IRCApp.LEGACY_VERSION) + { + requestWindowFeature(7); + } + super.onCreate(bundle); + setListAdapter(new ArrayAdapter(this, 0x1090003, Charset.availableCharsets().keySet().toArray())); + bundle = getListView(); + bundle.setOnItemClickListener(this); + bundle.setTextFilterEnabled(true); + bundle.setFastScrollEnabled(true); + bundle = getResources().getConfiguration(); + boolean flag = flag1; + if (((Configuration) (bundle)).keyboard == 1) + { + flag = flag1; + if (((Configuration) (bundle)).hardKeyboardHidden == 2) + { + flag = false; + } + } + mHaveKeyboard = flag; + if (IRCApp.LEGACY_VERSION) + { + getWindow().setFeatureInt(7, 0x7f030006); + bundle = (ActionBar)getWindow().getDecorView().findViewById(0x7f080012); + bundle.setTitle(0x7f0a007e); + (new net.andchat.donate.Misc.AbstractMenuInflator.ActionBarMenu(bundle, this)).addActionsFromXML(this, 0x7f0f0000); + bundle.setOnActionClickListener(this); + return; + } else + { + setTitle(0x7f0a007e); + return; + } + } + + public boolean onCreateOptionsMenu(Menu menu) + { + if (!IRCApp.LEGACY_VERSION) + { + getMenuInflater().inflate(0x7f0f0000, menu); + return true; + } else + { + return false; + } + } + + public void onItemClick(AdapterView adapterview, View view, int i, long l) + { + adapterview = ((TextView)view).getText().toString(); + setResult(-1, (new Intent()).putExtra("selection", adapterview)); + ((InputMethodManager)getSystemService("input_method")).hideSoftInputFromWindow(getListView().getWindowToken(), 1); + finish(); + } + + public boolean onOptionsItemSelected(MenuItem menuitem) + { + menuitem.getItemId(); + initiateSearch(); + return true; + } + + public boolean onSearchRequested() + { + initiateSearch(); + return true; + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChatWindow$1.java b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$1.java new file mode 100644 index 0000000..ea8aef2 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$1.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.widget.ListView; + +// Referenced classes of package net.andchat.donate.Activities: +// ChatWindow + +class this._cls0 + implements Runnable +{ + + final ChatWindow this$0; + + public void run() + { + ChatWindow.access$16(ChatWindow.this).setFastScrollEnabled(false); + } + + () + { + this$0 = ChatWindow.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChatWindow$2.java b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$2.java new file mode 100644 index 0000000..f811d06 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$2.java @@ -0,0 +1,34 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + + +// Referenced classes of package net.andchat.donate.Activities: +// ChatWindow + +class val.jumpToIt + implements Runnable +{ + + final ChatWindow this$0; + private final boolean val$jumpToIt; + private final String val$tag; + + public void run() + { + if (pSessionManager != null) + { + addSession(val$tag, val$jumpToIt); + } + } + + () + { + this$0 = final_chatwindow; + val$tag = s; + val$jumpToIt = Z.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChatWindow$3.java b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$3.java new file mode 100644 index 0000000..a860a42 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$3.java @@ -0,0 +1,31 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.widget.ListView; + +// Referenced classes of package net.andchat.donate.Activities: +// ChatWindow + +class this._cls0 + implements Runnable +{ + + final ChatWindow this$0; + + public void run() + { + int i = ChatWindow.access$16(ChatWindow.this).getTranscriptMode(); + ChatWindow.access$16(ChatWindow.this).setTranscriptMode(2); + ChatWindow.access$16(ChatWindow.this).setSelection(ChatWindow.access$16(ChatWindow.this).getCount() - 1); + ChatWindow.access$16(ChatWindow.this).setTranscriptMode(i); + } + + () + { + this$0 = ChatWindow.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChatWindow$4.java b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$4.java new file mode 100644 index 0000000..e5d4a8e --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$4.java @@ -0,0 +1,31 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.Misc.IRCMessage; + +// Referenced classes of package net.andchat.donate.Activities: +// ChatWindow + +class val.m + implements Runnable +{ + + final ChatWindow this$0; + private final IRCMessage val$m; + + public void run() + { + pSessionManager.addText(val$m, false); + } + + Manager() + { + this$0 = final_chatwindow; + val$m = IRCMessage.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChatWindow$5$1.java b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$5$1.java new file mode 100644 index 0000000..1502ee3 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$5$1.java @@ -0,0 +1,64 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import net.andchat.donate.Backend.IRCService; +import net.andchat.donate.Backend.Sessions.SessionManager; + +// Referenced classes of package net.andchat.donate.Activities: +// ChatWindow + +class this._cls1 + implements Runnable +{ + + final tring this$1; + + public void run() + { + String as[] = pSessionManager.getSessionList(); + int j = as.length; + int i = 0; + do + { + if (i >= j) + { + return; + } + String s = as[i]; + ChatWindow.access$17(_fld0, getString(0x7f0a01b2), s, 1); + i++; + } while (true); + } + + is._cls0() + { + this$1 = this._cls1.this; + super(); + } + + // Unreferenced inner class net/andchat/donate/Activities/ChatWindow$5 + +/* anonymous class */ + class ChatWindow._cls5 extends Thread + { + + final ChatWindow this$0; + + public void run() + { + mService.stopReconnecting(pId, 1); + runOnUiThread(new ChatWindow._cls5._cls1()); + } + + + + { + this$0 = ChatWindow.this; + super(); + } + } + +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChatWindow$5.java b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$5.java new file mode 100644 index 0000000..791d4bb --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$5.java @@ -0,0 +1,56 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import net.andchat.donate.Backend.IRCService; +import net.andchat.donate.Backend.Sessions.SessionManager; + +// Referenced classes of package net.andchat.donate.Activities: +// ChatWindow + +class this._cls0 extends Thread +{ + + final ChatWindow this$0; + + public void run() + { + mService.stopReconnecting(pId, 1); + runOnUiThread(new Runnable() { + + final ChatWindow._cls5 this$1; + + public void run() + { + String as[] = pSessionManager.getSessionList(); + int j = as.length; + int i = 0; + do + { + if (i >= j) + { + return; + } + String s = as[i]; + ChatWindow.access$17(this$0, getString(0x7f0a01b2), s, 1); + i++; + } while (true); + } + + + { + this$1 = ChatWindow._cls5.this; + super(); + } + }); + } + + + _cls1.this._cls1() + { + this$0 = ChatWindow.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChatWindow$6.java b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$6.java new file mode 100644 index 0000000..8b19ebc --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$6.java @@ -0,0 +1,27 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import net.andchat.donate.Backend.IRCService; + +// Referenced classes of package net.andchat.donate.Activities: +// ChatWindow + +class this._cls0 extends Thread +{ + + final ChatWindow this$0; + + public void run() + { + mService.stopConnection(pId, 1); + } + + () + { + this$0 = ChatWindow.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChatWindow$7.java b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$7.java new file mode 100644 index 0000000..58f2375 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$7.java @@ -0,0 +1,30 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import net.andchat.donate.Backend.ServerConnection; + +// Referenced classes of package net.andchat.donate.Activities: +// ChatWindow + +class val.message + implements Runnable +{ + + final ChatWindow this$0; + private final String val$message; + + public void run() + { + ChatWindow.access$18(ChatWindow.this).writeToServer(val$message); + } + + () + { + this$0 = final_chatwindow; + val$message = String.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChatWindow$EmptyAdapter.java b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$EmptyAdapter.java new file mode 100644 index 0000000..713fd6b --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$EmptyAdapter.java @@ -0,0 +1,40 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; + +// Referenced classes of package net.andchat.donate.Activities: +// ChatWindow + +private static final class extends BaseAdapter +{ + + public int getCount() + { + return 0; + } + + public Object getItem(int i) + { + return null; + } + + public long getItemId(int i) + { + return 0L; + } + + public View getView(int i, View view, ViewGroup viewgroup) + { + return null; + } + + public () + { + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChatWindow$FlagHandler.java b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$FlagHandler.java new file mode 100644 index 0000000..d52c220 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$FlagHandler.java @@ -0,0 +1,112 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.os.Handler; +import android.os.Message; +import android.widget.Gallery; +import android.widget.TextView; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.IRCApp; + +// Referenced classes of package net.andchat.donate.Activities: +// ChatWindow + +private class extends Handler +{ + + final ChatWindow this$0; + + public void handleMessage(Message message) + { + message.what; + JVM INSTR tableswitch 1 7: default 48 + // 1 49 + // 2 78 + // 3 163 + // 4 94 + // 5 186 + // 6 277 + // 7 318; + goto _L1 _L2 _L3 _L4 _L5 _L6 _L7 _L8 +_L1: + return; +_L2: + addSession(message.obj.toString(), true); + if (!IRCApp.LEGACY_VERSION) + { + ChatWindow.access$6(ChatWindow.this); + return; + } + continue; /* Loop/switch isn't completed */ +_L3: + addSession(message.obj.toString(), false); + return; +_L5: + int i; +label0: + { + message = message.obj.toString(); + i = ChatWindow.access$7(ChatWindow.this).etPositionOf(message); + if (i == -1) + { + continue; /* Loop/switch isn't completed */ + } + ChatWindow.access$5(ChatWindow.this, false); + int k = i - 1; + if (k >= 0) + { + i = k; + if (k < ChatWindow.access$7(ChatWindow.this).etCount()) + { + break label0; + } + } + i = 0; + } + selectAndClick(i, true); + return; +_L4: + ChatWindow.access$8(ChatWindow.this, message.obj.toString()); + ChatWindow.access$9(ChatWindow.this, true); + return; +_L6: + if (message.obj.toString().equals(pCurrentSession.getSessionName()) && pCurrentSession.getType() == 1) + { + message = pCurrentSession.getOwnStatus(); + if (message.length() > 0 && ChatWindow.access$10(ChatWindow.this).getVisibility() != 0) + { + ChatWindow.access$10(ChatWindow.this).setVisibility(0); + } + ChatWindow.access$10(ChatWindow.this).setText(message); + return; + } + if (true) goto _L1; else goto _L7 +_L7: + ChatWindow.access$5(ChatWindow.this, true); + int j = pGallery.getSelectedItemPosition(); + pCurrentSession = (Session)ChatWindow.access$7(ChatWindow.this).etItem(j); + return; +_L8: + if (pCurrentSession.getSessionName().equalsIgnoreCase(message.obj.toString())) + { + ChatWindow.access$1(ChatWindow.this).notifyDataSetChanged(); + return; + } + if (true) goto _L1; else goto _L9 +_L9: + } + + private () + { + this$0 = ChatWindow.this; + super(); + } + + this._cls0(this._cls0 _pcls0) + { + this(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChatWindow$FragmentBridge.java b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$FragmentBridge.java new file mode 100644 index 0000000..3d020e2 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$FragmentBridge.java @@ -0,0 +1,179 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.os.Handler; +import android.os.Message; +import android.util.Log; +import android.widget.EditText; +import android.widget.Gallery; +import net.andchat.donate.Backend.IRCService; +import net.andchat.donate.Backend.Sessions.Session; + +// Referenced classes of package net.andchat.donate.Activities: +// ChatWindow + +class this._cls0 extends Handler +{ + + final ChatWindow this$0; + + public void handleMessage(Message message) + { + Object obj; + int i; + obj = null; + i = message.what; + i; + JVM INSTR lookupswitch 3: default 44 + // 8: 52 + // 2131230855: 52 + // 2131230856: 52; + goto _L1 _L2 _L2 _L2 +_L1: + obj = (String)message.obj; +_L2: + i; + JVM INSTR lookupswitch 16: default 192 + // 8: 570 + // 2131230725: 230 + // 2131230726: 269 + // 2131230727: 278 + // 2131230728: 304 + // 2131230729: 356 + // 2131230730: 365 + // 2131230731: 291 + // 2131230732: 317 + // 2131230733: 330 + // 2131230734: 343 + // 2131230735: 374 + // 2131230855: 676 + // 2131230856: 676 + // 2131230857: 391 + // 2131230858: 542; + goto _L3 _L4 _L5 _L6 _L7 _L8 _L9 _L10 _L11 _L12 _L13 _L14 _L15 _L16 _L16 _L17 _L18 +_L3: + Log.w("IRCChatWindow", (new StringBuilder("unknown command, m.what=")).append(message.what).append(", obj=").append(message.obj).toString()); + return; +_L5: + int j = ChatWindow.access$7(ChatWindow.this).ositionOf(((String) (obj))); + if (j != -1) + { + selectAndClick(j, true); + return; + } else + { + handleStartPm(((String) (obj))); + return; + } +_L6: + ChatWindow.access$11(ChatWindow.this, ((String) (obj))); + return; +_L7: + handleOpAction(((String) (obj)), '+', 'o'); + return; +_L11: + handleOpAction(((String) (obj)), '-', 'o'); + return; +_L8: + handleOpAction(((String) (obj)), '+', 'v'); + return; +_L12: + handleOpAction(((String) (obj)), '-', 'v'); + return; +_L13: + handleOpAction(((String) (obj)), '+', 'h'); + return; +_L14: + handleOpAction(((String) (obj)), '-', 'h'); + return; +_L9: + handleKick(((String) (obj))); + return; +_L10: + handleBan(((String) (obj))); + return; +_L15: + handleBan(((String) (obj))); + handleKick(((String) (obj))); + return; +_L17: + net.andchat.donate.View.InterceptingEditText interceptingedittext; + String as[]; + int k; + int l; + interceptingedittext = pEt; + boolean flag; + if (interceptingedittext.length() > 0) + { + flag = true; + } else + { + flag = false; + } + if (flag) + { + interceptingedittext.append(" "); + } + message = null; + if (((String) (obj)).indexOf(',') == -1) goto _L20; else goto _L19 +_L19: + message = new StringBuilder(); + as = ((String) (obj)).split(","); + l = as.length; + k = 0; +_L22: + if (k < l) goto _L21; else goto _L20 +_L20: + if (message != null) + { + obj = message; + } + interceptingedittext.append(((CharSequence) (obj))); + if (flag) + { + interceptingedittext.append(" "); + return; + } else + { + interceptingedittext.append(": "); + return; + } +_L21: + message.append(as[k]); + if (k != l - 1) + { + message.append(',').append(' '); + } + k++; + goto _L22 +_L18: + ChatWindow.access$12(ChatWindow.this, (new StringBuilder("/ignore ")).append(message.obj).toString(), false); + return; +_L4: + message = (itchChannelInfo)message.obj; + if (((itchChannelInfo) (message)).manager == pSessionManager) + { + selectAndClick(ChatWindow.access$7(ChatWindow.this).ositionOf(((itchChannelInfo) (message)).sessionName), true); + return; + } + if (pGallery.getVisibility() == 8 && ChatWindow.access$7(ChatWindow.this).ositionOf(pCurrentSession) >= 0) + { + pCurrentSession.clearTextTypeInfo(); + } + ChatWindow.access$13(ChatWindow.this, ((itchChannelInfo) (message)).id, ((itchChannelInfo) (message)).sessionName); + return; +_L16: + message = (nCommand)message.obj; + mService.runOnAnotherProfile(((nCommand) (message)).id, (new StringBuilder(String.valueOf(((nCommand) (message)).command))).append(" ").append(((nCommand) (message)).params).toString()); + return; + } + + nCommand() + { + this$0 = ChatWindow.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChatWindow$MessageHandler.java b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$MessageHandler.java new file mode 100644 index 0000000..dd7785e --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$MessageHandler.java @@ -0,0 +1,123 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.os.Handler; +import android.os.Message; +import android.widget.ImageView; +import java.util.concurrent.ArrayBlockingQueue; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.Misc.IRCMessage; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Activities: +// ChatWindow + +public class this._cls0 extends Handler +{ + + final ChatWindow this$0; + + public void handleMessage(Message message) + { + message.what; + JVM INSTR tableswitch 0 1: default 28 + // 0 29 + // 1 100; + goto _L1 _L2 _L3 +_L1: + return; +_L2: + message = (IRCMessage)blocker.poll(); +_L5: + String s; + int i; + if (message == null) + { + continue; /* Loop/switch isn't completed */ + } + i = ((IRCMessage) (message)).val; + Session session = pCurrentSession; + s = ((IRCMessage) (message)).target; + if (session.getSessionName().equalsIgnoreCase(s)) + { + pSessionManager.addText(message, true); + ChatWindow.access$1(ChatWindow.this).ifyDataSetChanged(); + return; + } + break; /* Loop/switch isn't completed */ +_L3: + message = (IRCMessage)message.obj; + if (true) goto _L5; else goto _L4 +_L4: + boolean flag1; + int j; + pSessionManager.addText(message, false); + flag1 = false; + j = 0; + switch (i) + { + default: + break; + + case 3: // '\003' + break; /* Loop/switch isn't completed */ + + case 2: // '\002' + break; + } + break MISSING_BLOCK_LABEL_196; +_L7: + if (flag1) + { + ChatWindow.access$4(ChatWindow.this, s, j, true); + } + if (pSessionManager.needsRefresh()) + { + ChatWindow.access$5(ChatWindow.this, true); + return; + } + if (true) goto _L1; else goto _L6 +_L6: + flag1 = true; + goto _L7 + boolean flag; + if (s.equals("Status")) + { + flag = false; + } else + { + flag = true; + } + if (!flag && (flag || ChatWindow.access$2(ChatWindow.this).getVisibility() != 0 && ChatWindow.access$3(ChatWindow.this).getVisibility() != 0)) + { + flag = false; + } else + { + flag = true; + } + flag1 = flag; + if (flag) + { + if (s.equals("Status") || Utils.isChannelPrefix(s.charAt(0))) + { + flag1 = true; + } else + { + flag1 = false; + } + j = ((flag1) ? 1 : 0); + flag1 = flag; + } + goto _L7 + } + + public () + { + this$0 = ChatWindow.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChatWindow$SwipeDetector.java b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$SwipeDetector.java new file mode 100644 index 0000000..37db421 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$SwipeDetector.java @@ -0,0 +1,49 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.Context; +import android.widget.Gallery; + +// Referenced classes of package net.andchat.donate.Activities: +// ChatWindow + +private final class this._cls0 extends net.andchat.donate.Misc.ector +{ + + final ChatWindow this$0; + + public void onLeftToRightSwipe() + { + int i = pGallery.getSelectedItemPosition(); + if (i > 0) + { + i--; + } else + { + i = ChatWindow.access$7(ChatWindow.this).Count() - 1; + } + selectAndClick(i, true); + } + + public void onRightToLeftSwipe() + { + int i = pGallery.getSelectedItemPosition(); + if (i == ChatWindow.access$7(ChatWindow.this).Count() - 1) + { + i = 0; + } else + { + i++; + } + selectAndClick(i, true); + } + + public (Context context) + { + this$0 = ChatWindow.this; + super(context); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChatWindow$TabAdapter.java b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$TabAdapter.java new file mode 100644 index 0000000..ceb107d --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$TabAdapter.java @@ -0,0 +1,324 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.Context; +import android.text.SpannableStringBuilder; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; +import java.util.Collections; +import java.util.List; +import java.util.Vector; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Misc.Colours; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Activities: +// ChatWindow + +private class mItems extends BaseAdapter +{ + + private StringBuilder labelBuilder; + private final Vector mItems; + private final int mLen; + final ChatWindow this$0; + + public void clear(int i) + { + if (i < mItems.size()) + { + ((Session)mItems.get(i)).clearTextTypeInfo(); + } + } + + public int findJumpTarget(int i, boolean flag, int j) + { + Vector vector; + boolean flag1; + int l; + flag1 = true; + vector = mItems; + l = vector.size(); + if (i <= l && i >= 0 && (i == 0 || i - 1 >= 0)) goto _L2; else goto _L1 +_L1: + j = -1; +_L8: + return j; +_L2: + boolean flag2; + boolean flag3; + flag3 = Utils.isBitSet(j, 1); + flag2 = Utils.isBitSet(j, 2); + if (!flag2 || !flag3) + { + flag1 = false; + } + if (flag1) + { + flag2 = false; + flag3 = false; + } + if (!flag) goto _L4; else goto _L3 +_L3: + i--; +_L13: + if (i >= 0) goto _L6; else goto _L5 +_L5: + return -1; +_L6: + Session session; + session = (Session)vector.get(i); + if (!flag1) + { + break; /* Loop/switch isn't completed */ + } + j = i; + if (session.getCurrentTextType() == 3) goto _L8; else goto _L7 +_L7: + j = i; + if (session.isMarked()) goto _L8; else goto _L9 +_L9: + if (!flag3) + { + break; /* Loop/switch isn't completed */ + } + if (session.getType() != 2) + { + break; /* Loop/switch isn't completed */ + } + j = i; + if (session.isMarked()) goto _L8; else goto _L10 +_L10: + j = i; + if (session.getCurrentTextType() == 3) goto _L8; else goto _L11 +_L11: + if (!flag2) + { + break; /* Loop/switch isn't completed */ + } + j = i; + if (session.isMarked()) goto _L8; else goto _L12 +_L12: + i--; + goto _L13 +_L4: + int k = i; +_L18: + if (k >= l) goto _L5; else goto _L14 +_L14: + session = (Session)vector.get(k); + if (!flag1 || session.getCurrentTextType() != 3 && !session.isMarked()) goto _L16; else goto _L15 +_L15: + j = k; + if (k != i) goto _L8; else goto _L17 +_L17: + k++; + goto _L18 +_L16: + if (!flag3) + { + break; /* Loop/switch isn't completed */ + } + if (session.getType() != 2) + { + break; /* Loop/switch isn't completed */ + } + j = k; + if (session.isMarked()) goto _L8; else goto _L19 +_L19: + j = k; + if (session.getCurrentTextType() == 3) goto _L8; else goto _L20 +_L20: + if (!flag2 || !session.isMarked()) goto _L17; else goto _L21 +_L21: + return k; + } + + public int getCount() + { + return mLen; + } + + public Object getItem(int i) + { + return mItems.get(i); + } + + public long getItemId(int i) + { + return (long)i; + } + + public int getPositionOf(String s) + { + Vector vector; + int i; + int k; + vector = mItems; + k = vector.size(); + i = 0; +_L6: + if (i < k) goto _L2; else goto _L1 +_L1: + int j = -1; +_L4: + return j; +_L2: + j = i; + if (((Session)vector.get(i)).getSessionName().equals(s)) goto _L4; else goto _L3 +_L3: + i++; + if (true) goto _L6; else goto _L5 +_L5: + } + + public int getPositionOf(Session session) + { + Vector vector; + int i; + int k; + vector = mItems; + k = vector.size(); + i = 0; +_L6: + if (i < k) goto _L2; else goto _L1 +_L1: + int j = -1; +_L4: + return j; +_L2: + j = i; + if (((Session)vector.get(i)).equals(session)) goto _L4; else goto _L3 +_L3: + i++; + if (true) goto _L6; else goto _L5 +_L5: + } + + public int getType(int i) + { + if (i < mItems.size()) + { + return ((Session)mItems.get(i)).getCurrentTextType(); + } else + { + return 0; + } + } + + public View getView(int i, View view, ViewGroup viewgroup) + { + Session session; + SpannableStringBuilder spannablestringbuilder; + String s; + StringBuilder stringbuilder; + int j; + if (view != null) + { + view = (TextView)view; + } else + { + view = ChatWindow.access$0(ChatWindow.this, false); + } + session = (Session)mItems.get(i); + s = session.getSessionName(); + j = session.getCurrentTextType(); + spannablestringbuilder = new SpannableStringBuilder(); + viewgroup = labelBuilder; + viewgroup; + JVM INSTR monitorenter ; + if (session.isActive()) + { + i = 0; + } else + { + i = 1; + } + stringbuilder = labelBuilder; + stringbuilder.append(" "); + if (i == 0) + { + break MISSING_BLOCK_LABEL_88; + } + stringbuilder.append("("); + stringbuilder.append(s); + if (i == 0) + { + break MISSING_BLOCK_LABEL_108; + } + stringbuilder.append(")"); + stringbuilder.append(" "); + spannablestringbuilder.append(stringbuilder); + stringbuilder.delete(0, stringbuilder.length()); + viewgroup; + JVM INSTR monitorexit ; + if (s.equals(pCurrentSession.getSessionName())) + { + break MISSING_BLOCK_LABEL_295; + } + j; + JVM INSTR tableswitch 0 3: default 188 + // 0 188 + // 1 223 + // 2 247 + // 3 271; + goto _L1 _L1 _L2 _L3 _L4 +_L1: + session.markValidated(); +_L5: + view.setText(spannablestringbuilder); + return view; + view; + viewgroup; + JVM INSTR monitorexit ; + throw view; +_L2: + Utils.addColour(false, spannablestringbuilder, Colours.getInstance().getColourForEvent(0x7f0b000d), 0, spannablestringbuilder.length()); + goto _L1 +_L3: + Utils.addColour(false, spannablestringbuilder, Colours.getInstance().getColourForEvent(0x7f0b000e), 0, spannablestringbuilder.length()); + goto _L1 +_L4: + Utils.addColour(false, spannablestringbuilder, Colours.getInstance().getColourForEvent(0x7f0b000f), 0, spannablestringbuilder.length()); + goto _L1 + session.clearTextTypeInfo(); + goto _L5 + } + + public _cls9(Context context, List list) + { + int i; + int j; + this$0 = ChatWindow.this; + super(); + labelBuilder = new StringBuilder(); + j = list.size(); + mItems = new Vector(j); + i = 0; +_L5: + if (i < j) goto _L2; else goto _L1 +_L1: + Collections.sort(list); + mItems.addAll(list); + mLen = mItems.size(); + return; +_L2: + chatwindow = (Session)list.get(i); + if (!getSessionName().equals("Status")) + { + break; /* Loop/switch isn't completed */ + } + mItems.add(0, ChatWindow.this); + list.remove(ChatWindow.this); + if (true) goto _L1; else goto _L3 +_L3: + i++; + if (true) goto _L5; else goto _L4 +_L4: + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChatWindow$TextAdapter.java b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$TextAdapter.java new file mode 100644 index 0000000..fa8942f --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChatWindow$TextAdapter.java @@ -0,0 +1,86 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.Context; +import android.text.method.LinkMovementMethod; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; +import java.util.Iterator; +import net.andchat.donate.Misc.LimitedSizeQueue; +import net.andchat.donate.View.TextStyleDialog; + +// Referenced classes of package net.andchat.donate.Activities: +// ChatWindow + +private class mText extends BaseAdapter +{ + + private LayoutInflater mInflator; + private final LinkMovementMethod mMethod = new LinkMovementMethod(); + private LimitedSizeQueue mText; + final ChatWindow this$0; + + private CharSequence get(int i) + { + Iterator iterator = mText.iterator(); + int j = 0; + do + { + if (!iterator.hasNext()) + { + return null; + } + if (j == i) + { + return (CharSequence)iterator.next(); + } + iterator.next(); + j++; + } while (true); + } + + public int getCount() + { + return mText.getSize(); + } + + public Object getItem(int i) + { + return get(i); + } + + public long getItemId(int i) + { + return (long)i; + } + + public View getView(int i, View view, ViewGroup viewgroup) + { + if (view == null) + { + view = (TextView)mInflator.inflate(0x7f030023, viewgroup, false); + view.setMovementMethod(mMethod); + view.setTextSize(ChatWindow.access$14(ChatWindow.this)); + } else + { + view = (TextView)view; + } + view.setTypeface(TextStyleDialog.TYPES[ChatWindow.access$15(ChatWindow.this)]); + view.setText(get(i)); + return view; + } + + public (Context context, LimitedSizeQueue limitedsizequeue) + { + this$0 = ChatWindow.this; + super(); + mInflator = LayoutInflater.from(context); + mText = limitedsizequeue; + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ChatWindow.java b/app/src/main/java/net/andchat/donate/Activities/ChatWindow.java new file mode 100644 index 0000000..709820c --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ChatWindow.java @@ -0,0 +1,3312 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.Activity; +import android.app.NotificationManager; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.ServiceConnection; +import android.content.SharedPreferences; +import android.content.res.Resources; +import android.media.AudioManager; +import android.os.Bundle; +import android.os.Handler; +import android.os.IBinder; +import android.os.Message; +import android.text.Editable; +import android.text.SpannableStringBuilder; +import android.text.method.LinkMovementMethod; +import android.text.method.TextKeyListener; +import android.text.style.TextAppearanceSpan; +import android.util.Log; +import android.view.ContextMenu; +import android.view.GestureDetector; +import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewStub; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; +import android.view.inputmethod.InputMethodManager; +import android.widget.AbsListView; +import android.widget.AdapterView; +import android.widget.BaseAdapter; +import android.widget.EditText; +import android.widget.Gallery; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.ListView; +import android.widget.TextView; +import android.widget.Toast; +import com.markupartist.android.widget.ActionBar; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Vector; +import java.util.concurrent.ArrayBlockingQueue; +import net.andchat.donate.Backend.Crypt; +import net.andchat.donate.Backend.IRCDb; +import net.andchat.donate.Backend.IRCService; +import net.andchat.donate.Backend.Ignores; +import net.andchat.donate.Backend.MessageSender; +import net.andchat.donate.Backend.ServerConnection; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.IRCApp; +import net.andchat.donate.Misc.Colours; +import net.andchat.donate.Misc.CommandParser; +import net.andchat.donate.Misc.IRCMessage; +import net.andchat.donate.Misc.LimitedSizeQueue; +import net.andchat.donate.Misc.ServerProfile; +import net.andchat.donate.Misc.Utils; +import net.andchat.donate.View.ConnectView; +import net.andchat.donate.View.InterceptingEditText; +import net.andchat.donate.View.InterceptingLinearLayout; +import net.andchat.donate.View.TextStyleDialog; +import net.londatiga.android.QuickAction; + +// Referenced classes of package net.andchat.donate.Activities: +// Preferences, CopyTextActivity, PasswordActivity, IgnoresActivity, +// Main + +public abstract class ChatWindow extends Activity + implements ServiceConnection, android.view.View.OnClickListener, android.view.View.OnKeyListener, android.widget.AbsListView.OnScrollListener, android.widget.AdapterView.OnItemClickListener, android.widget.AdapterView.OnItemSelectedListener, com.markupartist.android.widget.ActionBar.ActionBarItemClickHandler, net.andchat.donate.Backend.IRCService.ServerStateListener, net.andchat.donate.IRCApp.PreferenceChangeWatcher, net.andchat.donate.Misc.CommandParser.Helper, net.andchat.donate.View.ConnectView.ConnectViewCallback, net.andchat.donate.View.InterceptingEditText.PreImeListener, net.londatiga.android.QuickAction.OnQuickActionItemClickListener +{ + private static final class EmptyAdapter extends BaseAdapter + { + + public int getCount() + { + return 0; + } + + public Object getItem(int i) + { + return null; + } + + public long getItemId(int i) + { + return 0L; + } + + public View getView(int i, View view, ViewGroup viewgroup) + { + return null; + } + + public EmptyAdapter() + { + } + } + + private class FlagHandler extends Handler + { + + final ChatWindow this$0; + + public void handleMessage(Message message) + { + message.what; + JVM INSTR tableswitch 1 7: default 48 + // 1 49 + // 2 78 + // 3 163 + // 4 94 + // 5 186 + // 6 277 + // 7 318; + goto _L1 _L2 _L3 _L4 _L5 _L6 _L7 _L8 +_L1: + return; +_L2: + addSession(message.obj.toString(), true); + if (!IRCApp.LEGACY_VERSION) + { + refreshMenu(); + return; + } + continue; /* Loop/switch isn't completed */ +_L3: + addSession(message.obj.toString(), false); + return; +_L5: + int i; +label0: + { + message = message.obj.toString(); + i = pAdapter.getPositionOf(message); + if (i == -1) + { + continue; /* Loop/switch isn't completed */ + } + setTabAdapter(false); + int k = i - 1; + if (k >= 0) + { + i = k; + if (k < pAdapter.getCount()) + { + break label0; + } + } + i = 0; + } + selectAndClick(i, true); + return; +_L4: + pNick = message.obj.toString(); + updateTitle(true); + return; +_L6: + if (message.obj.toString().equals(pCurrentSession.getSessionName()) && pCurrentSession.getType() == 1) + { + message = pCurrentSession.getOwnStatus(); + if (message.length() > 0 && pStatus.getVisibility() != 0) + { + pStatus.setVisibility(0); + } + pStatus.setText(message); + return; + } + if (true) goto _L1; else goto _L7 +_L7: + setTabAdapter(true); + int j = pGallery.getSelectedItemPosition(); + pCurrentSession = (Session)pAdapter.getItem(j); + return; +_L8: + if (pCurrentSession.getSessionName().equalsIgnoreCase(message.obj.toString())) + { + mTextAdapter.notifyDataSetChanged(); + return; + } + if (true) goto _L1; else goto _L9 +_L9: + } + + private FlagHandler() + { + this$0 = ChatWindow.this; + super(); + } + + FlagHandler(FlagHandler flaghandler) + { + this(); + } + } + + class FragmentBridge extends Handler + { + + final ChatWindow this$0; + + public void handleMessage(Message message) + { + Object obj; + int i; + obj = null; + i = message.what; + i; + JVM INSTR lookupswitch 3: default 44 + // 8: 52 + // 2131230855: 52 + // 2131230856: 52; + goto _L1 _L2 _L2 _L2 +_L1: + obj = (String)message.obj; +_L2: + i; + JVM INSTR lookupswitch 16: default 192 + // 8: 570 + // 2131230725: 230 + // 2131230726: 269 + // 2131230727: 278 + // 2131230728: 304 + // 2131230729: 356 + // 2131230730: 365 + // 2131230731: 291 + // 2131230732: 317 + // 2131230733: 330 + // 2131230734: 343 + // 2131230735: 374 + // 2131230855: 676 + // 2131230856: 676 + // 2131230857: 391 + // 2131230858: 542; + goto _L3 _L4 _L5 _L6 _L7 _L8 _L9 _L10 _L11 _L12 _L13 _L14 _L15 _L16 _L16 _L17 _L18 +_L3: + Log.w("IRCChatWindow", (new StringBuilder("unknown command, m.what=")).append(message.what).append(", obj=").append(message.obj).toString()); + return; +_L5: + int j = pAdapter.getPositionOf(((String) (obj))); + if (j != -1) + { + selectAndClick(j, true); + return; + } else + { + handleStartPm(((String) (obj))); + return; + } +_L6: + sendWhois(((String) (obj))); + return; +_L7: + handleOpAction(((String) (obj)), '+', 'o'); + return; +_L11: + handleOpAction(((String) (obj)), '-', 'o'); + return; +_L8: + handleOpAction(((String) (obj)), '+', 'v'); + return; +_L12: + handleOpAction(((String) (obj)), '-', 'v'); + return; +_L13: + handleOpAction(((String) (obj)), '+', 'h'); + return; +_L14: + handleOpAction(((String) (obj)), '-', 'h'); + return; +_L9: + handleKick(((String) (obj))); + return; +_L10: + handleBan(((String) (obj))); + return; +_L15: + handleBan(((String) (obj))); + handleKick(((String) (obj))); + return; +_L17: + InterceptingEditText interceptingedittext; + String as[]; + int k; + int l; + interceptingedittext = pEt; + boolean flag; + if (interceptingedittext.length() > 0) + { + flag = true; + } else + { + flag = false; + } + if (flag) + { + interceptingedittext.append(" "); + } + message = null; + if (((String) (obj)).indexOf(',') == -1) goto _L20; else goto _L19 +_L19: + message = new StringBuilder(); + as = ((String) (obj)).split(","); + l = as.length; + k = 0; +_L22: + if (k < l) goto _L21; else goto _L20 +_L20: + if (message != null) + { + obj = message; + } + interceptingedittext.append(((CharSequence) (obj))); + if (flag) + { + interceptingedittext.append(" "); + return; + } else + { + interceptingedittext.append(": "); + return; + } +_L21: + message.append(as[k]); + if (k != l - 1) + { + message.append(',').append(' '); + } + k++; + goto _L22 +_L18: + handleCommand((new StringBuilder("/ignore ")).append(message.obj).toString(), false); + return; +_L4: + message = (ChannelSwitcherFragment.SwitchChannelInfo)message.obj; + if (((ChannelSwitcherFragment.SwitchChannelInfo) (message)).manager == pSessionManager) + { + selectAndClick(pAdapter.getPositionOf(((ChannelSwitcherFragment.SwitchChannelInfo) (message)).sessionName), true); + return; + } + if (pGallery.getVisibility() == 8 && pAdapter.getPositionOf(pCurrentSession) >= 0) + { + pCurrentSession.clearTextTypeInfo(); + } + startNewChat(((ChannelSwitcherFragment.SwitchChannelInfo) (message)).id, ((ChannelSwitcherFragment.SwitchChannelInfo) (message)).sessionName); + return; +_L16: + message = (ChannelSwitcherFragment.RunCommand)message.obj; + mService.runOnAnotherProfile(((ChannelSwitcherFragment.RunCommand) (message)).id, (new StringBuilder(String.valueOf(((ChannelSwitcherFragment.RunCommand) (message)).command))).append(" ").append(((ChannelSwitcherFragment.RunCommand) (message)).params).toString()); + return; + } + + FragmentBridge() + { + this$0 = ChatWindow.this; + super(); + } + } + + public class MessageHandler extends Handler + { + + final ChatWindow this$0; + + public void handleMessage(Message message) + { + message.what; + JVM INSTR tableswitch 0 1: default 28 + // 0 29 + // 1 100; + goto _L1 _L2 _L3 +_L1: + return; +_L2: + message = (IRCMessage)blocker.poll(); +_L5: + String s; + int i; + if (message == null) + { + continue; /* Loop/switch isn't completed */ + } + i = ((IRCMessage) (message)).val; + Session session = pCurrentSession; + s = ((IRCMessage) (message)).target; + if (session.getSessionName().equalsIgnoreCase(s)) + { + pSessionManager.addText(message, true); + mTextAdapter.notifyDataSetChanged(); + return; + } + break; /* Loop/switch isn't completed */ +_L3: + message = (IRCMessage)message.obj; + if (true) goto _L5; else goto _L4 +_L4: + boolean flag1; + int j; + pSessionManager.addText(message, false); + flag1 = false; + j = 0; + switch (i) + { + default: + break; + + case 3: // '\003' + break; /* Loop/switch isn't completed */ + + case 2: // '\002' + break; + } + break MISSING_BLOCK_LABEL_196; +_L7: + if (flag1) + { + setUpArrows(s, j, true); + } + if (pSessionManager.needsRefresh()) + { + setTabAdapter(true); + return; + } + if (true) goto _L1; else goto _L6 +_L6: + flag1 = true; + goto _L7 + boolean flag; + if (s.equals("Status")) + { + flag = false; + } else + { + flag = true; + } + if (!flag && (flag || pArrowLeft.getVisibility() != 0 && pArrowRight.getVisibility() != 0)) + { + flag = false; + } else + { + flag = true; + } + flag1 = flag; + if (flag) + { + if (s.equals("Status") || Utils.isChannelPrefix(s.charAt(0))) + { + flag1 = true; + } else + { + flag1 = false; + } + j = ((flag1) ? 1 : 0); + flag1 = flag; + } + goto _L7 + } + + public MessageHandler() + { + this$0 = ChatWindow.this; + super(); + } + } + + private final class SwipeDetector extends net.andchat.donate.Misc.Utils.Detector + { + + final ChatWindow this$0; + + public void onLeftToRightSwipe() + { + int i = pGallery.getSelectedItemPosition(); + if (i > 0) + { + i--; + } else + { + i = pAdapter.getCount() - 1; + } + selectAndClick(i, true); + } + + public void onRightToLeftSwipe() + { + int i = pGallery.getSelectedItemPosition(); + if (i == pAdapter.getCount() - 1) + { + i = 0; + } else + { + i++; + } + selectAndClick(i, true); + } + + public SwipeDetector(Context context) + { + this$0 = ChatWindow.this; + super(context); + } + } + + private class TabAdapter extends BaseAdapter + { + + private StringBuilder labelBuilder; + private final Vector mItems; + private final int mLen; + final ChatWindow this$0; + + public void clear(int i) + { + if (i < mItems.size()) + { + ((Session)mItems.get(i)).clearTextTypeInfo(); + } + } + + public int findJumpTarget(int i, boolean flag, int j) + { + Vector vector; + boolean flag1; + int l; + flag1 = true; + vector = mItems; + l = vector.size(); + if (i <= l && i >= 0 && (i == 0 || i - 1 >= 0)) goto _L2; else goto _L1 +_L1: + j = -1; +_L8: + return j; +_L2: + boolean flag2; + boolean flag3; + flag3 = Utils.isBitSet(j, 1); + flag2 = Utils.isBitSet(j, 2); + if (!flag2 || !flag3) + { + flag1 = false; + } + if (flag1) + { + flag2 = false; + flag3 = false; + } + if (!flag) goto _L4; else goto _L3 +_L3: + i--; +_L13: + if (i >= 0) goto _L6; else goto _L5 +_L5: + return -1; +_L6: + Session session; + session = (Session)vector.get(i); + if (!flag1) + { + break; /* Loop/switch isn't completed */ + } + j = i; + if (session.getCurrentTextType() == 3) goto _L8; else goto _L7 +_L7: + j = i; + if (session.isMarked()) goto _L8; else goto _L9 +_L9: + if (!flag3) + { + break; /* Loop/switch isn't completed */ + } + if (session.getType() != 2) + { + break; /* Loop/switch isn't completed */ + } + j = i; + if (session.isMarked()) goto _L8; else goto _L10 +_L10: + j = i; + if (session.getCurrentTextType() == 3) goto _L8; else goto _L11 +_L11: + if (!flag2) + { + break; /* Loop/switch isn't completed */ + } + j = i; + if (session.isMarked()) goto _L8; else goto _L12 +_L12: + i--; + goto _L13 +_L4: + int k = i; +_L18: + if (k >= l) goto _L5; else goto _L14 +_L14: + session = (Session)vector.get(k); + if (!flag1 || session.getCurrentTextType() != 3 && !session.isMarked()) goto _L16; else goto _L15 +_L15: + j = k; + if (k != i) goto _L8; else goto _L17 +_L17: + k++; + goto _L18 +_L16: + if (!flag3) + { + break; /* Loop/switch isn't completed */ + } + if (session.getType() != 2) + { + break; /* Loop/switch isn't completed */ + } + j = k; + if (session.isMarked()) goto _L8; else goto _L19 +_L19: + j = k; + if (session.getCurrentTextType() == 3) goto _L8; else goto _L20 +_L20: + if (!flag2 || !session.isMarked()) goto _L17; else goto _L21 +_L21: + return k; + } + + public int getCount() + { + return mLen; + } + + public Object getItem(int i) + { + return mItems.get(i); + } + + public long getItemId(int i) + { + return (long)i; + } + + public int getPositionOf(String s) + { + Vector vector; + int i; + int k; + vector = mItems; + k = vector.size(); + i = 0; +_L6: + if (i < k) goto _L2; else goto _L1 +_L1: + int j = -1; +_L4: + return j; +_L2: + j = i; + if (((Session)vector.get(i)).getSessionName().equals(s)) goto _L4; else goto _L3 +_L3: + i++; + if (true) goto _L6; else goto _L5 +_L5: + } + + public int getPositionOf(Session session) + { + Vector vector; + int i; + int k; + vector = mItems; + k = vector.size(); + i = 0; +_L6: + if (i < k) goto _L2; else goto _L1 +_L1: + int j = -1; +_L4: + return j; +_L2: + j = i; + if (((Session)vector.get(i)).equals(session)) goto _L4; else goto _L3 +_L3: + i++; + if (true) goto _L6; else goto _L5 +_L5: + } + + public int getType(int i) + { + if (i < mItems.size()) + { + return ((Session)mItems.get(i)).getCurrentTextType(); + } else + { + return 0; + } + } + + public View getView(int i, View view, ViewGroup viewgroup) + { + Session session; + SpannableStringBuilder spannablestringbuilder; + String s; + StringBuilder stringbuilder; + int j; + if (view != null) + { + view = (TextView)view; + } else + { + view = newTextView(false); + } + session = (Session)mItems.get(i); + s = session.getSessionName(); + j = session.getCurrentTextType(); + spannablestringbuilder = new SpannableStringBuilder(); + viewgroup = labelBuilder; + viewgroup; + JVM INSTR monitorenter ; + if (session.isActive()) + { + i = 0; + } else + { + i = 1; + } + stringbuilder = labelBuilder; + stringbuilder.append(" "); + if (i == 0) + { + break MISSING_BLOCK_LABEL_88; + } + stringbuilder.append("("); + stringbuilder.append(s); + if (i == 0) + { + break MISSING_BLOCK_LABEL_108; + } + stringbuilder.append(")"); + stringbuilder.append(" "); + spannablestringbuilder.append(stringbuilder); + stringbuilder.delete(0, stringbuilder.length()); + viewgroup; + JVM INSTR monitorexit ; + if (s.equals(pCurrentSession.getSessionName())) + { + break MISSING_BLOCK_LABEL_295; + } + j; + JVM INSTR tableswitch 0 3: default 188 + // 0 188 + // 1 223 + // 2 247 + // 3 271; + goto _L1 _L1 _L2 _L3 _L4 +_L1: + session.markValidated(); +_L5: + view.setText(spannablestringbuilder); + return view; + view; + viewgroup; + JVM INSTR monitorexit ; + throw view; +_L2: + Utils.addColour(false, spannablestringbuilder, Colours.getInstance().getColourForEvent(0x7f0b000d), 0, spannablestringbuilder.length()); + goto _L1 +_L3: + Utils.addColour(false, spannablestringbuilder, Colours.getInstance().getColourForEvent(0x7f0b000e), 0, spannablestringbuilder.length()); + goto _L1 +_L4: + Utils.addColour(false, spannablestringbuilder, Colours.getInstance().getColourForEvent(0x7f0b000f), 0, spannablestringbuilder.length()); + goto _L1 + session.clearTextTypeInfo(); + goto _L5 + } + + public TabAdapter(Context context, List list) + { + int i; + int j; + this$0 = ChatWindow.this; + super(); + labelBuilder = new StringBuilder(); + j = list.size(); + mItems = new Vector(j); + i = 0; +_L5: + if (i < j) goto _L2; else goto _L1 +_L1: + Collections.sort(list); + mItems.addAll(list); + mLen = mItems.size(); + return; +_L2: + chatwindow = (Session)list.get(i); + if (!getSessionName().equals("Status")) + { + break; /* Loop/switch isn't completed */ + } + mItems.add(0, ChatWindow.this); + list.remove(ChatWindow.this); + if (true) goto _L1; else goto _L3 +_L3: + i++; + if (true) goto _L5; else goto _L4 +_L4: + } + } + + private class TextAdapter extends BaseAdapter + { + + private LayoutInflater mInflator; + private final LinkMovementMethod mMethod = new LinkMovementMethod(); + private LimitedSizeQueue mText; + final ChatWindow this$0; + + private CharSequence get(int i) + { + Iterator iterator = mText.iterator(); + int j = 0; + do + { + if (!iterator.hasNext()) + { + return null; + } + if (j == i) + { + return (CharSequence)iterator.next(); + } + iterator.next(); + j++; + } while (true); + } + + public int getCount() + { + return mText.getSize(); + } + + public Object getItem(int i) + { + return get(i); + } + + public long getItemId(int i) + { + return (long)i; + } + + public View getView(int i, View view, ViewGroup viewgroup) + { + if (view == null) + { + view = (TextView)mInflator.inflate(0x7f030023, viewgroup, false); + view.setMovementMethod(mMethod); + view.setTextSize(mMsgSize); + } else + { + view = (TextView)view; + } + view.setTypeface(TextStyleDialog.TYPES[mMsgFont]); + view.setText(get(i)); + return view; + } + + public TextAdapter(Context context, LimitedSizeQueue limitedsizequeue) + { + this$0 = ChatWindow.this; + super(); + mInflator = LayoutInflater.from(context); + mText = limitedsizequeue; + } + } + + + private static final Integer ONE = Integer.valueOf(1); + private static final Integer TWO = Integer.valueOf(2); + private static boolean sMadeReq; + private static boolean sUserReqHideCustomActionBar = false; + public final ArrayBlockingQueue blocker = new ArrayBlockingQueue(5); + public FlagHandler flagHandler; + private ActionBar mActionBarL; + private String mChangeToWindow; + private GestureDetector mDetector; + private boolean mDisconnected; + private View mDivider; + private Runnable mFastScrollHider; + private Animation mGrowIn; + private InputMethodManager mIm; + private boolean mInOnResume; + private boolean mInOnServiceConnect; + private int mInputSize; + private int mLastResLeft; + private int mLastResRight; + private MessageSender mMediator; + private StringBuilder mMessageBuilder; + private int mMsgFont; + private int mMsgSize; + private SharedPreferences mPrefs; + ServerProfile mProfile; + private QuickAction mQuickActions[]; + private boolean mReqContextMenu; + private int mScrollBackLen; + private ImageView mSearchIcon; + private int mSelectedPos; + private View mSendButton; + private final ArrayList mServerRunnables = new ArrayList(); + protected IRCService mService; + private final ArrayList mSessionRunnables = new ArrayList(); + private boolean mShouldReconnect; + private boolean mShowTimeStamps; + private Animation mShrinkOut; + private Animation mSlideIn; + private TextAdapter mTextAdapter; + private int mVolKeysMode; + public MessageHandler messageHandler; + private TabAdapter pAdapter; + private ImageView pArrowLeft; + private ImageView pArrowRight; + Session pCurrentSession; + InterceptingEditText pEt; + FragmentBridge pFragmentBridge; + Gallery pGallery; + int pId; + private ListView pList; + private String pNick; + private ServerConnection pServ; + SessionManager pSessionManager; + private TextView pStatus; + private LinearLayout pSuggest; + + public ChatWindow() + { + pCurrentSession = SessionManager.NULL_SESSION; + mService = null; + mDisconnected = false; + } + + private void addSuggestions(LinearLayout linearlayout, List list) + { + int j = list.size(); + if (mSlideIn == null) + { + mSlideIn = AnimationUtils.loadAnimation(this, 0x7f04000e); + } + int i = 0; + do + { + if (i >= j) + { + return; + } + TextView textview = newTextView(true); + textview.setText((CharSequence)list.get(i)); + textview.setOnClickListener(this); + linearlayout.addView(textview); + if (i == 0) + { + linearlayout.startAnimation(mSlideIn); + } + i++; + } while (true); + } + + private boolean areSuggestionsShowing() + { + return pSuggest.getChildCount() > 0; + } + + private void clearCountAndNotification() + { + if (pServ != null) + { + pServ.resetNotificationCount(); + if (pServ.getConnectionState() == 1) + { + ((NotificationManager)getSystemService("notification")).cancel(pId); + } + } + } + + private void connectToServer() + { + switch (pServ.getConnectionState()) + { + case 2: // '\002' + default: + return; + + case 0: // '\0' + case 4: // '\004' + if (pServ.isReconnecting()) + { + pServ.forceConnect(); + return; + } else + { + mService.remove(pServ); + sendMessage(getConnectionMessage(true), "Status", 1); + getObjects(); + pServ.prepareForReconnect(); + return; + } + + case 1: // '\001' + case 3: // '\003' + (new Thread() { + + final ChatWindow this$0; + + public void run() + { + mService.stopConnection(pId, 1); + } + + + { + this$0 = ChatWindow.this; + super(); + } + }).start(); + return; + } + } + + private void doCommon() + { + CharSequence charsequence = pCurrentSession.getSavedInputText(); + if (charsequence == null) goto _L2; else goto _L1 +_L1: + int i = charsequence.length(); + if (i <= 0) goto _L2; else goto _L3 +_L3: + pEt.setText(charsequence); + pEt.setSelection(i); +_L5: + pEt.requestFocus(); + setTextAdapter(pCurrentSession); + return; +_L2: + TextKeyListener.clear(pEt.getText()); + pEt.setText(null); + if (true) goto _L5; else goto _L4 +_L4: + } + + private StringBuilder getConnectionMessage(boolean flag) + { + return Utils.getConnectionMessage(this, flag, mProfile); + } + + private void getObjects() + { + ArrayList arraylist; + int i; + int j; + mMediator = mService.getSenderForId(pId); + pSessionManager = mService.getSessionManagerForId(pId); + pCurrentSession = pSessionManager.getDefaultSession(); + arraylist = mSessionRunnables; + j = arraylist.size(); + i = 0; +_L3: + if (i < j) goto _L2; else goto _L1 +_L1: + arraylist.clear(); + pServ = mService.getServer(pId, true, mProfile, this); + refreshMenu(); + arraylist = mServerRunnables; + j = arraylist.size(); + i = 0; +_L4: + if (i >= j) + { + arraylist.clear(); + mMediator.setUi(this); + pNick = pServ.getCurrentNick(); + if (pServ.getConnectionState() == 1) + { + updateTitle(true); + } + pSessionManager.setInputLimit(mScrollBackLen); + if (mActionBarL != null) + { + updateLegacyActionBar(); + } + performInitialization(); + return; + } + break MISSING_BLOCK_LABEL_190; +_L2: + ((Runnable)arraylist.get(i)).run(); + i++; + goto _L3 + ((Runnable)arraylist.get(i)).run(); + i++; + goto _L4 + } + + private void getScrollbackTextDown() + { + InterceptingEditText interceptingedittext = pEt; + interceptingedittext.setText(pCurrentSession.getHistoricDownText(interceptingedittext.getText())); + interceptingedittext.setSelection(interceptingedittext.length()); + interceptingedittext.requestFocus(); + } + + private void getScrollbackTextUp() + { + InterceptingEditText interceptingedittext = pEt; + interceptingedittext.setText(pCurrentSession.getHistoricUpText(interceptingedittext.getText())); + interceptingedittext.setSelection(interceptingedittext.length()); + interceptingedittext.requestFocus(); + } + + private String getSuggestionString(String s) + { + StringBuilder stringbuilder; + int i; + int j = pEt.getSelectionEnd(); + stringbuilder = new StringBuilder(10); + i = s.length() - 1; + if (j <= i && j >= 0) + { + i = j - 1; + } +_L5: + if (i >= 0) goto _L2; else goto _L1 +_L1: + char c; + return stringbuilder.toString(); +_L2: + if ((c = s.charAt(i)) == ' ') goto _L1; else goto _L3 +_L3: + stringbuilder.insert(0, c); + i--; + if (true) goto _L5; else goto _L4 +_L4: + } + + private void handleCommand(String s, boolean flag) + { + if (flag) + { + pCurrentSession.addHistoricText(s); + } + TextKeyListener.clear(pEt.getText()); + CommandParser.handleCommand(s, this); + } + + private void handleSendMessageRequest() + { + InterceptingEditText interceptingedittext = pEt; + Object obj = interceptingedittext.getText(); + int j = ((CharSequence) (obj)).length(); + if (j == 0 || j == 1 && ((CharSequence) (obj)).charAt(0) == '\n') + { + mIm.showSoftInput(interceptingedittext, 2); + interceptingedittext.requestFocus(); + return; + } + Session session = pCurrentSession; + String s1 = session.getSessionName(); + char c = ((CharSequence) (obj)).charAt(0); + int i = pServ.getConnectionState(); + if (c == '/' && j > 1) + { + handleCommand(((CharSequence) (obj)).toString(), true); + TextKeyListener.clear(interceptingedittext.getText()); + interceptingedittext.requestFocus(); + return; + } + if (i == 4 || i == 0) + { + sendMessage(getString(0x7f0a01b3), s1, 1); + pCurrentSession.addHistoricText(new SpannableStringBuilder(((CharSequence) (obj)))); + TextKeyListener.clear(interceptingedittext.getText()); + interceptingedittext.requestFocus(); + return; + } + j = session.getType(); + if (j != 0) + { + if (i == 1) + { + if (!pSessionManager.haveSessionFor(s1) && j == 1) + { + sendMessage(getString(0x7f0a01b4), s1, 2); + interceptingedittext.requestFocus(); + } else + { + String s = ((CharSequence) (obj)).toString(); + if (s.indexOf('\n') != -1) + { + obj = s.split("\n"); + j = obj.length; + i = 0; + while (i < j) + { + sendAMessage(obj[i]); + i++; + } + } else + { + sendAMessage(((CharSequence) (obj))); + } + } + TextKeyListener.clear(interceptingedittext.getText()); + interceptingedittext.requestFocus(); + return; + } + sendMessage(getString(0x7f0a01b3), "Status", 2); + interceptingedittext.requestFocus(); + } else + if (i == 1 && j == 0) + { + sendMessage(getString(0x7f0a01b5), "Status", 2); + pCurrentSession.addHistoricText(new SpannableStringBuilder(((CharSequence) (obj)))); + TextKeyListener.clear(interceptingedittext.getText()); + interceptingedittext.requestFocus(); + return; + } + writeToServer((new StringBuilder()).append(obj).append("\r\n").toString()); + sendMessage(((CharSequence) (obj)), "Status", 2); + TextKeyListener.clear(interceptingedittext.getText()); + interceptingedittext.requestFocus(); + } + + private void hideArrow(int i, ImageView imageview, boolean flag) + { + while (imageview.getVisibility() != 0 || pAdapter.findJumpTarget(i, flag, 3) >= 0) + { + return; + } + imageview.setTag(null); + imageview.setVisibility(8); + } + + private void hideFullscreenIME() + { + InputMethodManager inputmethodmanager = mIm; + if (inputmethodmanager.isFullscreenMode()) + { + inputmethodmanager.hideSoftInputFromWindow(pEt.getWindowToken(), 0); + } + } + + private void hideSuggestions() + { + if (areSuggestionsShowing()) + { + pSuggest.removeAllViews(); + } + } + + private TextView newTextView(boolean flag) + { + TextView textview = new TextView(this); + if (flag) + { + textview.setTextColor(-1); + textview.setTextSize(2, 20F); + textview.setPadding(5, 0, 5, 5); + } else + { + textview.setBackgroundResource(0x7f02003f); + textview.setTextColor(0xff000000); + textview.setTextSize(2, 18F); + } + textview.setEllipsize(android.text.TextUtils.TruncateAt.MIDDLE); + return textview; + } + + private void openSettings() + { + startActivityForResult((new Intent(this, net/andchat/donate/Activities/Preferences)).putExtra("result", true), 0); + } + + private void refreshMenu() + { + if (IRCApp.LEGACY_VERSION) + { + onPrepareOptionsMenu(null); + return; + } else + { + invalidateOptionsMenu(); + return; + } + } + + private void sendAMessage(CharSequence charsequence) + { + int i = charsequence.length(); + Session session = pCurrentSession; + String s = session.getSessionName(); + int j = s.length(); + Object obj = mMessageBuilder; + ((StringBuilder) (obj)).setLength(0); + ((StringBuilder) (obj)).ensureCapacity(i + 12 + j); + writeToServer(((StringBuilder) (obj)).append("PRIVMSG ").append(s).append(" :").append(charsequence).append("\r\n").toString()); + ((StringBuilder) (obj)).setLength(0); + ((StringBuilder) (obj)).append("<"); + ((StringBuilder) (obj)).append(session.getOwnStatus()); + ((StringBuilder) (obj)).append(pNick).append("> "); + j = ((StringBuilder) (obj)).length(); + ((StringBuilder) (obj)).append(charsequence); + int k = Colours.getInstance().getColourForEvent(0x7f0b0012); + obj = Utils.createMessage(mShowTimeStamps, ((CharSequence) (obj))); + Utils.addColour(mShowTimeStamps, ((SpannableStringBuilder) (obj)), k, 0, 1); + Utils.addColour(mShowTimeStamps, ((SpannableStringBuilder) (obj)), k, j - 2, j); + if (i > 4) + { + Utils.addLinks(((android.text.Spannable) (obj))); + } + sendMessage(((CharSequence) (obj)), s, 2); + session.addHistoricText(new SpannableStringBuilder(charsequence)); + } + + private void sendMessage(final CharSequence m, String s, int i) + { + String s1; +label0: + { + if (s != null) + { + s1 = s; + if (s.length() != 0) + { + break label0; + } + } + s1 = "Status"; + } + s = m; + if (!(m instanceof SpannableStringBuilder)) + { + s = m; + if (mShowTimeStamps) + { + s = new SpannableStringBuilder(); + Utils.getStyledTimeStamp(s, ServerConnection.getTime()); + s.append(m); + } + } + if (pCurrentSession.getSessionName().equals(s1)) + { + m = IRCMessage.obtain(); + m.set(s1, s, i); + Message.obtain(messageHandler, 1, m).sendToTarget(); + if (pServ != null) + { + pServ.logMessage(s1, s); + } + } else + { + m = IRCMessage.obtain(); + m.set(s1, s, i); + if (pSessionManager == null) + { + mSessionRunnables.add(new Runnable() { + + final ChatWindow this$0; + private final IRCMessage val$m; + + public void run() + { + pSessionManager.addText(m, false); + } + + + { + this$0 = ChatWindow.this; + m = ircmessage; + super(); + } + }); + return; + } + pSessionManager.addText(m, false); + if (pSessionManager.needsRefresh()) + { + setTabAdapter(true); + } + if (pServ != null) + { + pServ.logMessage(s1, s); + return; + } + } + } + + private void sendWhois(String s) + { + handleCommand((new StringBuilder("/WHOIS ")).append(s).append("\r\n").toString(), false); + Toast.makeText(this, 0x7f0a01b6, 0).show(); + } + + private void setTabAdapter(boolean flag) + { + if (flag) + { + pAdapter.notifyDataSetChanged(); + } else + if (pSessionManager != null) + { + pAdapter = new TabAdapter(this, pSessionManager.getSessionObjects()); + pGallery.setAdapter(pAdapter); + return; + } + } + + private void setTextAdapter(Session session) + { + mTextAdapter = new TextAdapter(this, session.getSessionMessages()); + pList.setAdapter(mTextAdapter); + session = pList; + Runnable runnable = new Runnable() { + + final ChatWindow this$0; + + public void run() + { + int j = pList.getTranscriptMode(); + pList.setTranscriptMode(2); + pList.setSelection(pList.getCount() - 1); + pList.setTranscriptMode(j); + } + + + { + this$0 = ChatWindow.this; + super(); + } + }; + int i; + if (mInOnResume || mInOnServiceConnect) + { + i = 150; + } else + { + i = 30; + } + session.postDelayed(runnable, i); + } + + private void setUpArrows(int i) + { + if (i >= 0) goto _L2; else goto _L1 +_L1: + Session session; + return; +_L2: + byte byte0; + if ((session = (Session)pAdapter.getItem(i)).getType() == 0) + { + continue; /* Loop/switch isn't completed */ + } + byte0 = -1; + if (pAdapter.getType(i) != 3 && session.getType() == 1) + { + break; /* Loop/switch isn't completed */ + } + i = 0; +_L4: + if (i >= 0) + { + setUpArrows(session.getSessionName(), i, false); + return; + } + if (true) goto _L1; else goto _L3 +_L3: + i = byte0; + if (session.isMarked()) + { + i = 1; + } + goto _L4 + if (true) goto _L1; else goto _L5 +_L5: + } + + private void setUpArrows(String s, int i, boolean flag) + { + if (!s.equals("Status")) goto _L2; else goto _L1 +_L1: + return; +_L2: + int k; + int l; + int j = pGallery.getLastVisiblePosition(); + k = pGallery.getFirstVisiblePosition(); + l = pAdapter.getPositionOf(s); + if (l <= j && (!flag || pArrowRight.getVisibility() != 0)) + { + continue; /* Loop/switch isn't completed */ + } + i; + JVM INSTR tableswitch 0 1: default 84 + // 0 85 + // 1 141; + goto _L3 _L4 _L5 +_L3: + return; +_L4: + pArrowRight.setImageResource(0x7f020020); + pArrowRight.setTag(ONE); + mLastResRight = 0x7f020020; +_L7: + if (Utils.isChannelPrefix(s.charAt(0))) + { + pSessionManager.setMarked(s, true); + } + pArrowRight.setVisibility(0); + return; +_L5: + if (pArrowRight.getVisibility() == 8) + { + pArrowRight.setImageResource(0x7f020016); + mLastResRight = 0x7f020016; + pArrowRight.setTag(TWO); + } + if (true) goto _L7; else goto _L6 +_L6: + if ((l == -1 || l >= k || l - 1 == k) && (!flag || pArrowLeft.getVisibility() != 0)) goto _L1; else goto _L8 +_L8: + i; + JVM INSTR tableswitch 0 1: default 244 + // 0 245 + // 1 301; + goto _L9 _L10 _L11 +_L9: + return; +_L10: + pArrowLeft.setImageResource(0x7f02001f); + pArrowLeft.setTag(ONE); + mLastResLeft = 0x7f02001f; +_L13: + if (Utils.isChannelPrefix(s.charAt(0))) + { + pSessionManager.setMarked(s, true); + } + pArrowLeft.setVisibility(0); + return; +_L11: + if (pArrowLeft.getVisibility() == 8) + { + pArrowLeft.setImageResource(0x7f020015); + mLastResLeft = 0x7f020015; + pArrowLeft.setTag(TWO); + } + if (true) goto _L13; else goto _L12 +_L12: + } + + private void showLegacyActionBar() + { + if (mActionBarL != null) + { + if (mActionBarL.getVisibility() == 8) + { + Animation animation1 = mGrowIn; + Animation animation = animation1; + if (animation1 == null) + { + animation = AnimationUtils.loadAnimation(this, 0x7f040005); + } + mActionBarL.setAnimation(animation); + mDivider.setAnimation(animation); + } + if (sUserReqHideCustomActionBar) + { + sUserReqHideCustomActionBar = false; + } + mDivider.setVisibility(0); + mActionBarL.setVisibility(0); + } + } + + private void startCopy() + { + Intent intent = new Intent(this, net/andchat/donate/Activities/CopyTextActivity); + intent.putExtra("window", pCurrentSession.getSessionName()); + Iterator iterator = pCurrentSession.getSessionMessages().iterator(); + SpannableStringBuilder spannablestringbuilder = new SpannableStringBuilder(); + do + { + if (!iterator.hasNext()) + { + intent.putExtra("text", spannablestringbuilder); + intent.putExtra("size", mMsgSize); + startActivity(intent); + return; + } + spannablestringbuilder.append((CharSequence)iterator.next()); + spannablestringbuilder.append('\n'); + } while (true); + } + + private void startNewChat(int i, String s) + { + Intent intent = new Intent(this, IRCApp.CHAT_CLASS); + intent.putExtra("id", i); + if (s != null) + { + intent.putExtra("window", s); + } + intent.addFlags(0x14000000); + startActivity(intent); + } + + private void stopReconnect() + { + while (pServ == null || !pServ.isInReconnectMode()) + { + return; + } + (new Thread() { + + final ChatWindow this$0; + + public void run() + { + mService.stopReconnecting(pId, 1); + runOnUiThread(new Runnable() { + + final _cls5 this$1; + + public void run() + { + String as[] = pSessionManager.getSessionList(); + int j = as.length; + int i = 0; + do + { + if (i >= j) + { + return; + } + String s = as[i]; + sendMessage(getString(0x7f0a01b2), s, 1); + i++; + } while (true); + } + + + { + this$1 = _cls5.this; + super(); + } + }); + } + + + + { + this$0 = ChatWindow.this; + super(); + } + }).start(); + } + + private void updateTitle(boolean flag) + { + SpannableStringBuilder spannablestringbuilder; + boolean flag1; + if (flag && pNick != null && pNick.length() > 0) + { + flag1 = true; + } else + { + flag1 = false; + } + spannablestringbuilder = new SpannableStringBuilder(); + spannablestringbuilder.append(mProfile.getName()); + if (flag1) + { + spannablestringbuilder.append(' ').append('/').append(pNick); + spannablestringbuilder.setSpan(new TextAppearanceSpan(this, 0x1030046), mProfile.getName().length() + 1, spannablestringbuilder.length(), 33); + } + if (mActionBarL != null) + { + mActionBarL.setTitle(spannablestringbuilder); + return; + } else + { + super.setTitle(spannablestringbuilder); + return; + } + } + + void addSession(final String tag, final boolean jumpToIt) + { + if (pSessionManager == null) + { + tag = new Runnable() { + + final ChatWindow this$0; + private final boolean val$jumpToIt; + private final String val$tag; + + public void run() + { + if (pSessionManager != null) + { + addSession(tag, jumpToIt); + } + } + + + { + this$0 = ChatWindow.this; + tag = s; + jumpToIt = flag; + super(); + } + }; + mSessionRunnables.add(tag); + return; + } + Session session; + int i; + int k; + if (Utils.isChannelPrefix(tag.charAt(0))) + { + i = 1; + } else + { + i = 2; + } + pSessionManager.addSession(tag, pNick, i); + i = pGallery.getSelectedItemPosition(); + session = (Session)pAdapter.getItem(i); + setTabAdapter(false); + k = pAdapter.getPositionOf(tag); + if (jumpToIt && k != -1) + { + pAdapter.clear(i); + selectAndClick(k, true); + pAdapter.clear(k); + return; + } else + { + int j = pAdapter.getPositionOf(session); + selectAndClick(j, false); + pAdapter.clear(j); + return; + } + } + + public boolean dispatchKeyEvent(KeyEvent keyevent) + { + keyevent.getKeyCode(); + JVM INSTR tableswitch 82 82: default 24 + // 82 30; + goto _L1 _L2 +_L1: + return super.dispatchKeyEvent(keyevent); +_L2: + if (keyevent.isLongPress()) + { + return false; + } + if (mActionBarL != null) + { + if (keyevent.getAction() == 1) + { + return super.dispatchKeyEvent(keyevent); + } + if (mActionBarL.getVisibility() == 0) + { + Animation animation = mShrinkOut; + keyevent = animation; + if (animation == null) + { + keyevent = AnimationUtils.loadAnimation(this, 0x7f040008); + } + mDivider.setAnimation(keyevent); + mActionBarL.setAnimation(keyevent); + mDivider.setVisibility(8); + mActionBarL.setVisibility(8); + sUserReqHideCustomActionBar = true; + return true; + } else + { + showLegacyActionBar(); + return true; + } + } + if (true) goto _L1; else goto _L3 +_L3: + } + + public String getCurrentNick() + { + return pServ.getCurrentNick(); + } + + public Session getCurrentSession() + { + return pCurrentSession; + } + + public Ignores getIgnoreList() + { + if (pServ == null) + { + return Ignores.getIgnores(pId, Utils.getIRCDb(this)); + } else + { + return pServ.getIgnoreList(); + } + } + + public String getPartReason() + { + return IRCService.sPreferences.partReason; + } + + public String getQuitReason() + { + return IRCService.sPreferences.quitReason; + } + + public Resources getResources() + { + return super.getResources(); + } + + public ServerConnection getServerConnection() + { + return pServ; + } + + public SessionManager getSessionManager() + { + return pSessionManager; + } + + public void handleAddMessage(IRCMessage ircmessage) + { + sendMessage(ircmessage.message, ircmessage.target, ircmessage.val); + } + + public void handleBan(String s) + { + Utils.handleBanHammer(s, this); + } + + public void handleJoin(String s) + { + int i = pAdapter.getPositionOf(s); + if (i != -1) + { + selectAndClick(i, true); + } + writeToServer((new StringBuilder("JOIN ")).append(s).append("\r\n").toString()); + } + + public void handleKick(String s) + { + Utils.handleKicking(s, this); + } + + public void handleOpAction(String s, char c, char c1) + { + writeToServer(Utils.buildOpAction(s, c, c1, pCurrentSession.getSessionName())); + } + + public void handleQuit(String s) + { + Utils.handleQuit(s, mService, pId); + } + + public void handleStartPm(String s) + { + addSession(s, true); + sendMessage(Utils.getPmStart(this, s, mShowTimeStamps), s, 2); + } + + public boolean isShowingTimestamps() + { + return mShowTimeStamps; + } + + protected void loadPrefs() + { + SharedPreferences sharedpreferences = mPrefs; + mShowTimeStamps = sharedpreferences.getBoolean(getString(0x7f0a001c), false); + mMsgSize = Utils.parseInt(sharedpreferences.getString(getString(0x7f0a0013), "13"), 13); + mMsgFont = sharedpreferences.getInt(getString(0x7f0a002f), 0); + mInputSize = Utils.parseInt(sharedpreferences.getString(getString(0x7f0a0014), Integer.toString(-1)), -1); + int i = sharedpreferences.getInt(getString(0x7f0a0030), 0); + pEt.setTypeface(TextStyleDialog.TYPES[i]); + if (mInputSize > 0) + { + pEt.setTextSize(2, mInputSize); + } + if (mTextAdapter != null) + { + mTextAdapter.notifyDataSetChanged(); + } + Object obj = getString(0x7f0a0019); + mScrollBackLen = Utils.parseInt(sharedpreferences.getString(((String) (obj)), "20"), 20, sharedpreferences, ((String) (obj)), "IRCChatWindow"); + if (mScrollBackLen > 50) + { + mScrollBackLen = 50; + sharedpreferences.edit().putString(((String) (obj)), "50").commit(); + } + boolean flag = sharedpreferences.getBoolean(getString(0x7f0a0023), true); + i = pEt.getInputType(); + if (flag) + { + i |= 0xc000; + } else + { + i &= 0xffff3fff; + } + pEt.setInputType(i); + mVolKeysMode = Integer.parseInt(sharedpreferences.getString(getString(0x7f0a002c), "-1")); + flag = sharedpreferences.getBoolean(getString(0x7f0a0034), true); + obj = mSendButton; + if (flag) + { + i = 0; + } else + { + i = 8; + } + ((View) (obj)).setVisibility(i); + flag = sharedpreferences.getBoolean(getString(0x7f0a0035), false); + pEt.setKeepScreenOn(flag); + } + + public void onActionBarItemClicked(com.markupartist.android.widget.ActionBar.GenericAction genericaction, View view) + { + genericaction.getDrawable(); + JVM INSTR lookupswitch 6: default 64 + // 2130837529: 115 + // 2130837544: 149 + // 2130837555: 105 + // 2130837556: 126 + // 2130837561: 131 + // 2130837565: 110; + goto _L1 _L2 _L3 _L4 _L5 _L6 _L7 +_L1: + Log.w("IRCChatWindow", (new StringBuilder("Unhandled action bar item: drawable = ")).append(genericaction.getDrawable()).append("description = ").append(genericaction.getDescription()).toString()); +_L9: + return; +_L4: + stopReconnect(); + return; +_L7: + connectToServer(); + return; +_L2: + mQuickActions[0].show(view); + return; +_L5: + onUserlistMenuClicked(); + return; +_L6: + if (mQuickActions == null) goto _L9; else goto _L8 +_L8: + mQuickActions[1].show(view); + return; +_L3: + startCopy(); + return; + } + + protected void onActivityResult(int i, int j, Intent intent) + { + super.onActivityResult(i, j, intent); + i; + JVM INSTR lookupswitch 3: default 44 + // 0: 45 + // 1: 561 + // 10: 67; + goto _L1 _L2 _L3 _L4 +_L6: + return; +_L2: + ((IRCApp)getApplication()).notifyWatchers(); + Toast.makeText(this, 0x7f0a01cf, 0).show(); + return; +_L4: + String s; + if (j != -1 || intent == null) + { + continue; /* Loop/switch isn't completed */ + } + String s1 = intent.getCharSequenceExtra("selected").toString(); + i = s1.lastIndexOf(','); + s = s1; + if (i != -1) + { + s = s1.substring(0, i); + } + i = intent.getIntExtra("action", -1); + if (i == -1) + { + break; /* Loop/switch isn't completed */ + } + intent = intent.getStringExtra("names"); + switch (i) + { + default: + return; + + case 2131230725: + if (intent != null) + { + handleStartPm(intent); + return; + } + break; + + case 2131230726: + if (intent != null) + { + sendWhois(intent); + return; + } + break; + + case 2131230858: + if (intent != null) + { + handleCommand((new StringBuilder("/ignore ")).append(intent).toString(), false); + return; + } + break; + + case 2131230731: + handleOpAction(s, '-', 'o'); + TextKeyListener.clear(pEt.getText()); + return; + + case 2131230732: + handleOpAction(s, '-', 'v'); + TextKeyListener.clear(pEt.getText()); + return; + + case 2131230733: + handleOpAction(s, '+', 'h'); + TextKeyListener.clear(pEt.getText()); + return; + + case 2131230734: + handleOpAction(s, '-', 'h'); + TextKeyListener.clear(pEt.getText()); + return; + + case 2131230735: + handleBan(s); + handleKick(s); + TextKeyListener.clear(pEt.getText()); + return; + + case 2131230727: + handleOpAction(s, '+', 'o'); + TextKeyListener.clear(pEt.getText()); + return; + + case 2131230728: + handleOpAction(s, '+', 'v'); + TextKeyListener.clear(pEt.getText()); + return; + + case 2131230729: + handleKick(s); + TextKeyListener.clear(pEt.getText()); + return; + + case 2131230730: + handleBan(s); + TextKeyListener.clear(pEt.getText()); + return; + } +_L1: + if (true) goto _L6; else goto _L5 +_L5: + intent = intent.getCharSequenceExtra("oldtext"); + if (s != null && !s.equals("")) + { + if (intent != null && !intent.equals("")) + { + s = (new StringBuilder()).append(intent).append(s).toString(); + } + pEt.setText(s); + pEt.setSelection(s.length()); + return; + } + continue; /* Loop/switch isn't completed */ +_L3: + sMadeReq = false; + if (j != -1) + { + if (j == 3) + { + Toast.makeText(this, 0x7f0a0120, 0).show(); + } + finish(); + return; + } + if (!mProfile.isDecrypted()) + { + intent = Utils.getCrypt(this); + mProfile.decryptSelf(intent); + return; + } + if (true) goto _L6; else goto _L7 +_L7: + } + + public void onAllStopped() + { + } + + public void onClick(View view) + { + int i = view.getId(); + i; + JVM INSTR lookupswitch 5: default 60 + // -1: 61 + // 2131230762: 250 + // 2131230765: 532 + // 2131230766: 538 + // 2131230767: 250; + goto _L1 _L2 _L3 _L4 _L5 _L3 +_L1: + break; /* Loop/switch isn't completed */ +_L5: + break MISSING_BLOCK_LABEL_538; +_L6: + return; +_L2: + if (view instanceof TextView) + { + String s2 = ((TextView)view).getText().toString(); + hideSuggestions(); + InterceptingEditText interceptingedittext = pEt; + String s1 = interceptingedittext.getText().toString(); + String s; + Object obj; + if (s1.length() > 1) + { + s = getSuggestionString(s1); + } else + { + s = s1; + } + obj = null; + view = obj; + int j; + boolean flag; + if (interceptingedittext.getSelectionEnd() != s1.length()) + { + try + { + view = s1.substring(interceptingedittext.getSelectionEnd()); + } + // Misplaced declaration of an exception variable + catch (View view) + { + view = obj; + } + } + s = s1.substring(0, interceptingedittext.getSelectionEnd() - s.length()); + if (s.length() == 0) + { + s = (new StringBuilder(String.valueOf(s2))).append(": ").toString(); + } else + { + s = (new StringBuilder(String.valueOf(s))).append(s2).append(" ").toString(); + } + interceptingedittext.setText(s); + if (view != null) + { + interceptingedittext.append(view); + } + interceptingedittext.setSelection(s.length()); + return; + } + continue; /* Loop/switch isn't completed */ +_L3: + if (pAdapter != null) + { + if (i == 0x7f08002a) + { + flag = true; + } else + { + flag = false; + } + if (flag) + { + view = pArrowLeft; + } else + { + view = pArrowRight; + } + j = pAdapter.getPositionOf(pCurrentSession); + if (j == -1) + { + view.setTag(null); + view.setVisibility(8); + return; + } + if (view.getTag() != null) + { + i = ((Integer)view.getTag()).intValue(); + } else + { + i = 3; + } + view.setTag(null); + i = pAdapter.findJumpTarget(j, flag, i); + if (i == -1) + { + view.setVisibility(8); + return; + } + hideSuggestions(); + selectAndClick(i, true); + j = pAdapter.findJumpTarget(i, flag, 3); + if (j == -1 || i == j) + { + view.setVisibility(8); + view.setTag(null); + return; + } + s = ((Session)pAdapter.getItem(j)).getSessionName(); + if (pAdapter.getType(j) == 3 || !Utils.isChannelPrefix(s.charAt(0))) + { + if (flag) + { + i = 0x7f02001f; + } else + { + i = 0x7f020020; + } + view.setImageResource(i); + return; + } + if (pSessionManager.isMarked(s)) + { + if (flag) + { + i = 0x7f020015; + } else + { + i = 0x7f020016; + } + view.setImageResource(i); + return; + } + } + if (true) goto _L6; else goto _L4 +_L4: + onSearchRequested(); + return; + hideSuggestions(); + handleSendMessageRequest(); + return; + } + + public boolean onContextItemSelected(MenuItem menuitem) + { + int i; + if (!mReqContextMenu) + { + return super.onContextItemSelected(menuitem); + } + i = pGallery.getSelectedItemPosition(); + if (i != mSelectedPos) + { + selectAndClick(mSelectedPos, true); + } + menuitem.getItemId(); + JVM INSTR tableswitch 2131230855 2131230856: default 68 + // 2131230855 74 + // 2131230856 99; + goto _L1 _L2 _L3 +_L1: + return super.onContextItemSelected(menuitem); +_L2: + handleCommand("/clear", false); + if (i != mSelectedPos) + { + selectAndClick(i, true); + } + continue; /* Loop/switch isn't completed */ +_L3: + handleCommand("/wc", false); + if (true) goto _L1; else goto _L4 +_L4: + } + + protected void onCreate(Bundle bundle) + { + super.onCreate(bundle); + mPrefs = Utils.getPrefs(this); + setContentView(0x7f030007); + pGallery = (Gallery)findViewById(0x7f080021); + bundle = pGallery; + bundle.setHorizontalFadingEdgeEnabled(true); + bundle.setAnimationDuration(0); + bundle.setOnItemClickListener(this); + bundle.setCallbackDuringFling(false); + bundle.setOnItemSelectedListener(this); + registerForContextMenu(bundle); + bundle = (InterceptingLinearLayout)findViewById(0x7f080023); + pList = (ListView)bundle.findViewById(0x7f080026); + pSuggest = (LinearLayout)findViewById(0x7f080001); + Object obj = findViewById(0x7f080029); + pStatus = (TextView)((View) (obj)).findViewById(0x7f08002b); + pEt = (InterceptingEditText)((View) (obj)).findViewById(0x7f08002c); + pEt.setOnKeyListener(this); + registerForContextMenu(pEt); + mSendButton = ((View) (obj)).findViewById(0x7f08002e); + mSendButton.setOnClickListener(this); + loadPrefs(); + pArrowLeft = (ImageView)((View) (obj)).findViewById(0x7f08002a); + pArrowRight = (ImageView)((View) (obj)).findViewById(0x7f08002f); + pArrowLeft.setOnClickListener(this); + pArrowRight.setOnClickListener(this); + Intent intent = getIntent(); + pId = intent.getIntExtra("id", -1); + mShouldReconnect = getIntent().getBooleanExtra("reconnect", false); + mChangeToWindow = intent.getStringExtra("window"); + mProfile = Utils.getIRCDb(this).getDetailsForId(pId); + if (mProfile == null) + { + Toast.makeText(this, 0x7f0a01d8, 1).show(); + finish(); + return; + } + if (!IRCApp.LEGACY_VERSION) + { + pFragmentBridge = new FragmentBridge(); + } + if (mProfile.usesEncryption()) + { + mProfile.setDecrypted(false); + Object obj1 = Utils.getCrypt(this); + if (!sMadeReq && !((Crypt) (obj1)).correctPass()) + { + sMadeReq = true; + obj1 = new Intent(this, net/andchat/donate/Activities/PasswordActivity); + ((Intent) (obj1)).putExtra("action", 1); + ((Intent) (obj1)).putExtra("message", getString(0x7f0a011d, new Object[] { + getString(0x7f0a0123) + })); + startActivityForResult(((Intent) (obj1)), 1); + } else + if (!sMadeReq) + { + mProfile.decryptSelf(((Crypt) (obj1))); + } + } + pNick = mProfile.getNick(1); + messageHandler = new MessageHandler(); + flagHandler = new FlagHandler(null); + mDetector = new GestureDetector(this, new SwipeDetector(this)); + mDetector.setIsLongpressEnabled(false); + bundle.setViewAndDetector(pList, mDetector); + setResult(-1); + mMessageBuilder = new StringBuilder(); + mIm = (InputMethodManager)getSystemService("input_method"); + mSearchIcon = (ImageView)((View) (obj)).findViewById(0x7f08002d); + mSearchIcon.setOnClickListener(this); + ((IRCApp)getApplication()).addWatcher(this); + if (IRCApp.LEGACY_VERSION) + { + bundle = (ActionBar)((ViewStub)findViewById(0x7f080013)).inflate(); + mQuickActions = new QuickAction[2]; + obj = new QuickAction(this); + (new net.andchat.donate.Misc.AbstractMenuInflator.QuickActionsMenu(((QuickAction) (obj)))).addActionsFromXML(this, 0x7f0f0001); + ((QuickAction) (obj)).setOnActionItemClickListener(this); + mQuickActions[0] = ((QuickAction) (obj)); + obj = new QuickAction(this); + (new net.andchat.donate.Misc.AbstractMenuInflator.QuickActionsMenu(((QuickAction) (obj)))).addActionsFromXML(this, 0x7f0f0004); + mQuickActions[1] = ((QuickAction) (obj)); + ((QuickAction) (obj)).setOnActionItemClickListener(this); + (new net.andchat.donate.Misc.AbstractMenuInflator.ActionBarMenu(bundle, this)).addActionsFromXML(this, 0x7f0f0004); + bundle.setOnActionClickListener(this); + mActionBarL = bundle; + mDivider = findViewById(0x7f080010); + bundle = getString(0x7f0a0042); + if (!mPrefs.getBoolean(bundle, false)) + { + Toast.makeText(this, 0x7f0a01b1, 1).show(); + mPrefs.edit().putBoolean(bundle, true).commit(); + } + if (sUserReqHideCustomActionBar) + { + obj = mShrinkOut; + bundle = ((Bundle) (obj)); + if (obj == null) + { + bundle = AnimationUtils.loadAnimation(this, 0x7f040008); + } + mDivider.setAnimation(bundle); + mActionBarL.setAnimation(bundle); + mDivider.setVisibility(8); + mActionBarL.setVisibility(8); + } else + { + mDivider.setVisibility(0); + } + } + updateTitle(false); + if (!IRCApp.LEGACY_VERSION) + { + getActionBar().setDisplayHomeAsUpEnabled(true); + } + if (!IRCApp.LEGACY_VERSION) + { + mFastScrollHider = new Runnable() { + + final ChatWindow this$0; + + public void run() + { + pList.setFastScrollEnabled(false); + } + + + { + this$0 = ChatWindow.this; + super(); + } + }; + } + pList.setOnScrollListener(this); + } + + public void onCreateContextMenu(ContextMenu contextmenu, View view, android.view.ContextMenu.ContextMenuInfo contextmenuinfo) + { + if (view instanceof Gallery) + { + getMenuInflater().inflate(0x7f0f0007, contextmenu); + int i = ((android.widget.AdapterView.AdapterContextMenuInfo)contextmenuinfo).position; + contextmenu.setHeaderTitle(((Session)pAdapter.getItem(i)).getSessionName()); + MenuItem menuitem = contextmenu.findItem(0x7f080088); + boolean flag; + if (i != 0) + { + flag = true; + } else + { + flag = false; + } + menuitem.setEnabled(flag); + mSelectedPos = i; + mReqContextMenu = true; + } else + { + mReqContextMenu = false; + } + super.onCreateContextMenu(contextmenu, view, contextmenuinfo); + } + + public boolean onCreateOptionsMenu(Menu menu) + { + return super.onCreateOptionsMenu(menu); + } + + protected void onDestroy() + { + if (mService != null) + { + mService.removeStateListener(this); + unbindService(this); + mService = null; + } + ((IRCApp)getApplication()).removeWatcher(this); + super.onDestroy(); + } + + public void onItemClick(AdapterView adapterview, View view, int i, long l) + { + adapterview = (Session)pAdapter.getItem(i); + if (adapterview.equals(pCurrentSession)) + { + pGallery.setSelection(pAdapter.getPositionOf(adapterview)); + } else + { + hideSuggestions(); + pCurrentSession.putSavedInputText(pEt.getText()); + TextView textview; + int j; + boolean flag; + if (adapterview.getType() == 1) + { + i = 1; + } else + { + i = 0; + } + flag = adapterview.hasCapability(1); + textview = pStatus; + if (i != 0) + { + j = 0; + } else + { + j = 8; + } + textview.setVisibility(j); + mSearchIcon.setEnabled(flag); + if (i != 0) + { + pStatus.setText(adapterview.getOwnStatus()); + } + pCurrentSession.clearTextTypeInfo(); + pCurrentSession = adapterview; + if (mActionBarL != null) + { + flag = adapterview.hasCapability(5); + mActionBarL.setActionEnabled(2, flag); + } + i = pAdapter.getPositionOf(adapterview); + j = adapterview.getCurrentTextType(); + flag = adapterview.isMarked(); + if (flag || j == 3) + { + hideArrow(i, pArrowLeft, true); + hideArrow(i, pArrowRight, false); + } + if (flag) + { + adapterview.setAsMarked(false); + } + refreshMenu(); + doCommon(); + adapterview = (TextView)view; + if (adapterview != null) + { + adapterview.setText(adapterview.getText().toString()); + } + pAdapter.clear(i); + setTabAdapter(true); + if (!IRCApp.LEGACY_VERSION) + { + refreshMenu(); + } + if (pSessionManager != null) + { + pSessionManager.setCurrentSession(pCurrentSession); + return; + } + } + } + + public void onItemClick(QuickAction quickaction, int i, int j) + { + switch (j) + { + case 2131230842: + case 2131230843: + case 2131230844: + case 2131230845: + case 2131230846: + default: + Log.w("IRCChatWindow", (new StringBuilder("Unhandled action bar item: id = ")).append(j).toString()); + return; + + case 2131230841: + connectToServer(); + return; + + case 2131230849: + openSettings(); + return; + + case 2131230847: + startActivity((new Intent(this, net/andchat/donate/Activities/IgnoresActivity)).putExtra("id", pId)); + return; + + case 2131230848: + startCopy(); + return; + } + } + + public void onItemSelected(AdapterView adapterview, View view, int i, long l) + { + onItemClick(adapterview, view, i, l); + } + + public boolean onKey(View view, int i, KeyEvent keyevent) + { + boolean flag1 = true; + i; + JVM INSTR lookupswitch 9: default 88 + // 4: 94 + // 19: 140 + // 20: 161 + // 23: 109 + // 24: 188 + // 25: 188 + // 61: 350 + // 66: 109 + // 67: 182; + goto _L1 _L2 _L3 _L4 _L5 _L6 _L6 _L7 _L5 _L8 +_L1: + boolean flag = false; +_L10: + return flag; +_L2: + if (areSuggestionsShowing()) + { + hideSuggestions(); + return true; + } else + { + return false; + } +_L5: + hideSuggestions(); + if (keyevent.getAction() != 0) + { + pEt.requestFocus(); + return true; + } else + { + handleSendMessageRequest(); + hideFullscreenIME(); + return true; + } +_L3: + hideSuggestions(); + flag = flag1; + if (keyevent.getAction() == 0) + { + getScrollbackTextUp(); + return true; + } + continue; /* Loop/switch isn't completed */ +_L4: + hideSuggestions(); + flag = flag1; + if (keyevent.getAction() == 0) + { + getScrollbackTextDown(); + return true; + } + continue; /* Loop/switch isn't completed */ +_L8: + hideSuggestions(); + return false; +_L6: + switch (mVolKeysMode) + { + case 2: // '\002' + default: + return false; + + case 0: // '\0' + break; + + case 1: // '\001' + if (((AudioManager)getSystemService("audio")).isMusicActive()) + { + return false; + } + break; + + case 3: // '\003' + flag = flag1; + if (keyevent.getAction() == 0) + { + if (i == 25) + { + getScrollbackTextDown(); + return true; + } + flag = flag1; + if (i == 24) + { + getScrollbackTextUp(); + return true; + } + } + continue; /* Loop/switch isn't completed */ + } + flag = flag1; + if (keyevent.getAction() == 1) + { + view = mService; + int j = pId; + if (i == 24) + { + flag = true; + } else + { + flag = false; + } + i = view.findNextActive(j, flag); + flag = flag1; + if (i != pId) + { + startNewChat(i, null); + return true; + } + } + continue; /* Loop/switch isn't completed */ +_L7: + flag = flag1; + if (keyevent.getAction() != 0) + { + pEt.requestFocus(); + onSearchRequested(); + return true; + } + if (true) goto _L10; else goto _L9 +_L9: + } + + public boolean onMenuItemClick(MenuItem menuitem) + { + if (menuitem.getItemId() == 0x7f080079) + { + connectToServer(); + return true; + } else + { + return false; + } + } + + public void onNothingSelected(AdapterView adapterview) + { + } + + public boolean onOptionsItemSelected(MenuItem menuitem) + { + menuitem.getItemId(); + JVM INSTR lookupswitch 7: default 72 + // 16908332: 78 + // 2131230844: 110 + // 2131230845: 117 + // 2131230846: 131 + // 2131230847: 145 + // 2131230848: 138 + // 2131230849: 124; + goto _L1 _L2 _L3 _L4 _L5 _L6 _L7 _L8 +_L1: + return super.onOptionsItemSelected(menuitem); +_L2: + Intent intent = new Intent(this, net/andchat/donate/Activities/Main); + intent.addFlags(0x14000000); + startActivity(intent); + finish(); + continue; /* Loop/switch isn't completed */ +_L3: + stopReconnect(); + continue; /* Loop/switch isn't completed */ +_L4: + connectToServer(); + continue; /* Loop/switch isn't completed */ +_L8: + openSettings(); + continue; /* Loop/switch isn't completed */ +_L5: + onUserlistMenuClicked(); + continue; /* Loop/switch isn't completed */ +_L7: + startCopy(); + continue; /* Loop/switch isn't completed */ +_L6: + startActivity((new Intent(this, net/andchat/donate/Activities/IgnoresActivity)).putExtra("id", pId)); + if (true) goto _L1; else goto _L9 +_L9: + } + + protected void onPause() + { + QuickAction aquickaction[]; + if (mService != null) + { + mService.cleanUpIfRequired(pId); + } + if (mMediator != null) + { + mMediator.setUi(null); + } + pCurrentSession.putSavedInputText(pEt.getText()); + aquickaction = mQuickActions; + if (aquickaction == null) goto _L2; else goto _L1 +_L1: + int i = 0; +_L5: + if (i < aquickaction.length) goto _L3; else goto _L2 +_L2: + pEt.setCallback(null); + super.onPause(); + return; +_L3: + if (aquickaction[i] != null && aquickaction[i].isShowing()) + { + aquickaction[i].dismiss(); + } + i++; + if (true) goto _L5; else goto _L4 +_L4: + } + + public boolean onPreImeKey(int i, KeyEvent keyevent) + { + if (i == 4 && areSuggestionsShowing()) + { + hideSuggestions(); + return true; + } else + { + return false; + } + } + + public void onPreferencesChanged() + { + loadPrefs(); + } + + public boolean onPrepareOptionsMenu(Menu menu) + { + return super.onPrepareOptionsMenu(menu); + } + + public void onProviderClicked() + { + connectToServer(); + } + + protected void onRestoreInstanceState(Bundle bundle) + { + if (bundle.getBoolean("right")) + { + pArrowRight.setVisibility(0); + int i = bundle.getInt("lastRight"); + pArrowRight.setImageResource(i); + mLastResRight = i; + } + if (bundle.getBoolean("left")) + { + pArrowLeft.setVisibility(0); + int j = bundle.getInt("lastLeft"); + pArrowLeft.setImageResource(j); + mLastResLeft = j; + } + mDisconnected = bundle.getBoolean("disconnected", false); + super.onRestoreInstanceState(bundle); + } + + protected void onResume() + { + mInOnResume = true; + if (pSessionManager != null) + { + doCommon(); + } else + if (mProfile.usesEncryption()) + { + if (Utils.getCrypt(this).correctPass()) + { + bindService(new Intent(this, net/andchat/donate/Backend/IRCService), this, 0); + } + } else + { + bindService(new Intent(this, net/andchat/donate/Backend/IRCService), this, 0); + } + if (mMediator != null) + { + mMediator.setUi(this); + clearCountAndNotification(); + boolean flag1 = true; + boolean flag = flag1; + if (pAdapter != null) + { + flag = flag1; + if (pSessionManager != null) + { + if (pAdapter.getCount() == pSessionManager.getSessionCount()) + { + flag = true; + } else + { + flag = false; + } + } + } + setTabAdapter(flag); + } + pEt.setCallback(this); + super.onResume(); + mInOnResume = false; + } + + protected void onSaveInstanceState(Bundle bundle) + { + if (pArrowLeft.getVisibility() == 0) + { + bundle.putBoolean("left", true); + bundle.putInt("lastLeft", mLastResLeft); + } + if (pArrowRight.getVisibility() == 0) + { + bundle.putBoolean("right", true); + bundle.putInt("lastRight", mLastResRight); + } + if (pServ != null) + { + int i = pServ.getConnectionState(); + if (i == 0 || i == 4) + { + bundle.putBoolean("disconnected", true); + } + } + super.onSaveInstanceState(bundle); + } + + public void onScroll(AbsListView abslistview, int i, int j, int k) + { + if (j == 0 || j == k || i + j == k) + { + if (abslistview.getTranscriptMode() != 2) + { + abslistview.setTranscriptMode(2); + } + if (!IRCApp.LEGACY_VERSION) + { + flagHandler.postDelayed(mFastScrollHider, 2500L); + } + } else + { + if (abslistview.getTranscriptMode() != 0) + { + abslistview.setTranscriptMode(0); + } + if (!IRCApp.LEGACY_VERSION) + { + flagHandler.removeCallbacks(mFastScrollHider); + abslistview.setFastScrollEnabled(true); + return; + } + } + } + + public void onScrollStateChanged(AbsListView abslistview, int i) + { + } + + public boolean onSearchRequested() + { + if (pCurrentSession.hasCapability(1)) + { + if (areSuggestionsShowing()) + { + hideSuggestions(); + return false; + } + InterceptingEditText interceptingedittext = pEt; + String s = interceptingedittext.getText().toString(); + Object obj1; + if (s.length() > 1) + { + obj1 = getSuggestionString(s); + } else + { + obj1 = s; + } + if (((String) (obj1)).length() != 0) + { + LinearLayout linearlayout = null; + Object obj = linearlayout; + if (interceptingedittext.getSelectionEnd() != s.length()) + { + try + { + obj = s.substring(interceptingedittext.getSelectionEnd()); + } + catch (StringIndexOutOfBoundsException stringindexoutofboundsexception) + { + stringindexoutofboundsexception = linearlayout; + } + } + if (s.length() == 1) + { + s = null; + } else + { + s = s.substring(0, interceptingedittext.getSelectionEnd() - ((String) (obj1)).length()); + } + linearlayout = pSuggest; + obj1 = pCurrentSession.getNickSuggestions(((String) (obj1))); + if (obj1 != null) + { + if (((List) (obj1)).size() == 1) + { + if (s == null || s.equals("")) + { + obj1 = (new StringBuilder(String.valueOf((String)((List) (obj1)).get(0)))).append(": ").toString(); + } else + { + obj1 = (new StringBuilder(String.valueOf(s))).append((String)((List) (obj1)).get(0)).append(" ").toString(); + } + interceptingedittext.setText(((CharSequence) (obj1))); + if (obj != null) + { + interceptingedittext.append(((CharSequence) (obj))); + } + interceptingedittext.setSelection(((String) (obj1)).length()); + hideSuggestions(); + return false; + } else + { + Collections.sort(((List) (obj1)), String.CASE_INSENSITIVE_ORDER); + addSuggestions(linearlayout, ((List) (obj1))); + return false; + } + } + } + } + return false; + } + + public void onServerStateChanged(int i) + { + if (i == pId) + { + refreshMenu(); + } + } + + public void onServiceConnected(ComponentName componentname, IBinder ibinder) + { + int i; + int j; + mInOnServiceConnect = true; + mService = ((net.andchat.donate.Backend.IRCService.IRCServiceBinder)ibinder).getService(); + componentname = mService; + componentname.addStateListener(this); + if (componentname.getServerState(pId) == 4 && !mDisconnected) + { + sendMessage(getConnectionMessage(false), "Status", 1); + } + getObjects(); + setTextAdapter(pCurrentSession); + if (pServ.getConnectionState() == 0 && mShouldReconnect) + { + componentname.remove(pServ); + sendMessage(getConnectionMessage(true), "Status", 2); + getObjects(); + pServ.prepareForReconnect(); + } + setTabAdapter(false); + j = 0; + i = 0; + pEt.setText(pCurrentSession.getSavedInputText()); + if (mChangeToWindow == null) goto _L2; else goto _L1 +_L1: + j = pAdapter.getPositionOf(mChangeToWindow); + if (j != -1) + { + selectAndClick(j, true); + setUpArrows(pAdapter.findJumpTarget(j, true, 3)); + setUpArrows(pAdapter.findJumpTarget(j, false, 3)); + i = 1; + } + getIntent().removeExtra("window"); +_L4: + clearCountAndNotification(); + if (i == 0) + { + doCommon(); + } + mInOnServiceConnect = false; + return; +_L2: + componentname = pSessionManager.getCurrentSession(); + i = j; + if (componentname != null) + { + int k = pAdapter.getPositionOf(componentname); + i = j; + if (k != -1) + { + selectAndClick(k, true); + setUpArrows(pAdapter.findJumpTarget(k, true, 3)); + setUpArrows(pAdapter.findJumpTarget(k, false, 3)); + i = 1; + } + } + if (true) goto _L4; else goto _L3 +_L3: + } + + public void onServiceDisconnected(ComponentName componentname) + { + } + + protected void onStop() + { + pList.setAdapter(new EmptyAdapter()); + super.onStop(); + } + + abstract void onUserlistMenuClicked(); + + public void onWindowFocusChanged(boolean flag) + { + super.onWindowFocusChanged(flag); + if (flag) + { + clearCountAndNotification(); + } + } + + abstract void performInitialization(); + + void selectAndClick(int i, boolean flag) + { + int k = pAdapter.getCount(); + int j = i; + if (i > k) + { + j = k; + } + if (flag) + { + pGallery.setSelection(j, false); + } + View view = pGallery.getChildAt(j); + pGallery.performItemClick(view, j, j); + } + + public void sendFlaggedMessage(int i, Object obj) + { + Message.obtain(flagHandler, i, obj).sendToTarget(); + } + + public String toString() + { + return super.toString(); + } + + protected void updateLegacyActionBar() + { + byte byte0 = 8; + if (pServ != null) goto _L2; else goto _L1 +_L1: + mActionBarL.setActionVisibility(0, 8); + mActionBarL.setActionEnabled(1, false); +_L8: + boolean flag = pCurrentSession.hasCapability(5); + mActionBarL.setActionEnabled(2, flag); + return; +_L2: + pServ.getConnectionState(); + JVM INSTR tableswitch 0 4: default 88 + // 0 148 + // 1 114 + // 2 203 + // 3 114 + // 4 148; + goto _L3 _L4 _L5 _L6 _L5 _L4 +_L6: + break MISSING_BLOCK_LABEL_203; +_L3: + break; /* Loop/switch isn't completed */ +_L5: + break; /* Loop/switch isn't completed */ +_L9: + ActionBar actionbar = mActionBarL; + if (pServ.isInReconnectMode()) + { + byte0 = 0; + } + actionbar.setActionVisibility(0, byte0); + if (true) goto _L8; else goto _L7 +_L7: + mActionBarL.setActionDrawable(1, 0x7f020019); + mActionBarL.setActionDescription(1, 0x7f0a00a0); + mActionBarL.setActionEnabled(1, true); + goto _L9 +_L4: + mActionBarL.setActionDrawable(1, 0x7f02003d); + mActionBarL.setActionDescription(1, 0x7f0a00a1); + mActionBarL.setActionEnabled(1, true); + if (mQuickActions[0].isShowing()) + { + mQuickActions[0].dismiss(); + } + goto _L9 + mActionBarL.setActionEnabled(1, false); + goto _L9 + } + + protected void updateMenu(Menu menu) + { + ConnectView connectview = (ConnectView)menu.findItem(0x7f08007d).getActionView(); + if (pServ != null) goto _L2; else goto _L1 +_L1: + connectview.setDescription(0x7f0a00bb); + connectview.setEnabled(false); + menu.findItem(0x7f08007c).setVisible(false); + connectview.setShowMenu(false); +_L8: + boolean flag = pCurrentSession.hasCapability(5); + menu.findItem(0x7f08007e).setEnabled(flag); + return; +_L2: + pServ.getConnectionState(); + JVM INSTR tableswitch 0 4: default 124 + // 0 176 + // 1 149 + // 2 203 + // 3 149 + // 4 176; + goto _L3 _L4 _L5 _L6 _L5 _L4 +_L6: + break MISSING_BLOCK_LABEL_203; +_L3: + break; /* Loop/switch isn't completed */ +_L5: + break; /* Loop/switch isn't completed */ +_L9: + menu.findItem(0x7f08007c).setVisible(pServ.isInReconnectMode()); + if (true) goto _L8; else goto _L7 +_L7: + connectview.setDescription(0x7f0a00a0); + connectview.setEnabled(true); + connectview.setImageResource(0x7f02002b); + connectview.setShowMenu(true); + goto _L9 +_L4: + connectview.setDescription(0x7f0a00a1); + connectview.setEnabled(true); + connectview.setImageResource(0x7f020030); + connectview.setShowMenu(false); + goto _L9 + connectview.setShowMenu(false); + connectview.setEnabled(false); + connectview.setDescription(0x7f0a00bc); + goto _L9 + } + + public void writeToServer(final String message) + { + ServerConnection serverconnection = pServ; + if (serverconnection == null) + { + mServerRunnables.add(new Runnable() { + + final ChatWindow this$0; + private final String val$message; + + public void run() + { + pServ.writeToServer(message); + } + + + { + this$0 = ChatWindow.this; + message = s; + super(); + } + }); + return; + } else + { + serverconnection.writeToServer(message); + return; + } + } + + + + + + + + + + + + + + + + + + + + +} diff --git a/app/src/main/java/net/andchat/donate/Activities/CopyTextActivity$1.java b/app/src/main/java/net/andchat/donate/Activities/CopyTextActivity$1.java new file mode 100644 index 0000000..9ebc681 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/CopyTextActivity$1.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.view.View; + +// Referenced classes of package net.andchat.donate.Activities: +// CopyTextActivity + +class this._cls0 + implements com.markupartist.android.widget.ItemClickHandler +{ + + final CopyTextActivity this$0; + + public void onActionBarItemClicked(com.markupartist.android.widget.tion tion, View view) + { + showDialog(0); + } + + Action() + { + this$0 = CopyTextActivity.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/CopyTextActivity$2.java b/app/src/main/java/net/andchat/donate/Activities/CopyTextActivity$2.java new file mode 100644 index 0000000..6d9f679 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/CopyTextActivity$2.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.DialogInterface; + +// Referenced classes of package net.andchat.donate.Activities: +// CopyTextActivity + +class this._cls0 + implements android.content.lickListener +{ + + final CopyTextActivity this$0; + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + } + + () + { + this$0 = CopyTextActivity.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/CopyTextActivity.java b/app/src/main/java/net/andchat/donate/Activities/CopyTextActivity.java new file mode 100644 index 0000000..b8ed59f --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/CopyTextActivity.java @@ -0,0 +1,188 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.Activity; +import android.app.Dialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.Window; +import android.widget.Button; +import android.widget.EditText; +import com.markupartist.android.widget.ActionBar; +import net.andchat.donate.IRCApp; +import net.andchat.donate.Misc.Utils; +import net.andchat.donate.View.TextStyleDialog; + +public class CopyTextActivity extends Activity + implements android.view.View.OnClickListener +{ + + private ActionBar mActionBar; + private EditText mEt; + private boolean mHaveFormatting; + private CharSequence mText; + + public CopyTextActivity() + { + mHaveFormatting = true; + } + + public void onClick(View view) + { + view.getId(); + JVM INSTR tableswitch 2131230769 2131230769: default 24 + // 2131230769 25; + goto _L1 _L2 +_L1: + return; +_L2: + int i = mEt.getSelectionStart(); + int j = mEt.getSelectionEnd(); + int k; + if (mHaveFormatting) + { + mEt.setText(mText.toString()); + mHaveFormatting = false; + ((Button)view).setText(0x7f0a015b); + } else + { + mEt.setText(mText); + mHaveFormatting = true; + ((Button)view).setText(0x7f0a015c); + } + k = mEt.length(); + if (i <= k && j <= k) + { + mEt.setSelection(i, j); + return; + } + if (true) goto _L1; else goto _L3 +_L3: + } + + protected void onCreate(Bundle bundle) + { + if (IRCApp.LEGACY_VERSION) + { + requestWindowFeature(7); + } + super.onCreate(bundle); + setContentView(0x7f030008); + bundle = getIntent(); + String s = bundle.getStringExtra("window"); + CharSequence charsequence = bundle.getCharSequenceExtra("text"); + EditText edittext = (EditText)findViewById(0x7f08002c); + int i = Utils.getPrefs(this).getInt(getString(0x7f0a002f), 0); + edittext.setTypeface(TextStyleDialog.TYPES[i]); + edittext.setText(charsequence); + edittext.setTextSize(bundle.getIntExtra("size", 13)); + mEt = edittext; + mText = charsequence; + findViewById(0x7f080031).setOnClickListener(this); + if (IRCApp.LEGACY_VERSION) + { + getWindow().setFeatureInt(7, 0x7f030006); + mActionBar = (ActionBar)getWindow().getDecorView().findViewById(0x7f080012); + (new net.andchat.donate.Misc.AbstractMenuInflator.ActionBarMenu(mActionBar, this)).addActionsFromXML(this, 0x7f0f0003); + mActionBar.setOnActionClickListener(new com.markupartist.android.widget.ActionBar.ActionBarItemClickHandler() { + + final CopyTextActivity this$0; + + public void onActionBarItemClicked(com.markupartist.android.widget.ActionBar.GenericAction genericaction, View view) + { + showDialog(0); + } + + + { + this$0 = CopyTextActivity.this; + super(); + } + }); + } else + { + getActionBar().setDisplayHomeAsUpEnabled(true); + } + setTitle(getString(0x7f0a0094, new Object[] { + s + })); + } + + public Dialog onCreateDialog(int i) + { + return (new android.app.AlertDialog.Builder(this)).setTitle(0x7f0a015e).setIcon(0x108009b).setMessage(0x7f0a015d).setNeutralButton(0x7f0a01d0, new android.content.DialogInterface.OnClickListener() { + + final CopyTextActivity this$0; + + public void onClick(DialogInterface dialoginterface, int j) + { + dialoginterface.dismiss(); + } + + + { + this$0 = CopyTextActivity.this; + super(); + } + }).create(); + } + + public boolean onCreateOptionsMenu(Menu menu) + { + getMenuInflater().inflate(0x7f0f0003, menu); + super.onCreateOptionsMenu(menu); + return true; + } + + public boolean onOptionsItemSelected(MenuItem menuitem) + { + menuitem.getItemId(); + JVM INSTR lookupswitch 2: default 32 + // 16908332: 34 + // 2131230737: 41; + goto _L1 _L2 _L3 +_L1: + return true; +_L2: + finish(); + continue; /* Loop/switch isn't completed */ +_L3: + showDialog(0); + if (true) goto _L1; else goto _L4 +_L4: + } + + protected void onRestoreInstanceState(Bundle bundle) + { + mHaveFormatting = bundle.getBoolean("have_formatting", true); + super.onRestoreInstanceState(bundle); + } + + protected void onSaveInstanceState(Bundle bundle) + { + bundle.putBoolean("have_formatting", mHaveFormatting); + super.onSaveInstanceState(bundle); + } + + public void setTitle(CharSequence charsequence) + { + if (mActionBar != null) + { + mActionBar.setTitle(charsequence); + return; + } else + { + super.setTitle(charsequence); + return; + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/CurrentUI$1.java b/app/src/main/java/net/andchat/donate/Activities/CurrentUI$1.java new file mode 100644 index 0000000..850820d --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/CurrentUI$1.java @@ -0,0 +1,31 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.Context; + +// Referenced classes of package net.andchat.donate.Activities: +// CurrentUI + +class EVIATION extends net.andchat.donate.Misc.or +{ + + final CurrentUI this$0; + + public void onLeftToRightSwipe() + { + CurrentUI.access$0(CurrentUI.this, true); + } + + public void onRightToLeftSwipe() + { + } + + EVIATION(Context context, net.andchat.donate.Misc.or.Y_DEVIATION y_deviation) + { + this$0 = CurrentUI.this; + super(context, y_deviation); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/CurrentUI$2.java b/app/src/main/java/net/andchat/donate/Activities/CurrentUI$2.java new file mode 100644 index 0000000..73060b1 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/CurrentUI$2.java @@ -0,0 +1,34 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.Context; +import android.widget.ImageView; + +// Referenced classes of package net.andchat.donate.Activities: +// CurrentUI + +class EVIATION extends net.andchat.donate.Misc.or +{ + + final CurrentUI this$0; + + public void onLeftToRightSwipe() + { + CurrentUI.access$1(CurrentUI.this).setPressed(false); + } + + public void onRightToLeftSwipe() + { + CurrentUI.access$1(CurrentUI.this).setPressed(false); + CurrentUI.access$2(CurrentUI.this, true); + } + + EVIATION(Context context, net.andchat.donate.Misc.or.Y_DEVIATION y_deviation) + { + this$0 = CurrentUI.this; + super(context, y_deviation); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/CurrentUI$3.java b/app/src/main/java/net/andchat/donate/Activities/CurrentUI$3.java new file mode 100644 index 0000000..42f38c1 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/CurrentUI$3.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.DialogInterface; + +// Referenced classes of package net.andchat.donate.Activities: +// CurrentUI + +class this._cls0 + implements android.content.ace.OnClickListener +{ + + final CurrentUI this$0; + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + } + + tener() + { + this$0 = CurrentUI.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/CurrentUI.java b/app/src/main/java/net/andchat/donate/Activities/CurrentUI.java new file mode 100644 index 0000000..956b87a --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/CurrentUI.java @@ -0,0 +1,489 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.Dialog; +import android.app.Fragment; +import android.app.FragmentManager; +import android.app.FragmentTransaction; +import android.content.Context; +import android.content.DialogInterface; +import android.content.SharedPreferences; +import android.content.res.Resources; +import android.os.Bundle; +import android.text.Html; +import android.view.GestureDetector; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MotionEvent; +import android.view.View; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; +import android.widget.AdapterView; +import android.widget.Gallery; +import android.widget.ImageView; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Activities: +// ChatWindow, UserListFragment, ChannelSwitcherFragment + +public class CurrentUI extends ChatWindow + implements android.view.View.OnClickListener, android.view.View.OnTouchListener, android.view.animation.Animation.AnimationListener, net.andchat.donate.Misc.Utils.ListSwipeListener +{ + + private static final String KEY = net/andchat/donate/Activities/CurrentUI.getName(); + private static boolean mFirstTimeChannelList = true; + private static boolean mFirstTimeUserlist = true; + private static boolean sUserReqHideUserlist; + private String PREF_CHANGES_DIALOG_SHOWN; + private String PREF_CHANNEL_LIST_VISIBLE; + private String PREF_USERLIST_VISIBLE; + private boolean mAutoLoadChannelList; + private boolean mAutoLoadUserlist; + private GestureDetector mChannelListSwiper; + private ImageView mChannelListToggle; + private View mChannelListWrapper; + private ChannelSwitcherFragment mChannelsFragment; + private Animation mSlideInChannelList; + private Animation mSlideInUserlist; + private Animation mSlideOutChannelList; + private Animation mSlideOutUserlist; + private GestureDetector mUserListSwiper; + private UserListFragment mUserlistFragment; + private ImageView mUserlistToggle; + private View mUserlistWrapper; + private Object mViewBeingHidden; + + public CurrentUI() + { + } + + private void hideChannelList() + { + mViewBeingHidden = mChannelListWrapper; + mChannelListWrapper.startAnimation(mSlideOutChannelList); + mChannelListWrapper.setVisibility(8); + mChannelListToggle.setImageResource(0x7f020014); + Utils.getPrefs(this).edit().putBoolean(PREF_CHANNEL_LIST_VISIBLE, false).commit(); + } + + private void hideUserlist(boolean flag) + { + mViewBeingHidden = mUserlistWrapper; + mUserlistFragment.hideActionBar(); + if (mUserlistWrapper.getVisibility() != 8) + { + break MISSING_BLOCK_LABEL_46; + } + getFragmentManager().beginTransaction().hide(mUserlistFragment).commitAllowingStateLoss(); +_L1: + return; + sUserReqHideUserlist = flag; + mUserlistWrapper.startAnimation(mSlideOutUserlist); + mUserlistWrapper.setVisibility(8); + mUserlistToggle.setImageResource(0x7f020011); + if (flag) + { + Utils.getPrefs(this).edit().putBoolean(PREF_USERLIST_VISIBLE, false).commit(); + return; + } + goto _L1 + IllegalStateException illegalstateexception; + illegalstateexception; + } + + private void showChannelList(boolean flag) + { + if ((!mFirstTimeChannelList || mAutoLoadChannelList) && (flag || Utils.getPrefs(this).getBoolean(PREF_CHANNEL_LIST_VISIBLE, true))) + { + ChannelSwitcherFragment channelswitcherfragment = mChannelsFragment; + if (channelswitcherfragment != null) + { + try + { + getFragmentManager().beginTransaction().show(channelswitcherfragment).commitAllowingStateLoss(); + } + catch (IllegalStateException illegalstateexception1) + { + return; + } + try + { + if (mChannelListWrapper.getVisibility() == 8) + { + mChannelListWrapper.startAnimation(mSlideInChannelList); + mChannelListWrapper.setVisibility(0); + mChannelListToggle.setImageResource(0x7f020011); + } + Utils.getPrefs(this).edit().putBoolean(PREF_CHANNEL_LIST_VISIBLE, true).commit(); + return; + } + catch (IllegalStateException illegalstateexception) + { + return; + } + } + } + } + + private void showUserlist(boolean flag) + { + if (mFirstTimeUserlist && !mAutoLoadUserlist) + { + sUserReqHideUserlist = true; + } else + if (pCurrentSession.hasCapability(5) && (flag || Utils.getPrefs(this).getBoolean(PREF_USERLIST_VISIBLE, true))) + { + mUserlistToggle.setVisibility(0); + UserListFragment userlistfragment = mUserlistFragment; + if (userlistfragment != null) + { + sUserReqHideUserlist = false; + userlistfragment.mSaveScrollPosition = false; + userlistfragment.hideActionBar(); + userlistfragment.initAdapter(); + try + { + getFragmentManager().beginTransaction().show(mUserlistFragment).commitAllowingStateLoss(); + if (mUserlistWrapper.getVisibility() == 8) + { + mUserlistWrapper.startAnimation(mSlideInUserlist); + mUserlistWrapper.setVisibility(0); + mUserlistToggle.setImageResource(0x7f020014); + } + Utils.getPrefs(this).edit().putBoolean(PREF_USERLIST_VISIBLE, true).commit(); + return; + } + catch (IllegalStateException illegalstateexception) + { + return; + } + } + } + } + + protected void loadPrefs() + { + byte byte0 = 8; + super.loadPrefs(); + boolean flag = Utils.getPrefs(this).getBoolean(getString(0x7f0a0033), true); + Object obj = super.pGallery; + int i; + if (flag) + { + i = 0; + } else + { + i = 8; + } + ((Gallery) (obj)).setVisibility(i); + obj = findViewById(0x7f080022); + if (flag) + { + i = byte0; + } else + { + i = 0; + } + ((View) (obj)).setVisibility(i); + } + + public void onAnimationEnd(Animation animation) + { + if (mViewBeingHidden == mUserlistWrapper) + { + getFragmentManager().beginTransaction().hide(mUserlistFragment).commitAllowingStateLoss(); + return; + } + try + { + if (mViewBeingHidden == mChannelListWrapper) + { + getFragmentManager().beginTransaction().hide(mChannelsFragment).commitAllowingStateLoss(); + return; + } + } + // Misplaced declaration of an exception variable + catch (Animation animation) { } + return; + } + + public void onAnimationRepeat(Animation animation) + { + } + + public void onAnimationStart(Animation animation) + { + } + + public void onClick(View view) + { + switch (view.getId()) + { + case 2131230758: + default: + super.onClick(view); + return; + + case 2131230759: + if (!sUserReqHideUserlist) + { + hideUserlist(true); + sUserReqHideUserlist = true; + return; + } else + { + mFirstTimeUserlist = false; + showUserlist(true); + sUserReqHideUserlist = false; + return; + } + + case 2131230757: + break; + } + if (mChannelListWrapper.getVisibility() == 0) + { + hideChannelList(); + return; + } else + { + mFirstTimeChannelList = false; + showChannelList(true); + return; + } + } + + protected void onCreate(Bundle bundle) + { + super.onCreate(bundle); + PREF_USERLIST_VISIBLE = getString(0x7f0a003e); + PREF_CHANNEL_LIST_VISIBLE = getString(0x7f0a003f); + PREF_CHANGES_DIALOG_SHOWN = getString(0x7f0a0040); + mUserlistWrapper = findViewById(0x7f080028); + mChannelListWrapper = findViewById(0x7f080024); + mUserlistToggle = (ImageView)findViewById(0x7f080027); + mUserlistToggle.setOnClickListener(this); + mUserlistToggle.setOnTouchListener(this); + mUserlistToggle.setVisibility(8); + mChannelListToggle = (ImageView)findViewById(0x7f080025); + mChannelListToggle.setOnClickListener(this); + mChannelListToggle.setOnTouchListener(this); + mChannelListToggle.setVisibility(0); + mSlideInUserlist = AnimationUtils.loadAnimation(this, 0x7f040010); + mSlideOutUserlist = AnimationUtils.loadAnimation(this, 0x7f040013); + mSlideOutUserlist.setAnimationListener(this); + mSlideInChannelList = AnimationUtils.loadAnimation(this, 0x7f04000f); + mSlideOutChannelList = AnimationUtils.loadAnimation(this, 0x7f040012); + mSlideOutChannelList.setAnimationListener(this); + mAutoLoadUserlist = getResources().getBoolean(0x7f0c0001); + mAutoLoadChannelList = getResources().getBoolean(0x7f0c0002); + mChannelListSwiper = new GestureDetector(this, new net.andchat.donate.Misc.Utils.Detector(this, net.andchat.donate.Misc.Utils.Detector.Y_DEVIATION.STRICT) { + + final CurrentUI this$0; + + public void onLeftToRightSwipe() + { + showChannelList(true); + } + + public void onRightToLeftSwipe() + { + } + + + { + this$0 = CurrentUI.this; + super(context, y_deviation); + } + }); + mUserListSwiper = new GestureDetector(this, new net.andchat.donate.Misc.Utils.Detector(this, net.andchat.donate.Misc.Utils.Detector.Y_DEVIATION.STRICT) { + + final CurrentUI this$0; + + public void onLeftToRightSwipe() + { + mUserlistToggle.setPressed(false); + } + + public void onRightToLeftSwipe() + { + mUserlistToggle.setPressed(false); + showUserlist(true); + } + + + { + this$0 = CurrentUI.this; + super(context, y_deviation); + } + }); + boolean flag; + if (Utils.getPrefs(this).getBoolean(PREF_USERLIST_VISIBLE, true)) + { + flag = false; + } else + { + flag = true; + } + sUserReqHideUserlist = flag; + } + + protected Dialog onCreateDialog(int i) + { + android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this); + builder.setTitle(0x7f0a01b8); + builder.setIcon(0x108009b); + builder.setMessage(Html.fromHtml(getString(0x7f0a01b9))); + builder.setNeutralButton(0x7f0a01d5, new android.content.DialogInterface.OnClickListener() { + + final CurrentUI this$0; + + public void onClick(DialogInterface dialoginterface, int j) + { + dialoginterface.dismiss(); + } + + + { + this$0 = CurrentUI.this; + super(); + } + }); + return builder.create(); + } + + public boolean onCreateOptionsMenu(Menu menu) + { + getMenuInflater().inflate(0x7f0f0004, menu); + return super.onCreateOptionsMenu(menu); + } + + protected void onDestroy() + { + super.onDestroy(); + mFirstTimeUserlist = false; + mFirstTimeChannelList = false; + } + + public void onItemClick(AdapterView adapterview, View view, int i, long l) + { + super.onItemClick(adapterview, view, i, l); + if (!pCurrentSession.hasCapability(5) || !pCurrentSession.isActive()) + { + hideUserlist(false); + mUserlistToggle.setVisibility(4); + } else + { + mUserlistToggle.setVisibility(0); + if (!sUserReqHideUserlist) + { + showUserlist(false); + return; + } + } + } + + public void onLeftToRightSwipe(Fragment fragment) + { + if (fragment instanceof UserListFragment) + { + hideUserlist(true); + return; + } else + { + boolean flag = fragment instanceof ChannelSwitcherFragment; + return; + } + } + + public boolean onPrepareOptionsMenu(Menu menu) + { + super.updateMenu(menu); + return super.onPrepareOptionsMenu(menu); + } + + protected void onRestoreInstanceState(Bundle bundle) + { + super.onRestoreInstanceState(bundle); + sUserReqHideUserlist = bundle.getBoolean(KEY, false); + } + + public void onRightToLeftSwipe(Fragment fragment) + { + if (!(fragment instanceof UserListFragment) && (fragment instanceof ChannelSwitcherFragment)) + { + hideChannelList(); + } + } + + protected void onSaveInstanceState(Bundle bundle) + { + super.onSaveInstanceState(bundle); + bundle.putBoolean(KEY, sUserReqHideUserlist); + } + + protected void onStart() + { + super.onStart(); + mUserlistFragment = (UserListFragment)getFragmentManager().findFragmentById(0x7f080074); + mChannelsFragment = (ChannelSwitcherFragment)getFragmentManager().findFragmentById(0x7f080051); + if (!Utils.getPrefs(this).getBoolean(PREF_CHANGES_DIALOG_SHOWN, false)) + { + showDialog(0); + Utils.getPrefs(this).edit().putBoolean(PREF_CHANGES_DIALOG_SHOWN, true).commit(); + } + } + + public boolean onTouch(View view, MotionEvent motionevent) + { + switch (view.getId()) + { + case 2131230758: + default: + return false; + + case 2131230757: + return mChannelListSwiper.onTouchEvent(motionevent); + + case 2131230759: + return mUserListSwiper.onTouchEvent(motionevent); + } + } + + void onUserlistMenuClicked() + { + if (!sUserReqHideUserlist) + { + hideUserlist(true); + sUserReqHideUserlist = true; + return; + } else + { + mFirstTimeUserlist = false; + showUserlist(true); + sUserReqHideUserlist = false; + return; + } + } + + void performInitialization() + { + if (mUserlistFragment != null) + { + mUserlistFragment.firstRun(); + } + if (mChannelsFragment != null) + { + mChannelsFragment.firstRun(); + showChannelList(false); + } + } + + + + +} diff --git a/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$1.java b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$1.java new file mode 100644 index 0000000..a36878e --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$1.java @@ -0,0 +1,30 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.view.View; +import android.widget.AdapterView; + +// Referenced classes of package net.andchat.donate.Activities: +// IgnoresActivity + +class this._cls0 + implements android.widget.ClickListener +{ + + final IgnoresActivity this$0; + + public void onItemClick(AdapterView adapterview, View view, int i, long l) + { + IgnoresActivity.access$2(IgnoresActivity.this, i); + showDialog(0); + } + + () + { + this$0 = IgnoresActivity.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$2.java b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$2.java new file mode 100644 index 0000000..7046204 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$2.java @@ -0,0 +1,62 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.DialogInterface; + +// Referenced classes of package net.andchat.donate.Activities: +// IgnoresActivity + +class this._cls0 + implements android.content.MultiChoiceClickListener +{ + + final IgnoresActivity this$0; + + public void onClick(DialogInterface dialoginterface, int i, boolean flag) + { + boolean flag1 = false; + i; + JVM INSTR tableswitch 0 3: default 36 + // 0 59 + // 1 64 + // 2 69 + // 3 74; + goto _L1 _L2 _L3 _L4 _L5 +_L5: + break MISSING_BLOCK_LABEL_74; +_L1: + i = ((flag1) ? 1 : 0); +_L6: + if (flag) + { + dialoginterface = IgnoresActivity.this; + IgnoresActivity.access$4(dialoginterface, IgnoresActivity.access$3(dialoginterface) | i); + return; + } else + { + dialoginterface = IgnoresActivity.this; + IgnoresActivity.access$4(dialoginterface, IgnoresActivity.access$3(dialoginterface) & ~i); + return; + } +_L2: + i = 1; + goto _L6 +_L3: + i = 2; + goto _L6 +_L4: + i = 4; + goto _L6 + i = 8; + goto _L6 + } + + ckListener() + { + this$0 = IgnoresActivity.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$3.java b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$3.java new file mode 100644 index 0000000..b27ce96 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$3.java @@ -0,0 +1,35 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.DialogInterface; +import net.andchat.donate.Backend.Ignores; + +// Referenced classes of package net.andchat.donate.Activities: +// IgnoresActivity + +class val.ii + implements android.content.ClickListener +{ + + final IgnoresActivity this$0; + private final Ignores val$i; + private final net.andchat.donate.Backend. val$ii; + + public void onClick(DialogInterface dialoginterface, int j) + { + val$i.addOrUpdateIgnore(val$ii.nick, val$ii.ident, val$ii.hostname, IgnoresActivity.access$3(IgnoresActivity.this)); + dialoginterface.dismiss(); + removeDialog(0); + } + + () + { + this$0 = final_ignoresactivity; + val$i = ignores; + val$ii = net.andchat.donate.Backend..this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$4.java b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$4.java new file mode 100644 index 0000000..bf18450 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$4.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.DialogInterface; + +// Referenced classes of package net.andchat.donate.Activities: +// IgnoresActivity + +class this._cls0 + implements android.content.CancelListener +{ + + final IgnoresActivity this$0; + + public void onCancel(DialogInterface dialoginterface) + { + removeDialog(0); + } + + () + { + this$0 = IgnoresActivity.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$5.java b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$5.java new file mode 100644 index 0000000..6d9017d --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$5.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.DialogInterface; + +// Referenced classes of package net.andchat.donate.Activities: +// IgnoresActivity + +class this._cls0 + implements android.content.ClickListener +{ + + final IgnoresActivity this$0; + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + } + + () + { + this$0 = IgnoresActivity.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$Holder.java b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$Holder.java new file mode 100644 index 0000000..98bde53 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$Holder.java @@ -0,0 +1,21 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.widget.TextView; + +// Referenced classes of package net.andchat.donate.Activities: +// IgnoresActivity + +private static final class tv +{ + + final TextView tv; + + public (TextView textview) + { + tv = textview; + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$IgnoreListAdapter.java b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$IgnoreListAdapter.java new file mode 100644 index 0000000..af661d4 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity$IgnoreListAdapter.java @@ -0,0 +1,91 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.Activity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.TextView; +import java.util.List; +import net.andchat.donate.Backend.Ignores; + +// Referenced classes of package net.andchat.donate.Activities: +// IgnoresActivity, IgnoresActivityHelper + +private class mInflator extends BaseAdapter + implements android.view.gnoreListAdapter +{ + + private final LayoutInflater mInflator; + final IgnoresActivity this$0; + + public int getCount() + { + return IgnoresActivity.access$1(IgnoresActivity.this).size(); + } + + public Object getItem(int i) + { + return IgnoresActivity.access$1(IgnoresActivity.this).get(i); + } + + public long getItemId(int i) + { + return (long)i; + } + + public View getView(int i, View view, ViewGroup viewgroup) + { + net.andchat.donate.Backend.er er; + if (view == null) + { + viewgroup = mInflator.inflate(0x7f03001d, viewgroup, false); + view = (TextView)viewgroup.findViewById(0x7f080061); + ImageView imageview = (ImageView)viewgroup.findViewById(0x7f080062); + ImageView imageview1 = (ImageView)viewgroup.findViewById(0x7f080063); + viewgroup.setTag(new mInflator(view)); + imageview.setOnClickListener(this); + imageview1.setOnClickListener(this); + IgnoresActivityHelper.sInstance.ializeForView(imageview1); + } else + { + viewgroup = view; + view = ((ializeForView)viewgroup.getTag()).ializeForView; + } + er = (net.andchat.donate.Backend.nitializeForView)IgnoresActivity.access$1(IgnoresActivity.this).get(i); + view.setText((new StringBuilder(er._fld0)).append(" (").append(er._fld0).append('@').append(er._fld0).append(")")); + return viewgroup; + } + + public void onClick(View view) + { + IgnoresActivity.access$2(IgnoresActivity.this, getListView().getPositionForView((View)view.getParent())); + switch (view.getId()) + { + default: + return; + + case 2131230818: + ((Activity)view.getContext()).showDialog(0); + return; + + case 2131230819: + IgnoresActivityHelper.sInstance.leViewClick(view); + break; + } + } + + public (LayoutInflater layoutinflater, Ignores ignores) + { + this$0 = IgnoresActivity.this; + super(); + IgnoresActivity.access$0(IgnoresActivity.this, ignores.getAllIgnores()); + mInflator = layoutinflater; + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity.java b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity.java new file mode 100644 index 0000000..ed0542a --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivity.java @@ -0,0 +1,316 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.Activity; +import android.app.Dialog; +import android.app.ListActivity; +import android.content.DialogInterface; +import android.content.Intent; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.BaseAdapter; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.TextView; +import java.util.List; +import net.andchat.donate.Backend.Ignores; +import net.andchat.donate.Misc.Utils; +import net.londatiga.android.QuickAction; + +// Referenced classes of package net.andchat.donate.Activities: +// IgnoresActivityHelper + +public class IgnoresActivity extends ListActivity + implements android.view.View.OnClickListener, IgnoresActivityHelper.PopupMenuCallback, net.londatiga.android.QuickAction.OnQuickActionItemClickListener +{ + private static final class Holder + { + + final TextView tv; + + public Holder(TextView textview) + { + tv = textview; + } + } + + private class IgnoreListAdapter extends BaseAdapter + implements android.view.View.OnClickListener + { + + private final LayoutInflater mInflator; + final IgnoresActivity this$0; + + public int getCount() + { + return mIgnoreList.size(); + } + + public Object getItem(int i) + { + return mIgnoreList.get(i); + } + + public long getItemId(int i) + { + return (long)i; + } + + public View getView(int i, View view, ViewGroup viewgroup) + { + net.andchat.donate.Backend.Ignores.IgnoreInfo ignoreinfo; + if (view == null) + { + viewgroup = mInflator.inflate(0x7f03001d, viewgroup, false); + view = (TextView)viewgroup.findViewById(0x7f080061); + ImageView imageview = (ImageView)viewgroup.findViewById(0x7f080062); + ImageView imageview1 = (ImageView)viewgroup.findViewById(0x7f080063); + viewgroup.setTag(new Holder(view)); + imageview.setOnClickListener(this); + imageview1.setOnClickListener(this); + IgnoresActivityHelper.sInstance.initializeForView(imageview1); + } else + { + viewgroup = view; + view = ((Holder)viewgroup.getTag()).tv; + } + ignoreinfo = (net.andchat.donate.Backend.Ignores.IgnoreInfo)mIgnoreList.get(i); + view.setText((new StringBuilder(ignoreinfo.nick)).append(" (").append(ignoreinfo.ident).append('@').append(ignoreinfo.hostname).append(")")); + return viewgroup; + } + + public void onClick(View view) + { + mClickLocation = getListView().getPositionForView((View)view.getParent()); + switch (view.getId()) + { + default: + return; + + case 2131230818: + ((Activity)view.getContext()).showDialog(0); + return; + + case 2131230819: + IgnoresActivityHelper.sInstance.handleViewClick(view); + break; + } + } + + public IgnoreListAdapter(LayoutInflater layoutinflater, Ignores ignores) + { + this$0 = IgnoresActivity.this; + super(); + mIgnoreList = ignores.getAllIgnores(); + mInflator = layoutinflater; + } + } + + + private int mClickLocation; + private int mIgnoreEditMask; + private List mIgnoreList; + private Ignores mIgnores; + + public IgnoresActivity() + { + } + + private void handleClick() + { + net.andchat.donate.Backend.Ignores.IgnoreInfo ignoreinfo = (net.andchat.donate.Backend.Ignores.IgnoreInfo)mIgnoreList.get(mClickLocation); + mIgnores.removeIgnore(ignoreinfo.ident, ignoreinfo.hostname); + ((BaseAdapter)getListAdapter()).notifyDataSetChanged(); + } + + public void onClick(View view) + { + switch (view.getId()) + { + default: + return; + + case 2131230771: + showDialog(1); + return; + + case 2131230770: + finish(); + return; + } + } + + public void onCreate(Bundle bundle) + { + super.onCreate(bundle); + setContentView(0x7f030009); + mIgnores = Ignores.getIgnores(getIntent().getIntExtra("id", -1), Utils.getIRCDb(this)); + setListAdapter(new IgnoreListAdapter(getLayoutInflater(), mIgnores)); + getListView().setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { + + final IgnoresActivity this$0; + + public void onItemClick(AdapterView adapterview, View view, int i, long l) + { + mClickLocation = i; + showDialog(0); + } + + + { + this$0 = IgnoresActivity.this; + super(); + } + }); + findViewById(0x7f080033).setOnClickListener(this); + findViewById(0x7f080032).setOnClickListener(this); + } + + public Dialog onCreateDialog(int j) + { + switch (j) + { + default: + return super.onCreateDialog(j); + + case 0: // '\0' + final Ignores i = mIgnores; + final net.andchat.donate.Backend.Ignores.IgnoreInfo ii = (net.andchat.donate.Backend.Ignores.IgnoreInfo)i.getAllIgnores().get(mClickLocation); + j = ii.mask; + boolean flag = Utils.isBitSet(j, 1); + boolean flag1 = Utils.isBitSet(j, 2); + boolean flag2 = Utils.isBitSet(j, 4); + boolean flag3 = Utils.isBitSet(j, 8); + mIgnoreEditMask = j; + android.app.AlertDialog.Builder builder = (new android.app.AlertDialog.Builder(this)).setTitle(getString(0x7f0a0161, new Object[] { + ii.nick + })); + android.content.DialogInterface.OnMultiChoiceClickListener onmultichoiceclicklistener = new android.content.DialogInterface.OnMultiChoiceClickListener() { + + final IgnoresActivity this$0; + + public void onClick(DialogInterface dialoginterface, int k, boolean flag4) + { + boolean flag5 = false; + k; + JVM INSTR tableswitch 0 3: default 36 + // 0 59 + // 1 64 + // 2 69 + // 3 74; + goto _L1 _L2 _L3 _L4 _L5 +_L5: + break MISSING_BLOCK_LABEL_74; +_L1: + k = ((flag5) ? 1 : 0); +_L6: + if (flag4) + { + dialoginterface = IgnoresActivity.this; + dialoginterface.mIgnoreEditMask = ((IgnoresActivity) (dialoginterface)).mIgnoreEditMask | k; + return; + } else + { + dialoginterface = IgnoresActivity.this; + dialoginterface.mIgnoreEditMask = ((IgnoresActivity) (dialoginterface)).mIgnoreEditMask & ~k; + return; + } +_L2: + k = 1; + goto _L6 +_L3: + k = 2; + goto _L6 +_L4: + k = 4; + goto _L6 + k = 8; + goto _L6 + } + + + { + this$0 = IgnoresActivity.this; + super(); + } + }; + return builder.setMultiChoiceItems(0x7f0b0008, new boolean[] { + flag, flag1, flag2, flag3 + }, onmultichoiceclicklistener).setPositiveButton(0x7f0a01d0, new android.content.DialogInterface.OnClickListener() { + + final IgnoresActivity this$0; + private final Ignores val$i; + private final net.andchat.donate.Backend.Ignores.IgnoreInfo val$ii; + + public void onClick(DialogInterface dialoginterface, int k) + { + i.addOrUpdateIgnore(ii.nick, ii.ident, ii.hostname, mIgnoreEditMask); + dialoginterface.dismiss(); + removeDialog(0); + } + + + { + this$0 = IgnoresActivity.this; + i = ignores; + ii = ignoreinfo; + super(); + } + }).setOnCancelListener(new android.content.DialogInterface.OnCancelListener() { + + final IgnoresActivity this$0; + + public void onCancel(DialogInterface dialoginterface) + { + removeDialog(0); + } + + + { + this$0 = IgnoresActivity.this; + super(); + } + }).create(); + + case 1: // '\001' + return (new android.app.AlertDialog.Builder(this)).setTitle(0x7f0a015f).setMessage(0x7f0a0160).setIcon(0x108009b).setNeutralButton(0x7f0a01d5, new android.content.DialogInterface.OnClickListener() { + + final IgnoresActivity this$0; + + public void onClick(DialogInterface dialoginterface, int k) + { + dialoginterface.dismiss(); + } + + + { + this$0 = IgnoresActivity.this; + super(); + } + }).create(); + } + } + + public void onItemClick(QuickAction quickaction, int i, int j) + { + handleClick(); + } + + public boolean onMenuItemClick(MenuItem menuitem) + { + handleClick(); + return true; + } + + + + + +} diff --git a/app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper$Current$1.java b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper$Current$1.java new file mode 100644 index 0000000..96ad0bd --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper$Current$1.java @@ -0,0 +1,31 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.Context; +import android.view.MenuItem; + +// Referenced classes of package net.andchat.donate.Activities: +// IgnoresActivityHelper + +class val.c + implements android.widget.r +{ + + final allback.onMenuItemClick this$1; + private final Context val$c; + + public boolean onMenuItemClick(MenuItem menuitem) + { + return ((allback)val$c).onMenuItemClick(menuitem); + } + + allback() + { + this$1 = final_allback; + val$c = Context.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper$Current.java b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper$Current.java new file mode 100644 index 0000000..0307d68 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper$Current.java @@ -0,0 +1,70 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.Context; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.widget.PopupMenu; + +// Referenced classes of package net.andchat.donate.Activities: +// IgnoresActivityHelper + +private static class + implements +{ + + public void handleViewClick(View view) + { + PopupMenu popupmenu1 = (PopupMenu)view.getTag(); + PopupMenu popupmenu = popupmenu1; + if (popupmenu1 == null) + { + final Context c = view.getContext(); + popupmenu = new PopupMenu(c, view); + popupmenu.getMenuInflater().inflate(0x7f0f0001, popupmenu.getMenu()); + popupmenu.setOnMenuItemClickListener(new android.widget.PopupMenu.OnMenuItemClickListener() { + + final IgnoresActivityHelper.Current this$1; + private final Context val$c; + + public boolean onMenuItemClick(MenuItem menuitem) + { + return ((IgnoresActivityHelper.PopupMenuCallback)c).onMenuItemClick(menuitem); + } + + + { + this$1 = IgnoresActivityHelper.Current.this; + c = context; + super(); + } + }); + view.setTag(popupmenu); + } + popupmenu.show(); + } + + public void initializeForView(View view) + { + if (!(view.getContext() instanceof uCallback)) + { + throw new RuntimeException("Context of view must implement PopupMenuCallback"); + } else + { + return; + } + } + + private _cls1.val.c() + { + } + + _cls1.val.c(_cls1.val.c c) + { + this(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper$IHelper.java b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper$IHelper.java new file mode 100644 index 0000000..b8a2a94 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper$IHelper.java @@ -0,0 +1,18 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.view.View; + +// Referenced classes of package net.andchat.donate.Activities: +// IgnoresActivityHelper + +public static interface A +{ + + public abstract void handleViewClick(View view); + + public abstract void initializeForView(View view); +} diff --git a/app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper$Legacy.java b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper$Legacy.java new file mode 100644 index 0000000..91cad55 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper$Legacy.java @@ -0,0 +1,46 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.view.View; +import net.londatiga.android.QuickAction; + +// Referenced classes of package net.andchat.donate.Activities: +// IgnoresActivityHelper + +private static class + implements +{ + + public void handleViewClick(View view) + { + ((QuickAction)view.getTag()).show(view, true); + } + + public void initializeForView(View view) + { + android.content.Context context = view.getContext(); + if (!(context instanceof net.londatiga.android.ClickListener)) + { + throw new RuntimeException("Context of view must implement QuickAction.OnQuickActionItemClickListener"); + } else + { + QuickAction quickaction = new QuickAction(context); + (new net.andchat.donate.Misc.ionsMenu(quickaction)).addActionsFromXML(context, 0x7f0f0001); + quickaction.setOnActionItemClickListener((net.londatiga.android.ClickListener)context); + view.setTag(quickaction); + return; + } + } + + private nu() + { + } + + nu(nu nu) + { + this(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper$PopupMenuCallback.java b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper$PopupMenuCallback.java new file mode 100644 index 0000000..ac91929 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper$PopupMenuCallback.java @@ -0,0 +1,16 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.view.MenuItem; + +// Referenced classes of package net.andchat.donate.Activities: +// IgnoresActivityHelper + +public static interface +{ + + public abstract boolean onMenuItemClick(MenuItem menuitem); +} diff --git a/app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper.java b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper.java new file mode 100644 index 0000000..d4ea5cd --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/IgnoresActivityHelper.java @@ -0,0 +1,137 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.Context; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.widget.PopupMenu; +import net.andchat.donate.IRCApp; +import net.londatiga.android.QuickAction; + +public class IgnoresActivityHelper +{ + private static class Current + implements IHelper + { + + public void handleViewClick(View view) + { + PopupMenu popupmenu1 = (PopupMenu)view.getTag(); + PopupMenu popupmenu = popupmenu1; + if (popupmenu1 == null) + { + Context context = view.getContext(); + popupmenu = new PopupMenu(context, view); + popupmenu.getMenuInflater().inflate(0x7f0f0001, popupmenu.getMenu()); + popupmenu.setOnMenuItemClickListener(context. new android.widget.PopupMenu.OnMenuItemClickListener() { + + final Current this$1; + private final Context val$c; + + public boolean onMenuItemClick(MenuItem menuitem) + { + return ((PopupMenuCallback)c).onMenuItemClick(menuitem); + } + + + { + this$1 = final_current; + c = Context.this; + super(); + } + }); + view.setTag(popupmenu); + } + popupmenu.show(); + } + + public void initializeForView(View view) + { + if (!(view.getContext() instanceof PopupMenuCallback)) + { + throw new RuntimeException("Context of view must implement PopupMenuCallback"); + } else + { + return; + } + } + + private Current() + { + } + + Current(Current current) + { + this(); + } + } + + public static interface IHelper + { + + public abstract void handleViewClick(View view); + + public abstract void initializeForView(View view); + } + + private static class Legacy + implements IHelper + { + + public void handleViewClick(View view) + { + ((QuickAction)view.getTag()).show(view, true); + } + + public void initializeForView(View view) + { + Context context = view.getContext(); + if (!(context instanceof net.londatiga.android.QuickAction.OnQuickActionItemClickListener)) + { + throw new RuntimeException("Context of view must implement QuickAction.OnQuickActionItemClickListener"); + } else + { + QuickAction quickaction = new QuickAction(context); + (new net.andchat.donate.Misc.AbstractMenuInflator.QuickActionsMenu(quickaction)).addActionsFromXML(context, 0x7f0f0001); + quickaction.setOnActionItemClickListener((net.londatiga.android.QuickAction.OnQuickActionItemClickListener)context); + view.setTag(quickaction); + return; + } + } + + private Legacy() + { + } + + Legacy(Legacy legacy) + { + this(); + } + } + + public static interface PopupMenuCallback + { + + public abstract boolean onMenuItemClick(MenuItem menuitem); + } + + + public static final IHelper sInstance; + + static + { + Object obj; + if (IRCApp.LEGACY_VERSION) + { + obj = new Legacy(null); + } else + { + obj = new Current(null); + } + sInstance = ((IHelper) (obj)); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/LegacyUI.java b/app/src/main/java/net/andchat/donate/Activities/LegacyUI.java new file mode 100644 index 0000000..5a6fc70 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/LegacyUI.java @@ -0,0 +1,52 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.Intent; +import android.view.Menu; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.View.InterceptingEditText; + +// Referenced classes of package net.andchat.donate.Activities: +// ChatWindow, UserListActivity + +public class LegacyUI extends ChatWindow +{ + + public LegacyUI() + { + } + + public boolean onCreateOptionsMenu(Menu menu) + { + return true; + } + + public boolean onPrepareOptionsMenu(Menu menu) + { + super.updateLegacyActionBar(); + return false; + } + + void onUserlistMenuClicked() + { + if (!pCurrentSession.hasCapability(5)) + { + return; + } else + { + Intent intent = new Intent(this, net/andchat/donate/Activities/UserListActivity); + intent.putExtra("window", pCurrentSession.getSessionName()); + intent.putExtra("id", pId); + intent.putExtra("text", pEt.getText()); + startActivityForResult(intent, 10); + return; + } + } + + void performInitialization() + { + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Main$1.java b/app/src/main/java/net/andchat/donate/Activities/Main$1.java new file mode 100644 index 0000000..fc4c0a2 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Main$1.java @@ -0,0 +1,35 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import net.andchat.donate.Backend.IRCService; + +// Referenced classes of package net.andchat.donate.Activities: +// Main + +class val.id extends Thread +{ + + final Main this$0; + private final int val$id; + + public void run() + { + net.andchat.donate.Backend.ServerConnection serverconnection = pService.getServer(val$id, false, null, null); + pService.stopConnection(val$id, 1); + if (serverconnection != null) + { + pService.remove(serverconnection); + } + pService.cleanUpIfRequired(val$id); + } + + () + { + this$0 = final_main; + val$id = I.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Main$2$1.java b/app/src/main/java/net/andchat/donate/Activities/Main$2$1.java new file mode 100644 index 0000000..ffbe9fd --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Main$2$1.java @@ -0,0 +1,111 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.DialogInterface; +import android.widget.ListView; +import android.widget.Toast; +import net.andchat.donate.Backend.IRCDb; +import net.andchat.donate.Backend.IRCService; + +// Referenced classes of package net.andchat.donate.Activities: +// Main + +class val.id extends Thread +{ + + final val.id this$1; + private final int val$id; + + public void run() + { + net.andchat.donate.Backend.ServerConnection serverconnection = pService.getServer(val$id, false, null, null); + pService.stopConnection(val$id, 1); + pService.remove(serverconnection); + pService.cleanUpIfRequired(val$id); + } + + l.label() + { + this$1 = final_label; + val$id = I.this; + super(); + } + + // Unreferenced inner class net/andchat/donate/Activities/Main$2 + +/* anonymous class */ + class Main._cls2 + implements android.content.DialogInterface.OnClickListener + { + + final Main this$0; + private final String val$label; + + public void onClick(DialogInterface dialoginterface, int i) + { + int j = pDb.getId(label); + boolean flag = false; + i = ((flag) ? 1 : 0); + if (pService != null) + { + i = pService.getServerState(j); + if (i != 0 && i != 4) + { + i = 1; + (j. new Main._cls2._cls1()).start(); + } else + { + dialoginterface = pService.getServer(j, false, null, null); + if (dialoginterface != null) + { + pService.remove(dialoginterface); + i = ((flag) ? 1 : 0); + } else + { + pService.cleanUpIfRequired(j); + i = ((flag) ? 1 : 0); + } + } + } + if (pDb.deleteServer(label)) + { + if (i != 0) + { + dialoginterface = getString(0x7f0a0128, new Object[] { + label + }); + } else + { + dialoginterface = getString(0x7f0a0129, new Object[] { + label + }); + } + Toast.makeText(Main.this, dialoginterface, 0).show(); + pAdapter.remove(label); + if (pAdapter.getCount() == 0) + { + mListView.setAdapter(getAdapter()); + } + return; + } else + { + Toast.makeText(Main.this, getString(0x7f0a012d, new Object[] { + label + }), 0).show(); + return; + } + } + + + + { + this$0 = final_main; + label = String.this; + super(); + } + } + +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Main$2.java b/app/src/main/java/net/andchat/donate/Activities/Main$2.java new file mode 100644 index 0000000..45059ae --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Main$2.java @@ -0,0 +1,104 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.DialogInterface; +import android.widget.ListView; +import android.widget.Toast; +import net.andchat.donate.Backend.IRCDb; +import net.andchat.donate.Backend.IRCService; + +// Referenced classes of package net.andchat.donate.Activities: +// Main + +class val.label + implements android.content.nterface.OnClickListener +{ + + final Main this$0; + private final String val$label; + + public void onClick(DialogInterface dialoginterface, int i) + { + final int id = pDb.getId(val$label); + boolean flag = false; + i = ((flag) ? 1 : 0); + if (pService != null) + { + i = pService.getServerState(id); + if (i != 0 && i != 4) + { + i = 1; + (new Thread() { + + final Main._cls2 this$1; + private final int val$id; + + public void run() + { + net.andchat.donate.Backend.ServerConnection serverconnection = pService.getServer(id, false, null, null); + pService.stopConnection(id, 1); + pService.remove(serverconnection); + pService.cleanUpIfRequired(id); + } + + + { + this$1 = Main._cls2.this; + id = i; + super(); + } + }).start(); + } else + { + dialoginterface = pService.getServer(id, false, null, null); + if (dialoginterface != null) + { + pService.remove(dialoginterface); + i = ((flag) ? 1 : 0); + } else + { + pService.cleanUpIfRequired(id); + i = ((flag) ? 1 : 0); + } + } + } + if (pDb.deleteServer(val$label)) + { + if (i != 0) + { + dialoginterface = getString(0x7f0a0128, new Object[] { + val$label + }); + } else + { + dialoginterface = getString(0x7f0a0129, new Object[] { + val$label + }); + } + Toast.makeText(Main.this, dialoginterface, 0).show(); + pAdapter.remove(val$label); + if (pAdapter.getCount() == 0) + { + mListView.setAdapter(getAdapter()); + } + return; + } else + { + Toast.makeText(Main.this, getString(0x7f0a012d, new Object[] { + val$label + }), 0).show(); + return; + } + } + + + _cls1.val.id() + { + this$0 = final_main; + val$label = String.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Main$3.java b/app/src/main/java/net/andchat/donate/Activities/Main$3.java new file mode 100644 index 0000000..f4cbd53 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Main$3.java @@ -0,0 +1,36 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.DialogInterface; +import android.widget.ListView; + +// Referenced classes of package net.andchat.donate.Activities: +// Main + +class this._cls0 + implements android.content.nterface.OnClickListener +{ + + final Main this$0; + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + if (i != Main.sFilter) + { + Main.sFilter = i; + mListView.clearTextFilter(); + setListAdapter(getAdapter()); + setTitle(); + } + } + + ckListener() + { + this$0 = Main.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Main$4.java b/app/src/main/java/net/andchat/donate/Activities/Main$4.java new file mode 100644 index 0000000..d3dd968 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Main$4.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.DialogInterface; + +// Referenced classes of package net.andchat.donate.Activities: +// Main + +class this._cls0 + implements android.content.nterface.OnClickListener +{ + + final Main this$0; + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + } + + ckListener() + { + this$0 = Main.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Main$5.java b/app/src/main/java/net/andchat/donate/Activities/Main$5.java new file mode 100644 index 0000000..d3dd968 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Main$5.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.DialogInterface; + +// Referenced classes of package net.andchat.donate.Activities: +// Main + +class this._cls0 + implements android.content.nterface.OnClickListener +{ + + final Main this$0; + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + } + + ckListener() + { + this$0 = Main.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Main$RowAdapter$1.java b/app/src/main/java/net/andchat/donate/Activities/Main$RowAdapter$1.java new file mode 100644 index 0000000..0fa9c5e --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Main$RowAdapter$1.java @@ -0,0 +1,29 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.view.View; +import android.widget.ListView; + +// Referenced classes of package net.andchat.donate.Activities: +// Main + +class this._cls1 + implements android.view.er +{ + + final this._cls1 this$1; + + public void onClick(View view) + { + cess._mth1(this._cls1.this).getListView().showContextMenuForChild((View)view.getParent()); + } + + () + { + this$1 = this._cls1.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Main$RowAdapter$ItemFilter.java b/app/src/main/java/net/andchat/donate/Activities/Main$RowAdapter$ItemFilter.java new file mode 100644 index 0000000..9262ba3 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Main$RowAdapter$ItemFilter.java @@ -0,0 +1,89 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.widget.Filter; +import java.util.ArrayList; +import java.util.Iterator; + +// Referenced classes of package net.andchat.donate.Activities: +// Main + +private class extends Filter +{ + + private ArrayList originals; + final etInvalidated this$1; + + protected android.widget.ter.ItemFilter performFiltering(CharSequence charsequence) + { + String s; + android.widget.ter.ItemFilter itemfilter; + s = charsequence.toString().toUpperCase(); + itemfilter = new android.widget.(); + if (originals == null) + { + synchronized (this._cls1.this.originals) + { + originals = new ArrayList(this._cls1.this.originals); + } + } + obj = originals; + if (charsequence == null || charsequence.length() == 0) + { + itemfilter.originals = originals.size(); + itemfilter. = originals; + return itemfilter; + } + break MISSING_BLOCK_LABEL_104; + charsequence; + obj; + JVM INSTR monitorexit ; + throw charsequence; + charsequence = new ArrayList(); + Iterator iterator = ((ArrayList) (obj)).iterator(); + do + { + String s1; + do + { + if (!iterator.hasNext()) + { + itemfilter. = charsequence; + itemfilter. = charsequence.size(); + return itemfilter; + } + s1 = (String)iterator.next(); + } while (!s1.toUpperCase().contains(s)); + charsequence.add(s1); + } while (true); + } + + protected void publishResults(CharSequence charsequence, android.widget.ter.ItemFilter itemfilter) + { + this._cls1.this.originals = (ArrayList)itemfilter.; + if (itemfilter. > 0) + { + etChanged(); + return; + } else + { + etInvalidated(); + return; + } + } + + private () + { + this$1 = this._cls1.this; + super(); + originals = null; + } + + originals(originals originals2) + { + this(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Main$RowAdapter.java b/app/src/main/java/net/andchat/donate/Activities/Main$RowAdapter.java new file mode 100644 index 0000000..18ce733 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Main$RowAdapter.java @@ -0,0 +1,267 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.Filter; +import android.widget.Filterable; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.ProgressBar; +import android.widget.TextView; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import net.andchat.donate.Backend.IRCDb; +import net.andchat.donate.Backend.IRCService; +import net.andchat.donate.View.DelegatingRelativeLayout; + +// Referenced classes of package net.andchat.donate.Activities: +// Main + +private class d extends ArrayAdapter + implements Filterable +{ + private class ItemFilter extends Filter + { + + private ArrayList originals; + final Main.RowAdapter this$1; + + protected android.widget.Filter.FilterResults performFiltering(CharSequence charsequence) + { + String s; + android.widget.Filter.FilterResults filterresults; + s = charsequence.toString().toUpperCase(); + filterresults = new android.widget.Filter.FilterResults(); + if (originals == null) + { + synchronized (pItems) + { + originals = new ArrayList(pItems); + } + } + obj = originals; + if (charsequence == null || charsequence.length() == 0) + { + filterresults.count = originals.size(); + filterresults.values = originals; + return filterresults; + } + break MISSING_BLOCK_LABEL_104; + charsequence; + obj; + JVM INSTR monitorexit ; + throw charsequence; + charsequence = new ArrayList(); + Iterator iterator = ((ArrayList) (obj)).iterator(); + do + { + String s1; + do + { + if (!iterator.hasNext()) + { + filterresults.values = charsequence; + filterresults.count = charsequence.size(); + return filterresults; + } + s1 = (String)iterator.next(); + } while (!s1.toUpperCase().contains(s)); + charsequence.add(s1); + } while (true); + } + + protected void publishResults(CharSequence charsequence, android.widget.Filter.FilterResults filterresults) + { + pItems = (ArrayList)filterresults.values; + if (filterresults.count > 0) + { + notifyDataSetChanged(); + return; + } else + { + notifyDataSetInvalidated(); + return; + } + } + + private ItemFilter() + { + this$1 = Main.RowAdapter.this; + super(); + originals = null; + } + + ItemFilter(ItemFilter itemfilter) + { + this(); + } + } + + + private android.view.ener mClickListener; + private final Filter mFilter = new ItemFilter(null); + private final boolean mHaveServers; + private final LayoutInflater mInflator; + private final net.andchat.donate.View.veLayout.EnlargedViewSpec mSpec = new net.andchat.donate.View.veLayout.EnlargedViewSpec(-1, -1, 12, -2); + List pItems; + final Main this$0; + + private int getState(String s) + { + checkDb(); + int i = pDb.getId(s); + if (pService != null) + { + return pService.getServerState(i); + } else + { + return 4; + } + } + + public int getCount() + { + return pItems.size(); + } + + public Filter getFilter() + { + return mFilter; + } + + public volatile Object getItem(int i) + { + return getItem(i); + } + + public String getItem(int i) + { + return (String)pItems.get(i); + } + + public long getItemId(int i) + { + return (long)i; + } + + public View getView(int i, View view, ViewGroup viewgroup) + { + String s; + if (view == null) + { + view = mInflator.inflate(0x7f03001e, viewgroup, false); + viewgroup = new (null); + viewgroup.more = (ImageView)view.findViewById(0x7f080064); + ((more) (viewgroup)).more.setOnClickListener(mClickListener); + viewgroup.textview = (TextView)view.findViewById(0x7f080004); + viewgroup.imageview = (ImageView)view.findViewById(0x7f080065); + viewgroup.progressbar = (ProgressBar)view.findViewById(0x7f080066); + ((DelegatingRelativeLayout)view).setEnlargedView(((ut.setEnlargedView) (viewgroup)).more, mSpec); + view.setTag(viewgroup); + } else + { + viewgroup = (mSpec)view.getTag(); + } + s = (String)pItems.get(i); + ((pItems) (viewgroup)).textview.setText(s); + if (!mHaveServers) + { + ((mHaveServers) (viewgroup)).imageview.setVisibility(8); + ((imageview) (viewgroup)).more.setVisibility(8); + return view; + } + switch (getState(s)) + { + default: + if (((getState) (viewgroup)).progressbar.getVisibility() != 8) + { + ((progressbar) (viewgroup)).progressbar.setVisibility(8); + } + if (((progressbar) (viewgroup)).imageview.getVisibility() != 0) + { + ((imageview) (viewgroup)).imageview.setVisibility(0); + } + ((imageview) (viewgroup)).imageview.setImageResource(0x7f020021); + ((imageview) (viewgroup)).more.setVisibility(0); + return view; + + case 2: // '\002' + case 3: // '\003' + if (((more) (viewgroup)).imageview.getVisibility() != 8) + { + ((imageview) (viewgroup)).imageview.setVisibility(8); + } + if (((imageview) (viewgroup)).progressbar.getVisibility() != 0) + { + ((progressbar) (viewgroup)).progressbar.setVisibility(0); + } + ((progressbar) (viewgroup)).more.setVisibility(0); + return view; + + case 1: // '\001' + if (((more) (viewgroup)).progressbar.getVisibility() != 8) + { + ((progressbar) (viewgroup)).progressbar.setVisibility(8); + } + if (((progressbar) (viewgroup)).imageview.getVisibility() != 0) + { + ((imageview) (viewgroup)).imageview.setVisibility(0); + } + ((imageview) (viewgroup)).imageview.setImageResource(0x7f02001e); + ((imageview) (viewgroup)).more.setVisibility(0); + return view; + + case 0: // '\0' + break; + } + if (((more) (viewgroup)).progressbar.getVisibility() != 8) + { + ((progressbar) (viewgroup)).progressbar.setVisibility(8); + } + if (((progressbar) (viewgroup)).imageview.getVisibility() != 0) + { + ((imageview) (viewgroup)).imageview.setVisibility(0); + } + ((imageview) (viewgroup)).imageview.setImageResource(0x7f02003e); + ((imageview) (viewgroup)).more.setVisibility(0); + return view; + } + + public void refresh() + { + notifyDataSetChanged(); + } + + + public ItemFilter(Context context, int i, int j, List list, boolean flag) + { + this$0 = Main.this; + super(context, j, i, list); + pItems = list; + mInflator = LayoutInflater.from(context); + mHaveServers = flag; + mClickListener = new android.view.View.OnClickListener() { + + final Main.RowAdapter this$1; + + public void onClick(View view) + { + getListView().showContextMenuForChild((View)view.getParent()); + } + + + { + this$1 = Main.RowAdapter.this; + super(); + } + }; + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Main$ViewHolder.java b/app/src/main/java/net/andchat/donate/Activities/Main$ViewHolder.java new file mode 100644 index 0000000..619e97b --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Main$ViewHolder.java @@ -0,0 +1,30 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.widget.ImageView; +import android.widget.ProgressBar; +import android.widget.TextView; + +// Referenced classes of package net.andchat.donate.Activities: +// Main + +private static class +{ + + ImageView imageview; + ImageView more; + ProgressBar progressbar; + TextView textview; + + private () + { + } + + ( ) + { + this(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Main.java b/app/src/main/java/net/andchat/donate/Activities/Main.java new file mode 100644 index 0000000..db2c414 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Main.java @@ -0,0 +1,1325 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.Dialog; +import android.app.ListActivity; +import android.content.ComponentName; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.ServiceConnection; +import android.content.SharedPreferences; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.os.Bundle; +import android.os.IBinder; +import android.os.StrictMode; +import android.text.Html; +import android.text.method.LinkMovementMethod; +import android.view.ContextMenu; +import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.Filter; +import android.widget.Filterable; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.ProgressBar; +import android.widget.TextView; +import android.widget.Toast; +import com.markupartist.android.widget.ActionBar; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Random; +import net.andchat.donate.Activities.initialSetup.Step1; +import net.andchat.donate.Backend.Crypt; +import net.andchat.donate.Backend.IRCDb; +import net.andchat.donate.Backend.IRCService; +import net.andchat.donate.IRCApp; +import net.andchat.donate.Misc.Utils; +import net.andchat.donate.View.DelegatingRelativeLayout; +import net.londatiga.android.QuickAction; + +// Referenced classes of package net.andchat.donate.Activities: +// ServerDetailsActivity, Preferences, PasswordActivity + +public class Main extends ListActivity + implements android.content.DialogInterface.OnClickListener, ServiceConnection, android.view.View.OnClickListener, android.widget.AdapterView.OnItemClickListener, android.widget.AdapterView.OnItemLongClickListener, com.markupartist.android.widget.ActionBar.ActionBarItemClickHandler, net.andchat.donate.Backend.IRCService.ServerStateListener, net.londatiga.android.QuickAction.OnQuickActionItemClickListener +{ + private class RowAdapter extends ArrayAdapter + implements Filterable + { + + private android.view.View.OnClickListener mClickListener; + private final Filter mFilter = new ItemFilter(null); + private final boolean mHaveServers; + private final LayoutInflater mInflator; + private final net.andchat.donate.View.DelegatingRelativeLayout.EnlargedViewSpec mSpec = new net.andchat.donate.View.DelegatingRelativeLayout.EnlargedViewSpec(-1, -1, 12, -2); + List pItems; + final Main this$0; + + private int getState(String s) + { + checkDb(); + int i = pDb.getId(s); + if (pService != null) + { + return pService.getServerState(i); + } else + { + return 4; + } + } + + public int getCount() + { + return pItems.size(); + } + + public Filter getFilter() + { + return mFilter; + } + + public volatile Object getItem(int i) + { + return getItem(i); + } + + public String getItem(int i) + { + return (String)pItems.get(i); + } + + public long getItemId(int i) + { + return (long)i; + } + + public View getView(int i, View view, ViewGroup viewgroup) + { + String s; + if (view == null) + { + view = mInflator.inflate(0x7f03001e, viewgroup, false); + viewgroup = new ViewHolder(null); + viewgroup.more = (ImageView)view.findViewById(0x7f080064); + ((ViewHolder) (viewgroup)).more.setOnClickListener(mClickListener); + viewgroup.textview = (TextView)view.findViewById(0x7f080004); + viewgroup.imageview = (ImageView)view.findViewById(0x7f080065); + viewgroup.progressbar = (ProgressBar)view.findViewById(0x7f080066); + ((DelegatingRelativeLayout)view).setEnlargedView(((ViewHolder) (viewgroup)).more, mSpec); + view.setTag(viewgroup); + } else + { + viewgroup = (ViewHolder)view.getTag(); + } + s = (String)pItems.get(i); + ((ViewHolder) (viewgroup)).textview.setText(s); + if (!mHaveServers) + { + ((ViewHolder) (viewgroup)).imageview.setVisibility(8); + ((ViewHolder) (viewgroup)).more.setVisibility(8); + return view; + } + switch (getState(s)) + { + default: + if (((ViewHolder) (viewgroup)).progressbar.getVisibility() != 8) + { + ((ViewHolder) (viewgroup)).progressbar.setVisibility(8); + } + if (((ViewHolder) (viewgroup)).imageview.getVisibility() != 0) + { + ((ViewHolder) (viewgroup)).imageview.setVisibility(0); + } + ((ViewHolder) (viewgroup)).imageview.setImageResource(0x7f020021); + ((ViewHolder) (viewgroup)).more.setVisibility(0); + return view; + + case 2: // '\002' + case 3: // '\003' + if (((ViewHolder) (viewgroup)).imageview.getVisibility() != 8) + { + ((ViewHolder) (viewgroup)).imageview.setVisibility(8); + } + if (((ViewHolder) (viewgroup)).progressbar.getVisibility() != 0) + { + ((ViewHolder) (viewgroup)).progressbar.setVisibility(0); + } + ((ViewHolder) (viewgroup)).more.setVisibility(0); + return view; + + case 1: // '\001' + if (((ViewHolder) (viewgroup)).progressbar.getVisibility() != 8) + { + ((ViewHolder) (viewgroup)).progressbar.setVisibility(8); + } + if (((ViewHolder) (viewgroup)).imageview.getVisibility() != 0) + { + ((ViewHolder) (viewgroup)).imageview.setVisibility(0); + } + ((ViewHolder) (viewgroup)).imageview.setImageResource(0x7f02001e); + ((ViewHolder) (viewgroup)).more.setVisibility(0); + return view; + + case 0: // '\0' + break; + } + if (((ViewHolder) (viewgroup)).progressbar.getVisibility() != 8) + { + ((ViewHolder) (viewgroup)).progressbar.setVisibility(8); + } + if (((ViewHolder) (viewgroup)).imageview.getVisibility() != 0) + { + ((ViewHolder) (viewgroup)).imageview.setVisibility(0); + } + ((ViewHolder) (viewgroup)).imageview.setImageResource(0x7f02003e); + ((ViewHolder) (viewgroup)).more.setVisibility(0); + return view; + } + + public void refresh() + { + notifyDataSetChanged(); + } + + + public RowAdapter(Context context, int i, int j, List list, boolean flag) + { + this$0 = Main.this; + super(context, j, i, list); + pItems = list; + mInflator = LayoutInflater.from(context); + mHaveServers = flag; + mClickListener = new _cls1(); + } + } + + private class RowAdapter.ItemFilter extends Filter + { + + private ArrayList originals; + final RowAdapter this$1; + + protected android.widget.Filter.FilterResults performFiltering(CharSequence charsequence) + { + String s; + android.widget.Filter.FilterResults filterresults; + s = charsequence.toString().toUpperCase(); + filterresults = new android.widget.Filter.FilterResults(); + if (originals == null) + { + synchronized (pItems) + { + originals = new ArrayList(pItems); + } + } + obj = originals; + if (charsequence == null || charsequence.length() == 0) + { + filterresults.count = originals.size(); + filterresults.values = originals; + return filterresults; + } + break MISSING_BLOCK_LABEL_104; + charsequence; + obj; + JVM INSTR monitorexit ; + throw charsequence; + charsequence = new ArrayList(); + Iterator iterator = ((ArrayList) (obj)).iterator(); + do + { + String s1; + do + { + if (!iterator.hasNext()) + { + filterresults.values = charsequence; + filterresults.count = charsequence.size(); + return filterresults; + } + s1 = (String)iterator.next(); + } while (!s1.toUpperCase().contains(s)); + charsequence.add(s1); + } while (true); + } + + protected void publishResults(CharSequence charsequence, android.widget.Filter.FilterResults filterresults) + { + pItems = (ArrayList)filterresults.values; + if (filterresults.count > 0) + { + notifyDataSetChanged(); + return; + } else + { + notifyDataSetInvalidated(); + return; + } + } + + private RowAdapter.ItemFilter() + { + this$1 = RowAdapter.this; + super(); + originals = null; + } + + RowAdapter.ItemFilter(RowAdapter.ItemFilter itemfilter) + { + this(); + } + } + + private static class ViewHolder + { + + ImageView imageview; + ImageView more; + ProgressBar progressbar; + TextView textview; + + private ViewHolder() + { + } + + ViewHolder(ViewHolder viewholder) + { + this(); + } + } + + + private static boolean madeReq; + public static int sFilter = 0; + private ActionBar mActions; + private Animation mBounce; + private Dialog mCurDialog; + private int mCurPos; + private boolean mFocused; + protected ListView mListView; + private QuickAction mQuick; + RowAdapter pAdapter; + IRCDb pDb; + IRCService pService; + + public Main() + { + pDb = null; + } + + private Intent createAddIntent() + { + return (new Intent(this, net/andchat/donate/Activities/ServerDetailsActivity)).putExtra("new", true); + } + + private Intent createPrefsIntent() + { + return (new Intent(this, net/andchat/donate/Activities/Preferences)).putExtra("result", true); + } + + private void exit() + { + ((IRCApp)getApplication()).clearCrypt(); + if (pService != null) + { + pService.stopAll(); + madeReq = false; + return; + } else + { + madeReq = false; + onAllStopped(); + return; + } + } + + private void performUpdates(SharedPreferences sharedpreferences) + { + Object obj; + StringBuilder stringbuilder; + int j; + android.content.SharedPreferences.Editor editor = sharedpreferences.edit(); + boolean flag = Utils.getIRCDb(this).performUpdates(sharedpreferences, editor); + String s = getString(0x7f0a0039); + if (!sharedpreferences.getBoolean(s, false)) + { + int k = Utils.parseInt(sharedpreferences.getString(getString(0x7f0a0010), "10"), 10); + int i = k; + if (k >= 1000) + { + i = k / 1000; + } + editor.putString(getString(0x7f0a0010), String.valueOf(i)); + editor.putBoolean(s, true); + flag = true; + } + s = getString(0x7f0a002e); + if (sharedpreferences.getInt(s, -1) == -1) + { + int l = (new Random()).nextInt() >> 22; + String s1; + boolean flag1; + if (l < 0) + { + j = Math.abs(l); + } else + { + j = l; + if (l == 0) + { + j = 4096; + } + } + l = j; + if (j < 500) + { + l = j * (j + 1000); + } + editor.putInt(s, l); + flag = true; + } + s = getString(0x7f0a003a); + flag1 = flag; + if (sharedpreferences.getBoolean(s, false)) goto _L2; else goto _L1 +_L1: + s1 = getString(0x7f0a0022); + obj = sharedpreferences.getString(s1, null); + flag1 = flag; + if (obj == null) goto _L2; else goto _L3 +_L3: + obj = Utils.split(((CharSequence) (obj))); + stringbuilder = new StringBuilder(); + j = 0; +_L7: + if (j < obj.length) goto _L5; else goto _L4 +_L4: + if (stringbuilder.length() - 1 >= 0) + { + stringbuilder.deleteCharAt(stringbuilder.length() - 1); + } + editor.putString(s1, stringbuilder.toString()); + editor.putBoolean(s, true); + flag1 = true; +_L2: + s = getString(0x7f0a003b); + if (!sharedpreferences.getBoolean(s, false)) + { + s1 = getString(0x7f0a0028); + obj = sharedpreferences.getString(s1, "0"); + sharedpreferences = "0"; + if (((String) (obj)).equals("Year and Month")) + { + sharedpreferences = "0"; + } else + if (((String) (obj)).equals("Year, Month and Day")) + { + sharedpreferences = "1"; + } + editor.putString(s1, sharedpreferences); + editor.putBoolean(s, true); + flag1 = true; + } + if (flag1) + { + editor.commit(); + } + return; +_L5: + stringbuilder.append(obj[j]).append(','); + j++; + if (true) goto _L7; else goto _L6 +_L6: + } + + private boolean showFirstRun() + { + SharedPreferences sharedpreferences = Utils.getPrefs(this); + String s = getString(0x7f0a003d); + if (!sharedpreferences.getBoolean(s, false)) + { + startActivity(new Intent(this, net/andchat/donate/Activities/initialSetup/Step1)); + sharedpreferences.edit().putBoolean(s, true).commit(); + return true; + } else + { + return false; + } + } + + private void showHelp() + { + SharedPreferences sharedpreferences = Utils.getPrefs(this); + String s = getString(0x7f0a003c); + if (!sharedpreferences.getBoolean(s, false)) + { + showDialog(1); + sharedpreferences.edit().putBoolean(s, true).commit(); + } + } + + private void showWhatsNew() + { + SharedPreferences sharedpreferences; + int i; + int k; + sharedpreferences = Utils.getPrefs(this); + i = 0; + k = sharedpreferences.getInt("andchat_version", -1); + int j = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode; + i = j; +_L2: + if (i > k) + { + sharedpreferences.edit().putInt("andchat_version", i).commit(); + showDialog(2); + } + return; + android.content.pm.PackageManager.NameNotFoundException namenotfoundexception; + namenotfoundexception; + if (true) goto _L2; else goto _L1 +_L1: + } + + private Intent startNewChat(int i, boolean flag) + { + Intent intent = new Intent(this, IRCApp.CHAT_CLASS); + intent.putExtra("id", i); + intent.putExtra("reconnect", flag); + intent.addFlags(0x4000000); + return intent; + } + + private void startService() + { + startService(new Intent(this, net/andchat/donate/Backend/IRCService)); + bindService(new Intent(this, net/andchat/donate/Backend/IRCService), this, 0); + } + + void checkDb() + { + if (pDb == null) + { + pDb = Utils.getIRCDb(this); + } + } + + public boolean dispatchKeyEvent(KeyEvent keyevent) + { + if (keyevent.getKeyCode() == 4 && keyevent.getAction() == 0 && pService != null && !pService.areServersAlive()) + { + ((IRCApp)getApplication()).clearCrypt(); + madeReq = false; + } + return super.dispatchKeyEvent(keyevent); + } + + protected RowAdapter getAdapter() + { + Object obj; + Object obj1; + Object obj2; + int j; + boolean flag; + checkDb(); + obj1 = pDb.getList(); + boolean flag1; + if (((List) (obj1)).size() > 0) + { + flag = true; + } else + { + flag = false; + } + obj = obj1; + flag1 = flag; + if (!flag) goto _L2; else goto _L1 +_L1: + obj = obj1; + flag1 = flag; + if (sFilter <= 0) goto _L2; else goto _L3 +_L3: + j = ((List) (obj1)).size(); + obj2 = new ArrayList(); + sFilter; + JVM INSTR tableswitch 1 2: default 88 + // 1 232 + // 2 288; + goto _L4 _L5 _L6 +_L4: + int i; + if (((ArrayList) (obj2)).size() > 0) + { + flag = true; + } else + { + flag = false; + } + obj = obj1; + flag1 = flag; + if (flag) + { + obj = obj2; + flag1 = flag; + } +_L2: + obj2 = mListView; + if (flag1 || sFilter == 0) + { + break MISSING_BLOCK_LABEL_372; + } + obj1 = new ArrayList(1); + obj = null; + sFilter; + JVM INSTR tableswitch 1 2: default 168 + // 1 350 + // 2 361; + goto _L7 _L8 _L9 +_L7: + ((List) (obj1)).add(obj); + unregisterForContextMenu(((View) (obj2))); + ((ListView) (obj2)).setOnItemClickListener(null); + ((ListView) (obj2)).setOnItemLongClickListener(null); + obj = obj1; +_L10: + ((ListView) (obj2)).setTextFilterEnabled(flag1); + pAdapter = new RowAdapter(this, 0x7f03001e, 0x7f080004, ((List) (obj)), flag1); + return pAdapter; +_L5: + i = 0; + while (i < j) + { + obj = (String)((List) (obj1)).get(i); + if (pService.getServerState(pDb.getId(((String) (obj)))) != 4) + { + ((ArrayList) (obj2)).add(obj); + } + i++; + } + goto _L4 +_L6: + i = 0; + while (i < j) + { + obj = (String)((List) (obj1)).get(i); + if (pService.getServerState(pDb.getId(((String) (obj)))) == 4) + { + ((ArrayList) (obj2)).add(obj); + } + i++; + } + goto _L4 +_L8: + obj = getString(0x7f0a012a); + goto _L7 +_L9: + obj = getString(0x7f0a012b); + goto _L7 + registerForContextMenu(((View) (obj2))); + ((ListView) (obj2)).setOnItemClickListener(this); + ((ListView) (obj2)).setOnItemLongClickListener(this); + goto _L10 + } + + String getCurPosItem() + { + return mListView.getItemAtPosition(mCurPos).toString(); + } + + public void onActionBarItemClicked(com.markupartist.android.widget.ActionBar.GenericAction genericaction, View view) + { + switch (genericaction.getDrawable()) + { + default: + throw new RuntimeException("Unhandled drawable"); + + case 2130837540: + startActivityForResult(createAddIntent(), 2); + return; + + case 2130837551: + startActivityForResult(createPrefsIntent(), 4); + return; + + case 2130837549: + showDialog(0); + return; + + case 2130837561: + mQuick.show(view); + break; + } + } + + protected void onActivityResult(int i, int j, Intent intent) + { + boolean flag; + flag = false; + super.onActivityResult(i, j, intent); + i; + JVM INSTR tableswitch 1 4: default 40 + // 1 138 + // 2 41 + // 3 41 + // 4 116; + goto _L1 _L2 _L3 _L3 _L4 +_L1: + return; +_L3: + if (j == -1) + { + mListView.setAdapter(getAdapter()); + if (intent != null) + { + intent = intent.getStringExtra("label"); + if (intent != null) + { + ListView listview = mListView; + i = ((flag) ? 1 : 0); + if (pAdapter != null) + { + i = pAdapter.getPosition(intent); + } + listview.clearTextFilter(); + listview.setSelection(i); + listview.setSelected(true); + return; + } + } + } + continue; /* Loop/switch isn't completed */ +_L4: + ((IRCApp)getApplication()).notifyWatchers(); + Toast.makeText(this, 0x7f0a01cf, 0).show(); + return; +_L2: + madeReq = false; + if (j != -1) + { + if (j == 3) + { + Toast.makeText(this, 0x7f0a0120, 0).show(); + } + finish(); + return; + } + madeReq = true; + if (!showFirstRun()) + { + startService(); + showWhatsNew(); + showHelp(); + return; + } + if (true) goto _L1; else goto _L5 +_L5: + } + + public void onAllStopped() + { + finish(); + } + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + } + + public void onClick(View view) + { + switch (view.getId()) + { + default: + return; + + case 2131230816: + startActivityForResult(createAddIntent(), 2); + break; + } + } + + public boolean onContextItemSelected(MenuItem menuitem) + { + menuitem.getItemId(); + JVM INSTR tableswitch 0 3: default 36 + // 0 42 + // 1 185 + // 2 227 + // 3 134; + goto _L1 _L2 _L3 _L4 _L5 +_L1: + return super.onContextItemSelected(menuitem); +_L2: + final int id = pDb.getId(getCurPosItem()); + if (pService != null) + { + int j = pService.getServerState(id); + if (j != 0 && j != 4) + { + (new Thread() { + + final Main this$0; + private final int val$id; + + public void run() + { + net.andchat.donate.Backend.ServerConnection serverconnection = pService.getServer(id, false, null, null); + pService.stopConnection(id, 1); + if (serverconnection != null) + { + pService.remove(serverconnection); + } + pService.cleanUpIfRequired(id); + } + + + { + this$0 = Main.this; + id = i; + super(); + } + }).start(); + } else + if (j != 2) + { + startActivity(startNewChat(id, true)); + } + } else + { + startActivity(startNewChat(id, true)); + } + continue; /* Loop/switch isn't completed */ +_L5: + int i = pDb.getId(getCurPosItem()); + pService.remove(pService.getServer(i, false, null, null)); + pService.cleanUpIfRequired(i); + pAdapter.refresh(); + continue; /* Loop/switch isn't completed */ +_L3: + startActivityForResult((new Intent(this, net/andchat/donate/Activities/ServerDetailsActivity)).putExtra("edit", true).putExtra("id", pDb.getId(getCurPosItem())), 3); + continue; /* Loop/switch isn't completed */ +_L4: + final String label = getCurPosItem(); + android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this); + builder.setTitle(getString(0x7f0a0126, new Object[] { + label + })); + builder.setMessage(0x7f0a0127); + builder.setPositiveButton(0x7f0a01d3, new android.content.DialogInterface.OnClickListener() { + + final Main this$0; + private final String val$label; + + public void onClick(DialogInterface dialoginterface, int k) + { + int l = pDb.getId(label); + boolean flag = false; + k = ((flag) ? 1 : 0); + if (pService != null) + { + k = pService.getServerState(l); + if (k != 0 && k != 4) + { + k = 1; + (l. new Thread() { + + final _cls2 this$1; + private final int val$id; + + public void run() + { + net.andchat.donate.Backend.ServerConnection serverconnection = pService.getServer(id, false, null, null); + pService.stopConnection(id, 1); + pService.remove(serverconnection); + pService.cleanUpIfRequired(id); + } + + + { + this$1 = final__pcls2; + id = I.this; + super(); + } + }).start(); + } else + { + dialoginterface = pService.getServer(l, false, null, null); + if (dialoginterface != null) + { + pService.remove(dialoginterface); + k = ((flag) ? 1 : 0); + } else + { + pService.cleanUpIfRequired(l); + k = ((flag) ? 1 : 0); + } + } + } + if (pDb.deleteServer(label)) + { + if (k != 0) + { + dialoginterface = getString(0x7f0a0128, new Object[] { + label + }); + } else + { + dialoginterface = getString(0x7f0a0129, new Object[] { + label + }); + } + Toast.makeText(Main.this, dialoginterface, 0).show(); + pAdapter.remove(label); + if (pAdapter.getCount() == 0) + { + mListView.setAdapter(getAdapter()); + } + return; + } else + { + Toast.makeText(Main.this, getString(0x7f0a012d, new Object[] { + label + }), 0).show(); + return; + } + } + + + + { + this$0 = Main.this; + label = s; + super(); + } + }); + builder.setNegativeButton(0x7f0a01d4, this); + mCurDialog = builder.show(); + if (true) goto _L1; else goto _L6 +_L6: + } + + public void onCreate(Bundle bundle) + { + if (IRCApp.LEGACY_VERSION) + { + requestWindowFeature(7); + } + super.onCreate(bundle); + setContentView(0x7f03000a); + mFocused = true; + bundle = Utils.getPrefs(this); + performUpdates(bundle); + mListView = getListView(); + if (!bundle.getBoolean(getString(0x7f0a001e), false) || madeReq) goto _L2; else goto _L1 +_L1: + bundle = Utils.getCrypt(this); + madeReq = true; + if (!bundle.correctPass()) + { + startActivityForResult((new Intent(this, net/andchat/donate/Activities/PasswordActivity)).putExtra("action", 1).putExtra("message", getString(0x7f0a011f)), 1); + } +_L4: + if (android.os.Build.VERSION.SDK_INT >= 9) + { + StrictMode.setThreadPolicy(android.os.StrictMode.ThreadPolicy.LAX); + } + if (IRCApp.LEGACY_VERSION) + { + getWindow().setFeatureInt(7, 0x7f030006); + bundle = getWindow().getDecorView().findViewById(0x7f080012); + QuickAction quickaction = new QuickAction(this); + (new net.andchat.donate.Misc.AbstractMenuInflator.QuickActionsMenu(quickaction)).addActionsFromXML(this, 0x7f0f0005); + mQuick = quickaction; + quickaction.setOnActionItemClickListener(this); + bundle = (ActionBar)bundle; + mActions = bundle; + (new net.andchat.donate.Misc.AbstractMenuInflator.ActionBarMenu(bundle, this)).addActionsFromXML(this, 0x7f0f0005); + bundle.setOnActionClickListener(this); + } + setTitle(); + findViewById(0x7f080060).setOnClickListener(this); + return; +_L2: + if (!showFirstRun()) + { + showWhatsNew(); + startService(); + showHelp(); + } + if (true) goto _L4; else goto _L3 +_L3: + } + + public void onCreateContextMenu(ContextMenu contextmenu, View view, android.view.ContextMenu.ContextMenuInfo contextmenuinfo) + { + super.onCreateContextMenu(contextmenu, view, contextmenuinfo); + view = getCurPosItem(); + contextmenu.setHeaderTitle(view); + if (pService != null) + { + int i = pService.getServerState(pDb.getId(view)); + if (i != 4 && i != 0) + { + contextmenu.add(0, 0, 0, 0x7f0a00a0); + } else + if (i == 0) + { + contextmenu.add(0, 0, 0, 0x7f0a00a1); + contextmenu.add(0, 3, 3, 0x7f0a00a2).setEnabled(true); + } else + { + contextmenu.add(0, 0, 0, 0x7f0a009e); + } + } else + { + contextmenu.add(0, 0, 0, 0x7f0a009e); + } + contextmenu.add(0, 1, 1, 0x7f0a00a4); + contextmenu.add(0, 2, 2, 0x7f0a00a3); + } + + protected Dialog onCreateDialog(int i) + { + switch (i) + { + default: + return super.onCreateDialog(i); + + case 0: // '\0' + android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this); + builder.setTitle(0x7f0a012c).setSingleChoiceItems(0x7f0b0001, sFilter, new android.content.DialogInterface.OnClickListener() { + + final Main this$0; + + public void onClick(DialogInterface dialoginterface, int j) + { + dialoginterface.dismiss(); + if (j != Main.sFilter) + { + Main.sFilter = j; + mListView.clearTextFilter(); + setListAdapter(getAdapter()); + setTitle(); + } + } + + + { + this$0 = Main.this; + super(); + } + }); + builder.setPositiveButton(0x7f0a01d2, new android.content.DialogInterface.OnClickListener() { + + final Main this$0; + + public void onClick(DialogInterface dialoginterface, int j) + { + dialoginterface.dismiss(); + } + + + { + this$0 = Main.this; + super(); + } + }); + return builder.create(); + + case 1: // '\001' + android.app.AlertDialog.Builder builder1 = new android.app.AlertDialog.Builder(this); + builder1.setTitle(0x7f0a012e); + builder1.setIcon(0x108009b); + View view = getLayoutInflater().inflate(0x7f030019, null); + TextView textview = (TextView)view.findViewById(0x7f08005f); + textview.setTextSize(18F); + StringBuilder stringbuilder = new StringBuilder(); + Utils.getHelpText(this, stringbuilder); + textview.setText(Html.fromHtml(stringbuilder.toString())); + textview.setMovementMethod(new LinkMovementMethod()); + builder1.setView(view); + builder1.setNeutralButton(0x7f0a01d0, new android.content.DialogInterface.OnClickListener() { + + final Main this$0; + + public void onClick(DialogInterface dialoginterface, int j) + { + dialoginterface.dismiss(); + } + + + { + this$0 = Main.this; + super(); + } + }); + return builder1.create(); + + case 2: // '\002' + return Utils.getWhatsNewDialog(this); + } + } + + public boolean onCreateOptionsMenu(Menu menu) + { + if (!IRCApp.LEGACY_VERSION) + { + getMenuInflater().inflate(0x7f0f0005, menu); + return super.onCreateOptionsMenu(menu); + } else + { + return true; + } + } + + protected void onDestroy() + { + super.onDestroy(); + if (isFinishing()) + { + ((IRCApp)getApplication()).closeDb(); + } + if (pService != null) + { + pService.removeStateListener(this); + pService.stop(); + } + try + { + unbindService(this); + } + catch (Exception exception) { } + if (mCurDialog != null) + { + mCurDialog.dismiss(); + } + mListView.clearTextFilter(); + } + + public void onItemClick(AdapterView adapterview, View view, int i, long l) + { + mCurPos = i; + startActivity(startNewChat(pDb.getId(getCurPosItem()), false)); + } + + public void onItemClick(QuickAction quickaction, int i, int j) + { + switch (j) + { + default: + return; + + case 2131230737: + showDialog(1); + return; + + case 2131230852: + quickaction.dismiss(); + break; + } + exit(); + } + + public boolean onItemLongClick(AdapterView adapterview, View view, int i, long l) + { + mCurPos = i; + return false; + } + + public boolean onOptionsItemSelected(MenuItem menuitem) + { + menuitem.getItemId(); + JVM INSTR lookupswitch 5: default 56 + // 2131230737: 94 + // 2131230849: 74 + // 2131230850: 62 + // 2131230851: 86 + // 2131230852: 102; + goto _L1 _L2 _L3 _L4 _L5 _L6 +_L1: + return super.onOptionsItemSelected(menuitem); +_L4: + startActivityForResult(createAddIntent(), 2); + continue; /* Loop/switch isn't completed */ +_L3: + startActivityForResult(createPrefsIntent(), 4); + continue; /* Loop/switch isn't completed */ +_L5: + showDialog(0); + continue; /* Loop/switch isn't completed */ +_L2: + showDialog(1); + continue; /* Loop/switch isn't completed */ +_L6: + exit(); + if (true) goto _L1; else goto _L7 +_L7: + } + + protected void onPause() + { + super.onPause(); + if (pService != null && pService.getActiveServerCount() == 0) + { + pService.doStopForeground(true); + } + } + + public boolean onPrepareOptionsMenu(Menu menu) + { + if (IRCApp.LEGACY_VERSION) + { + Animation animation = mBounce; + menu = animation; + if (animation == null) + { + menu = AnimationUtils.loadAnimation(this, 0x7f040000); + mBounce = menu; + } + mActions.startAnimation(menu); + } + return true; + } + + protected void onRestart() + { + mFocused = true; + checkDb(); + super.onRestart(); + int i = mListView.getSelectedItemPosition(); + if (pAdapter == null) + { + pAdapter = getAdapter(); + } else + { + pAdapter.refresh(); + } + mListView.setSelection(i); + } + + protected void onResume() + { + super.onResume(); + } + + public void onServerStateChanged(int i) + { + if (mFocused) + { + i = mListView.getSelectedItemPosition(); + if (sFilter == 0) + { + pAdapter.refresh(); + } else + { + setListAdapter(getAdapter()); + } + mListView.setSelection(i); + } + } + + public void onServiceConnected(ComponentName componentname, IBinder ibinder) + { + pService = ((net.andchat.donate.Backend.IRCService.IRCServiceBinder)ibinder).getService(); + pService.addStateListener(this); + pDb = Utils.getIRCDb(this); + setListAdapter(getAdapter()); + componentname = getIntent(); + if (componentname != null && componentname.getAction() != null && componentname.getAction().equals("net.andchat.donate.FROM_NOTIFICATION") && pService.getActiveServerCount() == 1) + { + startActivity(startNewChat(pService.getFirstActiveId(), false)); + } + } + + public void onServiceDisconnected(ComponentName componentname) + { + } + + protected void onStop() + { + mFocused = false; + if (mQuick != null) + { + mQuick.dismiss(); + } + super.onStop(); + } + + void setTitle() + { + switch (sFilter) + { + default: + if (mActions != null) + { + mActions.setTitle(0x7f0a0000); + return; + } else + { + setTitle(0x7f0a0000); + return; + } + + case 1: // '\001' + if (mActions != null) + { + mActions.setTitle(0x7f0a008e); + return; + } else + { + setTitle(0x7f0a008e); + return; + } + + case 2: // '\002' + break; + } + if (mActions != null) + { + mActions.setTitle(0x7f0a008f); + return; + } else + { + setTitle(0x7f0a008f); + return; + } + } + + + // Unreferenced inner class net/andchat/donate/Activities/Main$RowAdapter$1 + +/* anonymous class */ + class RowAdapter._cls1 + implements android.view.View.OnClickListener + { + + final RowAdapter this$1; + + public void onClick(View view) + { + getListView().showContextMenuForChild((View)view.getParent()); + } + + + { + this$1 = RowAdapter.this; + super(); + } + } + +} diff --git a/app/src/main/java/net/andchat/donate/Activities/PasswordActivity$1.java b/app/src/main/java/net/andchat/donate/Activities/PasswordActivity$1.java new file mode 100644 index 0000000..995a593 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/PasswordActivity$1.java @@ -0,0 +1,36 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.view.KeyEvent; +import android.view.View; + +// Referenced classes of package net.andchat.donate.Activities: +// PasswordActivity + +class this._cls0 + implements android.view.sswordActivity._cls1 +{ + + final PasswordActivity this$0; + + public boolean onKey(View view, int i, KeyEvent keyevent) + { + if (i == 66 && keyevent.getAction() == 1) + { + PasswordActivity.access$0(PasswordActivity.this); + return true; + } else + { + return false; + } + } + + () + { + this$0 = PasswordActivity.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/PasswordActivity.java b/app/src/main/java/net/andchat/donate/Activities/PasswordActivity.java new file mode 100644 index 0000000..b0755ee --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/PasswordActivity.java @@ -0,0 +1,335 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.Activity; +import android.app.Dialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.os.Bundle; +import android.text.Editable; +import android.view.KeyEvent; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.Window; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; +import android.widget.EditText; +import android.widget.TextView; +import com.markupartist.android.widget.ActionBar; +import net.andchat.donate.Backend.Crypt; +import net.andchat.donate.IRCApp; +import net.andchat.donate.Misc.Utils; + +public class PasswordActivity extends Activity + implements android.content.DialogInterface.OnClickListener, com.markupartist.android.widget.ActionBar.ActionBarItemClickHandler +{ + + private int mAction; + private ActionBar mActions; + private Animation mBounce; + private EditText mPass1; + private EditText mPass2; + + public PasswordActivity() + { + } + + private void handleCancel() + { + setResult(0); + finish(); + } + + private void handleOk() + { + Object obj; + String s; + s = mPass1.getText().toString().trim(); + obj = mPass2.getText().toString().trim(); + mAction; + JVM INSTR tableswitch 0 1: default 60 + // 0 118 + // 1 61; + goto _L1 _L2 _L3 +_L1: + return; +_L3: + if (s.length() == 0) + { + setResult(0); + finish(); + return; + } + if (Utils.getCrypt(this).decryptMaster(s)) + { + setResult(-1); + finish(); + return; + } else + { + setResult(3); + mPass1.setError(getString(0x7f0a0120)); + return; + } +_L2: + boolean flag; + int i; + int j; + flag = true; + i = s.length(); + j = ((String) (obj)).length(); + if (i != 0) goto _L5; else goto _L4 +_L4: + mPass1.requestFocus(); + mPass1.setError(getString(0x7f0a0119)); + flag = false; +_L6: + if (flag) + { + obj = Utils.getCrypt(this); + EditText edittext; + if (((Crypt) (obj)).storeMaster(s)) + { + ((Crypt) (obj)).decryptMaster(s); + setResult(-1); + finish(); + return; + } else + { + showDialog(0); + return; + } + } + if (true) goto _L1; else goto _L5 +_L5: + if (j == 0) + { + mPass2.requestFocus(); + mPass2.setError(getString(0x7f0a011a)); + flag = false; + } else + if (i <= 4 || j <= 4) + { + flag = false; + if (i <= 4) + { + obj = mPass1; + } else + { + obj = mPass2; + } + ((EditText) (obj)).requestFocus(); + ((EditText) (obj)).setError(getString(0x7f0a011b)); + } else + if (!s.equals(obj)) + { + if (mPass1.hasFocus()) + { + obj = mPass1; + } else + if (mPass2.hasFocus()) + { + obj = mPass2; + } else + { + obj = null; + } + edittext = ((EditText) (obj)); + if (obj == null) + { + edittext = mPass2; + edittext.requestFocus(); + } + edittext.setError(getString(0x7f0a011c)); + flag = false; + } + goto _L6 + } + + public void onActionBarItemClicked(com.markupartist.android.widget.ActionBar.GenericAction genericaction, View view) + { + switch (genericaction.getDrawable()) + { + default: + throw new RuntimeException("Unhandled action image"); + + case 2130837568: + handleOk(); + return; + + case 2130837543: + handleCancel(); + return; + } + } + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + } + + protected void onCreate(Bundle bundle) + { + if (IRCApp.LEGACY_VERSION) + { + requestWindowFeature(7); + } + super.onCreate(bundle); + setContentView(0x7f03000b); + bundle = getIntent(); + int i = bundle.getIntExtra("action", -1); + if (i < 0) + { + throw new IllegalArgumentException("Unspecified action"); + } + mAction = i; + bundle = bundle.getStringExtra("message"); + if (bundle != null) + { + TextView textview = (TextView)findViewById(0x7f080034); + textview.setVisibility(0); + textview.setText(bundle); + } + if (IRCApp.LEGACY_VERSION) + { + getWindow().setFeatureInt(7, 0x7f030006); + bundle = (ActionBar)getWindow().getDecorView().findViewById(0x7f080012); + (new net.andchat.donate.Misc.AbstractMenuInflator.ActionBarMenu(bundle, this)).addActionsFromXML(this, 0x7f0f0002); + bundle.setOnActionClickListener(this); + mActions = bundle; + } + mPass1 = (EditText)findViewById(0x7f080035); + mPass2 = (EditText)findViewById(0x7f080036); + bundle = new android.view.View.OnKeyListener() { + + final PasswordActivity this$0; + + public boolean onKey(View view, int j, KeyEvent keyevent) + { + if (j == 66 && keyevent.getAction() == 1) + { + handleOk(); + return true; + } else + { + return false; + } + } + + + { + this$0 = PasswordActivity.this; + super(); + } + }; + mPass1.setOnKeyListener(bundle); + mPass2.setOnKeyListener(bundle); + if (i != 0) + { + mPass2.setVisibility(8); + } else + { + mPass1.setNextFocusDownId(0x7f080036); + } + switch (i) + { + default: + return; + + case 0: // '\0' + setTitle(0x7f0a0090); + return; + + case 1: // '\001' + setTitle(0x7f0a0091); + break; + } + } + + protected Dialog onCreateDialog(int i) + { + android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this); + builder.setTitle(0x7f0a01d7); + builder.setMessage(0x7f0a0118); + builder.setIcon(0x1080027); + builder.setNeutralButton(0x7f0a01d0, this); + return builder.create(); + } + + public boolean onCreateOptionsMenu(Menu menu) + { + if (!IRCApp.LEGACY_VERSION) + { + getMenuInflater().inflate(0x7f0f0002, menu); + return super.onCreateOptionsMenu(menu); + } else + { + return true; + } + } + + public boolean onOptionsItemSelected(MenuItem menuitem) + { + menuitem.getItemId(); + JVM INSTR tableswitch 2131230842 2131230843: default 28 + // 2131230842 41 + // 2131230843 34; + goto _L1 _L2 _L3 +_L1: + return super.onOptionsItemSelected(menuitem); +_L3: + handleOk(); + continue; /* Loop/switch isn't completed */ +_L2: + handleCancel(); + if (true) goto _L1; else goto _L4 +_L4: + } + + public boolean onPrepareOptionsMenu(Menu menu) + { + if (IRCApp.LEGACY_VERSION) + { + Animation animation = mBounce; + menu = animation; + if (animation == null) + { + menu = AnimationUtils.loadAnimation(this, 0x7f040000); + mBounce = menu; + } + mActions.startAnimation(menu); + } + return true; + } + + protected void onRestoreInstanceState(Bundle bundle) + { + super.onRestoreInstanceState(bundle); + mAction = bundle.getInt("action"); + } + + protected void onSaveInstanceState(Bundle bundle) + { + super.onSaveInstanceState(bundle); + bundle.putInt("action", mAction); + } + + public void setTitle(CharSequence charsequence) + { + if (mActions != null) + { + mActions.setTitle(charsequence); + return; + } else + { + super.setTitle(charsequence); + return; + } + } + +} diff --git a/app/src/main/java/net/andchat/donate/Activities/PreferenceParent.java b/app/src/main/java/net/andchat/donate/Activities/PreferenceParent.java new file mode 100644 index 0000000..5f912cc --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/PreferenceParent.java @@ -0,0 +1,74 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.ActionBar; +import android.os.Bundle; +import android.preference.PreferenceActivity; +import android.view.MenuItem; +import android.view.View; +import android.view.Window; +import net.andchat.donate.IRCApp; + +public class PreferenceParent extends PreferenceActivity +{ + + public PreferenceParent() + { + } + + protected void onCreate(Bundle bundle) + { + if (IRCApp.LEGACY_VERSION) + { + requestWindowFeature(7); + } + super.onCreate(bundle); + if (IRCApp.LEGACY_VERSION) + { + getWindow().setFeatureInt(7, 0x7f030006); + return; + } else + { + getActionBar().setDisplayHomeAsUpEnabled(true); + return; + } + } + + public boolean onOptionsItemSelected(MenuItem menuitem) + { + if (menuitem.getItemId() == 0x102002c) + { + finish(); + } + return super.onOptionsItemSelected(menuitem); + } + + public void setTitle(int i) + { + if (IRCApp.LEGACY_VERSION) + { + ((com.markupartist.android.widget.ActionBar)getWindow().getDecorView().findViewById(0x7f080012)).setTitle(i); + return; + } else + { + super.setTitle(i); + return; + } + } + + public void setTitle(CharSequence charsequence) + { + if (IRCApp.LEGACY_VERSION) + { + ((com.markupartist.android.widget.ActionBar)getWindow().getDecorView().findViewById(0x7f080012)).setTitle(charsequence); + return; + } else + { + super.setTitle(charsequence); + return; + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Preferences$About$1.java b/app/src/main/java/net/andchat/donate/Activities/Preferences$About$1.java new file mode 100644 index 0000000..708e8cd --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Preferences$About$1.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.DialogInterface; + +// Referenced classes of package net.andchat.donate.Activities: +// Preferences + +class this._cls1 + implements android.content.ickListener +{ + + final this._cls1 this$1; + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + } + + () + { + this$1 = this._cls1.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Preferences$About.java b/app/src/main/java/net/andchat/donate/Activities/Preferences$About.java new file mode 100644 index 0000000..597acea --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Preferences$About.java @@ -0,0 +1,122 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.Dialog; +import android.content.DialogInterface; +import android.os.Bundle; +import android.preference.Preference; +import android.text.Html; +import android.text.method.LinkMovementMethod; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.TextView; +import net.andchat.donate.IRCApp; + +// Referenced classes of package net.andchat.donate.Activities: +// PreferenceParent, Preferences + +public static final class _cls1.this._cls1 extends PreferenceParent + implements android.preference.renceClickListener +{ + + protected void onCreate(Bundle bundle) + { + super.onCreate(bundle); + addPreferencesFromResource(0x7f050000); + super.setTitle(0x7f0a0085); + findPreference("about").setOnPreferenceClickListener(this); + findPreference("changelog").setOnPreferenceClickListener(this); + findPreference("credits").setOnPreferenceClickListener(this); + bundle = (new StringBuilder("AndChat v")).append("1.4.3.2").append(" ("); + if (IRCApp.DONATE) + { + bundle.append("Donate"); + } else + { + bundle.append("Free"); + } + bundle.append(")"); + findPreference("versioninfo").setTitle(bundle); + } + + public Dialog onCreateDialog(int i) + { + Object obj; + Object obj1; + obj1 = ""; + obj = ""; + i; + JVM INSTR tableswitch 0 2: default 32 + // 0 126 + // 1 146 + // 2 163; + goto _L1 _L2 _L3 _L4 +_L1: + obj1 = (new android.app.r(this)).setTitle(((CharSequence) (obj1))).setIcon(0x108009b); + View view = getLayoutInflater().inflate(0x7f030019, null); + TextView textview = (TextView)view.findViewById(0x7f08005f); + textview.setTextSize(18F); + textview.setText(((CharSequence) (obj))); + textview.setMovementMethod(new LinkMovementMethod()); + ((android.app.r) (obj1)).setView(view); + ((android.app.r) (obj1)).setNeutralButton(0x7f0a01d0, new android.content.DialogInterface.OnClickListener() { + + final Preferences.About this$1; + + public void onClick(DialogInterface dialoginterface, int j) + { + dialoginterface.dismiss(); + } + + + { + this$1 = Preferences.About.this; + super(); + } + }); + return ((android.app.r) (obj1)).create(); +_L2: + obj1 = getString(0x7f0a01aa); + obj = Html.fromHtml(getString(0x7f0a01ab)); + continue; /* Loop/switch isn't completed */ +_L3: + obj1 = getString(0x7f0a01ad); + obj = getString(0x7f0a01ae); + continue; /* Loop/switch isn't completed */ +_L4: + obj1 = getString(0x7f0a01af); + obj = Html.fromHtml(getString(0x7f0a01b0)); + if (true) goto _L1; else goto _L5 +_L5: + } + + public boolean onPreferenceClick(Preference preference) + { + preference = preference.getKey(); + if (preference.equalsIgnoreCase("about")) + { + showDialog(0); + return true; + } + if (preference.equalsIgnoreCase("changelog")) + { + showDialog(1); + return true; + } + if (preference.equalsIgnoreCase("credits")) + { + showDialog(2); + return true; + } else + { + return false; + } + } + + public _cls1.this._cls1() + { + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Preferences$ActionBasedPreferenceLoader.java b/app/src/main/java/net/andchat/donate/Activities/Preferences$ActionBasedPreferenceLoader.java new file mode 100644 index 0000000..f6abdc5 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Preferences$ActionBasedPreferenceLoader.java @@ -0,0 +1,66 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.Intent; +import android.os.Bundle; +import android.preference.PreferenceScreen; +import net.andchat.donate.IRCApp; + +// Referenced classes of package net.andchat.donate.Activities: +// PreferenceParent, Preferences + +public static final class extends PreferenceParent +{ + + protected void onCreate(Bundle bundle) + { + super.onCreate(bundle); + bundle = getIntent().getAction(); + int i; + int j; + if (bundle.equals("net.andchat.donate.Prefs.Messages_Rooms")) + { + j = 0x7f050008; + i = 0x7f0a0080; + } else + if (bundle.equals("net.andchat.donate.Prefs.Interface")) + { + j = 0x7f050006; + i = 0x7f0a0081; + } else + if (bundle.equals("net.andchat.donate.Prefs.Connection")) + { + j = 0x7f050002; + i = 0x7f0a0088; + } else + if (bundle.equals("net.andchat.donate.Prefs.Notifications")) + { + j = 0x7f050009; + i = 0x7f0a0082; + } else + if (bundle.equals("net.andchat.donate.Prefs.DEBUG")) + { + j = 0x7f050005; + i = 0x7f0a0089; + } else + { + throw new RuntimeException("missing action"); + } + addPreferencesFromResource(j); + if (i > 0) + { + super.setTitle(i); + } + if (j == 0x7f050006 && IRCApp.LEGACY_VERSION) + { + getPreferenceScreen().removePreference(findPreference(getString(0x7f0a0033))); + } + } + + public () + { + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Preferences$ChatLogs$1.java b/app/src/main/java/net/andchat/donate/Activities/Preferences$ChatLogs$1.java new file mode 100644 index 0000000..9f693b8 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Preferences$ChatLogs$1.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.DialogInterface; + +// Referenced classes of package net.andchat.donate.Activities: +// Preferences + +class this._cls1 + implements android.content.Listener +{ + + final this._cls1 this$1; + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + } + + () + { + this$1 = this._cls1.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Preferences$ChatLogs.java b/app/src/main/java/net/andchat/donate/Activities/Preferences$ChatLogs.java new file mode 100644 index 0000000..faac41e --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Preferences$ChatLogs.java @@ -0,0 +1,135 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.Dialog; +import android.content.DialogInterface; +import android.os.Bundle; +import android.os.Environment; +import android.preference.Preference; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.TextView; +import java.io.File; + +// Referenced classes of package net.andchat.donate.Activities: +// PreferenceParent, Preferences + +public static final class _cls1.this._cls1 extends PreferenceParent + implements android.preference.ceClickListener +{ + + private long getFolderSize(File file, int i) + { + long l = 0L; + if (i > 25) + { + return 0L; + } + file = file.listFiles(); + int j = file.length - 1; + do + { + if (j < 0) + { + return l; + } + File file1 = file[j]; + if (file1.isDirectory()) + { + int k = i + 1; + l += getFolderSize(file1, i); + i = k; + } else + { + l += file1.length(); + } + j--; + } while (true); + } + + protected void onCreate(Bundle bundle) + { + super.onCreate(bundle); + addPreferencesFromResource(0x7f050001); + findPreference("info").setOnPreferenceClickListener(this); + super.setTitle(0x7f0a0086); + } + + protected Dialog onCreateDialog(int i) + { + android.app.nClickListener nclicklistener; + switch (i) + { + default: + return null; + + case 0: // '\0' + nclicklistener = new android.app.init>(this); + break; + } + nclicklistener.etTitle(0x7f0a019d); + nclicklistener.etIcon(0x108009b); + StringBuilder stringbuilder = new StringBuilder(); + Object obj = Environment.getExternalStorageDirectory(); + stringbuilder.append(getString(0x7f0a019e)).append(obj).append(File.separator).append("net.andchat.donate\n"); + stringbuilder.append(getString(0x7f0a019f)); + obj = new File(((File) (obj)), "net.andchat.donate"); + TextView textview; + if (!((File) (obj)).exists()) + { + stringbuilder.append(getString(0x7f0a01a0)); + } else + { + long l1 = getFolderSize(((File) (obj)), 0); + long l = l1; + if (l1 != 0L) + { + l = l1 / 1024L; + } + stringbuilder.append(">"); + if (l >= 1024L) + { + stringbuilder.append(l / 1024L).append(" MB \n"); + } else + { + stringbuilder.append(l).append(" KB \n"); + } + } + stringbuilder.append(getString(0x7f0a01a1)); + stringbuilder.append(Environment.getExternalStorageState()).append("\n"); + obj = getLayoutInflater().inflate(0x7f030019, null); + textview = (TextView)((View) (obj)).findViewById(0x7f08005f); + textview.setTextSize(20F); + textview.setText(stringbuilder); + nclicklistener.etView(((View) (obj))); + nclicklistener.etNeutralButton(0x7f0a01d0, new android.content.DialogInterface.OnClickListener() { + + final Preferences.ChatLogs this$1; + + public void onClick(DialogInterface dialoginterface, int j) + { + dialoginterface.dismiss(); + } + + + { + this$1 = Preferences.ChatLogs.this; + super(); + } + }); + return nclicklistener.reate(); + } + + public boolean onPreferenceClick(Preference preference) + { + showDialog(0); + return true; + } + + public _cls1.this._cls1() + { + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$1.java b/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$1.java new file mode 100644 index 0000000..a8a76d4 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$1.java @@ -0,0 +1,36 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import java.io.File; +import java.util.Comparator; + +// Referenced classes of package net.andchat.donate.Activities: +// Preferences + +class + implements Comparator +{ + + public int compare(File file, File file1) + { + long l = file.lastModified(); + long l1 = file1.lastModified(); + if (l > l1) + { + return -1; + } + return l >= l1 ? 0 : 1; + } + + public volatile int compare(Object obj, Object obj1) + { + return compare((File)obj, (File)obj1); + } + + () + { + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$2.java b/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$2.java new file mode 100644 index 0000000..30c7772 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$2.java @@ -0,0 +1,41 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.os.Handler; +import android.os.Message; + +// Referenced classes of package net.andchat.donate.Activities: +// Preferences + +class this._cls1 extends Handler +{ + + final moveDialog this$1; + + public void handleMessage(Message message) + { + switch (message.what) + { + default: + return; + + case 1: // '\001' + case 2: // '\002' + owDialog(1); + return; + + case 0: // '\0' + moveDialog(1); + return; + } + } + + () + { + this$1 = this._cls1.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$3.java b/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$3.java new file mode 100644 index 0000000..596a555 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$3.java @@ -0,0 +1,58 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.Dialog; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.view.View; +import java.util.List; + +// Referenced classes of package net.andchat.donate.Activities: +// Preferences + +class val.d + implements android.view.ces.DataBackup._cls3 +{ + + final owDialog this$1; + private final Dialog val$d; + + public void onClick(View view) + { + switch (view.getId()) + { + default: + return; + + case 2131230807: + val$d.dismiss(); + return; + + case 2131230806: + val$d.dismiss(); + view = new Intent("android.intent.action.GET_CONTENT"); + view.setType("text/*"); + view.addFlags(0x80000); + break; + } + if (tPackageManager().queryIntentActivities(view, 0x10000).size() > 0) + { + artActivityForResult(Intent.createChooser(view, tString(0x7f0a0180)), 0); + return; + } else + { + owDialog(2); + return; + } + } + + () + { + this$1 = final_; + val$d = Dialog.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$4.java b/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$4.java new file mode 100644 index 0000000..950e81e --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$4.java @@ -0,0 +1,39 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.Dialog; +import android.text.Editable; +import android.view.View; +import android.widget.EditText; +import java.io.File; + +// Referenced classes of package net.andchat.donate.Activities: +// Preferences + +class val.d + implements android.view.ces.DataBackup._cls4 +{ + + final this._cls1 this$1; + private final Dialog val$d; + + public void onClick(View view) + { + view = (EditText)val$d.findViewById(0x7f080058); + cess._mth0(this._cls1.this, ndPreference("import_trigger"), 1); + view = view.getText().toString(); + val$d.dismiss(); + cess._mth2(this._cls1.this, new net.andchat.donate.Misc.kup(1, this._cls1.this, cess._mth1(this._cls1.this), new File(view), andler)); + cess._mth3(this._cls1.this).kup(); + } + + () + { + this$1 = final_; + val$d = Dialog.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$5.java b/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$5.java new file mode 100644 index 0000000..5668f44 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$5.java @@ -0,0 +1,39 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.DialogInterface; +import android.content.Intent; +import net.andchat.donate.IRCApp; + +// Referenced classes of package net.andchat.donate.Activities: +// Preferences, Main + +class val.export + implements android.content.stener +{ + + final this._cls1 this$1; + private final boolean val$export; + private final boolean val$failed; + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + if (!val$failed && !val$export) + { + ((IRCApp)tApplication()).clearCrypt(); + artActivity((new Intent(this._cls1.this, net/andchat/donate/Activities/Main)).setFlags(0x4000000)); + } + } + + () + { + this$1 = final_; + val$failed = flag; + val$export = Z.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$6.java b/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$6.java new file mode 100644 index 0000000..e93bde3 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup$6.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.DialogInterface; + +// Referenced classes of package net.andchat.donate.Activities: +// Preferences + +class this._cls1 + implements android.content.stener +{ + + final this._cls1 this$1; + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + } + + () + { + this$1 = this._cls1.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup.java b/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup.java new file mode 100644 index 0000000..37c98f4 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Preferences$DataBackup.java @@ -0,0 +1,543 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.Dialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.net.Uri; +import android.os.Bundle; +import android.os.Environment; +import android.os.Handler; +import android.os.Message; +import android.preference.Preference; +import android.text.Editable; +import android.text.Html; +import android.view.View; +import android.widget.EditText; +import java.io.File; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; +import net.andchat.donate.IRCApp; +import net.andchat.donate.Misc.Backup; + +// Referenced classes of package net.andchat.donate.Activities: +// PreferenceParent, Preferences, Main + +public static final class _cls6.this._cls1 extends PreferenceParent + implements android.preference.ClickListener +{ + + private static final Comparator sFileComparator = new Comparator() { + + public int compare(File file, File file1) + { + long l = file.lastModified(); + long l1 = file1.lastModified(); + if (l > l1) + { + return -1; + } + return l >= l1 ? 0 : 1; + } + + public volatile int compare(Object obj, Object obj1) + { + return compare((File)obj, (File)obj1); + } + + }; + private Backup mBackup; + public final Handler mHandler = new Handler() { + + final Preferences.DataBackup this$1; + + public void handleMessage(Message message) + { + switch (message.what) + { + default: + return; + + case 1: // '\001' + case 2: // '\002' + showDialog(1); + return; + + case 0: // '\0' + removeDialog(1); + return; + } + } + + + { + this$1 = Preferences.DataBackup.this; + super(); + } + }; + private net.andchat.donate.Misc.ackup mTask; + + private void disablePreference(Preference preference, int i) + { + i; + JVM INSTR tableswitch 0 1: default 24 + // 0 30 + // 1 39; + goto _L1 _L2 _L3 +_L1: + preference.setEnabled(false); + return; +_L2: + preference.setTitle(0x7f0a0190); + continue; /* Loop/switch isn't completed */ +_L3: + preference.setTitle(0x7f0a0191); + if (true) goto _L1; else goto _L4 +_L4: + } + + private void enablePreference(Preference preference, int i) + { + i; + JVM INSTR tableswitch 0 1: default 24 + // 0 30 + // 1 39; + goto _L1 _L2 _L3 +_L1: + preference.setEnabled(true); + return; +_L2: + preference.setTitle(0x7f0a00d1); + continue; /* Loop/switch isn't completed */ +_L3: + preference.setTitle(0x7f0a00d0); + if (true) goto _L1; else goto _L4 +_L4: + } + + protected void onActivityResult(int i, int j, Intent intent) + { + super.onActivityResult(i, j, intent); + if (i == 0 && j == -1) + { + disablePreference(findPreference("import_trigger"), 1); + mTask = new net.andchat.donate.Misc.ackup.mTask(1, this, mBackup, new File(intent.getData().getPath()), mHandler); + mTask.mTask(); + } + } + + protected void onCreate(Bundle bundle) + { + super.onCreate(bundle); + addPreferencesFromResource(0x7f050003); + findPreference("export_trigger").setOnPreferenceClickListener(this); + findPreference("import_trigger").setOnPreferenceClickListener(this); + Object aobj[] = (Object[])getLastNonConfigurationInstance(); + if (aobj != null) + { + if (aobj[0] == null) + { + bundle = new Backup(); + } else + { + bundle = (Backup)aobj[0]; + } + mBackup = bundle; + if (aobj[1] == null) + { + bundle = null; + } else + { + bundle = (net.andchat.donate.Misc.ackup.mBackup)aobj[1]; + } + mTask = bundle; + if (mTask != null && mTask.g.get()) + { + mTask.r = mHandler; + if (mTask.mTask == 0) + { + bundle = "export_trigger"; + } else + { + bundle = "import_trigger"; + } + disablePreference(findPreference(bundle), mTask.mTask); + } + } + super.setTitle(0x7f0a0087); + } + + protected Dialog onCreateDialog(int i) + { + switch (i) + { + default: + return null; + + case 0: // '\0' + final Dialog d = new Dialog(this); + d.setTitle(0x7f0a017f); + d.setContentView(0x7f030017); + android.view.ences.DataBackup databackup = new android.view.View.OnClickListener() { + + final Preferences.DataBackup this$1; + private final Dialog val$d; + + public void onClick(View view) + { + switch (view.getId()) + { + default: + return; + + case 2131230807: + d.dismiss(); + return; + + case 2131230806: + d.dismiss(); + view = new Intent("android.intent.action.GET_CONTENT"); + view.setType("text/*"); + view.addFlags(0x80000); + break; + } + if (getPackageManager().queryIntentActivities(view, 0x10000).size() > 0) + { + startActivityForResult(Intent.createChooser(view, getString(0x7f0a0180)), 0); + return; + } else + { + showDialog(2); + return; + } + } + + + { + this$1 = Preferences.DataBackup.this; + d = dialog; + super(); + } + }; + d.findViewById(0x7f080057).setOnClickListener(databackup); + d.findViewById(0x7f080056).setOnClickListener(databackup); + d.findViewById(0x7f080055).setOnClickListener(new android.view.View.OnClickListener() { + + final Preferences.DataBackup this$1; + private final Dialog val$d; + + public void onClick(View view) + { + view = (EditText)d.findViewById(0x7f080058); + disablePreference(findPreference("import_trigger"), 1); + view = view.getText().toString(); + d.dismiss(); + mTask = new net.andchat.donate.Misc.Backup.BackupOp(1, Preferences.DataBackup.this, mBackup, new File(view), mHandler); + mTask.start(); + } + + + { + this$1 = Preferences.DataBackup.this; + d = dialog; + super(); + } + }); + return d; + + case 1: // '\001' + android.app.rences.DataBackup databackup1 = new android.app.it>(this); + net.andchat.donate.Misc.ackup ackup = mBackup.getStats(); + Object obj; + final boolean export; + final boolean failed; + if (ackup.mBackup == 0) + { + export = true; + } else + { + export = false; + } + if (ackup.mBackup != null) + { + failed = true; + } else + { + failed = false; + } + if (export) + { + obj = "export_trigger"; + } else + { + obj = "import_trigger"; + } + obj = findPreference(((CharSequence) (obj))); + if (export) + { + i = 0; + } else + { + i = 1; + } + enablePreference(((Preference) (obj)), i); + databackup1.NeutralButton(0x7f0a01d0, new android.content.DialogInterface.OnClickListener() { + + final Preferences.DataBackup this$1; + private final boolean val$export; + private final boolean val$failed; + + public void onClick(DialogInterface dialoginterface, int j) + { + dialoginterface.dismiss(); + if (!failed && !export) + { + ((IRCApp)getApplication()).clearCrypt(); + startActivity((new Intent(Preferences.DataBackup.this, net/andchat/donate/Activities/Main)).setFlags(0x4000000)); + } + } + + + { + this$1 = Preferences.DataBackup.this; + failed = flag; + export = flag1; + super(); + } + }); + if (export) + { + i = 0x7f0a0188; + } else + { + i = 0x7f0a0187; + } + databackup1.Title(i); + if (ackup.ackup != null) + { + if (export) + { + i = 0x7f0a0184; + } else + { + i = 0x7f0a0183; + } + databackup1.Title(i); + databackup1.Message((new StringBuilder(String.valueOf(getString(0x7f0a0186)))).append(" ").append(ackup.getString.getClass().getCanonicalName()).append("\n\n").append(getString(0x7f0a0185)).append(" ").append(ackup.getString.getMessage()).toString()); + databackup1.Icon(0x1080027); + return databackup1.ate(); + } + databackup1.Icon(0x108009b); + StringBuilder stringbuilder; + if (export) + { + i = 0x7f0a0182; + } else + { + i = 0x7f0a0181; + } + databackup1.Title(i); + if (export) + { + obj = "\n"; + } else + { + obj = "
"; + } + stringbuilder = new StringBuilder(); + if (export) + { + i = 0x7f0a0188; + } else + { + i = 0x7f0a0187; + } + stringbuilder.append(getString(i)).append(((String) (obj))); + stringbuilder.append(getString(0x7f0a018c, new Object[] { + Integer.valueOf(ackup.s), Integer.valueOf(ackup.rs) + })).append(((String) (obj))); + stringbuilder.append(getString(0x7f0a018d, new Object[] { + Integer.valueOf(ackup.ences), Integer.valueOf(ackup.rences) + })).append(((String) (obj))); + if (ackup.rences) + { + if (export) + { + i = 0x7f0a0193; + } else + { + i = 0x7f0a0192; + } + stringbuilder.append(getString(0x7f0a018e, new Object[] { + getString(i) + })).append(((String) (obj))); + } + if (export) + { + stringbuilder.append(((String) (obj))).append(getString(0x7f0a018f, new Object[] { + ackup.getString + })); + } else + { + stringbuilder.append(((String) (obj))).append((new StringBuilder("")).append(getString(0x7f0a0189)).append("").toString()); + } + if (export) + { + obj = stringbuilder; + } else + { + obj = Html.fromHtml(stringbuilder.toString()); + } + databackup1.Message(((CharSequence) (obj))); + mTask = null; + return databackup1.ate(); + + case 2: // '\002' + android.app.lickListener licklistener = new android.app.it>(this); + licklistener.Icon(0x1080027); + licklistener.Title(0x7f0a018a); + licklistener.Message(0x7f0a018b); + licklistener.NeutralButton(0x7f0a01d0, new android.content.DialogInterface.OnClickListener() { + + final Preferences.DataBackup this$1; + + public void onClick(DialogInterface dialoginterface, int j) + { + dialoginterface.dismiss(); + } + + + { + this$1 = Preferences.DataBackup.this; + super(); + } + }); + return licklistener.ate(); + } + } + + public boolean onPreferenceClick(Preference preference) + { + String s; + mBackup = new Backup(); + s = preference.getKey(); + if (!s.equals("export_trigger")) goto _L2; else goto _L1 +_L1: + disablePreference(preference, 0); + mTask = new net.andchat.donate.Misc.ackup.mTask(0, this, mBackup, new File(""), mHandler); + mTask.mTask(); +_L4: + return true; +_L2: + if (s.equals("import_trigger")) + { + showDialog(0); + } + if (true) goto _L4; else goto _L3 +_L3: + } + + protected void onPrepareDialog(int i, Dialog dialog) + { + EditText edittext; + switch (i) + { + default: + return; + + case 0: // '\0' + edittext = (EditText)dialog.findViewById(0x7f080058); + break; + } + if (mBackup != null && mBackup.getStats() != null) + { + dialog = mBackup.getStats().mBackup; + if (dialog != null) + { + edittext.setText(dialog); + } else + { + edittext.setText((new StringBuilder()).append(Environment.getExternalStorageDirectory()).append(File.separator).toString()); + } + } else + { + Object obj = null; + File file = new File((new StringBuilder()).append(Environment.getExternalStorageDirectory()).append(File.separator).append("net.andchat.donate").append(File.separator).append("Backups").toString()); + dialog = (File[])null; + dialog = obj; + if (file.isDirectory()) + { + File afile[] = file.listFiles(); + dialog = obj; + if (afile != null) + { + if (afile.length > 1) + { + Arrays.sort(afile, sFileComparator); + } + if (afile.length > 0) + { + dialog = afile[0].toString(); + } else + { + dialog = null; + } + } + } + if (dialog != null) + { + edittext.setText(dialog); + } else + { + edittext.setText((new StringBuilder()).append(Environment.getExternalStorageDirectory()).append(File.separator).toString()); + } + } + edittext.setSelection(edittext.length()); + } + + public Object onRetainNonConfigurationInstance() + { + if (mBackup == null && mTask == null) + { + return null; + } else + { + return ((Object) (new Object[] { + mBackup, mTask + })); + } + } + + protected void onStart() + { + super.onStart(); + if (mTask != null) + { + mTask.log = true; + } + } + + protected void onStop() + { + super.onStop(); + if (mTask != null) + { + mTask.log = false; + } + } + + + + + + + public _cls6.this._cls1() + { + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Preferences$DataSecurity.java b/app/src/main/java/net/andchat/donate/Activities/Preferences$DataSecurity.java new file mode 100644 index 0000000..7afea35 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Preferences$DataSecurity.java @@ -0,0 +1,175 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.Intent; +import android.content.res.Resources; +import android.os.Bundle; +import android.preference.CheckBoxPreference; +import android.preference.Preference; +import android.widget.Toast; +import net.andchat.donate.Backend.Crypt; +import net.andchat.donate.Backend.IRCDb; +import net.andchat.donate.IRCApp; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Activities: +// PreferenceParent, Preferences, PasswordActivity + +public static final class extends PreferenceParent + implements android.preference.ickListener +{ + + private int actType; + private boolean wasChecked; + + protected void onActivityResult(int i, int j, Intent intent) + { + boolean flag; + flag = true; + super.onActivityResult(i, j, intent); + i; + JVM INSTR tableswitch 0 1: default 32 + // 0 208 + // 1 33; + goto _L1 _L2 _L3 +_L1: + return; +_L3: + if (actType != 0) + { + continue; /* Loop/switch isn't completed */ + } + if (j == -1) + { + ((CheckBoxPreference)findPreference(getString(0x7f0a001d))).setChecked(false); + i = Utils.getIRCDb(this).decryptAll(); + ((IRCApp)getApplication()).clearCrypt(); + ((CheckBoxPreference)findPreference(getString(0x7f0a001e))).setChecked(false); + if (i == 0) + { + Toast.makeText(this, 0x7f0a019b, 0).show(); + return; + } else + { + Toast.makeText(this, getResources().getQuantityString(0x7f0e0004, i, new Object[] { + Integer.valueOf(i) + }), 0).show(); + return; + } + } + continue; /* Loop/switch isn't completed */ + if (actType != 1 || j != -1) goto _L1; else goto _L4 +_L4: + i = Utils.getIRCDb(this).encryptAll(); + if (i == 0) + { + Toast.makeText(this, 0x7f0a019a, 0).show(); + return; + } else + { + Toast.makeText(this, getResources().getQuantityString(0x7f0e0003, i, new Object[] { + Integer.valueOf(i) + }), 0).show(); + return; + } +_L2: + if (j != -1) + { + flag = false; + } + ((CheckBoxPreference)findPreference(getString(0x7f0a001d))).setChecked(flag); + if (flag) + { + Toast.makeText(this, 0x7f0a019c, 0).show(); + return; + } + if (true) goto _L1; else goto _L5 +_L5: + } + + protected void onCreate(Bundle bundle) + { + super.onCreate(bundle); + addPreferencesFromResource(0x7f050004); + findPreference(getString(0x7f0a001d)).setOnPreferenceClickListener(this); + findPreference("trigger").setOnPreferenceClickListener(this); + super.setTitle(0x7f0a0083); + } + + public boolean onPreferenceClick(Preference preference) + { + String s = preference.getKey(); + if (!s.equals(getString(0x7f0a001d))) goto _L2; else goto _L1 +_L1: + preference = (CheckBoxPreference)preference; + boolean flag; + if (preference.isChecked()) + { + flag = false; + } else + { + flag = true; + } + wasChecked = flag; + if (!wasChecked) goto _L4; else goto _L3 +_L3: + preference.setChecked(wasChecked); + actType = 0; + preference = (new StringBuilder()).append(getString(0x7f0a011e)); + if (wasChecked) + { + preference.append(getString(0x7f0a0198)); + } + preference.append(":"); + startActivityForResult((new Intent(this, net/andchat/donate/Activities/PasswordActivity)).putExtra("action", 1).putExtra("message", preference.toString()), 1); +_L6: + return false; +_L4: + preference.setChecked(wasChecked); + startActivityForResult((new Intent(this, net/andchat/donate/Activities/PasswordActivity)).putExtra("action", 0).putExtra("message", getString(0x7f0a0199)), 0); + return false; +_L2: + if (s.equals("trigger")) + { + if (!Utils.getCrypt(this).correctPass()) + { + actType = 1; + startActivityForResult((new Intent(this, net/andchat/donate/Activities/PasswordActivity)).putExtra("action", 1).putExtra("message", (new StringBuilder(String.valueOf(getString(0x7f0a011e)))).append(":").toString()), 1); + return false; + } + int i = Utils.getIRCDb(this).encryptAll(); + if (i == 0) + { + Toast.makeText(this, 0x7f0a019a, 0).show(); + return false; + } else + { + Toast.makeText(this, getResources().getQuantityString(0x7f0e0003, i, new Object[] { + Integer.valueOf(i) + }), 0).show(); + return false; + } + } + if (true) goto _L6; else goto _L5 +_L5: + } + + protected void onRestoreInstanceState(Bundle bundle) + { + super.onRestoreInstanceState(bundle); + actType = bundle.getInt("acttype"); + } + + protected void onSaveInstanceState(Bundle bundle) + { + super.onSaveInstanceState(bundle); + bundle.putInt("acttype", actType); + } + + public () + { + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Preferences$ServerProfiles.java b/app/src/main/java/net/andchat/donate/Activities/Preferences$ServerProfiles.java new file mode 100644 index 0000000..507b8b8 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Preferences$ServerProfiles.java @@ -0,0 +1,253 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.Dialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.res.Resources; +import android.os.Bundle; +import android.preference.Preference; +import android.widget.Toast; +import java.util.ArrayList; +import java.util.List; +import net.andchat.donate.Backend.IRCDb; +import net.andchat.donate.Misc.ServerProfile; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Activities: +// PreferenceParent, Preferences, CharsetPicker + +public static final class r extends PreferenceParent + implements android.content.ener, android.content.ceClickListener, android.preference.kListener +{ + + private int mApplyToMask; + private Preference mEncoding; + private final String mKeys[] = new String[2]; + + protected void onActivityResult(int i, int j, Intent intent) + { + super.onActivityResult(i, j, intent); + i; + JVM INSTR tableswitch 5 5: default 28 + // 5 29; + goto _L1 _L2 +_L1: + return; +_L2: + if (j != 0) + { + intent = intent.getStringExtra("selection"); + mEncoding.setTitle(intent); + Utils.getPrefs(this).edit().tString(mKeys[0], intent).mmit(); + return; + } + if (true) goto _L1; else goto _L3 +_L3: + } + + public void onClick(DialogInterface dialoginterface, int i) + { + switch (i) + { + default: + return; + + case -1: + int j = mApplyToMask; + dialoginterface = Utils.getIRCDb(this); + List list = dialoginterface.getList(); + int k = list.size(); + if (j == 0) + { + Toast.makeText(this, 0x7f0a0196, 0).show(); + return; + } + if (k == 0) + { + Toast.makeText(this, 0x7f0a0197, 0).show(); + return; + } + String s = Utils.getDefaultServerProfileValue(0x7f0a0001, this); + String s1 = Utils.getDefaultServerProfileValue(0x7f0a0002, this); + String s2 = Utils.getDefaultServerProfileValue(0x7f0a0003, this); + String s3 = Utils.getDefaultServerProfileValue(0x7f0a0004, this); + String s4 = Utils.getDefaultServerProfileValue(0x7f0a0005, this); + String s5 = Utils.getDefaultServerProfileValue(0x7f0a0006, this); + ArrayList arraylist = new ArrayList(k); + i = 0; + do + { + if (i >= k) + { + dialoginterface.updateMultiple(arraylist); + Toast.makeText(this, getResources().getQuantityString(0x7f0e0002, k, new Object[] { + Integer.valueOf(k) + }), 0).show(); + return; + } + ServerProfile serverprofile = dialoginterface.getDetailsForId(dialoginterface.getId((String)list.get(i))); + if (Utils.isBitSet(j, 1)) + { + serverprofile.setNick(1, s); + } + if (Utils.isBitSet(j, 2)) + { + serverprofile.setNick(2, s1); + } + if (Utils.isBitSet(j, 4)) + { + serverprofile.setNick(3, s2); + } + if (Utils.isBitSet(j, 8)) + { + serverprofile.setRealname(s3); + } + if (Utils.isBitSet(j, 16)) + { + serverprofile.setUsername(s4); + } + if (Utils.isBitSet(j, 32)) + { + serverprofile.setCharset(s5); + } + arraylist.add(serverprofile); + i++; + } while (true); + + case -2: + dialoginterface.dismiss(); + return; + } + } + + public void onClick(DialogInterface dialoginterface, int i, boolean flag) + { + switch (i) + { + default: + return; + + case 0: // '\0' + if (flag) + { + i = mApplyToMask | 1; + } else + { + i = mApplyToMask & -2; + } + mApplyToMask = i; + return; + + case 1: // '\001' + if (flag) + { + i = mApplyToMask | 2; + } else + { + i = mApplyToMask & -3; + } + mApplyToMask = i; + return; + + case 2: // '\002' + if (flag) + { + i = mApplyToMask | 4; + } else + { + i = mApplyToMask & -5; + } + mApplyToMask = i; + return; + + case 3: // '\003' + if (flag) + { + i = mApplyToMask | 8; + } else + { + i = mApplyToMask & -9; + } + mApplyToMask = i; + return; + + case 4: // '\004' + if (flag) + { + i = mApplyToMask | 0x10; + } else + { + i = mApplyToMask & 0xffffffef; + } + mApplyToMask = i; + return; + + case 5: // '\005' + break; + } + if (flag) + { + i = mApplyToMask | 0x20; + } else + { + i = mApplyToMask & 0xffffffdf; + } + mApplyToMask = i; + } + + protected void onCreate(Bundle bundle) + { + super.onCreate(bundle); + addPreferencesFromResource(0x7f05000a); + bundle = getString(0x7f0a000f); + mKeys[0] = bundle; + mEncoding = findPreference(bundle); + Preference preference = mEncoding; + preference.setTitle(Utils.getPrefs(this).getString(bundle, getString(0x7f0a0006))); + preference.setOnPreferenceClickListener(this); + bundle = getString(0x7f0a002d); + mKeys[1] = bundle; + findPreference(bundle).setOnPreferenceClickListener(this); + super.setTitle(0x7f0a0084); + } + + protected Dialog onCreateDialog(int i) + { + switch (i) + { + default: + return null; + + case 0: // '\0' + return (new android.app.Listener(this)).(0x108009b).iChoiceItems(0x7f0b0000, null, this).e(0x7f0a0194).tiveButton(0x7f0a0195, this).tiveButton(0x7f0a01d2, this).Listener(); + } + } + + public boolean onPreferenceClick(Preference preference) + { + String as[] = mKeys; + preference = preference.getKey(); + if (preference.equals(as[0])) + { + startActivityForResult(new Intent(this, net/andchat/donate/Activities/CharsetPicker), 5); + return true; + } + if (preference.equals(as[1])) + { + showDialog(0); + return true; + } else + { + return false; + } + } + + public r() + { + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/Preferences.java b/app/src/main/java/net/andchat/donate/Activities/Preferences.java new file mode 100644 index 0000000..9ed48b1 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/Preferences.java @@ -0,0 +1,1261 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.Dialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.pm.PackageManager; +import android.content.res.Resources; +import android.net.Uri; +import android.os.Bundle; +import android.os.Environment; +import android.os.Handler; +import android.os.Message; +import android.preference.CheckBoxPreference; +import android.preference.Preference; +import android.preference.PreferenceScreen; +import android.text.Editable; +import android.text.Html; +import android.text.method.LinkMovementMethod; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.EditText; +import android.widget.TextView; +import android.widget.Toast; +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; +import net.andchat.donate.Activities.initialSetup.Step1; +import net.andchat.donate.Backend.Crypt; +import net.andchat.donate.Backend.IRCDb; +import net.andchat.donate.IRCApp; +import net.andchat.donate.Misc.Backup; +import net.andchat.donate.Misc.ServerProfile; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Activities: +// PreferenceParent, Main, PasswordActivity, CharsetPicker + +public class Preferences extends PreferenceParent + implements android.preference.Preference.OnPreferenceClickListener +{ + public static final class About extends PreferenceParent + implements android.preference.Preference.OnPreferenceClickListener + { + + protected void onCreate(Bundle bundle) + { + super.onCreate(bundle); + addPreferencesFromResource(0x7f050000); + super.setTitle(0x7f0a0085); + findPreference("about").setOnPreferenceClickListener(this); + findPreference("changelog").setOnPreferenceClickListener(this); + findPreference("credits").setOnPreferenceClickListener(this); + bundle = (new StringBuilder("AndChat v")).append("1.4.3.2").append(" ("); + if (IRCApp.DONATE) + { + bundle.append("Donate"); + } else + { + bundle.append("Free"); + } + bundle.append(")"); + findPreference("versioninfo").setTitle(bundle); + } + + public Dialog onCreateDialog(int i) + { + Object obj; + Object obj1; + obj1 = ""; + obj = ""; + i; + JVM INSTR tableswitch 0 2: default 32 + // 0 126 + // 1 146 + // 2 163; + goto _L1 _L2 _L3 _L4 +_L1: + obj1 = (new android.app.AlertDialog.Builder(this)).setTitle(((CharSequence) (obj1))).setIcon(0x108009b); + View view = getLayoutInflater().inflate(0x7f030019, null); + TextView textview = (TextView)view.findViewById(0x7f08005f); + textview.setTextSize(18F); + textview.setText(((CharSequence) (obj))); + textview.setMovementMethod(new LinkMovementMethod()); + ((android.app.AlertDialog.Builder) (obj1)).setView(view); + ((android.app.AlertDialog.Builder) (obj1)).setNeutralButton(0x7f0a01d0, new android.content.DialogInterface.OnClickListener() { + + final About this$1; + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + } + + + { + this$1 = About.this; + super(); + } + }); + return ((android.app.AlertDialog.Builder) (obj1)).create(); +_L2: + obj1 = getString(0x7f0a01aa); + obj = Html.fromHtml(getString(0x7f0a01ab)); + continue; /* Loop/switch isn't completed */ +_L3: + obj1 = getString(0x7f0a01ad); + obj = getString(0x7f0a01ae); + continue; /* Loop/switch isn't completed */ +_L4: + obj1 = getString(0x7f0a01af); + obj = Html.fromHtml(getString(0x7f0a01b0)); + if (true) goto _L1; else goto _L5 +_L5: + } + + public boolean onPreferenceClick(Preference preference) + { + preference = preference.getKey(); + if (preference.equalsIgnoreCase("about")) + { + showDialog(0); + return true; + } + if (preference.equalsIgnoreCase("changelog")) + { + showDialog(1); + return true; + } + if (preference.equalsIgnoreCase("credits")) + { + showDialog(2); + return true; + } else + { + return false; + } + } + + public About() + { + } + } + + public static final class ActionBasedPreferenceLoader extends PreferenceParent + { + + protected void onCreate(Bundle bundle) + { + super.onCreate(bundle); + bundle = getIntent().getAction(); + int i; + int j; + if (bundle.equals("net.andchat.donate.Prefs.Messages_Rooms")) + { + j = 0x7f050008; + i = 0x7f0a0080; + } else + if (bundle.equals("net.andchat.donate.Prefs.Interface")) + { + j = 0x7f050006; + i = 0x7f0a0081; + } else + if (bundle.equals("net.andchat.donate.Prefs.Connection")) + { + j = 0x7f050002; + i = 0x7f0a0088; + } else + if (bundle.equals("net.andchat.donate.Prefs.Notifications")) + { + j = 0x7f050009; + i = 0x7f0a0082; + } else + if (bundle.equals("net.andchat.donate.Prefs.DEBUG")) + { + j = 0x7f050005; + i = 0x7f0a0089; + } else + { + throw new RuntimeException("missing action"); + } + addPreferencesFromResource(j); + if (i > 0) + { + super.setTitle(i); + } + if (j == 0x7f050006 && IRCApp.LEGACY_VERSION) + { + getPreferenceScreen().removePreference(findPreference(getString(0x7f0a0033))); + } + } + + public ActionBasedPreferenceLoader() + { + } + } + + public static final class ChatLogs extends PreferenceParent + implements android.preference.Preference.OnPreferenceClickListener + { + + private long getFolderSize(File file, int i) + { + long l = 0L; + if (i > 25) + { + return 0L; + } + file = file.listFiles(); + int j = file.length - 1; + do + { + if (j < 0) + { + return l; + } + File file1 = file[j]; + if (file1.isDirectory()) + { + int k = i + 1; + l += getFolderSize(file1, i); + i = k; + } else + { + l += file1.length(); + } + j--; + } while (true); + } + + protected void onCreate(Bundle bundle) + { + super.onCreate(bundle); + addPreferencesFromResource(0x7f050001); + findPreference("info").setOnPreferenceClickListener(this); + super.setTitle(0x7f0a0086); + } + + protected Dialog onCreateDialog(int i) + { + android.app.AlertDialog.Builder builder; + switch (i) + { + default: + return null; + + case 0: // '\0' + builder = new android.app.AlertDialog.Builder(this); + break; + } + builder.setTitle(0x7f0a019d); + builder.setIcon(0x108009b); + StringBuilder stringbuilder = new StringBuilder(); + Object obj = Environment.getExternalStorageDirectory(); + stringbuilder.append(getString(0x7f0a019e)).append(obj).append(File.separator).append("net.andchat.donate\n"); + stringbuilder.append(getString(0x7f0a019f)); + obj = new File(((File) (obj)), "net.andchat.donate"); + TextView textview; + if (!((File) (obj)).exists()) + { + stringbuilder.append(getString(0x7f0a01a0)); + } else + { + long l1 = getFolderSize(((File) (obj)), 0); + long l = l1; + if (l1 != 0L) + { + l = l1 / 1024L; + } + stringbuilder.append(">"); + if (l >= 1024L) + { + stringbuilder.append(l / 1024L).append(" MB \n"); + } else + { + stringbuilder.append(l).append(" KB \n"); + } + } + stringbuilder.append(getString(0x7f0a01a1)); + stringbuilder.append(Environment.getExternalStorageState()).append("\n"); + obj = getLayoutInflater().inflate(0x7f030019, null); + textview = (TextView)((View) (obj)).findViewById(0x7f08005f); + textview.setTextSize(20F); + textview.setText(stringbuilder); + builder.setView(((View) (obj))); + builder.setNeutralButton(0x7f0a01d0, new android.content.DialogInterface.OnClickListener() { + + final ChatLogs this$1; + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + } + + + { + this$1 = ChatLogs.this; + super(); + } + }); + return builder.create(); + } + + public boolean onPreferenceClick(Preference preference) + { + showDialog(0); + return true; + } + + public ChatLogs() + { + } + } + + public static final class DataBackup extends PreferenceParent + implements android.preference.Preference.OnPreferenceClickListener + { + + private static final Comparator sFileComparator = new Comparator() { + + public int compare(File file, File file1) + { + long l = file.lastModified(); + long l1 = file1.lastModified(); + if (l > l1) + { + return -1; + } + return l >= l1 ? 0 : 1; + } + + public volatile int compare(Object obj, Object obj1) + { + return compare((File)obj, (File)obj1); + } + + }; + private Backup mBackup; + public final Handler mHandler = new _cls2(); + private net.andchat.donate.Misc.Backup.BackupOp mTask; + + private void disablePreference(Preference preference, int i) + { + i; + JVM INSTR tableswitch 0 1: default 24 + // 0 30 + // 1 39; + goto _L1 _L2 _L3 +_L1: + preference.setEnabled(false); + return; +_L2: + preference.setTitle(0x7f0a0190); + continue; /* Loop/switch isn't completed */ +_L3: + preference.setTitle(0x7f0a0191); + if (true) goto _L1; else goto _L4 +_L4: + } + + private void enablePreference(Preference preference, int i) + { + i; + JVM INSTR tableswitch 0 1: default 24 + // 0 30 + // 1 39; + goto _L1 _L2 _L3 +_L1: + preference.setEnabled(true); + return; +_L2: + preference.setTitle(0x7f0a00d1); + continue; /* Loop/switch isn't completed */ +_L3: + preference.setTitle(0x7f0a00d0); + if (true) goto _L1; else goto _L4 +_L4: + } + + protected void onActivityResult(int i, int j, Intent intent) + { + super.onActivityResult(i, j, intent); + if (i == 0 && j == -1) + { + disablePreference(findPreference("import_trigger"), 1); + mTask = new net.andchat.donate.Misc.Backup.BackupOp(1, this, mBackup, new File(intent.getData().getPath()), mHandler); + mTask.start(); + } + } + + protected void onCreate(Bundle bundle) + { + super.onCreate(bundle); + addPreferencesFromResource(0x7f050003); + findPreference("export_trigger").setOnPreferenceClickListener(this); + findPreference("import_trigger").setOnPreferenceClickListener(this); + Object aobj[] = (Object[])getLastNonConfigurationInstance(); + if (aobj != null) + { + if (aobj[0] == null) + { + bundle = new Backup(); + } else + { + bundle = (Backup)aobj[0]; + } + mBackup = bundle; + if (aobj[1] == null) + { + bundle = null; + } else + { + bundle = (net.andchat.donate.Misc.Backup.BackupOp)aobj[1]; + } + mTask = bundle; + if (mTask != null && mTask.mRunning.get()) + { + mTask.mHandler = mHandler; + if (mTask.opType == 0) + { + bundle = "export_trigger"; + } else + { + bundle = "import_trigger"; + } + disablePreference(findPreference(bundle), mTask.opType); + } + } + super.setTitle(0x7f0a0087); + } + + protected Dialog onCreateDialog(int i) + { + switch (i) + { + default: + return null; + + case 0: // '\0' + Dialog dialog = new Dialog(this); + dialog.setTitle(0x7f0a017f); + dialog.setContentView(0x7f030017); + android.view.View.OnClickListener onclicklistener = dialog. new android.view.View.OnClickListener() { + + final DataBackup this$1; + private final Dialog val$d; + + public void onClick(View view) + { + switch (view.getId()) + { + default: + return; + + case 2131230807: + d.dismiss(); + return; + + case 2131230806: + d.dismiss(); + view = new Intent("android.intent.action.GET_CONTENT"); + view.setType("text/*"); + view.addFlags(0x80000); + break; + } + if (getPackageManager().queryIntentActivities(view, 0x10000).size() > 0) + { + startActivityForResult(Intent.createChooser(view, getString(0x7f0a0180)), 0); + return; + } else + { + showDialog(2); + return; + } + } + + + { + this$1 = final_databackup; + d = Dialog.this; + super(); + } + }; + dialog.findViewById(0x7f080057).setOnClickListener(onclicklistener); + dialog.findViewById(0x7f080056).setOnClickListener(onclicklistener); + dialog.findViewById(0x7f080055).setOnClickListener(dialog. new android.view.View.OnClickListener() { + + final DataBackup this$1; + private final Dialog val$d; + + public void onClick(View view) + { + view = (EditText)d.findViewById(0x7f080058); + disablePreference(findPreference("import_trigger"), 1); + view = view.getText().toString(); + d.dismiss(); + mTask = new net.andchat.donate.Misc.Backup.BackupOp(1, DataBackup.this, mBackup, new File(view), mHandler); + mTask.start(); + } + + + { + this$1 = final_databackup; + d = Dialog.this; + super(); + } + }); + return dialog; + + case 1: // '\001' + android.app.AlertDialog.Builder builder1 = new android.app.AlertDialog.Builder(this); + net.andchat.donate.Misc.Backup.Stats stats = mBackup.getStats(); + Object obj; + boolean flag; + final boolean failed; + if (stats.opType == 0) + { + flag = true; + } else + { + flag = false; + } + if (stats.exception != null) + { + failed = true; + } else + { + failed = false; + } + if (flag) + { + obj = "export_trigger"; + } else + { + obj = "import_trigger"; + } + obj = findPreference(((CharSequence) (obj))); + if (flag) + { + i = 0; + } else + { + i = 1; + } + enablePreference(((Preference) (obj)), i); + builder1.setNeutralButton(0x7f0a01d0, flag. new android.content.DialogInterface.OnClickListener() { + + final DataBackup this$1; + private final boolean val$export; + private final boolean val$failed; + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + if (!failed && !export) + { + ((IRCApp)getApplication()).clearCrypt(); + startActivity((new Intent(DataBackup.this, net/andchat/donate/Activities/Main)).setFlags(0x4000000)); + } + } + + + { + this$1 = final_databackup; + failed = flag; + export = Z.this; + super(); + } + }); + if (flag) + { + i = 0x7f0a0188; + } else + { + i = 0x7f0a0187; + } + builder1.setTitle(i); + if (stats.exception != null) + { + if (flag) + { + i = 0x7f0a0184; + } else + { + i = 0x7f0a0183; + } + builder1.setTitle(i); + builder1.setMessage((new StringBuilder(String.valueOf(getString(0x7f0a0186)))).append(" ").append(stats.exception.getClass().getCanonicalName()).append("\n\n").append(getString(0x7f0a0185)).append(" ").append(stats.exception.getMessage()).toString()); + builder1.setIcon(0x1080027); + return builder1.create(); + } + builder1.setIcon(0x108009b); + StringBuilder stringbuilder; + if (flag) + { + i = 0x7f0a0182; + } else + { + i = 0x7f0a0181; + } + builder1.setTitle(i); + if (flag) + { + obj = "\n"; + } else + { + obj = "
"; + } + stringbuilder = new StringBuilder(); + if (flag) + { + i = 0x7f0a0188; + } else + { + i = 0x7f0a0187; + } + stringbuilder.append(getString(i)).append(((String) (obj))); + stringbuilder.append(getString(0x7f0a018c, new Object[] { + Integer.valueOf(stats.goodServers), Integer.valueOf(stats.totalServers) + })).append(((String) (obj))); + stringbuilder.append(getString(0x7f0a018d, new Object[] { + Integer.valueOf(stats.goodPreferences), Integer.valueOf(stats.totalPreferences) + })).append(((String) (obj))); + if (stats.crypt) + { + if (flag) + { + i = 0x7f0a0193; + } else + { + i = 0x7f0a0192; + } + stringbuilder.append(getString(0x7f0a018e, new Object[] { + getString(i) + })).append(((String) (obj))); + } + if (flag) + { + stringbuilder.append(((String) (obj))).append(getString(0x7f0a018f, new Object[] { + stats.fileName + })); + } else + { + stringbuilder.append(((String) (obj))).append((new StringBuilder("")).append(getString(0x7f0a0189)).append("").toString()); + } + if (flag) + { + obj = stringbuilder; + } else + { + obj = Html.fromHtml(stringbuilder.toString()); + } + builder1.setMessage(((CharSequence) (obj))); + mTask = null; + return builder1.create(); + + case 2: // '\002' + android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this); + builder.setIcon(0x1080027); + builder.setTitle(0x7f0a018a); + builder.setMessage(0x7f0a018b); + builder.setNeutralButton(0x7f0a01d0, new android.content.DialogInterface.OnClickListener() { + + final DataBackup this$1; + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + } + + + { + this$1 = DataBackup.this; + super(); + } + }); + return builder.create(); + } + } + + public boolean onPreferenceClick(Preference preference) + { + String s; + mBackup = new Backup(); + s = preference.getKey(); + if (!s.equals("export_trigger")) goto _L2; else goto _L1 +_L1: + disablePreference(preference, 0); + mTask = new net.andchat.donate.Misc.Backup.BackupOp(0, this, mBackup, new File(""), mHandler); + mTask.start(); +_L4: + return true; +_L2: + if (s.equals("import_trigger")) + { + showDialog(0); + } + if (true) goto _L4; else goto _L3 +_L3: + } + + protected void onPrepareDialog(int i, Dialog dialog) + { + EditText edittext; + switch (i) + { + default: + return; + + case 0: // '\0' + edittext = (EditText)dialog.findViewById(0x7f080058); + break; + } + if (mBackup != null && mBackup.getStats() != null) + { + dialog = mBackup.getStats().fileName; + if (dialog != null) + { + edittext.setText(dialog); + } else + { + edittext.setText((new StringBuilder()).append(Environment.getExternalStorageDirectory()).append(File.separator).toString()); + } + } else + { + Object obj = null; + File file = new File((new StringBuilder()).append(Environment.getExternalStorageDirectory()).append(File.separator).append("net.andchat.donate").append(File.separator).append("Backups").toString()); + dialog = (File[])null; + dialog = obj; + if (file.isDirectory()) + { + File afile[] = file.listFiles(); + dialog = obj; + if (afile != null) + { + if (afile.length > 1) + { + Arrays.sort(afile, sFileComparator); + } + if (afile.length > 0) + { + dialog = afile[0].toString(); + } else + { + dialog = null; + } + } + } + if (dialog != null) + { + edittext.setText(dialog); + } else + { + edittext.setText((new StringBuilder()).append(Environment.getExternalStorageDirectory()).append(File.separator).toString()); + } + } + edittext.setSelection(edittext.length()); + } + + public Object onRetainNonConfigurationInstance() + { + if (mBackup == null && mTask == null) + { + return null; + } else + { + return ((Object) (new Object[] { + mBackup, mTask + })); + } + } + + protected void onStart() + { + super.onStart(); + if (mTask != null) + { + mTask.showDialog = true; + } + } + + protected void onStop() + { + super.onStop(); + if (mTask != null) + { + mTask.showDialog = false; + } + } + + + + + + + public DataBackup() + { + } + } + + public static final class DataSecurity extends PreferenceParent + implements android.preference.Preference.OnPreferenceClickListener + { + + private int actType; + private boolean wasChecked; + + protected void onActivityResult(int i, int j, Intent intent) + { + boolean flag; + flag = true; + super.onActivityResult(i, j, intent); + i; + JVM INSTR tableswitch 0 1: default 32 + // 0 208 + // 1 33; + goto _L1 _L2 _L3 +_L1: + return; +_L3: + if (actType != 0) + { + continue; /* Loop/switch isn't completed */ + } + if (j == -1) + { + ((CheckBoxPreference)findPreference(getString(0x7f0a001d))).setChecked(false); + i = Utils.getIRCDb(this).decryptAll(); + ((IRCApp)getApplication()).clearCrypt(); + ((CheckBoxPreference)findPreference(getString(0x7f0a001e))).setChecked(false); + if (i == 0) + { + Toast.makeText(this, 0x7f0a019b, 0).show(); + return; + } else + { + Toast.makeText(this, getResources().getQuantityString(0x7f0e0004, i, new Object[] { + Integer.valueOf(i) + }), 0).show(); + return; + } + } + continue; /* Loop/switch isn't completed */ + if (actType != 1 || j != -1) goto _L1; else goto _L4 +_L4: + i = Utils.getIRCDb(this).encryptAll(); + if (i == 0) + { + Toast.makeText(this, 0x7f0a019a, 0).show(); + return; + } else + { + Toast.makeText(this, getResources().getQuantityString(0x7f0e0003, i, new Object[] { + Integer.valueOf(i) + }), 0).show(); + return; + } +_L2: + if (j != -1) + { + flag = false; + } + ((CheckBoxPreference)findPreference(getString(0x7f0a001d))).setChecked(flag); + if (flag) + { + Toast.makeText(this, 0x7f0a019c, 0).show(); + return; + } + if (true) goto _L1; else goto _L5 +_L5: + } + + protected void onCreate(Bundle bundle) + { + super.onCreate(bundle); + addPreferencesFromResource(0x7f050004); + findPreference(getString(0x7f0a001d)).setOnPreferenceClickListener(this); + findPreference("trigger").setOnPreferenceClickListener(this); + super.setTitle(0x7f0a0083); + } + + public boolean onPreferenceClick(Preference preference) + { + String s = preference.getKey(); + if (!s.equals(getString(0x7f0a001d))) goto _L2; else goto _L1 +_L1: + preference = (CheckBoxPreference)preference; + boolean flag; + if (preference.isChecked()) + { + flag = false; + } else + { + flag = true; + } + wasChecked = flag; + if (!wasChecked) goto _L4; else goto _L3 +_L3: + preference.setChecked(wasChecked); + actType = 0; + preference = (new StringBuilder()).append(getString(0x7f0a011e)); + if (wasChecked) + { + preference.append(getString(0x7f0a0198)); + } + preference.append(":"); + startActivityForResult((new Intent(this, net/andchat/donate/Activities/PasswordActivity)).putExtra("action", 1).putExtra("message", preference.toString()), 1); +_L6: + return false; +_L4: + preference.setChecked(wasChecked); + startActivityForResult((new Intent(this, net/andchat/donate/Activities/PasswordActivity)).putExtra("action", 0).putExtra("message", getString(0x7f0a0199)), 0); + return false; +_L2: + if (s.equals("trigger")) + { + if (!Utils.getCrypt(this).correctPass()) + { + actType = 1; + startActivityForResult((new Intent(this, net/andchat/donate/Activities/PasswordActivity)).putExtra("action", 1).putExtra("message", (new StringBuilder(String.valueOf(getString(0x7f0a011e)))).append(":").toString()), 1); + return false; + } + int i = Utils.getIRCDb(this).encryptAll(); + if (i == 0) + { + Toast.makeText(this, 0x7f0a019a, 0).show(); + return false; + } else + { + Toast.makeText(this, getResources().getQuantityString(0x7f0e0003, i, new Object[] { + Integer.valueOf(i) + }), 0).show(); + return false; + } + } + if (true) goto _L6; else goto _L5 +_L5: + } + + protected void onRestoreInstanceState(Bundle bundle) + { + super.onRestoreInstanceState(bundle); + actType = bundle.getInt("acttype"); + } + + protected void onSaveInstanceState(Bundle bundle) + { + super.onSaveInstanceState(bundle); + bundle.putInt("acttype", actType); + } + + public DataSecurity() + { + } + } + + public static final class ServerProfiles extends PreferenceParent + implements android.content.DialogInterface.OnClickListener, android.content.DialogInterface.OnMultiChoiceClickListener, android.preference.Preference.OnPreferenceClickListener + { + + private int mApplyToMask; + private Preference mEncoding; + private final String mKeys[] = new String[2]; + + protected void onActivityResult(int i, int j, Intent intent) + { + super.onActivityResult(i, j, intent); + i; + JVM INSTR tableswitch 5 5: default 28 + // 5 29; + goto _L1 _L2 +_L1: + return; +_L2: + if (j != 0) + { + intent = intent.getStringExtra("selection"); + mEncoding.setTitle(intent); + Utils.getPrefs(this).edit().putString(mKeys[0], intent).commit(); + return; + } + if (true) goto _L1; else goto _L3 +_L3: + } + + public void onClick(DialogInterface dialoginterface, int i) + { + switch (i) + { + default: + return; + + case -1: + int j = mApplyToMask; + dialoginterface = Utils.getIRCDb(this); + List list = dialoginterface.getList(); + int k = list.size(); + if (j == 0) + { + Toast.makeText(this, 0x7f0a0196, 0).show(); + return; + } + if (k == 0) + { + Toast.makeText(this, 0x7f0a0197, 0).show(); + return; + } + String s = Utils.getDefaultServerProfileValue(0x7f0a0001, this); + String s1 = Utils.getDefaultServerProfileValue(0x7f0a0002, this); + String s2 = Utils.getDefaultServerProfileValue(0x7f0a0003, this); + String s3 = Utils.getDefaultServerProfileValue(0x7f0a0004, this); + String s4 = Utils.getDefaultServerProfileValue(0x7f0a0005, this); + String s5 = Utils.getDefaultServerProfileValue(0x7f0a0006, this); + ArrayList arraylist = new ArrayList(k); + i = 0; + do + { + if (i >= k) + { + dialoginterface.updateMultiple(arraylist); + Toast.makeText(this, getResources().getQuantityString(0x7f0e0002, k, new Object[] { + Integer.valueOf(k) + }), 0).show(); + return; + } + ServerProfile serverprofile = dialoginterface.getDetailsForId(dialoginterface.getId((String)list.get(i))); + if (Utils.isBitSet(j, 1)) + { + serverprofile.setNick(1, s); + } + if (Utils.isBitSet(j, 2)) + { + serverprofile.setNick(2, s1); + } + if (Utils.isBitSet(j, 4)) + { + serverprofile.setNick(3, s2); + } + if (Utils.isBitSet(j, 8)) + { + serverprofile.setRealname(s3); + } + if (Utils.isBitSet(j, 16)) + { + serverprofile.setUsername(s4); + } + if (Utils.isBitSet(j, 32)) + { + serverprofile.setCharset(s5); + } + arraylist.add(serverprofile); + i++; + } while (true); + + case -2: + dialoginterface.dismiss(); + return; + } + } + + public void onClick(DialogInterface dialoginterface, int i, boolean flag) + { + switch (i) + { + default: + return; + + case 0: // '\0' + if (flag) + { + i = mApplyToMask | 1; + } else + { + i = mApplyToMask & -2; + } + mApplyToMask = i; + return; + + case 1: // '\001' + if (flag) + { + i = mApplyToMask | 2; + } else + { + i = mApplyToMask & -3; + } + mApplyToMask = i; + return; + + case 2: // '\002' + if (flag) + { + i = mApplyToMask | 4; + } else + { + i = mApplyToMask & -5; + } + mApplyToMask = i; + return; + + case 3: // '\003' + if (flag) + { + i = mApplyToMask | 8; + } else + { + i = mApplyToMask & -9; + } + mApplyToMask = i; + return; + + case 4: // '\004' + if (flag) + { + i = mApplyToMask | 0x10; + } else + { + i = mApplyToMask & 0xffffffef; + } + mApplyToMask = i; + return; + + case 5: // '\005' + break; + } + if (flag) + { + i = mApplyToMask | 0x20; + } else + { + i = mApplyToMask & 0xffffffdf; + } + mApplyToMask = i; + } + + protected void onCreate(Bundle bundle) + { + super.onCreate(bundle); + addPreferencesFromResource(0x7f05000a); + bundle = getString(0x7f0a000f); + mKeys[0] = bundle; + mEncoding = findPreference(bundle); + Preference preference = mEncoding; + preference.setTitle(Utils.getPrefs(this).getString(bundle, getString(0x7f0a0006))); + preference.setOnPreferenceClickListener(this); + bundle = getString(0x7f0a002d); + mKeys[1] = bundle; + findPreference(bundle).setOnPreferenceClickListener(this); + super.setTitle(0x7f0a0084); + } + + protected Dialog onCreateDialog(int i) + { + switch (i) + { + default: + return null; + + case 0: // '\0' + return (new android.app.AlertDialog.Builder(this)).setIcon(0x108009b).setMultiChoiceItems(0x7f0b0000, null, this).setTitle(0x7f0a0194).setPositiveButton(0x7f0a0195, this).setNegativeButton(0x7f0a01d2, this).create(); + } + } + + public boolean onPreferenceClick(Preference preference) + { + String as[] = mKeys; + preference = preference.getKey(); + if (preference.equals(as[0])) + { + startActivityForResult(new Intent(this, net/andchat/donate/Activities/CharsetPicker), 5); + return true; + } + if (preference.equals(as[1])) + { + showDialog(0); + return true; + } else + { + return false; + } + } + + public ServerProfiles() + { + } + } + + + public Preferences() + { + } + + protected void onCreate(Bundle bundle) + { + super.onCreate(bundle); + addPreferencesFromResource(0x7f050007); + findPreference("first_run").setOnPreferenceClickListener(this); + setResult(-1); + super.setTitle(0x7f0a007f); + } + + protected void onDestroy() + { + ((IRCApp)getApplication()).notifyWatchers(); + super.onDestroy(); + } + + public boolean onPreferenceClick(Preference preference) + { + if (preference.getKey().equals("first_run")) + { + startActivity(new Intent(this, net/andchat/donate/Activities/initialSetup/Step1)); + finish(); + return true; + } else + { + return false; + } + } + + // Unreferenced inner class net/andchat/donate/Activities/Preferences$DataBackup$2 + +/* anonymous class */ + class DataBackup._cls2 extends Handler + { + + final DataBackup this$1; + + public void handleMessage(Message message) + { + switch (message.what) + { + default: + return; + + case 1: // '\001' + case 2: // '\002' + showDialog(1); + return; + + case 0: // '\0' + removeDialog(1); + return; + } + } + + + { + this$1 = DataBackup.this; + super(); + } + } + +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$1.java b/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$1.java new file mode 100644 index 0000000..cf43716 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$1.java @@ -0,0 +1,46 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.text.Editable; +import android.text.TextWatcher; +import android.widget.EditText; + +// Referenced classes of package net.andchat.donate.Activities: +// ServerDetailsActivity + +class this._cls0 + implements TextWatcher +{ + + final ServerDetailsActivity this$0; + + public void afterTextChanged(Editable editable) + { + if (editable.length() > 0) + { + ServerDetailsActivity.access$0(ServerDetailsActivity.this).setError(null); + return; + } else + { + ServerDetailsActivity.access$0(ServerDetailsActivity.this).setError(getString(0x7f0a0144)); + return; + } + } + + public void beforeTextChanged(CharSequence charsequence, int i, int j, int k) + { + } + + public void onTextChanged(CharSequence charsequence, int i, int j, int k) + { + } + + () + { + this$0 = ServerDetailsActivity.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$2.java b/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$2.java new file mode 100644 index 0000000..483ddea --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$2.java @@ -0,0 +1,46 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.text.Editable; +import android.text.TextWatcher; +import android.widget.EditText; + +// Referenced classes of package net.andchat.donate.Activities: +// ServerDetailsActivity + +class this._cls0 + implements TextWatcher +{ + + final ServerDetailsActivity this$0; + + public void afterTextChanged(Editable editable) + { + if (editable.length() > 0) + { + ServerDetailsActivity.access$1(ServerDetailsActivity.this).setError(null); + return; + } else + { + ServerDetailsActivity.access$1(ServerDetailsActivity.this).setError(getString(0x7f0a0145)); + return; + } + } + + public void beforeTextChanged(CharSequence charsequence, int i, int j, int k) + { + } + + public void onTextChanged(CharSequence charsequence, int i, int j, int k) + { + } + + () + { + this$0 = ServerDetailsActivity.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$3.java b/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$3.java new file mode 100644 index 0000000..fce75c5 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$3.java @@ -0,0 +1,74 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.text.Editable; +import android.text.TextWatcher; +import android.widget.EditText; + +// Referenced classes of package net.andchat.donate.Activities: +// ServerDetailsActivity + +class this._cls0 + implements TextWatcher +{ + + final ServerDetailsActivity this$0; + + public void afterTextChanged(Editable editable) + { + editable = editable.toString(); + if (editable.length() <= 0) + { + break MISSING_BLOCK_LABEL_126; + } + int i = Integer.parseInt(editable); + if (i == 0) + { + try + { + ServerDetailsActivity.access$2(ServerDetailsActivity.this).setError(getString(0x7f0a0146)); + return; + } + // Misplaced declaration of an exception variable + catch (Editable editable) + { + ServerDetailsActivity.access$2(ServerDetailsActivity.this).setError(getString(0x7f0a0149)); + } + break MISSING_BLOCK_LABEL_87; + } + if (i >= 0) + { + break MISSING_BLOCK_LABEL_88; + } + ServerDetailsActivity.access$2(ServerDetailsActivity.this).setError(getString(0x7f0a0147)); + return; + return; + if (i <= 65535) + { + break MISSING_BLOCK_LABEL_114; + } + ServerDetailsActivity.access$2(ServerDetailsActivity.this).setError(getString(0x7f0a0148)); + return; + ServerDetailsActivity.access$2(ServerDetailsActivity.this).setError(null); + return; + ServerDetailsActivity.access$2(ServerDetailsActivity.this).setError(null); + return; + } + + public void beforeTextChanged(CharSequence charsequence, int i, int j, int k) + { + } + + public void onTextChanged(CharSequence charsequence, int i, int j, int k) + { + } + + () + { + this$0 = ServerDetailsActivity.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$4.java b/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$4.java new file mode 100644 index 0000000..b3961e4 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$4.java @@ -0,0 +1,29 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.DialogInterface; + +// Referenced classes of package net.andchat.donate.Activities: +// ServerDetailsActivity + +class this._cls0 + implements android.content.istener +{ + + final ServerDetailsActivity this$0; + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + finish(); + } + + () + { + this$0 = ServerDetailsActivity.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$5.java b/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$5.java new file mode 100644 index 0000000..84e726f --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$5.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.DialogInterface; + +// Referenced classes of package net.andchat.donate.Activities: +// ServerDetailsActivity + +class this._cls0 + implements android.content.istener +{ + + final ServerDetailsActivity this$0; + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + } + + () + { + this$0 = ServerDetailsActivity.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$6.java b/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$6.java new file mode 100644 index 0000000..84e726f --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$6.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.DialogInterface; + +// Referenced classes of package net.andchat.donate.Activities: +// ServerDetailsActivity + +class this._cls0 + implements android.content.istener +{ + + final ServerDetailsActivity this$0; + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + } + + () + { + this$0 = ServerDetailsActivity.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$7.java b/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$7.java new file mode 100644 index 0000000..84e726f --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity$7.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.DialogInterface; + +// Referenced classes of package net.andchat.donate.Activities: +// ServerDetailsActivity + +class this._cls0 + implements android.content.istener +{ + + final ServerDetailsActivity this$0; + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + } + + () + { + this$0 = ServerDetailsActivity.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity.java b/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity.java new file mode 100644 index 0000000..747a652 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/ServerDetailsActivity.java @@ -0,0 +1,947 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.ActionBar; +import android.app.Activity; +import android.app.Dialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.Window; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.EditText; +import android.widget.TextView; +import android.widget.Toast; +import net.andchat.donate.Backend.Crypt; +import net.andchat.donate.Backend.IRCDb; +import net.andchat.donate.IRCApp; +import net.andchat.donate.Misc.ServerProfile; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Activities: +// PasswordActivity, CharsetPicker, AuthPicker, Main + +public class ServerDetailsActivity extends Activity + implements android.view.View.OnClickListener, com.markupartist.android.widget.ActionBar.ActionBarItemClickHandler +{ + + private static boolean madeReq; + private static boolean shouldClick; + private int actType; + private com.markupartist.android.widget.ActionBar mActions; + private EditText mAddr; + private boolean mAmEditing; + private Button mAuthPicker; + private EditText mAutojoin; + private EditText mAutorun; + private Animation mBounce; + private Button mCharsetPicker; + private IRCDb mDb; + private ServerProfile mDetails; + private Button mEnableLogging; + private String mEncoding; + private boolean mGlobalLoggingEnabled; + private boolean mIsNew; + private EditText mLabel; + private CheckBox mLogs; + private EditText mNick1; + private EditText mNick2; + private EditText mNick3; + private EditText mPort; + private ServerProfile mProfileCopy; + private EditText mRealName; + private CheckBox mSSL; + private String mServLabel; + private boolean mUseEncryption; + private EditText mUserName; + + public ServerDetailsActivity() + { + mDb = null; + } + + private void addServer() + { + String s = mLabel.getText().toString().trim(); + String s1 = mAddr.getText().toString().trim(); + if (s.equals("")) + { + mLabel.requestFocus(); + mLabel.setError(getString(0x7f0a0144)); + return; + } + if (s1.equals("")) + { + mAddr.requestFocus(); + mAddr.setError(getString(0x7f0a0145)); + return; + } else + { + mProfileCopy.setServerDetails(s, s1, Utils.parseInt(mPort.getText().toString(), -1), mSSL.isChecked()); + s = mNick1.getText().toString().trim(); + s1 = mNick2.getText().toString().trim(); + String s2 = mNick3.getText().toString().trim(); + String s3 = mUserName.getText().toString().trim(); + String s4 = mRealName.getText().toString().trim(); + mProfileCopy.setUserDetails(s, s1, s2, s3, s4); + s = mAutojoin.getText().toString().trim(); + s1 = mAutorun.getText().toString().trim(); + mProfileCopy.setOtherDetails(s, s1, mEncoding, mLogs.isChecked()); + commit(mProfileCopy); + return; + } + } + + private void cancelAdd() + { + setResult(0); + finish(); + } + + private void commit(ServerProfile serverprofile) + { + if (!mIsNew) goto _L2; else goto _L1 +_L1: + if (!mUseEncryption) goto _L4; else goto _L3 +_L3: + if (serverprofile.getAuthModes() <= 0) goto _L6; else goto _L5 +_L5: + if (Utils.getCrypt(this).correctPass()) goto _L8; else goto _L7 +_L7: + shouldClick = true; + serverprofile = new Intent(this, net/andchat/donate/Activities/PasswordActivity); + serverprofile.putExtra("action", 1); + serverprofile.putExtra("message", getString(0x7f0a011d, new Object[] { + getString(0x7f0a0121) + })); + actType = 1; + startActivityForResult(serverprofile, 1); +_L11: + return; +_L8: + serverprofile.encryptSelf(Utils.getCrypt(this)); +_L4: + int i; + serverprofile.setUsesEncryption(mUseEncryption); + serverprofile.fillDefaults(this); + serverprofile.fillPort(this); + i = mDb.addServer(serverprofile); + if (i == -2) + { + mLabel.requestFocus(); + mLabel.setError(getString(0x7f0a014a)); + return; + } + break; /* Loop/switch isn't completed */ +_L6: + mUseEncryption = false; + if (true) goto _L4; else goto _L9 +_L9: + if (i != -1) + { + Toast.makeText(this, 0x7f0a014c, 0).show(); + setResult(-1, (new Intent()).putExtra("label", serverprofile.getName())); + finish(); + return; + } else + { + showDialog(3); + return; + } +_L2: + if (mAmEditing) + { + int j; + if (mUseEncryption) + { + if (serverprofile.getAuthModes() > 0) + { + if (!Utils.getCrypt(this).correctPass()) + { + shouldClick = true; + serverprofile = new Intent(this, net/andchat/donate/Activities/PasswordActivity); + serverprofile.putExtra("action", 1); + serverprofile.putExtra("message", getString(0x7f0a011d, new Object[] { + getString(0x7f0a0121) + })); + actType = 1; + startActivityForResult(serverprofile, 1); + return; + } + serverprofile.encryptSelf(Utils.getCrypt(this)); + } else + { + mUseEncryption = false; + } + } + serverprofile.setUsesEncryption(mUseEncryption); + serverprofile.fillDefaults(this); + serverprofile.fillPort(this); + j = mDb.editServer(mServLabel, serverprofile); + if (j == -2) + { + mLabel.requestFocus(); + mLabel.setError(getString(0x7f0a014a)); + return; + } + if (j > 0) + { + Toast.makeText(this, 0x7f0a014d, 0).show(); + setResult(-1, (new Intent()).putExtra("label", mServLabel)); + finish(); + return; + } else + { + showDialog(3); + return; + } + } + if (true) goto _L11; else goto _L10 +_L10: + } + + private boolean shouldConfirmExit() + { + if (!mIsNew) goto _L2; else goto _L1 +_L1: + Object obj = Utils.getPrefs(this); + if (mLabel.length() == 0 && mAddr.length() == 0 && mPort.length() == 0 && (mNick1.length() == 0 || mNick1.getText().toString().equals(((SharedPreferences) (obj)).getString(getString(0x7f0a000a), null))) && (mNick2.length() == 0 || mNick2.getText().toString().equals(((SharedPreferences) (obj)).getString(getString(0x7f0a000b), null))) && (mNick3.length() == 0 || mNick3.getText().toString().equals(((SharedPreferences) (obj)).getString(getString(0x7f0a000c), null))) && (mUserName.length() == 0 || mUserName.getText().toString().equals(((SharedPreferences) (obj)).getString(getString(0x7f0a000d), null))) && (mRealName.length() == 0 || mRealName.getText().toString().equals(((SharedPreferences) (obj)).getString(getString(0x7f0a000e), null))) && mAutojoin.length() == 0 && mAutorun.length() == 0 && mProfileCopy.getAuthModes() <= 0) goto _L4; else goto _L3 +_L3: + return true; +_L2: + if (!mAmEditing) + { + break; /* Loop/switch isn't completed */ + } + obj = mDetails; + if (!mLabel.getText().toString().equals(((ServerProfile) (obj)).getName()) || !mAddr.getText().toString().equals(((ServerProfile) (obj)).getAddress()) || !mPort.getText().toString().equals(String.valueOf(((ServerProfile) (obj)).getPort())) || !mAutojoin.getText().toString().equals(((ServerProfile) (obj)).getAutojoinList()) || !mAutorun.getText().toString().equals(((ServerProfile) (obj)).getAutorunList()) || !mNick1.getText().toString().equals(((ServerProfile) (obj)).getNick(1)) || !mNick2.getText().toString().equals(((ServerProfile) (obj)).getNick(2)) || !mNick3.getText().toString().equals(((ServerProfile) (obj)).getNick(3)) || !mUserName.getText().toString().equals(((ServerProfile) (obj)).getUsername()) || !mRealName.getText().toString().equals(((ServerProfile) (obj)).getRealname())) goto _L3; else goto _L5 +_L5: + boolean flag; + if (mSSL.isChecked()) + { + flag = false; + } else + { + flag = true; + } + if (flag == ((ServerProfile) (obj)).usesSSL()) goto _L3; else goto _L6 +_L6: + if (mLogs.isChecked()) + { + flag = false; + } else + { + flag = true; + } + if (flag == ((ServerProfile) (obj)).isLoggingEnabled() || !mCharsetPicker.getText().toString().equals(((ServerProfile) (obj)).getCharset()) || mProfileCopy.getAuthModes() != ((ServerProfile) (obj)).getAuthModes() || !mProfileCopy.getServerPassword().equals(((ServerProfile) (obj)).getServerPassword()) || !mProfileCopy.getNickservPassword().equals(((ServerProfile) (obj)).getNickservPassword()) || !mProfileCopy.getSASLUsername().equals(((ServerProfile) (obj)).getSASLUsername()) || !mProfileCopy.getSASLPassword().equals(((ServerProfile) (obj)).getSASLPassword())) goto _L3; else goto _L4 +_L4: + return false; + } + + public boolean dispatchKeyEvent(KeyEvent keyevent) + { + if (keyevent.getKeyCode() == 4 && keyevent.getAction() == 0 && shouldConfirmExit()) + { + showDialog(1); + return true; + } else + { + return super.dispatchKeyEvent(keyevent); + } + } + + public void onActionBarItemClicked(com.markupartist.android.widget.ActionBar.GenericAction genericaction, View view) + { + switch (genericaction.getDrawable()) + { + default: + throw new RuntimeException("Unhandled drawable"); + + case 2130837553: + addServer(); + return; + + case 2130837543: + if (shouldConfirmExit()) + { + showDialog(1); + return; + } else + { + cancelAdd(); + return; + } + + case 2130837550: + showDialog(2); + return; + } + } + + protected void onActivityResult(int i, int j, Intent intent) + { + super.onActivityResult(i, j, intent); + i; + JVM INSTR tableswitch 1 7: default 52 + // 1 53 + // 2 52 + // 3 52 + // 4 52 + // 5 229 + // 6 256 + // 7 279; + goto _L1 _L2 _L1 _L1 _L1 _L3 _L4 _L5 +_L1: + return; +_L2: + madeReq = false; + actType; + JVM INSTR tableswitch 0 1: default 84 + // 0 85 + // 1 202; + goto _L6 _L7 _L8 +_L6: + return; +_L7: + if (j == -1) + { + break; /* Loop/switch isn't completed */ + } + if (j == 3) + { + Toast.makeText(this, 0x7f0a0120, 0).show(); + } + if (mAmEditing) + { + finish(); + return; + } + if (true) goto _L1; else goto _L9 +_L9: + if (mDetails != null) + { + intent = Utils.getCrypt(this); + if (!mDetails.isDecrypted()) + { + mDetails.decryptSelf(intent); + mProfileCopy.decryptSelf(intent); + } + mAddr.setText(mDetails.getAddress()); + mPort.setText(String.valueOf(mDetails.getPort())); + } + if (shouldClick) + { + shouldClick = false; + addServer(); + return; + } + continue; /* Loop/switch isn't completed */ +_L8: + if (j == -1) + { + addServer(); + return; + } + if (j == 3) + { + Toast.makeText(this, 0x7f0a0120, 0).show(); + return; + } + continue; /* Loop/switch isn't completed */ +_L3: + if (j != 0) + { + mEncoding = intent.getStringExtra("selection"); + mCharsetPicker.setText(mEncoding); + return; + } + continue; /* Loop/switch isn't completed */ +_L4: + if (j == -1) + { + mProfileCopy.cloneAuthDetailsFrom((ServerProfile)intent.getParcelableExtra("server_profile")); + return; + } + if (true) goto _L1; else goto _L5 +_L5: + intent = getString(0x7f0a0027); + mGlobalLoggingEnabled = Utils.getPrefs(this).getBoolean(intent, false); + if (mGlobalLoggingEnabled) + { + mEnableLogging.setVisibility(8); + mLogs.setEnabled(true); + mLogs.setVisibility(0); + mLogs.setChecked(true); + findViewById(0x7f080049).setVisibility(0); + return; + } + if (true) goto _L1; else goto _L10 +_L10: + } + + public void onClick(View view) + { + switch (view.getId()) + { + default: + return; + + case 2131230797: + startActivityForResult(new Intent(this, net/andchat/donate/Activities/CharsetPicker), 5); + return; + + case 2131230796: + view.requestFocus(); + view = new Intent(this, net/andchat/donate/Activities/AuthPicker); + view.putExtra("server_profile", mProfileCopy); + startActivityForResult(view, 6); + return; + + case 2131230795: + startActivityForResult(new Intent(this, net/andchat/donate/Activities/Preferences$ChatLogs), 7); + return; + } + } + + protected void onCreate(Bundle bundle) + { + int i; + boolean flag; + boolean flag1; + if (IRCApp.LEGACY_VERSION) + { + requestWindowFeature(7); + } else + { + getActionBar().setDisplayHomeAsUpEnabled(true); + } + super.onCreate(bundle); + mDb = Utils.getIRCDb(this); + setContentView(0x7f03000d); + bundle = Utils.getPrefs(this); + if (!bundle.getBoolean("add_server_help_shown", false)) + { + showDialog(2); + bundle.edit().putBoolean("add_server_help_shown", true).commit(); + } + mLabel = (EditText)findViewById(0x7f08003e); + i = mLabel.getWidth(); + mLabel.setMaxWidth(i); + mAddr = (EditText)findViewById(0x7f08003f); + mAddr.setMaxWidth(i); + mPort = (EditText)findViewById(0x7f080040); + mPort.setMaxWidth(i); + mSSL = (CheckBox)findViewById(0x7f080041); + mLogs = (CheckBox)findViewById(0x7f08004a); + mNick1 = (EditText)findViewById(0x7f080042); + mNick1.setMaxWidth(i); + mNick2 = (EditText)findViewById(0x7f080043); + mNick2.setMaxWidth(i); + mNick3 = (EditText)findViewById(0x7f080044); + mNick3.setMaxWidth(i); + mUserName = (EditText)findViewById(0x7f080045); + mUserName.setMaxWidth(i); + mRealName = (EditText)findViewById(0x7f080046); + mRealName.setMaxWidth(i); + mAutojoin = (EditText)findViewById(0x7f080047); + mAutojoin.setMaxWidth(i); + mAutorun = (EditText)findViewById(0x7f080048); + mAutorun.setMaxWidth(i); + mCharsetPicker = (Button)findViewById(0x7f08004d); + mCharsetPicker.setOnClickListener(this); + mAuthPicker = (Button)findViewById(0x7f08004c); + mAuthPicker.setOnClickListener(this); + mEnableLogging = (Button)findViewById(0x7f08004b); + mEnableLogging.setOnClickListener(this); + bundle = getIntent(); + flag = bundle.getBooleanExtra("new", false); + flag1 = bundle.getBooleanExtra("edit", false); + if (!flag && !flag1) + { + throw new IllegalArgumentException("No action specified!"); + } + SharedPreferences sharedpreferences = Utils.getPrefs(this); + mUseEncryption = sharedpreferences.getBoolean(getString(0x7f0a001d), false); + mGlobalLoggingEnabled = sharedpreferences.getBoolean(getString(0x7f0a0027), false); + if (!mGlobalLoggingEnabled) + { + mEnableLogging.setVisibility(0); + mLogs.setVisibility(8); + findViewById(0x7f080049).setVisibility(8); + } + mIsNew = flag; + mAmEditing = flag1; + if (flag1) + { + int j = bundle.getIntExtra("id", -1); + mDetails = mDb.getDetailsForId(j); + mProfileCopy = mDb.getDetailsForId(j); + if (mDetails == null) + { + Toast.makeText(this, 0x7f0a01d8, 1).show(); + finish(); + return; + } + if (mDetails.usesEncryption()) + { + bundle = Utils.getCrypt(this); + String s; + EditText edittext; + if (!bundle.correctPass()) + { + if (!madeReq) + { + madeReq = true; + shouldClick = false; + bundle = new Intent(this, net/andchat/donate/Activities/PasswordActivity); + bundle.putExtra("action", 1); + bundle.putExtra("message", getString(0x7f0a011d, new Object[] { + getString(0x7f0a0122) + })); + actType = 0; + startActivityForResult(bundle, 1); + } + } else + { + mDetails.decryptSelf(bundle); + mProfileCopy.decryptSelf(bundle); + } + } + mAddr.setText(mDetails.getAddress()); + mLabel.setText(mDetails.getName()); + mServLabel = mDetails.getName(); + mPort.setText(String.valueOf(mDetails.getPort())); + mSSL.setChecked(mDetails.usesSSL()); + mLogs.setChecked(mDetails.isLoggingEnabled()); + s = mDetails.getNick(1); + edittext = mNick1; + bundle = s; + if (TextUtils.isEmpty(s)) + { + bundle = sharedpreferences.getString(getString(0x7f0a000a), null); + } + edittext.setText(bundle); + s = mDetails.getNick(2); + edittext = mNick2; + bundle = s; + if (TextUtils.isEmpty(s)) + { + bundle = sharedpreferences.getString(getString(0x7f0a000b), null); + } + edittext.setText(bundle); + s = mDetails.getNick(3); + edittext = mNick3; + bundle = s; + if (TextUtils.isEmpty(s)) + { + bundle = sharedpreferences.getString(getString(0x7f0a000c), null); + } + edittext.setText(bundle); + s = mDetails.getUsername(); + edittext = mUserName; + bundle = s; + if (TextUtils.isEmpty(s)) + { + bundle = sharedpreferences.getString(getString(0x7f0a000e), null); + } + edittext.setText(bundle); + s = mDetails.getRealname(); + edittext = mRealName; + bundle = s; + if (TextUtils.isEmpty(s)) + { + bundle = sharedpreferences.getString(getString(0x7f0a000d), null); + } + edittext.setText(bundle); + mAutojoin.setText(mDetails.getAutojoinList()); + mAutorun.setText(mDetails.getAutorunList()); + s = mDetails.getCharset(); + bundle = s; + if (TextUtils.isEmpty(s)) + { + bundle = sharedpreferences.getString(getString(0x7f0a000f), "UTF-8"); + } + mEncoding = bundle; + mCharsetPicker.setText(bundle); + } else + { + mProfileCopy = new ServerProfile(); + mSSL.setChecked(sharedpreferences.getBoolean(getString(0x7f0a0009), false)); + mNick1.setText(sharedpreferences.getString(getString(0x7f0a000a), null)); + mNick2.setText(sharedpreferences.getString(getString(0x7f0a000b), null)); + mNick3.setText(sharedpreferences.getString(getString(0x7f0a000c), null)); + mUserName.setText(sharedpreferences.getString(getString(0x7f0a000d), null)); + mRealName.setText(sharedpreferences.getString(getString(0x7f0a000e), null)); + mCharsetPicker.setText(sharedpreferences.getString(getString(0x7f0a000f), "UTF-8")); + mLogs.setChecked(mGlobalLoggingEnabled); + } + mLabel.addTextChangedListener(new TextWatcher() { + + final ServerDetailsActivity this$0; + + public void afterTextChanged(Editable editable) + { + if (editable.length() > 0) + { + mLabel.setError(null); + return; + } else + { + mLabel.setError(getString(0x7f0a0144)); + return; + } + } + + public void beforeTextChanged(CharSequence charsequence, int k, int l, int i1) + { + } + + public void onTextChanged(CharSequence charsequence, int k, int l, int i1) + { + } + + + { + this$0 = ServerDetailsActivity.this; + super(); + } + }); + mAddr.addTextChangedListener(new TextWatcher() { + + final ServerDetailsActivity this$0; + + public void afterTextChanged(Editable editable) + { + if (editable.length() > 0) + { + mAddr.setError(null); + return; + } else + { + mAddr.setError(getString(0x7f0a0145)); + return; + } + } + + public void beforeTextChanged(CharSequence charsequence, int k, int l, int i1) + { + } + + public void onTextChanged(CharSequence charsequence, int k, int l, int i1) + { + } + + + { + this$0 = ServerDetailsActivity.this; + super(); + } + }); + mPort.addTextChangedListener(new TextWatcher() { + + final ServerDetailsActivity this$0; + + public void afterTextChanged(Editable editable) + { + editable = editable.toString(); + if (editable.length() <= 0) + { + break MISSING_BLOCK_LABEL_126; + } + int k = Integer.parseInt(editable); + if (k == 0) + { + try + { + mPort.setError(getString(0x7f0a0146)); + return; + } + // Misplaced declaration of an exception variable + catch (Editable editable) + { + mPort.setError(getString(0x7f0a0149)); + } + break MISSING_BLOCK_LABEL_87; + } + if (k >= 0) + { + break MISSING_BLOCK_LABEL_88; + } + mPort.setError(getString(0x7f0a0147)); + return; + return; + if (k <= 65535) + { + break MISSING_BLOCK_LABEL_114; + } + mPort.setError(getString(0x7f0a0148)); + return; + mPort.setError(null); + return; + mPort.setError(null); + return; + } + + public void beforeTextChanged(CharSequence charsequence, int k, int l, int i1) + { + } + + public void onTextChanged(CharSequence charsequence, int k, int l, int i1) + { + } + + + { + this$0 = ServerDetailsActivity.this; + super(); + } + }); + if (IRCApp.LEGACY_VERSION) + { + getWindow().setFeatureInt(7, 0x7f030006); + bundle = (com.markupartist.android.widget.ActionBar)getWindow().getDecorView().findViewById(0x7f080012); + (new net.andchat.donate.Misc.AbstractMenuInflator.ActionBarMenu(bundle, this)).addActionsFromXML(this, 0x7f0f0006); + bundle.setOnActionClickListener(this); + mActions = bundle; + } + if (flag) + { + setTitle(0x7f0a0092); + return; + } else + { + setTitle(getString(0x7f0a0093, new Object[] { + mServLabel + })); + return; + } + } + + protected Dialog onCreateDialog(int i) + { + android.app.AlertDialog.Builder builder2; + switch (i) + { + default: + return super.onCreateDialog(i); + + case 1: // '\001' + android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this); + builder.setTitle(0x7f0a014e); + builder.setIcon(0x1080027); + builder.setMessage(0x7f0a014f); + builder.setPositiveButton(0x7f0a01d3, new android.content.DialogInterface.OnClickListener() { + + final ServerDetailsActivity this$0; + + public void onClick(DialogInterface dialoginterface, int j) + { + dialoginterface.dismiss(); + finish(); + } + + + { + this$0 = ServerDetailsActivity.this; + super(); + } + }); + builder.setNegativeButton(0x7f0a01d4, new android.content.DialogInterface.OnClickListener() { + + final ServerDetailsActivity this$0; + + public void onClick(DialogInterface dialoginterface, int j) + { + dialoginterface.dismiss(); + } + + + { + this$0 = ServerDetailsActivity.this; + super(); + } + }); + return builder.create(); + + case 2: // '\002' + android.app.AlertDialog.Builder builder1 = new android.app.AlertDialog.Builder(this); + builder1.setNeutralButton(0x7f0a01d0, new android.content.DialogInterface.OnClickListener() { + + final ServerDetailsActivity this$0; + + public void onClick(DialogInterface dialoginterface, int j) + { + dialoginterface.dismiss(); + } + + + { + this$0 = ServerDetailsActivity.this; + super(); + } + }); + builder1.setTitle(0x7f0a0150); + builder1.setIcon(0x108009b); + View view = getLayoutInflater().inflate(0x7f030019, null); + TextView textview = (TextView)view.findViewById(0x7f08005f); + textview.setTextSize(18F); + textview.setText(getString(0x7f0a0151)); + builder1.setView(view); + return builder1.create(); + + case 3: // '\003' + builder2 = new android.app.AlertDialog.Builder(this); + break; + } + builder2.setTitle(0x7f0a01d7); + builder2.setIcon(0x1080027); + builder2.setMessage(0x7f0a014b); + builder2.setNeutralButton(0x7f0a01d0, new android.content.DialogInterface.OnClickListener() { + + final ServerDetailsActivity this$0; + + public void onClick(DialogInterface dialoginterface, int j) + { + dialoginterface.dismiss(); + } + + + { + this$0 = ServerDetailsActivity.this; + super(); + } + }); + return builder2.create(); + } + + public boolean onCreateOptionsMenu(Menu menu) + { + if (!IRCApp.LEGACY_VERSION) + { + getMenuInflater().inflate(0x7f0f0006, menu); + return super.onCreateOptionsMenu(menu); + } else + { + return true; + } + } + + public boolean onOptionsItemSelected(MenuItem menuitem) + { + menuitem.getItemId(); + JVM INSTR lookupswitch 4: default 48 + // 16908332: 54 + // 2131230737: 130 + // 2131230853: 108 + // 2131230854: 101; + goto _L1 _L2 _L3 _L4 _L5 +_L1: + return super.onOptionsItemSelected(menuitem); +_L2: + if (shouldConfirmExit()) + { + showDialog(1); + } else + { + Intent intent = new Intent(this, net/andchat/donate/Activities/Main); + intent.addFlags(0x14000000); + startActivity(intent); + finish(); + } + continue; /* Loop/switch isn't completed */ +_L5: + addServer(); + continue; /* Loop/switch isn't completed */ +_L4: + if (shouldConfirmExit()) + { + showDialog(1); + } else + { + cancelAdd(); + } + continue; /* Loop/switch isn't completed */ +_L3: + showDialog(2); + if (true) goto _L1; else goto _L6 +_L6: + } + + protected void onPrepareDialog(int i, Dialog dialog) + { + i; + JVM INSTR tableswitch 1 1: default 20 + // 1 21; + goto _L1 _L2 +_L1: + return; +_L2: + if ((dialog = dialog.findViewById(0x102001a)) != null) + { + dialog.requestFocus(); + return; + } + if (true) goto _L1; else goto _L3 +_L3: + } + + public boolean onPrepareOptionsMenu(Menu menu) + { + if (IRCApp.LEGACY_VERSION) + { + Animation animation = mBounce; + menu = animation; + if (animation == null) + { + menu = AnimationUtils.loadAnimation(this, 0x7f040000); + mBounce = menu; + } + mActions.startAnimation(menu); + } + return true; + } + + protected void onRestoreInstanceState(Bundle bundle) + { + super.onRestoreInstanceState(bundle); + mProfileCopy = (ServerProfile)bundle.getParcelable("profileCopy"); + } + + protected void onSaveInstanceState(Bundle bundle) + { + super.onSaveInstanceState(bundle); + bundle.putParcelable("profileCopy", mProfileCopy); + } + + public void setTitle(CharSequence charsequence) + { + if (mActions != null) + { + mActions.setTitle(charsequence); + return; + } else + { + super.setTitle(charsequence); + return; + } + } + + + +} diff --git a/app/src/main/java/net/andchat/donate/Activities/UserListActivity$1.java b/app/src/main/java/net/andchat/donate/Activities/UserListActivity$1.java new file mode 100644 index 0000000..a085936 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/UserListActivity$1.java @@ -0,0 +1,49 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.text.Editable; +import android.text.TextWatcher; + +// Referenced classes of package net.andchat.donate.Activities: +// UserListActivity + +class this._cls0 + implements TextWatcher +{ + + final UserListActivity this$0; + + public void afterTextChanged(Editable editable) + { + if (editable.length() == 0) + { + UserListActivity.access$0(UserListActivity.this); + } else + { + editable = editable.toString().trim(); + int i = editable.indexOf(','); + if (i != -1 && i + 1 >= editable.length()) + { + UserListActivity.access$1(UserListActivity.this, false); + return; + } + } + } + + public void beforeTextChanged(CharSequence charsequence, int i, int j, int k) + { + } + + public void onTextChanged(CharSequence charsequence, int i, int j, int k) + { + } + + () + { + this$0 = UserListActivity.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/UserListActivity$NameComparer.java b/app/src/main/java/net/andchat/donate/Activities/UserListActivity$NameComparer.java new file mode 100644 index 0000000..c2b0650 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/UserListActivity$NameComparer.java @@ -0,0 +1,125 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import java.util.Comparator; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Activities: +// UserListActivity + +static class mMap + implements Comparator +{ + + private final net.andchat.donate.Backend.Sessions. mMap; + + private int higher(char c, char c1) + { + boolean flag; + byte byte0; + char c2; + char c3; + char c4; + char c5; + char c6; + flag = true; + byte0 = -1; + c5 = mMap.deToPrefix('q'); + c2 = mMap.deToPrefix('a'); + c3 = mMap.deToPrefix('o'); + c4 = mMap.deToPrefix('h'); + c6 = mMap.deToPrefix('v'); + if (c != c2) goto _L2; else goto _L1 +_L1: + if (c1 == c5) + { + c = flag; + } else + { + c = '\uFFFF'; + } +_L4: + return c; +_L2: + if (c != c3) + { + break MISSING_BLOCK_LABEL_104; + } + if (c1 == c5) + { + break; /* Loop/switch isn't completed */ + } + c = byte0; + if (c1 != c2) goto _L4; else goto _L3 +_L3: + return 1; + if (c != c4) + { + break MISSING_BLOCK_LABEL_133; + } + if (c1 == c5 || c1 == c2) + { + break; /* Loop/switch isn't completed */ + } + c = byte0; + if (c1 != c3) goto _L4; else goto _L5 +_L5: + return 1; + if (c != c6) + { + break MISSING_BLOCK_LABEL_168; + } + if (c1 == c5 || c1 == c2 || c1 == c3) + { + break; /* Loop/switch isn't completed */ + } + c = byte0; + if (c1 != c4) goto _L4; else goto _L6 +_L6: + return 1; + return 0; + } + + public volatile int compare(Object obj, Object obj1) + { + return compare((String)obj, (String)obj1); + } + + public int compare(String s, String s1) + { + char c = s.charAt(0); + char c1 = s1.charAt(0); + boolean flag = Utils.isStatusPrefix(mMap, c); + boolean flag1 = Utils.isStatusPrefix(mMap, c1); + if (flag || flag1) + { + if (flag && !flag1) + { + return -1; + } + if (!flag && flag1) + { + return 1; + } + if (flag && flag1 && c != c1) + { + if (c == mMap.deToPrefix('q') && c1 != mMap.deToPrefix('q')) + { + return -1; + } else + { + return higher(c, c1); + } + } + } + return 0; + } + + public (net.andchat.donate.Backend.Sessions. ) + { + mMap = ; + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/UserListActivity$UserAdapter$UserFilter.java b/app/src/main/java/net/andchat/donate/Activities/UserListActivity$UserAdapter$UserFilter.java new file mode 100644 index 0000000..ed1d490 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/UserListActivity$UserAdapter$UserFilter.java @@ -0,0 +1,91 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.widget.Filter; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Activities: +// UserListActivity + +private class originals extends Filter +{ + + private final List originals; + final etInvalidated this$1; + + protected android.widget.ter.UserFilter performFiltering(CharSequence charsequence) + { + android.widget.ter ter = new android.widget.ter(); + Object obj = originals; + if (charsequence == null || charsequence.length() == 0) + { + ter.originals = ((List) (obj)).size(); + ter.originals = obj; + return ter; + } + boolean flag = Utils.isStatusPrefix(originals(this._cls1.this).getStatusMap(), charsequence.charAt(0)); + ArrayList arraylist; + byte byte0; + if (flag) + { + charsequence = Pattern.compile((new StringBuilder("(?i)^")).append(Utils.escape(charsequence)).toString()).matcher(""); + } else + { + charsequence = Pattern.compile((new StringBuilder("(?i)^[")).append(Utils.escape(this._mth1(this._cls1.this).getStatusMap().())).append("]?").append(Utils.escape(charsequence)).toString()).matcher(""); + } + if (flag) + { + byte0 = 10; + } else + { + byte0 = 15; + } + arraylist = new ArrayList(byte0); + obj = ((List) (obj)).iterator(); + do + { + String s; + do + { + if (!((Iterator) (obj)).hasNext()) + { + ter.getPrefixes = arraylist; + ter.getPrefixes = arraylist.size(); + return ter; + } + s = (String)((Iterator) (obj)).next(); + } while (!charsequence.reset(s).find()); + arraylist.add(s); + } while (true); + } + + protected void publishResults(CharSequence charsequence, android.widget.ter.UserFilter userfilter) + { + es = (List)userfilter.mItems; + if (userfilter.mItems > 0) + { + etChanged(); + return; + } else + { + etInvalidated(); + return; + } + } + + public (List list) + { + this$1 = this._cls1.this; + super(); + originals = list; + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/UserListActivity$UserAdapter.java b/app/src/main/java/net/andchat/donate/Activities/UserListActivity$UserAdapter.java new file mode 100644 index 0000000..217ccd8 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/UserListActivity$UserAdapter.java @@ -0,0 +1,173 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.Context; +import android.util.SparseIntArray; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.Filter; +import android.widget.Filterable; +import android.widget.SectionIndexer; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Activities: +// UserListActivity + +private class mSections extends ArrayAdapter + implements Filterable, SectionIndexer +{ + private class UserFilter extends Filter + { + + private final List originals; + final UserListActivity.UserAdapter this$1; + + protected android.widget.Filter.FilterResults performFiltering(CharSequence charsequence) + { + android.widget.Filter.FilterResults filterresults = new android.widget.Filter.FilterResults(); + Object obj = originals; + if (charsequence == null || charsequence.length() == 0) + { + filterresults.count = ((List) (obj)).size(); + filterresults.values = obj; + return filterresults; + } + boolean flag = Utils.isStatusPrefix(mWindows.getStatusMap(), charsequence.charAt(0)); + ArrayList arraylist; + byte byte0; + if (flag) + { + charsequence = Pattern.compile((new StringBuilder("(?i)^")).append(Utils.escape(charsequence)).toString()).matcher(""); + } else + { + charsequence = Pattern.compile((new StringBuilder("(?i)^[")).append(Utils.escape(mWindows.getStatusMap().getPrefixes())).append("]?").append(Utils.escape(charsequence)).toString()).matcher(""); + } + if (flag) + { + byte0 = 10; + } else + { + byte0 = 15; + } + arraylist = new ArrayList(byte0); + obj = ((List) (obj)).iterator(); + do + { + String s; + do + { + if (!((Iterator) (obj)).hasNext()) + { + filterresults.values = arraylist; + filterresults.count = arraylist.size(); + return filterresults; + } + s = (String)((Iterator) (obj)).next(); + } while (!charsequence.reset(s).find()); + arraylist.add(s); + } while (true); + } + + protected void publishResults(CharSequence charsequence, android.widget.Filter.FilterResults filterresults) + { + mItems = (List)filterresults.values; + if (filterresults.count > 0) + { + notifyDataSetChanged(); + return; + } else + { + notifyDataSetInvalidated(); + return; + } + } + + public UserFilter(List list) + { + this$1 = UserListActivity.UserAdapter.this; + super(); + originals = list; + } + } + + + private SparseIntArray mCache; + private final Filter mFilter; + List mItems; + private final String mSections[]; + private final SessionManager mWindows; + final UserListActivity this$0; + + public int getCount() + { + return mItems.size(); + } + + public Filter getFilter() + { + return mFilter; + } + + public volatile Object getItem(int i) + { + return getItem(i); + } + + public String getItem(int i) + { + return (String)mItems.get(i); + } + + public long getItemId(int i) + { + return (long)i; + } + + public int getPositionForSection(int i) + { + SparseIntArray sparseintarray1 = mCache; + SparseIntArray sparseintarray = sparseintarray1; + if (sparseintarray1 == null) + { + sparseintarray = new SparseIntArray(); + mCache = sparseintarray; + } + return Utils.getPositionForSection(i, mSections, mItems, sparseintarray); + } + + public int getSectionForPosition(int i) + { + return Utils.getSectionForPosition(i, mItems, mSections); + } + + public Object[] getSections() + { + return mSections; + } + + public View getView(int i, View view, ViewGroup viewgroup) + { + return super.getView(i, view, viewgroup); + } + + + public UserFilter.originals(Context context, int i, List list, SessionManager sessionmanager) + { + this$0 = UserListActivity.this; + super(context, i, list); + mFilter = new UserFilter(list); + mItems = list; + mWindows = sessionmanager; + mSections = Utils.getSectionsFromItems(list); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/UserListActivity.java b/app/src/main/java/net/andchat/donate/Activities/UserListActivity.java new file mode 100644 index 0000000..02c44c9 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/UserListActivity.java @@ -0,0 +1,750 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.Activity; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.ServiceConnection; +import android.content.SharedPreferences; +import android.content.res.Resources; +import android.os.Bundle; +import android.os.IBinder; +import android.text.Editable; +import android.text.TextWatcher; +import android.util.SparseIntArray; +import android.view.KeyEvent; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; +import android.view.inputmethod.InputMethodManager; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.Filter; +import android.widget.Filterable; +import android.widget.LinearLayout; +import android.widget.ListView; +import android.widget.MultiAutoCompleteTextView; +import android.widget.SectionIndexer; +import android.widget.TextView; +import android.widget.Toast; +import com.markupartist.android.widget.ActionBar; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import net.andchat.donate.Backend.IRCService; +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.IRCApp; +import net.andchat.donate.Misc.Utils; +import net.londatiga.android.QuickAction; + +public class UserListActivity extends Activity + implements ServiceConnection, android.view.View.OnClickListener, android.widget.AdapterView.OnItemClickListener, net.londatiga.android.QuickAction.OnQuickActionItemClickListener +{ + static class NameComparer + implements Comparator + { + + private final net.andchat.donate.Backend.Sessions.SessionManager.StatusMap mMap; + + private int higher(char c, char c1) + { + boolean flag; + byte byte0; + char c2; + char c3; + char c4; + char c5; + char c6; + flag = true; + byte0 = -1; + c5 = mMap.mapModeToPrefix('q'); + c2 = mMap.mapModeToPrefix('a'); + c3 = mMap.mapModeToPrefix('o'); + c4 = mMap.mapModeToPrefix('h'); + c6 = mMap.mapModeToPrefix('v'); + if (c != c2) goto _L2; else goto _L1 +_L1: + if (c1 == c5) + { + c = flag; + } else + { + c = '\uFFFF'; + } +_L4: + return c; +_L2: + if (c != c3) + { + break MISSING_BLOCK_LABEL_104; + } + if (c1 == c5) + { + break; /* Loop/switch isn't completed */ + } + c = byte0; + if (c1 != c2) goto _L4; else goto _L3 +_L3: + return 1; + if (c != c4) + { + break MISSING_BLOCK_LABEL_133; + } + if (c1 == c5 || c1 == c2) + { + break; /* Loop/switch isn't completed */ + } + c = byte0; + if (c1 != c3) goto _L4; else goto _L5 +_L5: + return 1; + if (c != c6) + { + break MISSING_BLOCK_LABEL_168; + } + if (c1 == c5 || c1 == c2 || c1 == c3) + { + break; /* Loop/switch isn't completed */ + } + c = byte0; + if (c1 != c4) goto _L4; else goto _L6 +_L6: + return 1; + return 0; + } + + public volatile int compare(Object obj, Object obj1) + { + return compare((String)obj, (String)obj1); + } + + public int compare(String s, String s1) + { + char c = s.charAt(0); + char c1 = s1.charAt(0); + boolean flag = Utils.isStatusPrefix(mMap, c); + boolean flag1 = Utils.isStatusPrefix(mMap, c1); + if (flag || flag1) + { + if (flag && !flag1) + { + return -1; + } + if (!flag && flag1) + { + return 1; + } + if (flag && flag1 && c != c1) + { + if (c == mMap.mapModeToPrefix('q') && c1 != mMap.mapModeToPrefix('q')) + { + return -1; + } else + { + return higher(c, c1); + } + } + } + return 0; + } + + public NameComparer(net.andchat.donate.Backend.Sessions.SessionManager.StatusMap statusmap) + { + mMap = statusmap; + } + } + + private class UserAdapter extends ArrayAdapter + implements Filterable, SectionIndexer + { + + private SparseIntArray mCache; + private final Filter mFilter; + List mItems; + private final String mSections[]; + private final SessionManager mWindows; + final UserListActivity this$0; + + public int getCount() + { + return mItems.size(); + } + + public Filter getFilter() + { + return mFilter; + } + + public volatile Object getItem(int i) + { + return getItem(i); + } + + public String getItem(int i) + { + return (String)mItems.get(i); + } + + public long getItemId(int i) + { + return (long)i; + } + + public int getPositionForSection(int i) + { + SparseIntArray sparseintarray1 = mCache; + SparseIntArray sparseintarray = sparseintarray1; + if (sparseintarray1 == null) + { + sparseintarray = new SparseIntArray(); + mCache = sparseintarray; + } + return Utils.getPositionForSection(i, mSections, mItems, sparseintarray); + } + + public int getSectionForPosition(int i) + { + return Utils.getSectionForPosition(i, mItems, mSections); + } + + public Object[] getSections() + { + return mSections; + } + + public View getView(int i, View view, ViewGroup viewgroup) + { + return super.getView(i, view, viewgroup); + } + + + public UserAdapter(Context context, int i, List list, SessionManager sessionmanager) + { + this$0 = UserListActivity.this; + super(context, i, list); + mFilter = new UserFilter(list); + mItems = list; + mWindows = sessionmanager; + mSections = Utils.getSectionsFromItems(list); + } + } + + private class UserAdapter.UserFilter extends Filter + { + + private final List originals; + final UserAdapter this$1; + + protected android.widget.Filter.FilterResults performFiltering(CharSequence charsequence) + { + android.widget.Filter.FilterResults filterresults = new android.widget.Filter.FilterResults(); + Object obj = originals; + if (charsequence == null || charsequence.length() == 0) + { + filterresults.count = ((List) (obj)).size(); + filterresults.values = obj; + return filterresults; + } + boolean flag = Utils.isStatusPrefix(mWindows.getStatusMap(), charsequence.charAt(0)); + ArrayList arraylist; + byte byte0; + if (flag) + { + charsequence = Pattern.compile((new StringBuilder("(?i)^")).append(Utils.escape(charsequence)).toString()).matcher(""); + } else + { + charsequence = Pattern.compile((new StringBuilder("(?i)^[")).append(Utils.escape(mWindows.getStatusMap().getPrefixes())).append("]?").append(Utils.escape(charsequence)).toString()).matcher(""); + } + if (flag) + { + byte0 = 10; + } else + { + byte0 = 15; + } + arraylist = new ArrayList(byte0); + obj = ((List) (obj)).iterator(); + do + { + String s; + do + { + if (!((Iterator) (obj)).hasNext()) + { + filterresults.values = arraylist; + filterresults.count = arraylist.size(); + return filterresults; + } + s = (String)((Iterator) (obj)).next(); + } while (!charsequence.reset(s).find()); + arraylist.add(s); + } while (true); + } + + protected void publishResults(CharSequence charsequence, android.widget.Filter.FilterResults filterresults) + { + mItems = (List)filterresults.values; + if (filterresults.count > 0) + { + notifyDataSetChanged(); + return; + } else + { + notifyDataSetInvalidated(); + return; + } + } + + public UserAdapter.UserFilter(List list) + { + this$1 = UserAdapter.this; + super(); + originals = list; + } + } + + + private StringBuilder mBuilder; + private Comparator mComparator; + private CharSequence mCurText; + private Intent mIntent; + private LinearLayout mLayout; + private boolean mMultiSelection; + private QuickAction mQa[]; + private Intent mResultIntent; + private IRCService mService; + private SessionManager mSessions; + private Animation mSlideIn; + private Animation mSlideOut; + private MultiAutoCompleteTextView mTv; + + public UserListActivity() + { + mBuilder = new StringBuilder(); + mQa = new QuickAction[2]; + } + + static String cleanUp(net.andchat.donate.Backend.Sessions.SessionManager.StatusMap statusmap, String s) + { + int i = 0; + char c = s.charAt(0); + do + { + if (!Utils.isStatusPrefix(statusmap, c)) + { + statusmap = s; + if (i > 0) + { + statusmap = s.substring(i); + } + return statusmap; + } + i++; + c = s.charAt(i); + } while (true); + } + + private Intent getResultIntent() + { + return mResultIntent.putExtra("selected", mTv.getText()).putExtra("oldtext", mCurText); + } + + private Animation getSlideInAnimation() + { + if (mSlideIn == null) + { + mSlideIn = AnimationUtils.loadAnimation(this, 0x7f04000e); + } + return mSlideIn; + } + + private Animation getSlideOutAnimation() + { + if (mSlideOut == null) + { + mSlideOut = AnimationUtils.loadAnimation(this, 0x7f040011); + } + return mSlideOut; + } + + private void hideActions() + { + if (mLayout == null) + { + mLayout = (LinearLayout)findViewById(0x7f080001); + } + if (mLayout.getVisibility() == 0) + { + mLayout.startAnimation(getSlideOutAnimation()); + mLayout.setVisibility(8); + } + } + + private void initActionsButtons(boolean flag) + { + LinearLayout linearlayout; + LinearLayout linearlayout1; + int i; + if (flag) + { + i = 0x7f0f000a; + } else + { + i = 0x7f0f0009; + } + linearlayout1 = mLayout; + if (linearlayout1 != null) goto _L2; else goto _L1 +_L1: + linearlayout = (LinearLayout)findViewById(0x7f080001); + mLayout = linearlayout; + (new net.andchat.donate.Misc.AbstractMenuInflator.SlideInMenu(linearlayout, 0x7f030026, this)).addActionsFromXML(this, i); + linearlayout.startAnimation(getSlideInAnimation()); + linearlayout.setVisibility(0); +_L4: + if (linearlayout.getVisibility() == 8) + { + linearlayout.startAnimation(getSlideInAnimation()); + linearlayout.setVisibility(0); + } + return; +_L2: + linearlayout = linearlayout1; + if (mMultiSelection != flag) + { + mMultiSelection = flag; + linearlayout1.removeAllViews(); + (new net.andchat.donate.Misc.AbstractMenuInflator.SlideInMenu(linearlayout1, 0x7f030026, this)).addActionsFromXML(this, i); + linearlayout = linearlayout1; + } + if (true) goto _L4; else goto _L3 +_L3: + } + + public boolean dispatchKeyEvent(KeyEvent keyevent) + { + keyevent.getKeyCode(); + JVM INSTR tableswitch 4 4: default 24 + // 4 30; + goto _L1 _L2 +_L1: + return super.dispatchKeyEvent(keyevent); +_L2: + if (mLayout != null && mLayout.getVisibility() == 0) + { + hideActions(); + return true; + } + setResult(-1, getResultIntent()); + if (true) goto _L1; else goto _L3 +_L3: + } + + public void onClick(View view) + { + int i = 1; + view.getId(); + JVM INSTR lookupswitch 8: default 80 + // 2131230725: 99 + // 2131230726: 99 + // 2131230727: 197 + // 2131230728: 197 + // 2131230729: 197 + // 2131230730: 197 + // 2131230820: 214 + // 2131230858: 99; + goto _L1 _L2 _L2 _L3 _L3 _L3 _L3 _L4 _L2 +_L1: + if (i != 0) + { + setResult(-1, getResultIntent()); + finish(); + } + return; +_L2: + String s = cleanUp(mSessions.getStatusMap(), mTv.getText().toString()).trim(); + Object obj = s; + if (s.charAt(s.length() - 1) == ',') + { + obj = mBuilder; + ((StringBuilder) (obj)).append(s); + ((StringBuilder) (obj)).deleteCharAt(s.length() - 1); + obj = ((StringBuilder) (obj)).toString(); + } + mResultIntent.putExtra("names", ((String) (obj))); + mResultIntent.putExtra("action", view.getId()); + goto _L5 +_L3: + mResultIntent.putExtra("action", view.getId()); + goto _L5 +_L4: + int j; + boolean flag1; + boolean flag = false; + flag1 = false; + QuickAction quickaction; + net.andchat.donate.Misc.AbstractMenuInflator.QuickActionsMenu quickactionsmenu; + if (mMultiSelection) + { + j = 1; + } else + { + j = 0; + } + if (!mMultiSelection || mQa[j] != null) goto _L7; else goto _L6 +_L6: + i = 1; +_L8: + if (i != 0) + { + quickaction = new QuickAction(this); + quickactionsmenu = new net.andchat.donate.Misc.AbstractMenuInflator.QuickActionsMenu(quickaction); + if (mMultiSelection) + { + i = 0x7f0f000a; + } else + { + i = 0x7f0f0009; + } + quickactionsmenu.addActionsFromXML(this, i); + quickaction.setOnActionItemClickListener(this); + mQa[j] = quickaction; + } + mQa[j].show(view); + i = ((flag) ? 1 : 0); +_L5: + if (true) goto _L1; else goto _L7 +_L7: + i = ((flag1) ? 1 : 0); + if (!mMultiSelection) + { + i = ((flag1) ? 1 : 0); + if (mQa[j] == null) + { + i = 1; + } + } + goto _L8 + } + + public void onCreate(Bundle bundle) + { + if (IRCApp.LEGACY_VERSION) + { + requestWindowFeature(7); + } + super.onCreate(bundle); + bindService(new Intent(this, net/andchat/donate/Backend/IRCService), this, 0); + setContentView(0x7f030012); + mResultIntent = new Intent(); + mIntent = getIntent(); + if (IRCApp.LEGACY_VERSION) + { + getWindow().setFeatureInt(7, 0x7f030006); + } + } + + public void onDestroy() + { + super.onDestroy(); + try + { + unbindService(this); + return; + } + catch (Exception exception) + { + return; + } + } + + public void onItemClick(AdapterView adapterview, View view, int i, long l) + { +label0: + { + if (view != null && (view instanceof TextView)) + { + if (view.getId() == 0x7f080004) + { + adapterview = cleanUp(mSessions.getStatusMap(), ((TextView)view).getText().toString()); + mTv.append((new StringBuilder(String.valueOf(adapterview))).append(", ").toString()); + mTv.requestFocus(); + } else + { + adapterview = mTv.getText().toString(); + view = ((TextView)view).getText().toString(); + i = adapterview.lastIndexOf(view); + if (i <= 0) + { + adapterview = ""; + } else + { + adapterview = adapterview.substring(0, i); + } + adapterview = (new StringBuilder(String.valueOf(adapterview))).append(cleanUp(mSessions.getStatusMap(), view)).append(", ").toString(); + mTv.setText(adapterview); + mTv.setSelection(adapterview.length()); + } + adapterview = mTv.getText().toString().trim(); + i = adapterview.indexOf(','); + if (i == -1 || i + 1 >= adapterview.length()) + { + break label0; + } + initActionsButtons(true); + } + return; + } + initActionsButtons(false); + } + + public void onItemClick(QuickAction quickaction, int i, int j) + { + switch (j) + { + default: + return; + + case 2131230727: + case 2131230728: + case 2131230729: + case 2131230730: + case 2131230731: + case 2131230732: + case 2131230733: + case 2131230734: + case 2131230735: + mResultIntent.putExtra("action", j); + break; + } + setResult(-1, getResultIntent()); + quickaction.dismiss(); + finish(); + } + + protected void onRestoreInstanceState(Bundle bundle) + { + super.onRestoreInstanceState(bundle); + mMultiSelection = bundle.getBoolean("multi"); + if (bundle.getBoolean("actionsVisible")) + { + initActionsButtons(mMultiSelection); + } + } + + protected void onSaveInstanceState(Bundle bundle) + { + super.onSaveInstanceState(bundle); + if (mLayout != null && mLayout.getVisibility() == 0) + { + bundle.putBoolean("actionsVisible", true); + } + bundle.putBoolean("multi", mMultiSelection); + } + + public boolean onSearchRequested() + { + ((InputMethodManager)getSystemService("input_method")).showSoftInput(mTv, 1); + return false; + } + + public void onServiceConnected(ComponentName componentname, IBinder ibinder) + { + mService = ((net.andchat.donate.Backend.IRCService.IRCServiceBinder)ibinder).getService(); + ibinder = mIntent; + int i = ibinder.getIntExtra("id", -1); + mSessions = mService.getSessionManagerForId(i); + componentname = ibinder.getStringExtra("window"); + mCurText = ibinder.getCharSequenceExtra("text"); + ibinder = mSessions.getNickList(componentname); + mComparator = new NameComparer(mSessions.getStatusMap()); + Collections.sort(ibinder, String.CASE_INSENSITIVE_ORDER); + Collections.sort(ibinder, mComparator); + i = ibinder.size(); + Object obj1 = new UserAdapter(this, 0x109000a, ibinder, mSessions); + mTv = (MultiAutoCompleteTextView)findViewById(0x7f080050); + Object obj = mTv; + ((MultiAutoCompleteTextView) (obj)).setAdapter(((android.widget.ListAdapter) (obj1))); + ((MultiAutoCompleteTextView) (obj)).setTokenizer(new android.widget.MultiAutoCompleteTextView.CommaTokenizer()); + ((MultiAutoCompleteTextView) (obj)).setOnItemClickListener(this); + ((MultiAutoCompleteTextView) (obj)).requestFocus(); + ((MultiAutoCompleteTextView) (obj)).addTextChangedListener(new TextWatcher() { + + final UserListActivity this$0; + + public void afterTextChanged(Editable editable) + { + if (editable.length() == 0) + { + hideActions(); + } else + { + editable = editable.toString().trim(); + int j = editable.indexOf(','); + if (j != -1 && j + 1 >= editable.length()) + { + initActionsButtons(false); + return; + } + } + } + + public void beforeTextChanged(CharSequence charsequence, int j, int k, int l) + { + } + + public void onTextChanged(CharSequence charsequence, int j, int k, int l) + { + } + + + { + this$0 = UserListActivity.this; + super(); + } + }); + obj1 = (ListView)findViewById(0x102000a); + ((ListView) (obj1)).setAdapter(new UserAdapter(this, 0x7f03001f, ibinder, mSessions)); + ((ListView) (obj1)).setOnItemClickListener(this); + registerForContextMenu(((View) (obj))); + setResult(-1, null); + ibinder = Utils.getPrefs(this); + obj = getString(0x7f0a0041); + if (!ibinder.getBoolean(((String) (obj)), false)) + { + Toast.makeText(this, 0x7f0a01bb, 1).show(); + ibinder.edit().putBoolean(((String) (obj)), true).commit(); + } + setTitle(getResources().getQuantityString(0x7f0e0000, i, new Object[] { + componentname, Integer.valueOf(i) + })); + } + + public void onServiceDisconnected(ComponentName componentname) + { + } + + public void setTitle(CharSequence charsequence) + { + if (IRCApp.LEGACY_VERSION) + { + ((ActionBar)getWindow().getDecorView().findViewById(0x7f080012)).setTitle(charsequence); + return; + } else + { + super.setTitle(charsequence); + return; + } + } + + +} diff --git a/app/src/main/java/net/andchat/donate/Activities/UserListFragment$1.java b/app/src/main/java/net/andchat/donate/Activities/UserListFragment$1.java new file mode 100644 index 0000000..770cf63 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/UserListFragment$1.java @@ -0,0 +1,47 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.view.ActionMode; +import android.view.View; +import android.widget.AdapterView; + +// Referenced classes of package net.andchat.donate.Activities: +// UserListFragment, ChatWindow + +class this._cls0 + implements android.widget.lickListener +{ + + final UserListFragment this$0; + + public void onItemClick(AdapterView adapterview, View view, int i, long l) + { + if (!UserListFragment.access$2(UserListFragment.this).SwipeAction()) + { + switch (UserListFragment.access$3(UserListFragment.this)) + { + default: + UserListFragment.access$5(UserListFragment.this, 1); + UserListFragment.access$6(UserListFragment.this, mChat.startActionMode(UserListFragment.this)); + return; + + case 1: // '\001' + break; + } + if (UserListFragment.access$4(UserListFragment.this) != null) + { + UserListFragment.access$4(UserListFragment.this).invalidate(); + return; + } + } + } + + () + { + this$0 = UserListFragment.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/UserListFragment$2.java b/app/src/main/java/net/andchat/donate/Activities/UserListFragment$2.java new file mode 100644 index 0000000..0789a17 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/UserListFragment$2.java @@ -0,0 +1,32 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.Context; + +// Referenced classes of package net.andchat.donate.Activities: +// UserListFragment + +class N extends net.andchat.donate.Misc.ent._cls2 +{ + + final UserListFragment this$0; + + public void onLeftToRightSwipe() + { + ((net.andchat.donate.Misc.ener)mChat).onLeftToRightSwipe(UserListFragment.this); + } + + public void onRightToLeftSwipe() + { + ((net.andchat.donate.Misc.ener)mChat).onRightToLeftSwipe(UserListFragment.this); + } + + N(Context context, net.andchat.donate.Misc.VIATION viation) + { + this$0 = UserListFragment.this; + super(context, viation); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/UserListFragment$3.java b/app/src/main/java/net/andchat/donate/Activities/UserListFragment$3.java new file mode 100644 index 0000000..1deee5e --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/UserListFragment$3.java @@ -0,0 +1,32 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.view.GestureDetector; +import android.view.MotionEvent; +import android.view.View; + +// Referenced classes of package net.andchat.donate.Activities: +// UserListFragment + +class val.gd + implements android.view.r +{ + + final UserListFragment this$0; + private final GestureDetector val$gd; + + public boolean onTouch(View view, MotionEvent motionevent) + { + return val$gd.onTouchEvent(motionevent); + } + + () + { + this$0 = final_userlistfragment; + val$gd = GestureDetector.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/UserListFragment$Adapter.java b/app/src/main/java/net/andchat/donate/Activities/UserListFragment$Adapter.java new file mode 100644 index 0000000..511b6e4 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/UserListFragment$Adapter.java @@ -0,0 +1,46 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.content.Context; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.TextView; +import java.util.List; + +// Referenced classes of package net.andchat.donate.Activities: +// UserListFragment + +private class mItems extends ArrayAdapter +{ + + private final List mItems; + final UserListFragment this$0; + + public View getView(int i, View view, ViewGroup viewgroup) + { + viewgroup = super.getView(i, view, viewgroup); + view = (mItems)viewgroup.getTag(); + if (view == null) + { + view = (TextView)viewgroup.findViewById(0x7f080004); + viewgroup.setTag(new init>(view)); + } else + { + view = ccess._mth0(view); + } + view.setTextSize(UserListFragment.access$0(UserListFragment.this)); + view.setTypeface(UserListFragment.access$1(UserListFragment.this)); + return viewgroup; + } + + public (Context context, int i, int j, List list) + { + this$0 = UserListFragment.this; + super(context, i, j, list); + mItems = list; + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/UserListFragment$Holder.java b/app/src/main/java/net/andchat/donate/Activities/UserListFragment$Holder.java new file mode 100644 index 0000000..423eb00 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/UserListFragment$Holder.java @@ -0,0 +1,22 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.widget.TextView; + +// Referenced classes of package net.andchat.donate.Activities: +// UserListFragment + +private static class tv +{ + + private final TextView tv; + + + public (TextView textview) + { + tv = textview; + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/UserListFragment.java b/app/src/main/java/net/andchat/donate/Activities/UserListFragment.java new file mode 100644 index 0000000..159ab67 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/UserListFragment.java @@ -0,0 +1,415 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities; + +import android.app.ListFragment; +import android.content.Context; +import android.content.SharedPreferences; +import android.content.res.Resources; +import android.graphics.Typeface; +import android.os.Handler; +import android.os.Message; +import android.view.ActionMode; +import android.view.GestureDetector; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.ListAdapter; +import android.widget.ListView; +import android.widget.TextView; +import java.util.Collections; +import java.util.List; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.IRCApp; +import net.andchat.donate.Misc.Utils; +import net.andchat.donate.View.TextStyleDialog; + +// Referenced classes of package net.andchat.donate.Activities: +// ChatWindow, UserListActivity + +public class UserListFragment extends ListFragment + implements android.view.ActionMode.Callback, Runnable, net.andchat.donate.Backend.Sessions.SessionManager.NickWatcher, net.andchat.donate.IRCApp.PreferenceChangeWatcher +{ + private class Adapter extends ArrayAdapter + { + + private final List mItems; + final UserListFragment this$0; + + public View getView(int i, View view, ViewGroup viewgroup) + { + viewgroup = super.getView(i, view, viewgroup); + view = (Holder)viewgroup.getTag(); + if (view == null) + { + view = (TextView)viewgroup.findViewById(0x7f080004); + viewgroup.setTag(new Holder(view)); + } else + { + view = ((Holder) (view)).tv; + } + view.setTextSize(mTextSize); + view.setTypeface(mFont); + return viewgroup; + } + + public Adapter(Context context, int i, int j, List list) + { + this$0 = UserListFragment.this; + super(context, i, j, list); + mItems = list; + } + } + + private static class Holder + { + + private final TextView tv; + + + public Holder(TextView textview) + { + tv = textview; + } + } + + + private int mActionBarMode; + private ActionMode mActionMode; + ChatWindow mChat; + private net.andchat.donate.Misc.Utils.Detector mDetector; + private Typeface mFont; + private Handler mHandler; + public boolean mSaveScrollPosition; + private int mTextSize; + private boolean mUpdatesQueued; + SessionManager mWindows; + + public UserListFragment() + { + mHandler = new Handler(); + } + + private void init() + { + if (mChat != null) + { + mWindows = mChat.pSessionManager; + ListView listview = tryGetList(); + if (listview != null) + { + mWindows.addNickWatcher(this); + listview.setFastScrollEnabled(true); + listview.setChoiceMode(2); + listview.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() ); + mDetector = new net.andchat.donate.Misc.Utils.Detector(getActivity(), net.andchat.donate.Misc.Utils.Detector.Y_DEVIATION.STRICT) { + + final UserListFragment this$0; + + public void onLeftToRightSwipe() + { + ((net.andchat.donate.Misc.Utils.ListSwipeListener)mChat).onLeftToRightSwipe(UserListFragment.this); + } + + public void onRightToLeftSwipe() + { + ((net.andchat.donate.Misc.Utils.ListSwipeListener)mChat).onRightToLeftSwipe(UserListFragment.this); + } + + + { + this$0 = UserListFragment.this; + super(context, y_deviation); + } + }; + listview.setOnTouchListener(new android.view.View.OnTouchListener() { + + final UserListFragment this$0; + private final GestureDetector val$gd; + + public boolean onTouch(View view, MotionEvent motionevent) + { + return gd.onTouchEvent(motionevent); + } + + + { + this$0 = UserListFragment.this; + gd = gesturedetector; + super(); + } + }); + initAdapter(); + return; + } + } + } + + private ListView tryGetList() + { + ListView listview; + try + { + listview = getListView(); + } + catch (IllegalStateException illegalstateexception) + { + return null; + } + return listview; + } + + public void firstRun() + { + init(); + } + + public void hideActionBar() + { + if (mActionMode != null) + { + mActionMode.finish(); + } + } + + public void initAdapter() + { + mUpdatesQueued = false; + if (mActionBarMode == 1) + { + mUpdatesQueued = true; + return; + } else + { + mHandler.post(this); + return; + } + } + + public void initAdapter(String s) + { + if (s.equalsIgnoreCase(mChat.pCurrentSession.getSessionName())) + { + initAdapter(); + } + } + + public boolean onActionItemClicked(ActionMode actionmode, MenuItem menuitem) + { + int j = getListAdapter().getCount(); + StringBuilder stringbuilder = new StringBuilder(); + ListView listview = getListView(); + int i = 0; + do + { + if (i >= j) + { + if (stringbuilder.charAt(stringbuilder.length() - 1) == ' ') + { + stringbuilder.deleteCharAt(stringbuilder.length() - 1); + } + if (stringbuilder.charAt(stringbuilder.length() - 1) == ',') + { + stringbuilder.deleteCharAt(stringbuilder.length() - 1); + } + Message.obtain(mChat.pFragmentBridge, menuitem.getItemId(), stringbuilder.toString()).sendToTarget(); + i = menuitem.getItemId(); + if (i == 0x7f080089 || i == 0x7f08008a) + { + actionmode.finish(); + } + return true; + } + if (listview.isItemChecked(i)) + { + stringbuilder.append(UserListActivity.cleanUp(mWindows.getStatusMap(), (String)listview.getItemAtPosition(i))); + stringbuilder.append(',').append(' '); + } + i++; + } while (true); + } + + public boolean onCreateActionMode(ActionMode actionmode, Menu menu) + { + actionmode.getMenuInflater().inflate(0x7f0f0008, menu); + return true; + } + + public void onDestroyActionMode(ActionMode actionmode) + { + mActionBarMode = 0; + mActionMode = null; + actionmode = getListView(); + int j = actionmode.getCount(); + int i = 0; + do + { + if (i >= j) + { + if (mUpdatesQueued) + { + mUpdatesQueued = false; + mHandler.post(this); + } + return; + } + actionmode.setItemChecked(i, false); + i++; + } while (true); + } + + public void onDestroyView() + { + super.onDestroyView(); + ((IRCApp)mChat.getApplication()).removeWatcher(this); + mHandler.removeCallbacks(this); + if (mWindows != null) + { + mWindows.removeNickWatcher(this); + mWindows = null; + } + } + + public void onNickAdded(String s, String s1) + { + initAdapter(s); + } + + public void onNickChanged(String s, String s1, String s2) + { + initAdapter(s); + } + + public void onNickModeChanged(String s, String s1, String s2) + { + initAdapter(s); + } + + public void onNickRemoved(String s, String s1) + { + initAdapter(s); + } + + public void onNicksReceived(String s) + { + initAdapter(s); + } + + public void onPreferencesChanged() + { + mTextSize = Utils.parseInt(Utils.getPrefs(getActivity()).getString(getString(0x7f0a0015), "18"), 18); + int i = Utils.getPrefs(getActivity()).getInt(getString(0x7f0a0031), 0); + mFont = TextStyleDialog.TYPES[i]; + ListAdapter listadapter = getListAdapter(); + if (listadapter != null) + { + ((Adapter)listadapter).notifyDataSetChanged(); + } + } + + public boolean onPrepareActionMode(ActionMode actionmode, Menu menu) + { + boolean flag = false; + int i = getListView().getCheckedItemCount(); + if (i == 0) + { + actionmode.finish(); + return true; + } + actionmode.setTitle(getResources().getQuantityString(0x7f0e0005, i, new Object[] { + Integer.valueOf(i) + })); + if (i == 1) + { + flag = true; + } + menu.findItem(0x7f080005).setVisible(flag); + menu.findItem(0x7f080006).setVisible(flag); + return true; + } + + public void onStart() + { + super.onStart(); + mChat = (ChatWindow)getActivity(); + mActionBarMode = 0; + ((IRCApp)mChat.getApplication()).addWatcher(this); + onPreferencesChanged(); + } + + public void run() + { + if (mChat != null) + { + SessionManager sessionmanager = mWindows; + Object obj = sessionmanager; + if (sessionmanager == null) + { + obj = mChat.pSessionManager; + } + obj = ((SessionManager) (obj)).getNickList(mChat.pCurrentSession.getSessionName()); + if (obj != null) + { + sort(((List) (obj))); + int j = 0; + int i = 0; + ListView listview = tryGetList(); + if (listview != null) + { + if (mSaveScrollPosition) + { + j = listview.getFirstVisiblePosition(); + View view = listview.getChildAt(0); + if (view == null) + { + i = 0; + } else + { + i = view.getTop(); + } + } + setListAdapter(new Adapter(mChat, 0x7f03001b, 0x7f080004, ((List) (obj)))); + if (mSaveScrollPosition) + { + listview.setSelectionFromTop(j, i); + return; + } else + { + mSaveScrollPosition = true; + return; + } + } + } + } + } + + void sort(List list) + { + Collections.sort(list, String.CASE_INSENSITIVE_ORDER); + try + { + Collections.sort(list, new UserListActivity.NameComparer(mWindows.getStatusMap())); + return; + } + // Misplaced declaration of an exception variable + catch (List list) + { + return; + } + } + + + + + + + +} diff --git a/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step1.java b/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step1.java new file mode 100644 index 0000000..f31f487 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step1.java @@ -0,0 +1,70 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities.initialSetup; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.view.Window; +import android.widget.Button; +import com.markupartist.android.widget.ActionBar; +import net.andchat.donate.Activities.Main; +import net.andchat.donate.IRCApp; + +// Referenced classes of package net.andchat.donate.Activities.initialSetup: +// StepParent, Step2 + +public class Step1 extends StepParent +{ + + public Step1() + { + } + + public void onClick(View view) + { + switch (view.getId()) + { + default: + return; + + case 2131230835: + startActivity(new Intent(this, net/andchat/donate/Activities/initialSetup/Step2)); + return; + + case 2131230834: + startActivity((new Intent(this, net/andchat/donate/Activities/Main)).setFlags(0x4000000)); + finish(); + return; + } + } + + public void onCreate(Bundle bundle) + { + if (IRCApp.LEGACY_VERSION) + { + requestWindowFeature(7); + } + setContentView(0x7f03000e); + super.onCreate(bundle); + mPrev.setVisibility(8); + mSkip.setVisibility(0); + if (IRCApp.LEGACY_VERSION) + { + getWindow().setFeatureInt(7, 0x7f030006); + mActionBar = (ActionBar)getWindow().getDecorView().findViewById(0x7f080012); + } + super.setTitle(0x7f0a008a); + if (!mUseDrawables) + { + super.removeDrawables(); + } + } + + public volatile void setTitle(int i) + { + super.setTitle(i); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step2$1.java b/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step2$1.java new file mode 100644 index 0000000..84a300a --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step2$1.java @@ -0,0 +1,47 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities.initialSetup; + +import android.text.Editable; +import android.text.TextWatcher; +import android.widget.Button; +import android.widget.EditText; + +// Referenced classes of package net.andchat.donate.Activities.initialSetup: +// Step2 + +class this._cls0 + implements TextWatcher +{ + + final Step2 this$0; + + public void afterTextChanged(Editable editable) + { + boolean flag; + if (Step2.access$1(Step2.this).getText().toString().trim().length() > 0 && Step2.access$2(Step2.this).getText().toString().trim().length() > 0 && Step2.access$3(Step2.this).getText().toString().trim().length() > 0 && Step2.access$4(Step2.this).getText().toString().trim().length() > 0 && Step2.access$5(Step2.this).getText().toString().trim().length() > 0) + { + flag = true; + } else + { + flag = false; + } + mNext.setEnabled(flag); + } + + public void beforeTextChanged(CharSequence charsequence, int i, int j, int k) + { + } + + public void onTextChanged(CharSequence charsequence, int i, int j, int k) + { + } + + () + { + this$0 = Step2.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step2$2.java b/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step2$2.java new file mode 100644 index 0000000..04281eb --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step2$2.java @@ -0,0 +1,54 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities.initialSetup; + +import android.text.Editable; +import android.view.View; +import android.widget.EditText; + +// Referenced classes of package net.andchat.donate.Activities.initialSetup: +// Step2 + +class this._cls0 + implements android.view.ocusChangeListener +{ + + final Step2 this$0; + + public void onFocusChange(View view, boolean flag) + { + if (!flag) + { + view = ((EditText)view).getText().toString().trim(); + if (view.length() > 0) + { + if (Step2.access$2(Step2.this).getText().toString().length() == 0) + { + Step2.access$2(Step2.this).setText(view); + Step2.access$2(Step2.this).append("|"); + } + if (Step2.access$3(Step2.this).getText().toString().length() == 0) + { + Step2.access$3(Step2.this).setText(view); + Step2.access$3(Step2.this).append("-"); + } + } + if (Step2.access$5(Step2.this).getText().toString().length() == 0) + { + Step2.access$5(Step2.this).setText(view); + } + if (Step2.access$4(Step2.this).getText().toString().length() == 0) + { + Step2.access$4(Step2.this).setText(view); + } + } + } + + () + { + this$0 = Step2.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step2.java b/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step2.java new file mode 100644 index 0000000..0506224 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step2.java @@ -0,0 +1,277 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities.initialSetup; + +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.view.View; +import android.view.Window; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.EditText; +import com.markupartist.android.widget.ActionBar; +import net.andchat.donate.Activities.CharsetPicker; +import net.andchat.donate.IRCApp; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Activities.initialSetup: +// StepParent, Step3 + +public class Step2 extends StepParent +{ + + private Button mCharset; + private CheckBox mLogs; + private EditText mNick1; + private EditText mNick2; + private EditText mNick3; + private EditText mRealName; + private EditText mUserName; + + public Step2() + { + } + + private void saveStuff() + { + String s = mNick1.getText().toString().trim(); + String s1 = mNick2.getText().toString().trim(); + String s2 = mNick3.getText().toString().trim(); + String s3 = mUserName.getText().toString().trim(); + String s4 = mRealName.getText().toString().trim(); + String s5 = mCharset.getText().toString(); + boolean flag = mLogs.isChecked(); + android.content.SharedPreferences.Editor editor = Utils.getPrefs(this).edit(); + editor.putString(getString(0x7f0a000a), s); + editor.putString(getString(0x7f0a000b), s1); + editor.putString(getString(0x7f0a000c), s2); + editor.putString(getString(0x7f0a000d), s3); + editor.putString(getString(0x7f0a000e), s4); + editor.putString(getString(0x7f0a000f), s5); + editor.putBoolean(getString(0x7f0a0027), flag); + editor.commit(); + } + + protected void onActivityResult(int i, int j, Intent intent) + { + super.onActivityResult(i, j, intent); + if (j == 0) + { + return; + } + switch (i) + { + default: + return; + + case 2: // '\002' + intent = intent.getStringExtra("selection"); + break; + } + mCharset.setText(intent); + } + + public void onClick(View view) + { + view.getId(); + JVM INSTR lookupswitch 3: default 40 + // 2131230797: 245 + // 2131230833: 240 + // 2131230835: 41; + goto _L1 _L2 _L3 _L4 +_L1: + return; +_L4: + boolean flag; + flag = false; + view = getString(0x7f0a016c); + if (!TextUtils.isEmpty(mNick1.getText())) + { + break; /* Loop/switch isn't completed */ + } + mNick1.setError(view); + mNick1.requestFocus(); + flag = true; +_L6: + if (!flag) + { + saveStuff(); + startActivity(new Intent(this, net/andchat/donate/Activities/initialSetup/Step3)); + return; + } + if (true) goto _L1; else goto _L5 +_L5: + if (TextUtils.isEmpty(mNick2.getText())) + { + mNick2.setError(view); + mNick2.requestFocus(); + flag = true; + } else + if (TextUtils.isEmpty(mNick3.getText())) + { + mNick3.setError(view); + mNick3.requestFocus(); + flag = true; + } else + if (TextUtils.isEmpty(mUserName.getText())) + { + mUserName.setError(view); + mUserName.requestFocus(); + flag = true; + } else + if (TextUtils.isEmpty(mRealName.getText())) + { + mRealName.setError(view); + mRealName.requestFocus(); + flag = true; + } + goto _L6 + goto _L1 +_L3: + finish(); + return; +_L2: + startActivityForResult(new Intent(this, net/andchat/donate/Activities/CharsetPicker), 2); + return; + } + + public void onCreate(Bundle bundle) + { + if (IRCApp.LEGACY_VERSION) + { + requestWindowFeature(7); + } + setContentView(0x7f03000f); + super.onCreate(bundle); + if (!mUseDrawables) + { + super.removeDrawables(); + } + bundle = Utils.getPrefs(this); + TextWatcher textwatcher = new TextWatcher() { + + final Step2 this$0; + + public void afterTextChanged(Editable editable) + { + boolean flag; + if (mNick1.getText().toString().trim().length() > 0 && mNick2.getText().toString().trim().length() > 0 && mNick3.getText().toString().trim().length() > 0 && mUserName.getText().toString().trim().length() > 0 && mRealName.getText().toString().trim().length() > 0) + { + flag = true; + } else + { + flag = false; + } + mNext.setEnabled(flag); + } + + public void beforeTextChanged(CharSequence charsequence, int i, int j, int k) + { + } + + public void onTextChanged(CharSequence charsequence, int i, int j, int k) + { + } + + + { + this$0 = Step2.this; + super(); + } + }; + mNick1 = (EditText)findViewById(0x7f080042); + mNick2 = (EditText)findViewById(0x7f080043); + mNick3 = (EditText)findViewById(0x7f080044); + mUserName = (EditText)findViewById(0x7f080045); + mRealName = (EditText)findViewById(0x7f080046); + mCharset = (Button)findViewById(0x7f08004d); + mCharset.setText(Utils.getDefaultServerProfileValue(0x7f0a0006, this)); + mCharset.setOnClickListener(this); + mLogs = (CheckBox)findViewById(0x7f08004a); + mLogs.setChecked(bundle.getBoolean(getString(0x7f0a0027), false)); + mNick1.addTextChangedListener(textwatcher); + mNick2.addTextChangedListener(textwatcher); + mNick3.addTextChangedListener(textwatcher); + mUserName.addTextChangedListener(textwatcher); + mRealName.addTextChangedListener(textwatcher); + mNick1.setText(Utils.getDefaultServerProfileValue(0x7f0a0001, this)); + mNick2.setText(Utils.getDefaultServerProfileValue(0x7f0a0002, this)); + mNick3.setText(Utils.getDefaultServerProfileValue(0x7f0a0003, this)); + mUserName.setText(Utils.getDefaultServerProfileValue(0x7f0a0005, this)); + mRealName.setText(Utils.getDefaultServerProfileValue(0x7f0a0004, this)); + mNick1.setOnFocusChangeListener(new android.view.View.OnFocusChangeListener() { + + final Step2 this$0; + + public void onFocusChange(View view, boolean flag) + { + if (!flag) + { + view = ((EditText)view).getText().toString().trim(); + if (view.length() > 0) + { + if (mNick2.getText().toString().length() == 0) + { + mNick2.setText(view); + mNick2.append("|"); + } + if (mNick3.getText().toString().length() == 0) + { + mNick3.setText(view); + mNick3.append("-"); + } + } + if (mRealName.getText().toString().length() == 0) + { + mRealName.setText(view); + } + if (mUserName.getText().toString().length() == 0) + { + mUserName.setText(view); + } + } + } + + + { + this$0 = Step2.this; + super(); + } + }); + if (IRCApp.LEGACY_VERSION) + { + getWindow().setFeatureInt(7, 0x7f030006); + mActionBar = (ActionBar)getWindow().getDecorView().findViewById(0x7f080012); + } + super.setTitle(0x7f0a008b); + } + + protected void onRestoreInstanceState(Bundle bundle) + { + super.onRestoreInstanceState(bundle); + bundle = bundle.getString("charset"); + mCharset.setText(bundle); + } + + protected void onSaveInstanceState(Bundle bundle) + { + super.onSaveInstanceState(bundle); + bundle.putString("charset", mCharset.getText().toString()); + } + + public volatile void setTitle(int i) + { + super.setTitle(i); + } + + + + + +} diff --git a/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step3$1.java b/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step3$1.java new file mode 100644 index 0000000..487d56d --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step3$1.java @@ -0,0 +1,62 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities.initialSetup; + +import android.content.res.Resources; +import android.os.Handler; +import android.os.Message; +import android.widget.Button; +import android.widget.TextView; +import net.andchat.donate.Misc.Backup; + +// Referenced classes of package net.andchat.donate.Activities.initialSetup: +// Step3 + +class val.b extends Handler +{ + + final Step3 this$0; + private final Backup val$b; + + public void handleMessage(Message message) + { + int i; + switch (message.what) + { + case 1: // '\001' + default: + return; + + case 0: // '\0' + ((TextView)findViewById(0x7f08004e)).append(getString(0x7f0a0169)); + return; + + case 2: // '\002' + i = val$b.getStats().goodServers; + break; + } + message = (TextView)findViewById(0x7f08004e); + message.append(getResources().getQuantityString(0x7f0e0001, i, new Object[] { + Integer.valueOf(i) + })); + message.append(" "); + message.append(getString(0x7f0a016a)); + mNext.setEnabled(true); + mNext.setText(0x7f0a017c); + mNext.setTag(new Object()); + if (mUseDrawables) + { + mNext.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(0x7f020017), null); + } + mSkip.setVisibility(8); + } + + () + { + this$0 = final_step3; + val$b = Backup.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step3.java b/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step3.java new file mode 100644 index 0000000..2a035da --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step3.java @@ -0,0 +1,155 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities.initialSetup; + +import android.content.Intent; +import android.content.res.AssetManager; +import android.content.res.Resources; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.view.View; +import android.view.Window; +import android.widget.Button; +import android.widget.TextView; +import com.markupartist.android.widget.ActionBar; +import java.io.IOException; +import net.andchat.donate.IRCApp; +import net.andchat.donate.Misc.Backup; + +// Referenced classes of package net.andchat.donate.Activities.initialSetup: +// StepParent, Step4 + +public class Step3 extends StepParent +{ + + public Step3() + { + } + + public void onClick(final View b) + { + switch (b.getId()) + { + default: + return; + + case 2131230834: + if (mNext.getTag() != null) + { + startActivity(new Intent(this, net/andchat/donate/Activities/initialSetup/Step4)); + return; + } + b = new Backup(); + try + { + b = new net.andchat.donate.Misc.Backup.BackupOp(1, this, b, getAssets().open("servers.xml"), new Handler() { + + final Step3 this$0; + private final Backup val$b; + + public void handleMessage(Message message) + { + int i; + switch (message.what) + { + case 1: // '\001' + default: + return; + + case 0: // '\0' + ((TextView)findViewById(0x7f08004e)).append(getString(0x7f0a0169)); + return; + + case 2: // '\002' + i = b.getStats().goodServers; + break; + } + message = (TextView)findViewById(0x7f08004e); + message.append(getResources().getQuantityString(0x7f0e0001, i, new Object[] { + Integer.valueOf(i) + })); + message.append(" "); + message.append(getString(0x7f0a016a)); + mNext.setEnabled(true); + mNext.setText(0x7f0a017c); + mNext.setTag(new Object()); + if (mUseDrawables) + { + mNext.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(0x7f020017), null); + } + mSkip.setVisibility(8); + } + + + { + this$0 = Step3.this; + b = backup; + super(); + } + }); + mNext.setEnabled(false); + b.start(); + return; + } + // Misplaced declaration of an exception variable + catch (final View b) + { + ((TextView)findViewById(0x7f08004e)).append(getString(0x7f0a016b, new Object[] { + b.getMessage() + })); + } + mNext.setEnabled(true); + mNext.setText(0x7f0a017c); + mNext.setTag(new Object()); + if (mUseDrawables) + { + mNext.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(0x7f020017), null); + } + mSkip.setVisibility(8); + b.printStackTrace(); + return; + + case 2131230833: + finish(); + return; + + case 2131230835: + startActivity(new Intent(this, net/andchat/donate/Activities/initialSetup/Step4)); + return; + } + } + + public void onCreate(Bundle bundle) + { + if (IRCApp.LEGACY_VERSION) + { + requestWindowFeature(7); + } + setContentView(0x7f030010); + super.onCreate(bundle); + mSkip.setVisibility(0); + mSkip.setText(0x7f0a01d3); + mNext.setText(0x7f0a01d4); + if (!mUseDrawables) + { + super.removeDrawables(); + } else + { + mNext.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); + } + if (IRCApp.LEGACY_VERSION) + { + getWindow().setFeatureInt(7, 0x7f030006); + mActionBar = (ActionBar)getWindow().getDecorView().findViewById(0x7f080012); + } + super.setTitle(0x7f0a008c); + } + + public volatile void setTitle(int i) + { + super.setTitle(i); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step4.java b/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step4.java new file mode 100644 index 0000000..d1dbd55 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/initialSetup/Step4.java @@ -0,0 +1,86 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities.initialSetup; + +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Bundle; +import android.text.Html; +import android.text.method.LinkMovementMethod; +import android.view.View; +import android.view.Window; +import android.widget.Button; +import android.widget.TextView; +import com.markupartist.android.widget.ActionBar; +import net.andchat.donate.Activities.Main; +import net.andchat.donate.IRCApp; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Activities.initialSetup: +// StepParent + +public class Step4 extends StepParent +{ + + public Step4() + { + } + + public void onClick(View view) + { + switch (view.getId()) + { + case 2131230834: + default: + return; + + case 2131230835: + view = Utils.getPrefs(this); + if (!view.getBoolean("showed_help", false)) + { + view.edit().putBoolean("showed_help", true).commit(); + } + startActivity((new Intent(this, net/andchat/donate/Activities/Main)).setFlags(0x4000000)); + return; + + case 2131230833: + finish(); + return; + } + } + + public void onCreate(Bundle bundle) + { + if (IRCApp.LEGACY_VERSION) + { + requestWindowFeature(7); + } + setContentView(0x7f030011); + super.onCreate(bundle); + if (!mUseDrawables) + { + super.removeDrawables(); + } + bundle = (TextView)findViewById(0x7f08004e); + StringBuilder stringbuilder = new StringBuilder(); + stringbuilder.append(getString(0x7f0a016d)); + stringbuilder.append("

"); + Utils.getHelpText(this, stringbuilder); + bundle.setText(Html.fromHtml(stringbuilder.toString())); + bundle.setMovementMethod(new LinkMovementMethod()); + mNext.setText(0x7f0a017e); + if (IRCApp.LEGACY_VERSION) + { + getWindow().setFeatureInt(7, 0x7f030006); + mActionBar = (ActionBar)getWindow().getDecorView().findViewById(0x7f080012); + } + super.setTitle(0x7f0a008d); + } + + public volatile void setTitle(int i) + { + super.setTitle(i); + } +} diff --git a/app/src/main/java/net/andchat/donate/Activities/initialSetup/StepParent.java b/app/src/main/java/net/andchat/donate/Activities/initialSetup/StepParent.java new file mode 100644 index 0000000..85d80d5 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Activities/initialSetup/StepParent.java @@ -0,0 +1,58 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Activities.initialSetup; + +import android.app.Activity; +import android.os.Bundle; +import android.widget.Button; +import com.markupartist.android.widget.ActionBar; +import net.andchat.donate.IRCApp; + +abstract class StepParent extends Activity + implements android.view.View.OnClickListener +{ + + protected ActionBar mActionBar; + Button mNext; + Button mPrev; + Button mSkip; + boolean mUseDrawables; + + StepParent() + { + } + + public void onCreate(Bundle bundle) + { + super.onCreate(bundle); + mUseDrawables = IRCApp.LEGACY_VERSION; + mPrev = (Button)findViewById(0x7f080071); + mNext = (Button)findViewById(0x7f080073); + mSkip = (Button)findViewById(0x7f080072); + mPrev.setOnClickListener(this); + mNext.setOnClickListener(this); + mSkip.setOnClickListener(this); + } + + void removeDrawables() + { + mNext.setCompoundDrawables(null, null, null, null); + mPrev.setCompoundDrawables(null, null, null, null); + mSkip.setCompoundDrawables(null, null, null, null); + } + + public void setTitle(int i) + { + if (mActionBar != null) + { + mActionBar.setTitle(i); + return; + } else + { + super.setTitle(i); + return; + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/Crypt.java b/app/src/main/java/net/andchat/donate/Backend/Crypt.java new file mode 100644 index 0000000..418aaad --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/Crypt.java @@ -0,0 +1,333 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import android.content.Context; +import android.content.SharedPreferences; +import java.io.IOException; +import java.security.InvalidAlgorithmParameterException; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.security.NoSuchProviderException; +import java.security.SecureRandom; +import java.security.spec.InvalidKeySpecException; +import javax.crypto.BadPaddingException; +import javax.crypto.Cipher; +import javax.crypto.IllegalBlockSizeException; +import javax.crypto.NoSuchPaddingException; +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.PBEKeySpec; +import javax.crypto.spec.PBEParameterSpec; +import net.andchat.donate.IRCApp; +import org.xmlpull.v1.XmlSerializer; + +public class Crypt +{ + + private static final byte HEXCHARS[] = { + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 97, 98, 99, 100, 101, 102 + }; + private boolean decrypted; + private final Cipher mCipher; + private Context mCtx; + private final SharedPreferences mPrefs; + private char master[]; + private char pass[]; + private final byte salt[]; + + public Crypt(IRCApp ircapp) + { + mCtx = ircapp; + mPrefs = mCtx.getSharedPreferences("crypt", 0); + ircapp = getSalt(); + Cipher cipher; + if (ircapp.length != 0) + { + salt = ircapp; + } else + { + ircapp = new SecureRandom(); + salt = new byte[15]; + ircapp.nextBytes(salt); + saveSalt(salt); + } + ircapp = null; + cipher = Cipher.getInstance("PBEWithSHA1And256BitAES-CBC-BC", "BC"); + ircapp = cipher; +_L2: + mCipher = ircapp; + return; + Object obj; + obj; + ((NoSuchAlgorithmException) (obj)).printStackTrace(); + continue; /* Loop/switch isn't completed */ + obj; + ((NoSuchProviderException) (obj)).printStackTrace(); + continue; /* Loop/switch isn't completed */ + obj; + ((NoSuchPaddingException) (obj)).printStackTrace(); + if (true) goto _L2; else goto _L1 +_L1: + } + + private String bytes2Hex(byte abyte0[]) + { + int j = abyte0.length; + StringBuilder stringbuilder = new StringBuilder(j * 2); + int i = 0; + do + { + if (i >= j) + { + return stringbuilder.toString(); + } + int k = abyte0[i] & 0xff; + stringbuilder.append((char)HEXCHARS[k >> 4]); + stringbuilder.append((char)HEXCHARS[k & 0xf]); + i++; + } while (true); + } + + private String decrypt(String s, char ac[]) + { + if (s == null) + { + return null; + } + try + { + s = hex2Bytes(s); + Object obj = new PBEKeySpec(ac); + ac = new PBEParameterSpec(salt, 10); + obj = SecretKeyFactory.getInstance("PBEWithSHA1And256BitAES-CBC-BC", "BC").generateSecret(((java.security.spec.KeySpec) (obj))); + mCipher.init(2, ((java.security.Key) (obj)), ac); + s = new String(mCipher.doFinal(s)); + } + // Misplaced declaration of an exception variable + catch (String s) + { + s.printStackTrace(); + return null; + } + // Misplaced declaration of an exception variable + catch (String s) + { + s.printStackTrace(); + return null; + } + // Misplaced declaration of an exception variable + catch (String s) + { + s.printStackTrace(); + return null; + } + // Misplaced declaration of an exception variable + catch (String s) + { + s.printStackTrace(); + return null; + } + // Misplaced declaration of an exception variable + catch (String s) + { + s.printStackTrace(); + return null; + } + // Misplaced declaration of an exception variable + catch (String s) + { + s.printStackTrace(); + return null; + } + // Misplaced declaration of an exception variable + catch (String s) + { + s.printStackTrace(); + return null; + } + return s; + } + + private String encrypt(String s, char ac[]) + { + Object obj; + obj = new PBEKeySpec(ac); + ac = new PBEParameterSpec(salt, 10); + obj = SecretKeyFactory.getInstance("PBEWithSHA1And256BitAES-CBC-BC", "BC").generateSecret(((java.security.spec.KeySpec) (obj))); + mCipher.init(1, ((java.security.Key) (obj)), ac); + s = bytes2Hex(mCipher.doFinal(s.getBytes())); + return s; + s; + s.printStackTrace(); +_L2: + return null; + s; + s.printStackTrace(); + continue; /* Loop/switch isn't completed */ + s; + s.printStackTrace(); + continue; /* Loop/switch isn't completed */ + s; + s.printStackTrace(); + continue; /* Loop/switch isn't completed */ + s; + s.printStackTrace(); + continue; /* Loop/switch isn't completed */ + s; + s.printStackTrace(); + continue; /* Loop/switch isn't completed */ + s; + s.printStackTrace(); + if (true) goto _L2; else goto _L1 +_L1: + } + + private String getMaster() + { + if (master == null) + { + master = mPrefs.getString("master", "").toCharArray(); + } + return new String(master); + } + + private String getRawSalt() + { + return mPrefs.getString("salt", ""); + } + + private byte[] getSalt() + { + String s = getRawSalt(); + if (s != null && s.length() > 0) + { + return hex2Bytes(s); + } else + { + return new byte[0]; + } + } + + private byte[] hex2Bytes(String s) + { + byte abyte0[] = new byte[s.length() / 2]; + int j = abyte0.length; + int i = 0; + do + { + if (i >= j) + { + return abyte0; + } + int k = i * 2; + abyte0[i] = (byte)Integer.parseInt(s.substring(k, k + 2), 16); + i++; + } while (true); + } + + private void saveSalt(String s) + { + mPrefs.edit().putString("salt", s).commit(); + } + + private void saveSalt(byte abyte0[]) + { + saveSalt(bytes2Hex(abyte0)); + } + + private void storeMasterInternal(String s) + { + mPrefs.edit().putString("master", s).commit(); + } + + public void clear() + { + pass = null; + master = null; + mCtx = null; + } + + public boolean correctPass() + { + return pass != null && pass.length > 0 && decrypted; + } + + public String decrypt(String s) + { + if (!correctPass()) + { + throw new IllegalArgumentException("Must decrypt master before calling decrypt"); + } else + { + return decrypt(s, pass); + } + } + + public boolean decryptMaster(String s) + { + String s1 = decrypt(getMaster(), s.toCharArray()); + boolean flag; + if (s1 == null) + { + s = new char[0]; + } else + { + s = s1.toCharArray(); + } + pass = s; + if (s1 != null) + { + flag = true; + } else + { + flag = false; + } + decrypted = flag; + return s1 != null; + } + + public String encrypt(String s) + { + if (!correctPass()) + { + throw new IllegalArgumentException("Must decrypt master before calling encrypt"); + } else + { + return encrypt(s, pass); + } + } + + public void fromXml(String s, String s1) + { + storeMasterInternal(s); + saveSalt(s1); + } + + public boolean storeMaster(String s) + { + s = encrypt(s, s.toCharArray()); + if (s != null) + { + storeMasterInternal(s); + return true; + } else + { + return false; + } + } + + public void toXml(XmlSerializer xmlserializer) + throws IllegalArgumentException, IllegalStateException, IOException + { + String s = getMaster(); + String s1 = getRawSalt(); + xmlserializer.startTag(null, "crypt"); + xmlserializer.attribute(null, "m", s); + xmlserializer.attribute(null, "s", s1); + xmlserializer.endTag(null, "crypt"); + } + +} diff --git a/app/src/main/java/net/andchat/donate/Backend/IRCDb.java b/app/src/main/java/net/andchat/donate/Backend/IRCDb.java new file mode 100644 index 0000000..77e2391 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/IRCDb.java @@ -0,0 +1,857 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import android.content.ContentValues; +import android.content.SharedPreferences; +import android.database.Cursor; +import android.database.SQLException; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteException; +import android.util.Log; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import net.andchat.donate.IRCApp; +import net.andchat.donate.Misc.ServerProfile; +import net.andchat.donate.Misc.Utils; +import org.xmlpull.v1.XmlSerializer; + +// Referenced classes of package net.andchat.donate.Backend: +// Crypt, Ignores + +public final class IRCDb +{ + + private static final String CREATE_TABLE_IGNORE = (new StringBuilder("CREATE TABLE IF NOT EXISTS ")).append("ignore").append(" (_id INTEGER ").append("PRIMARY KEY AUTOINCREMENT, ").append("Server_Id").append(" INTEGER NOT NULL, ").append("Nick").append(" TEXT NOT NULL, ").append("Ident").append(" TEXT NOT NULL, ").append("Ignore_Mask").append(" INTEGER NOT NULL, ").append("Hostname").append(" TEXT NOT NULL)").toString(); + private static final String CREATE_TABLE_IRC = (new StringBuilder("CREATE TABLE IF NOT EXISTS ")).append("irc").append(" (_id INTEGER ").append("PRIMARY KEY AUTOINCREMENT, ").append("Label").append(" TEXT NOT NULL UNIQUE, ").append("Addr").append(" TEXT NOT NULL, ").append("SSL").append(" INTEGER NOT NULL, ").append("Port").append(" INTEGER, ").append("Pass").append(" TEXT, ").append("Nick1").append(" TEXT, ").append("Nick2").append(" TEXT, ").append("Nick3").append(" TEXT, ").append("User").append(" TEXT, ").append("RealName").append(" TEXT, ").append("Autojoin").append(" TEXT, ").append("Autorun").append(" TEXT, ").append("Encrypted").append(" INTEGER, ").append("Charset").append(" TEXT, ").append("LoggingEnabled").append(" INTEGER, ").append("AuthMode").append(" INTEGER, ").append("Nickserv_Password").append(" TEXT, ").append("SASL_Username").append(" TEXT, ").append("SASL_Password").append(" TEXT)").toString(); + private static final String DEFAULT_ORDER = (new StringBuilder("LOWER(")).append("Label").append(") ASC").toString(); + private Map cache; + private final IRCApp mCtx; + private SQLiteDatabase mDb; + + public IRCDb(IRCApp ircapp) + { + cache = new HashMap(); + mCtx = ircapp; + ensureOpen(); + } + + private void addLogColumn() + { + try + { + mDb.execSQL("ALTER TABLE irc ADD COLUMN LoggingEnabled INTEGER"); + mDb.execSQL("UPDATE irc SET LoggingEnabled = 1"); + return; + } + catch (Exception exception) + { + exception.printStackTrace(); + } + } + + private void ensureOpen() + { + if (mDb == null || !mDb.isOpen()) + { + mDb = mCtx.openOrCreateDatabase("irc.db", 0, null); + mDb.execSQL(CREATE_TABLE_IRC); + mDb.execSQL(CREATE_TABLE_IGNORE); + mDb.execSQL("CREATE TABLE IF NOT EXISTS crypt (m TEXT, s TEXT)"); + performUpdatesInternal(); + } + } + + private String getMaster() + { + ensureOpen(); + Cursor cursor = mDb.query("crypt", new String[] { + "m" + }, null, null, null, null, null); + if (cursor.moveToFirst()) + { + do + { + String s = cursor.getString(cursor.getColumnIndex("m")); + while (s != null || !cursor.moveToNext()) + { + cursor.close(); + return s; + } + } while (true); + } else + { + cursor.close(); + return ""; + } + } + + private String getSalt() + { + ensureOpen(); + Cursor cursor = mDb.query("crypt", new String[] { + "s" + }, null, null, null, null, null); + if (cursor.moveToFirst()) + { + int i = cursor.getColumnIndex("s"); + do + { + String s = cursor.getString(i); + while (s != null || !cursor.moveToNext()) + { + cursor.close(); + return s; + } + } while (true); + } else + { + cursor.close(); + return ""; + } + } + + private boolean labelExists(String s) + { + ensureOpen(); + s = mDb.query("irc", new String[] { + "Label" + }, "Label = ?", new String[] { + s + }, null, null, null); + int i = s.getCount(); + s.close(); + return i > 0; + } + + private void performUpdatesInternal() + { + int j = mDb.getVersion(); + int i = j; + if (j <= 1) + { + upgradeToV2(); + i = 2; + } + if (i > j) + { + mDb.setVersion(i); + } + } + + private void updateCharset() + { + try + { + mDb.execSQL("ALTER TABLE irc ADD COLUMN Charset TEXT"); + return; + } + catch (Exception exception) + { + return; + } + } + + private void upgradeToV2() + { + int i = "ALTER TABLE irc ADD COLUMN ".length(); + Object obj = new StringBuilder(); + ((StringBuilder) (obj)).append("ALTER TABLE irc ADD COLUMN "); + mDb.beginTransaction(); + ((StringBuilder) (obj)).append("AuthMode").append(" INTEGER"); + mDb.execSQL(((StringBuilder) (obj)).toString()); + ((StringBuilder) (obj)).setLength(i); + ((StringBuilder) (obj)).append("Nickserv_Password").append(" TEXT"); + mDb.execSQL(((StringBuilder) (obj)).toString()); + ((StringBuilder) (obj)).setLength(i); + ((StringBuilder) (obj)).append("SASL_Username").append(" TEXT"); + mDb.execSQL(((StringBuilder) (obj)).toString()); + ((StringBuilder) (obj)).setLength(i); + ((StringBuilder) (obj)).append("SASL_Password").append(" TEXT"); + mDb.execSQL(((StringBuilder) (obj)).toString()); + ((StringBuilder) (obj)).setLength(i); + obj = new ContentValues(); + ((ContentValues) (obj)).put("Nickserv_Password", ""); + ((ContentValues) (obj)).put("SASL_Username", ""); + ((ContentValues) (obj)).put("SASL_Password", ""); + mDb.update("irc", ((ContentValues) (obj)), null, null); + Cursor cursor = mDb.query("irc", new String[] { + "_id", "Pass" + }, null, null, null, null, null); + if (cursor.moveToFirst()) + { + ((ContentValues) (obj)).clear(); + do + { + int j = cursor.getInt(cursor.getColumnIndex("_id")); + if (cursor.getString(cursor.getColumnIndex("Pass")).length() > 0) + { + ((ContentValues) (obj)).put("AuthMode", Integer.valueOf(net.andchat.donate.Misc.ServerProfile.AuthenticationModes.MODE_PASSWORD)); + mDb.update("irc", ((ContentValues) (obj)), "_id = ?", new String[] { + Integer.toString(j) + }); + } + ((ContentValues) (obj)).clear(); + } while (cursor.moveToNext()); + } + cursor.close(); + mDb.setTransactionSuccessful(); + mDb.endTransaction(); +_L2: + Object obj1 = new ContentValues(); + ((ContentValues) (obj1)).put("Nickserv_Password", ""); + ((ContentValues) (obj1)).put("SASL_Username", ""); + ((ContentValues) (obj1)).put("SASL_Password", ""); + mDb.update("irc", ((ContentValues) (obj1)), null, null); + obj1 = getMaster(); + String s = getSalt(); + mCtx.getSharedPreferences("crypt", 0).edit().putString("master", ((String) (obj1))).putString("salt", s).commit(); + mDb.execSQL("DROP TABLE IF EXISTS crypt"); + return; + Object obj2; + obj2; + Log.e("IRCDb", "", ((Throwable) (obj2))); + mDb.endTransaction(); + if (true) goto _L2; else goto _L1 +_L1: + obj2; + mDb.endTransaction(); + throw obj2; + } + + public void addMultiple(List list, net.andchat.donate.Misc.Backup.Stats stats) + throws SQLException + { + Object obj; + SQLiteDatabase sqlitedatabase; + obj = null; + sqlitedatabase = mDb; + int i; + sqlitedatabase.beginTransaction(); + i = list.size() - 1; +_L11: + if (i >= 0) goto _L2; else goto _L1 +_L1: + sqlitedatabase.setTransactionSuccessful(); + sqlitedatabase.endTransaction(); + list = obj; +_L9: + Object obj1; + int j; + int k; + int l; + if (list != null) + { + throw list; + } else + { + return; + } +_L2: + obj1 = (ServerProfile)list.get(i); + if (obj1 != null) goto _L4; else goto _L3 +_L4: + j = addServer(((ServerProfile) (obj1))); + j; + JVM INSTR tableswitch -2 -1: default 204 + // -2 163 + // -1 163; + goto _L5 _L6 _L6 +_L5: + stats.goodServers = stats.goodServers + 1; +_L8: + obj1 = ((ServerProfile) (obj1)).getIgnoreList(); + l = ((List) (obj1)).size(); + k = 0; +_L7: + if (k >= l) + { + break; /* Loop/switch isn't completed */ + } + addOrUpdateIgnore(j, (Ignores.IgnoreInfo)((List) (obj1)).get(k)); + k++; + if (true) goto _L7; else goto _L3 +_L6: + j = getId(((ServerProfile) (obj1)).getName()); + goto _L8 + list; + sqlitedatabase.endTransaction(); + goto _L9 + list; + sqlitedatabase.endTransaction(); + throw list; +_L3: + i--; + if (true) goto _L11; else goto _L10 +_L10: + } + + public void addOrUpdateIgnore(int i, Ignores.IgnoreInfo ignoreinfo) + { + SQLiteDatabase sqlitedatabase; + ensureOpen(); + sqlitedatabase = mDb; + sqlitedatabase.beginTransaction(); + removeFromIgnore(i, ignoreinfo); + ContentValues contentvalues = new ContentValues(); + contentvalues.put("Nick", ignoreinfo.nick); + contentvalues.put("Ident", ignoreinfo.ident); + contentvalues.put("Ignore_Mask", Integer.valueOf(ignoreinfo.mask)); + contentvalues.put("Hostname", ignoreinfo.hostname); + contentvalues.put("Server_Id", Integer.valueOf(i)); + sqlitedatabase.insert("ignore", null, contentvalues); + sqlitedatabase.setTransactionSuccessful(); + sqlitedatabase.endTransaction(); + return; + ignoreinfo; + sqlitedatabase.endTransaction(); + throw ignoreinfo; + } + + public int addServer(ServerProfile serverprofile) + { + boolean flag = true; + ensureOpen(); + if (labelExists(serverprofile.getName())) + { + return -2; + } + ContentValues contentvalues; + int i; + int j; + if (serverprofile.usesSSL()) + { + i = 1; + } else + { + i = 0; + } + if (serverprofile.isLoggingEnabled()) + { + j = 1; + } else + { + j = 0; + } + contentvalues = new ContentValues(); + contentvalues.put("Label", serverprofile.getName()); + contentvalues.put("Addr", serverprofile.getAddress()); + contentvalues.put("SSL", Integer.valueOf(i)); + contentvalues.put("Port", Integer.valueOf(serverprofile.getPort())); + contentvalues.put("Pass", serverprofile.getServerPassword()); + contentvalues.put("Nick1", serverprofile.getNick(1)); + contentvalues.put("Nick2", serverprofile.getNick(2)); + contentvalues.put("Nick3", serverprofile.getNick(3)); + contentvalues.put("User", serverprofile.getUsername()); + contentvalues.put("RealName", serverprofile.getRealname()); + contentvalues.put("Autojoin", serverprofile.getAutojoinList()); + contentvalues.put("Autorun", serverprofile.getAutorunList()); + if (serverprofile.usesEncryption()) + { + i = ((flag) ? 1 : 0); + } else + { + i = 0; + } + contentvalues.put("Encrypted", Integer.valueOf(i)); + contentvalues.put("Charset", serverprofile.getCharset()); + contentvalues.put("LoggingEnabled", Integer.valueOf(j)); + contentvalues.put("Nickserv_Password", serverprofile.getNickservPassword()); + contentvalues.put("SASL_Username", serverprofile.getSASLUsername()); + contentvalues.put("SASL_Password", serverprofile.getSASLPassword()); + contentvalues.put("AuthMode", Integer.valueOf(serverprofile.getAuthModes())); + return (int)mDb.insert("irc", null, contentvalues); + } + + public int decryptAll() + { + Crypt crypt = Utils.getCrypt(mCtx); + ensureOpen(); + int i = 0; + boolean flag = false; + Cursor cursor = mDb.query("irc", new String[] { + "Pass", "Label", "Addr", "Nickserv_Password", "SASL_Password" + }, "Encrypted= ?", new String[] { + "1" + }, null, null, null); + int j = 0; + if (cursor.moveToFirst()) + { + boolean flag1 = true; + int k = cursor.getColumnIndex("Pass"); + int l = cursor.getColumnIndex("Addr"); + int i1 = cursor.getColumnIndex("Label"); + int j1 = cursor.getColumnIndex("Nickserv_Password"); + int k1 = cursor.getColumnIndex("SASL_Password"); + ContentValues contentvalues = new ContentValues(); + j = ((flag) ? 1 : 0); + do + { + String s = cursor.getString(k); + String s1 = cursor.getString(l); + String s2 = cursor.getString(j1); + String s3 = cursor.getString(k1); + if (s.length() > 0) + { + contentvalues.put("Pass", crypt.decrypt(s)); + } + if (s2.length() > 0) + { + contentvalues.put("Nickserv_Password", crypt.decrypt(s2)); + } + if (s3.length() > 0) + { + contentvalues.put("SASL_Password", crypt.decrypt(s3)); + } + contentvalues.put("Addr", crypt.decrypt(s1)); + contentvalues.put("Encrypted", Integer.valueOf(0)); + mDb.update("irc", contentvalues, "Label = ?", new String[] { + cursor.getString(i1) + }); + i = j + 1; + contentvalues.clear(); + j = i; + } while (cursor.moveToNext()); + cursor.close(); + j = ((flag1) ? 1 : 0); + } + cursor.close(); + if (j != 0) + { + mDb.delete("crypt", null, null); + } + return i; + } + + public boolean deleteServer(String s) + { + ensureOpen(); + int i = getId(s); + int j = mDb.delete("irc", "Label = ?", new String[] { + s + }); + cache.remove(s); + mDb.delete("ignore", "Server_Id= ?", new String[] { + String.valueOf(i) + }); + return j > 0; + } + + public int editServer(String s, ServerProfile serverprofile) + { + ensureOpen(); + if (!s.equalsIgnoreCase(serverprofile.getName()) && labelExists(serverprofile.getName())) + { + return -2; + } + ContentValues contentvalues; + int i; + int j; + if (serverprofile.usesSSL()) + { + j = 1; + } else + { + j = 0; + } + if (serverprofile.isLoggingEnabled()) + { + i = 1; + } else + { + i = 0; + } + contentvalues = new ContentValues(); + contentvalues.put("Label", serverprofile.getName()); + contentvalues.put("Addr", serverprofile.getAddress()); + contentvalues.put("SSL", Integer.valueOf(j)); + contentvalues.put("Port", Integer.valueOf(serverprofile.getPort())); + contentvalues.put("Pass", serverprofile.getServerPassword()); + contentvalues.put("Nick1", serverprofile.getNick(1)); + contentvalues.put("Nick2", serverprofile.getNick(2)); + contentvalues.put("Nick3", serverprofile.getNick(3)); + contentvalues.put("User", serverprofile.getUsername()); + contentvalues.put("RealName", serverprofile.getRealname()); + contentvalues.put("Autojoin", serverprofile.getAutojoinList()); + contentvalues.put("Autorun", serverprofile.getAutorunList()); + if (serverprofile.usesEncryption()) + { + j = 1; + } else + { + j = 0; + } + contentvalues.put("Encrypted", Integer.valueOf(j)); + contentvalues.put("Charset", serverprofile.getCharset()); + contentvalues.put("LoggingEnabled", Integer.valueOf(i)); + contentvalues.put("Nickserv_Password", serverprofile.getNickservPassword()); + contentvalues.put("SASL_Username", serverprofile.getSASLUsername()); + contentvalues.put("SASL_Password", serverprofile.getSASLPassword()); + contentvalues.put("AuthMode", Integer.valueOf(serverprofile.getAuthModes())); + return mDb.update("irc", contentvalues, "Label = ?", new String[] { + s + }); + } + + public int encryptAll() + { + ensureOpen(); + Cursor cursor = mDb.query("irc", new String[] { + "Pass", "Label", "Addr", "Nickserv_Password", "SASL_Password" + }, "Encrypted= ?", new String[] { + "0" + }, null, null, null); + int i = 0; + int j = 0; + if (cursor.moveToFirst()) + { + Crypt crypt = Utils.getCrypt(mCtx); + int l = cursor.getColumnIndex("Pass"); + int i1 = cursor.getColumnIndex("Addr"); + int j1 = cursor.getColumnIndex("Label"); + int k1 = cursor.getColumnIndex("Nickserv_Password"); + int l1 = cursor.getColumnIndex("SASL_Password"); + ContentValues contentvalues = new ContentValues(); + do + { + i = 0; + String s = cursor.getString(l); + String s1 = cursor.getString(i1); + String s2 = cursor.getString(k1); + String s3 = cursor.getString(l1); + if (s.length() > 0) + { + contentvalues.put("Pass", crypt.encrypt(s)); + i = 1; + } + if (s2.length() > 0) + { + contentvalues.put("Nickserv_Password", crypt.encrypt(s2)); + i = 1; + } + int k = i; + if (s3.length() > 0) + { + contentvalues.put("SASL_Password", crypt.encrypt(s3)); + k = 1; + } + i = j; + if (k != 0) + { + contentvalues.put("Addr", crypt.encrypt(s1)); + contentvalues.put("Encrypted", Integer.valueOf(1)); + mDb.update("irc", contentvalues, "Label = ?", new String[] { + cursor.getString(j1) + }); + i = j + 1; + } + contentvalues.clear(); + j = i; + } while (cursor.moveToNext()); + } + cursor.close(); + return i; + } + + public ServerProfile getDetailsForId(int i) + { + ensureOpen(); + Cursor cursor = mDb.query("irc", null, "_id = ?", new String[] { + String.valueOf(i) + }, null, null, null); + if (cursor.moveToFirst()) + { + ServerProfile serverprofile = new ServerProfile(); + int i4 = cursor.getColumnIndex("Label"); + int j4 = cursor.getColumnIndex("Addr"); + i = cursor.getColumnIndex("SSL"); + int k4 = cursor.getColumnIndex("Port"); + int j = cursor.getColumnIndex("Pass"); + int k = cursor.getColumnIndex("Nick1"); + int l = cursor.getColumnIndex("Nick2"); + int i1 = cursor.getColumnIndex("Nick3"); + int j1 = cursor.getColumnIndex("User"); + int k1 = cursor.getColumnIndex("RealName"); + int l1 = cursor.getColumnIndex("Autojoin"); + int i2 = cursor.getColumnIndex("Autorun"); + int j2 = cursor.getColumnIndex("Encrypted"); + int k2 = cursor.getColumnIndex("Charset"); + int l2 = cursor.getColumnIndex("LoggingEnabled"); + int i3 = cursor.getColumnIndex("Nickserv_Password"); + int j3 = cursor.getColumnIndex("SASL_Username"); + int k3 = cursor.getColumnIndex("SASL_Password"); + int l3 = cursor.getColumnIndex("AuthMode"); + String s = cursor.getString(i4); + String s1 = cursor.getString(j4); + i4 = cursor.getInt(k4); + String s2; + boolean flag; + if (cursor.getInt(i) == 1) + { + flag = true; + } else + { + flag = false; + } + serverprofile.setServerDetails(s, s1, i4, flag); + serverprofile.setUserDetails(cursor.getString(k), cursor.getString(l), cursor.getString(i1), cursor.getString(j1), cursor.getString(k1)); + serverprofile.setAuthDetails(cursor.getInt(l3), cursor.getString(j), cursor.getString(i3), cursor.getString(j3), cursor.getString(k3)); + s = cursor.getString(l1); + s1 = cursor.getString(i2); + s2 = cursor.getString(k2); + if (cursor.getInt(l2) == 1) + { + flag = true; + } else + { + flag = false; + } + serverprofile.setOtherDetails(s, s1, s2, flag); + if (cursor.getInt(j2) == 1) + { + flag = true; + } else + { + flag = false; + } + serverprofile.setUsesEncryption(flag); + if (serverprofile.usesEncryption()) + { + serverprofile.setDecrypted(false); + } else + { + serverprofile.setDecrypted(true); + } + cursor.close(); + return serverprofile; + } else + { + cursor.close(); + return null; + } + } + + public int getId(String s) + { + Object obj = (Integer)cache.get(s); + if (obj != null) + { + return ((Integer) (obj)).intValue(); + } + ensureOpen(); + obj = mDb.query("irc", new String[] { + "_id" + }, "Label = ?", new String[] { + s + }, null, null, null); + if (((Cursor) (obj)).moveToFirst()) + { + int i = ((Cursor) (obj)).getInt(((Cursor) (obj)).getColumnIndex("_id")); + ((Cursor) (obj)).close(); + cache.put(s, Integer.valueOf(i)); + return i; + } else + { + ((Cursor) (obj)).close(); + return -1; + } + } + + public List getIgnores(int i) + { + ensureOpen(); + Cursor cursor = mDb.query("ignore", null, "Server_Id = ?", new String[] { + String.valueOf(i) + }, null, null, null); + if (cursor.moveToFirst()) + { + ArrayList arraylist = new ArrayList(cursor.getCount()); + i = cursor.getColumnIndex("Nick"); + int j = cursor.getColumnIndex("Ident"); + int k = cursor.getColumnIndex("Hostname"); + int l = cursor.getColumnIndex("Ignore_Mask"); + do + { + arraylist.add(new Ignores.IgnoreInfo(cursor.getString(i), cursor.getString(j), cursor.getString(k), cursor.getInt(l))); + } while (cursor.moveToNext()); + cursor.close(); + return arraylist; + } else + { + cursor.close(); + return new ArrayList(); + } + } + + public List getList() + { + ensureOpen(); + Object obj = mDb; + String s = DEFAULT_ORDER; + obj = ((SQLiteDatabase) (obj)).query("irc", new String[] { + "Label" + }, null, null, null, null, s); + if (((Cursor) (obj)).moveToFirst()) + { + ArrayList arraylist = new ArrayList(((Cursor) (obj)).getCount()); + int i = ((Cursor) (obj)).getColumnIndex("Label"); + do + { + arraylist.add(((Cursor) (obj)).getString(i)); + } while (((Cursor) (obj)).moveToNext()); + ((Cursor) (obj)).close(); + return arraylist; + } else + { + ((Cursor) (obj)).close(); + return new ArrayList(); + } + } + + public boolean performUpdates(SharedPreferences sharedpreferences, android.content.SharedPreferences.Editor editor) + { + boolean flag = false; + ensureOpen(); + if (!sharedpreferences.getBoolean("charsetcheck", false)) + { + Log.i("IRCDb", "Attempting to update irc table for charset support"); + updateCharset(); + editor.putBoolean("charsetcheck", true); + flag = true; + } + if (!sharedpreferences.getBoolean("logcheck", false)) + { + Log.i("IRCDb", "Attempting to update table for per server logging option support"); + addLogColumn(); + editor.putBoolean("logcheck", true); + flag = true; + } + return flag; + } + + void removeFromIgnore(int i, Ignores.IgnoreInfo ignoreinfo) + { + ensureOpen(); + mDb.delete("ignore", "Ident= ? AND Server_Id = ? AND Hostname = ? ", new String[] { + ignoreinfo.ident, String.valueOf(i), ignoreinfo.hostname + }); + } + + public void shutdown() + { + if (mDb.isOpen()) + { + mDb.close(); + } + } + + public int toXml(XmlSerializer xmlserializer, net.andchat.donate.Misc.Backup.Stats stats) + throws IllegalArgumentException, IllegalStateException, IOException + { + List list; + Iterator iterator; + list = getList(); + if (list.size() == 0) + { + return 0; + } + iterator = list.iterator(); +_L3: + Object obj; + List list1; + int k; + if (!iterator.hasNext()) + { + return list.size(); + } + obj = (String)iterator.next(); + xmlserializer.startTag(null, "server"); + int i = getId(((String) (obj))); + obj = getDetailsForId(i); + xmlserializer.attribute(null, "name", ((ServerProfile) (obj)).getName()); + xmlserializer.attribute(null, "address", ((ServerProfile) (obj)).getAddress()); + xmlserializer.attribute(null, "port", String.valueOf(((ServerProfile) (obj)).getPort())); + xmlserializer.attribute(null, "ssl", String.valueOf(((ServerProfile) (obj)).usesSSL())); + xmlserializer.attribute(null, "nick1", ((ServerProfile) (obj)).getNick(1)); + xmlserializer.attribute(null, "nick2", ((ServerProfile) (obj)).getNick(2)); + xmlserializer.attribute(null, "nick3", ((ServerProfile) (obj)).getNick(3)); + xmlserializer.attribute(null, "realname", ((ServerProfile) (obj)).getRealname()); + xmlserializer.attribute(null, "username", ((ServerProfile) (obj)).getUsername()); + xmlserializer.attribute(null, "autojoin", ((ServerProfile) (obj)).getAutojoinList()); + xmlserializer.attribute(null, "autorun", ((ServerProfile) (obj)).getAutorunList()); + xmlserializer.attribute(null, "password", ((ServerProfile) (obj)).getServerPassword()); + xmlserializer.attribute(null, "charset", ((ServerProfile) (obj)).getCharset()); + xmlserializer.attribute(null, "encrypted", String.valueOf(((ServerProfile) (obj)).usesEncryption())); + xmlserializer.attribute(null, "logmessages", String.valueOf(((ServerProfile) (obj)).isLoggingEnabled())); + xmlserializer.attribute(null, "nickserv_password", ((ServerProfile) (obj)).getNickservPassword()); + xmlserializer.attribute(null, "sasl_username", ((ServerProfile) (obj)).getSASLUsername()); + xmlserializer.attribute(null, "sasl_password", ((ServerProfile) (obj)).getSASLPassword()); + xmlserializer.attribute(null, "auth_modes", Integer.toString(((ServerProfile) (obj)).getAuthModes())); + list1 = Ignores.getIgnores(i, this).getAllIgnores(); + k = list1.size(); + if (k <= 0) goto _L2; else goto _L1 +_L1: + int j; + xmlserializer.startTag(null, "ignores"); + j = 0; +_L4: + if (j < k) + { + break MISSING_BLOCK_LABEL_483; + } + xmlserializer.endTag(null, "ignores"); +_L2: + xmlserializer.endTag(null, "server"); + stats.goodServers = stats.goodServers + 1; + goto _L3 + Ignores.IgnoreInfo ignoreinfo = (Ignores.IgnoreInfo)list1.get(j); + xmlserializer.startTag(null, "ignore"); + xmlserializer.attribute(null, "label", ((ServerProfile) (obj)).getName()); + xmlserializer.attribute(null, "nick", ignoreinfo.nick); + xmlserializer.attribute(null, "ident", ignoreinfo.ident); + xmlserializer.attribute(null, "host", ignoreinfo.hostname); + xmlserializer.attribute(null, "mask", String.valueOf(ignoreinfo.mask)); + xmlserializer.endTag(null, "ignore"); + j++; + goto _L4 + } + + public void updateMultiple(List list) + { + SQLiteDatabase sqlitedatabase = mDb; + int i; + sqlitedatabase.beginTransaction(); + i = list.size() - 1; +_L2: + if (i >= 0) + { + break MISSING_BLOCK_LABEL_33; + } + sqlitedatabase.setTransactionSuccessful(); + sqlitedatabase.endTransaction(); + return; + ServerProfile serverprofile = (ServerProfile)list.get(i); + if (serverprofile == null) + { + break MISSING_BLOCK_LABEL_98; + } + int j = editServer(serverprofile.getName(), serverprofile); + switch (j) + { + } + break MISSING_BLOCK_LABEL_98; + list; + sqlitedatabase.endTransaction(); + throw list; + i--; + if (true) goto _L2; else goto _L1 +_L1: + } + +} diff --git a/app/src/main/java/net/andchat/donate/Backend/IRCService$1$1.java b/app/src/main/java/net/andchat/donate/Backend/IRCService$1$1.java new file mode 100644 index 0000000..1bdf8ef --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/IRCService$1$1.java @@ -0,0 +1,163 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import android.os.Handler; +import android.os.Message; +import android.util.SparseArray; +import java.util.List; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Backend: +// ServerConnection, IRCService + +class n extends Thread +{ + + final n.reconnect this$1; + private final ServerConnection val$sc; + + public void run() + { + setName((new StringBuilder("Reconnecting ")).append(val$sc.pLabel).toString()); + val$sc.reconnect(); + } + + n() + { + this$1 = final_n; + val$sc = ServerConnection.this; + super(); + } + + // Unreferenced inner class net/andchat/donate/Backend/IRCService$1 + +/* anonymous class */ + class IRCService._cls1 extends Handler + { + + final IRCService this$0; + + private void handleServConnUpdate(Message message) + { + obj = (ServerConnection)message.obj; + message.arg1; + JVM INSTR tableswitch 0 3: default 44 + // 0 45 + // 1 125 + // 2 145 + // 3 279; + goto _L1 _L2 _L3 _L4 _L5 +_L1: + return; +_L2: + notifyStateChange(((ServerConnection) (obj)).id); + if (((ServerConnection) (obj)).pConnectionChanged || Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.access$2()) && ((ServerConnection) (obj)).pReconnectCount <= IRCService.sPreferences.pReconnectLimit) + { + (((IRCService._cls1._cls1) (obj)). new IRCService._cls1._cls1()).start(); + } + if (!areServersAlive()) + { + IRCService.access$3(IRCService.this); + } + updateNotification(); + return; +_L3: + if (obj != null) + { + notifyStateChange(((ServerConnection) (obj)).id); + } + updateNotification(); + return; +_L4: + if (obj != null) + { + synchronized (mServers) + { + ((ServerConnection) (obj)).pLogs.closeAll(); + mServers.delete(((ServerConnection) (obj)).id); + } + } + if (mServers.size() == 0) + { + IRCService.access$3(IRCService.this); + mManagers.clear(); + mSenders.clear(); + message = mListeners; + int j = message.size(); + int i = 0; + while (i < j) + { + obj = (IRCService.ServerStateListener)message.get(i); + if (obj != null) + { + ((IRCService.ServerStateListener) (obj)).onAllStopped(); + } + i++; + } + } + if (false) + { + } + continue; /* Loop/switch isn't completed */ + obj; + message; + JVM INSTR monitorexit ; + throw obj; +_L5: + updateNotification(); + notifyStateChange(((ServerConnection) (obj)).id); + if (message.arg2 == 1) + { + IRCService.access$4(IRCService.this); + return; + } + if (true) goto _L1; else goto _L6 +_L6: + } + + private void notifyStateChange(int i) + { + List list = mListeners; + int k = list.size(); + int j = 0; + do + { + if (j >= k) + { + return; + } + IRCService.ServerStateListener serverstatelistener = (IRCService.ServerStateListener)list.get(j); + if (serverstatelistener != null) + { + serverstatelistener.onServerStateChanged(i); + } + j++; + } while (true); + } + + public void handleMessage(Message message) + { + message.what; + JVM INSTR tableswitch 0 0: default 24 + // 0 32; + goto _L1 _L2 +_L1: + acquireOrReleaseWifiLock(); + return; +_L2: + handleServConnUpdate(message); + if (true) goto _L1; else goto _L3 +_L3: + } + + + { + this$0 = IRCService.this; + super(); + } + } + +} diff --git a/app/src/main/java/net/andchat/donate/Backend/IRCService$1.java b/app/src/main/java/net/andchat/donate/Backend/IRCService$1.java new file mode 100644 index 0000000..e69de29 diff --git a/app/src/main/java/net/andchat/donate/Backend/IRCService$2.java b/app/src/main/java/net/andchat/donate/Backend/IRCService$2.java new file mode 100644 index 0000000..dad127a --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/IRCService$2.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + + +// Referenced classes of package net.andchat.donate.Backend: +// IRCService, ServerConnection + +class ion extends Thread +{ + + final IRCService this$0; + private final ServerConnection val$s; + + public void run() + { + val$s.stopConnection(2); + } + + ion() + { + this$0 = final_ircservice; + val$s = ServerConnection.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/IRCService$IRCServiceBinder.java b/app/src/main/java/net/andchat/donate/Backend/IRCService$IRCServiceBinder.java new file mode 100644 index 0000000..a9abb9d --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/IRCService$IRCServiceBinder.java @@ -0,0 +1,27 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import android.os.Binder; + +// Referenced classes of package net.andchat.donate.Backend: +// IRCService + +public class this._cls0 extends Binder +{ + + final IRCService this$0; + + public IRCService getService() + { + return IRCService.this; + } + + public () + { + this$0 = IRCService.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/IRCService$InfoReceiver$1.java b/app/src/main/java/net/andchat/donate/Backend/IRCService$InfoReceiver$1.java new file mode 100644 index 0000000..d241a96 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/IRCService$InfoReceiver$1.java @@ -0,0 +1,31 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + + +// Referenced classes of package net.andchat.donate.Backend: +// IRCService, ServerConnection + +class val.sc extends Thread +{ + + final ction this$1; + private final ServerConnection val$sc; + + public void run() + { + val$sc.sendConnectionChangedMessage(); + ServerConnection serverconnection = val$sc; + serverconnection.pReconnectCount = serverconnection.pReconnectCount - 1; + val$sc.stopConnection(0); + } + + () + { + this$1 = final_; + val$sc = ServerConnection.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/IRCService$InfoReceiver.java b/app/src/main/java/net/andchat/donate/Backend/IRCService$InfoReceiver.java new file mode 100644 index 0000000..982f3ad --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/IRCService$InfoReceiver.java @@ -0,0 +1,338 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.text.TextUtils; +import android.util.Log; +import android.util.SparseArray; +import java.util.Calendar; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Backend: +// IRCService, ServerConnection + +private class extends BroadcastReceiver +{ + + private int initialType; + final IRCService this$0; + private boolean wasAirplaneMode; + + private void reconnectLocked(SparseArray sparsearray, String s) + { + int i = sparsearray.size(); + boolean flag = false; + int j = i - 1; + do + { + if (j < 0) + { + return; + } + final ServerConnection sc = (ServerConnection)sparsearray.valueAt(j); + boolean flag1 = flag; + if (!sc.isReconnecting()) + { + flag1 = flag; + if (sc.pState == 1) + { + flag1 = flag; + if (!flag) + { + Log.i("IRCService", "Reconnecting all connected servers due to connectivity change"); + Log.i("IRCService", (new StringBuilder("New information: ")).append(s).toString()); + flag1 = true; + } + (new Thread() { + + final IRCService.InfoReceiver this$1; + private final ServerConnection val$sc; + + public void run() + { + sc.sendConnectionChangedMessage(); + ServerConnection serverconnection = sc; + serverconnection.pReconnectCount = serverconnection.pReconnectCount - 1; + sc.stopConnection(0); + } + + + { + this$1 = IRCService.InfoReceiver.this; + sc = serverconnection; + super(); + } + }).start(); + } + } + j--; + flag = flag1; + } while (true); + } + + public void onReceive(Context context, Intent intent) + { + context = intent.getAction(); + if (!context.equals("android.net.conn.CONNECTIVITY_CHANGE")) goto _L2; else goto _L1 +_L1: + Object obj; + int j; + int k; + acquireOrReleaseWifiLock(); + context = (NetworkInfo)intent.getParcelableExtra("networkInfo"); + k = context.getType(); + obj = IRCService.access$0(IRCService.this); + j = 0; + k; + JVM INSTR tableswitch 1 1: default 68 + // 1 213; + goto _L3 _L4 +_L3: + int i; + i = j; + if (obj != null) + { + i = j; + if (((this._cls0) (obj)).ime != 0x493e0) + { + obj.ime = 0x493e0; + i = 1; + } + } +_L11: + if (obj == null || !i) goto _L6; else goto _L5 +_L5: + obj; + JVM INSTR monitorenter ; + obj.notify(); + obj; + JVM INSTR monitorexit ; +_L6: + if (!Utils.isBitSet(IRCService.sPreferences.MainOptions, IRCService.access$1())) goto _L8; else goto _L7 +_L7: + NetworkInfo networkinfo; + obj = context.getState(); + networkinfo = ((ConnectivityManager)getSystemService("connectivity")).getActiveNetworkInfo(); + if (initialType == -1) + { + initialType = k; + } + if (obj != android.net.TED || !wasAirplaneMode) goto _L10; else goto _L9 +_L9: + wasAirplaneMode = false; + synchronized (mServers) + { + reconnectLocked(mServers, context.toString()); + } +_L8: + return; +_L4: + i = j; + if (obj != null) + { + i = j; + if (((reconnectLocked) (obj)).ime != 0x1d4c0) + { + obj.ime = 0x1d4c0; + i = 1; + } + } + goto _L11 + context; + obj; + JVM INSTR monitorexit ; + throw context; + context; + intent; + JVM INSTR monitorexit ; + throw context; +_L10: + if (obj == android.net.TED && k == 1 && initialType == 0 || intent.getBooleanExtra("noConnectivity", false) || networkinfo == null) + { + wasAirplaneMode = false; + if (android.os.ce.InfoReceiver.wasAirplaneMode >= 17) + { + boolean flag; + if (android.provider.e(getContentResolver(), "airplane_mode_on", 0) == 1) + { + flag = true; + } else + { + flag = false; + } + wasAirplaneMode = flag; + } else + { + boolean flag1; + if (android.provider.oReceiver.wasAirplaneMode(getContentResolver(), "airplane_mode_on", 0) == 1) + { + flag1 = true; + } else + { + flag1 = false; + } + wasAirplaneMode = flag1; + } + synchronized (mServers) + { + reconnectLocked(mServers, context.toString()); + } + return; + } + continue; /* Loop/switch isn't completed */ + context; + intent; + JVM INSTR monitorexit ; + throw context; + if (obj != android.net.NECTED) goto _L8; else goto _L12 +_L12: + k; + JVM INSTR tableswitch 0 1: default 436 + // 0 437 + // 1 494; + goto _L13 _L14 _L15 +_L15: + continue; /* Loop/switch isn't completed */ +_L13: + return; +_L14: + if (networkinfo == null || networkinfo.getType() != 1 || !isWifiConnected()) goto _L8; else goto _L16 +_L16: + synchronized (mServers) + { + reconnectLocked(mServers, context.toString()); + } + return; + context; + intent; + JVM INSTR monitorexit ; + throw context; + if (context.isAvailable()) goto _L8; else goto _L17 +_L17: + synchronized (mServers) + { + reconnectLocked(mServers, context.toString()); + } + return; + context; + intent; + JVM INSTR monitorexit ; + throw context; +_L2: + if (!context.equals("android.intent.action.SCREEN_OFF")) goto _L19; else goto _L18 +_L18: + screenOn = false; + if (areServersAlive()) + { + acquireOrReleaseWifiLock(); + wakeLock.quire(5000L); + return; + } + goto _L8 +_L19: + if (context.equals("android.intent.action.SCREEN_ON")) + { + screenOn = true; + return; + } + if (!context.equals("android.intent.action.TIME_TICK")) goto _L8; else goto _L20 +_L20: + net/andchat/donate/Backend/ServerConnection; + JVM INSTR monitorenter ; + long l = System.currentTimeMillis(); + intent = ServerConnection.sCal; + i = intent.get(1); + k = intent.get(2); + j = intent.get(5); + ServerConnection.timeChanged(l); + context = (char[])null; + if (j != intent.get(5)) + { + context = (new StringBuilder()).append(Utils.getDay(intent.get(7), false)).append(" ").append(Utils.getMonth(intent.get(2), false)).append(" ").append(Utils.addPadding(intent.get(5))).append(" ").append(intent.get(1)).toString(); + obj = getString(0x7f0a0048, new Object[] { + context + }); + context = new char[((String) (obj)).length()]; + TextUtils.getChars(((CharSequence) (obj)), 0, ((String) (obj)).length(), context, 0); + } + goto _L21 +_L27: + if (i == intent.get(1) && k == intent.get(2)) + { + i = 0; + } else + { + i = 1; + } + if (!j) goto _L23; else goto _L22 +_L22: + if (!Utils.isBitSet(IRCService.sPreferences.MainOptions, IRCService.PREFS_LOGS_MODE_YEAR_MONTH_DAY)) goto _L23; else goto _L24 +_L24: + k = 1; + goto _L25 +_L34: + intent = mServers; + k = intent.size() - 1; + goto _L26 +_L36: + net/andchat/donate/Backend/ServerConnection; + JVM INSTR monitorexit ; + return; + context; + net/andchat/donate/Backend/ServerConnection; + JVM INSTR monitorexit ; + throw context; +_L33: + j = 0; + goto _L27 +_L23: + k = 0; + goto _L25 +_L37: + obj = (ServerConnection)intent.valueAt(k); + if (!j) goto _L29; else goto _L28 +_L28: + ((ServerConnection) (obj)).pLogs.logAll(context); +_L29: + if (!i) goto _L31; else goto _L30 +_L30: + ((ServerConnection) (obj)).pLogs.closeAll(); +_L31: + k--; + continue; /* Loop/switch isn't completed */ +_L21: + if (context == null) goto _L33; else goto _L32 +_L32: + j = 1; + goto _L27 +_L25: + if (k != 0) + { + i = 1; + } + if (!j && !i) goto _L35; else goto _L34 +_L35: + break; /* Loop/switch isn't completed */ +_L26: + if (k >= 0) goto _L37; else goto _L36 + } + + private _cls1.val.sc() + { + this$0 = IRCService.this; + super(); + initialType = -1; + } + + initialType(initialType initialtype) + { + this(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/IRCService$Pinger.java b/app/src/main/java/net/andchat/donate/Backend/IRCService$Pinger.java new file mode 100644 index 0000000..319c8aa --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/IRCService$Pinger.java @@ -0,0 +1,108 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import android.util.SparseArray; +import java.util.List; + +// Referenced classes of package net.andchat.donate.Backend: +// IRCService, ServerConnection + +private class extends Thread +{ + + boolean interrupted; + final StringBuilder sb; + int sleepTime; + final IRCService this$0; + + public void run() + { + setName("PingerThread"); + sb.append("PING :"); +_L5: + if (interrupted) + { + return; + } + this; + JVM INSTR monitorenter ; + Object obj; + Object obj1; + int i; + int j; + try + { + wait(sleepTime); + } + catch (InterruptedException interruptedexception) { } + this; + JVM INSTR monitorexit ; + obj = mServers; + obj; + JVM INSTR monitorenter ; + i = mServers.size(); + sb.append(System.currentTimeMillis()).append("\r\n"); + obj1 = sb.toString(); + i--; +_L6: + if (i >= 0) goto _L2; else goto _L1 +_L1: + sb.setLength(6); + obj; + JVM INSTR monitorexit ; + obj = mListeners; + obj; + JVM INSTR monitorenter ; + obj1 = mListeners; + i = ((List) (obj1)).size() - 1; +_L7: + if (i >= 0) goto _L4; else goto _L3 +_L3: + obj; + JVM INSTR monitorexit ; + goto _L5 + obj1; + obj; + JVM INSTR monitorexit ; + throw obj1; + obj; + this; + JVM INSTR monitorexit ; + throw obj; +_L2: + ((ServerConnection)mServers.valueAt(i)).writeToServer(((String) (obj1))); + i--; + goto _L6 + obj1; + obj; + JVM INSTR monitorexit ; + throw obj1; +_L4: + j = i; + if (((List) (obj1)).get(i) != null) + { + break MISSING_BLOCK_LABEL_203; + } + ((List) (obj1)).remove(i); + j = i - 1; + i = j - 1; + goto _L7 + } + + private () + { + this$0 = IRCService.this; + super(); + sb = new StringBuilder(20); + interrupted = false; + sleepTime = 0x493e0; + } + + sleepTime(sleepTime sleeptime) + { + this(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/IRCService$PrefsHolder.java b/app/src/main/java/net/andchat/donate/Backend/IRCService$PrefsHolder.java new file mode 100644 index 0000000..24c515b --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/IRCService$PrefsHolder.java @@ -0,0 +1,27 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import android.net.Uri; + +// Referenced classes of package net.andchat.donate.Backend: +// IRCService + +public static final class +{ + + Uri pDefaultTone; + public int pMainOptions; + int pNotificationEvents; + int pReconnectLimit; + int pSoundOptions; + int pVibrateOptions; + public String partReason; + public String quitReason; + + public () + { + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/IRCService$ServerStateListener.java b/app/src/main/java/net/andchat/donate/Backend/IRCService$ServerStateListener.java new file mode 100644 index 0000000..2e2fb97 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/IRCService$ServerStateListener.java @@ -0,0 +1,17 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + + +// Referenced classes of package net.andchat.donate.Backend: +// IRCService + +public static interface +{ + + public abstract void onAllStopped(); + + public abstract void onServerStateChanged(int i); +} diff --git a/app/src/main/java/net/andchat/donate/Backend/IRCService.java b/app/src/main/java/net/andchat/donate/Backend/IRCService.java new file mode 100644 index 0000000..5700ebd --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/IRCService.java @@ -0,0 +1,1854 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import android.app.Notification; +import android.app.NotificationManager; +import android.app.PendingIntent; +import android.app.Service; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.SharedPreferences; +import android.content.res.Resources; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.net.Uri; +import android.net.wifi.WifiInfo; +import android.net.wifi.WifiManager; +import android.os.Binder; +import android.os.Handler; +import android.os.IBinder; +import android.os.Message; +import android.os.PowerManager; +import android.telephony.TelephonyManager; +import android.text.TextUtils; +import android.util.Log; +import android.util.SparseArray; +import android.widget.RemoteViews; +import java.util.Calendar; +import java.util.Collections; +import java.util.List; +import java.util.Vector; +import net.andchat.donate.Activities.ChatWindow; +import net.andchat.donate.Activities.Main; +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.IRCApp; +import net.andchat.donate.Misc.CommandParser; +import net.andchat.donate.Misc.ServerProfile; +import net.andchat.donate.Misc.Utils; +import net.andchat.donate.View.MultiChoicePreference; + +// Referenced classes of package net.andchat.donate.Backend: +// ServerConnection, MessageSender, IRCDb + +public class IRCService extends Service + implements net.andchat.donate.IRCApp.PreferenceChangeWatcher +{ + public class IRCServiceBinder extends Binder + { + + final IRCService this$0; + + public IRCService getService() + { + return IRCService.this; + } + + public IRCServiceBinder() + { + this$0 = IRCService.this; + super(); + } + } + + private class InfoReceiver extends BroadcastReceiver + { + + private int initialType; + final IRCService this$0; + private boolean wasAirplaneMode; + + private void reconnectLocked(SparseArray sparsearray, String s) + { + int i = sparsearray.size(); + boolean flag = false; + int j = i - 1; + do + { + if (j < 0) + { + return; + } + ServerConnection serverconnection = (ServerConnection)sparsearray.valueAt(j); + boolean flag1 = flag; + if (!serverconnection.isReconnecting()) + { + flag1 = flag; + if (serverconnection.pState == 1) + { + flag1 = flag; + if (!flag) + { + Log.i("IRCService", "Reconnecting all connected servers due to connectivity change"); + Log.i("IRCService", (new StringBuilder("New information: ")).append(s).toString()); + flag1 = true; + } + (serverconnection. new Thread() { + + final InfoReceiver this$1; + private final ServerConnection val$sc; + + public void run() + { + sc.sendConnectionChangedMessage(); + ServerConnection serverconnection = sc; + serverconnection.pReconnectCount = serverconnection.pReconnectCount - 1; + sc.stopConnection(0); + } + + + { + this$1 = final_inforeceiver; + sc = ServerConnection.this; + super(); + } + }).start(); + } + } + j--; + flag = flag1; + } while (true); + } + + public void onReceive(Context context, Intent intent) + { + context = intent.getAction(); + if (!context.equals("android.net.conn.CONNECTIVITY_CHANGE")) goto _L2; else goto _L1 +_L1: + Object obj; + int j; + int k; + acquireOrReleaseWifiLock(); + context = (NetworkInfo)intent.getParcelableExtra("networkInfo"); + k = context.getType(); + obj = mPinger; + j = 0; + k; + JVM INSTR tableswitch 1 1: default 68 + // 1 213; + goto _L3 _L4 +_L3: + int i; + i = j; + if (obj != null) + { + i = j; + if (((Pinger) (obj)).sleepTime != 0x493e0) + { + obj.sleepTime = 0x493e0; + i = 1; + } + } +_L11: + if (obj == null || !i) goto _L6; else goto _L5 +_L5: + obj; + JVM INSTR monitorenter ; + obj.notify(); + obj; + JVM INSTR monitorexit ; +_L6: + if (!Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREFS_DETECT_CONNECTION)) goto _L8; else goto _L7 +_L7: + NetworkInfo networkinfo; + obj = context.getState(); + networkinfo = ((ConnectivityManager)getSystemService("connectivity")).getActiveNetworkInfo(); + if (initialType == -1) + { + initialType = k; + } + if (obj != android.net.NetworkInfo.State.CONNECTED || !wasAirplaneMode) goto _L10; else goto _L9 +_L9: + wasAirplaneMode = false; + synchronized (mServers) + { + reconnectLocked(mServers, context.toString()); + } +_L8: + return; +_L4: + i = j; + if (obj != null) + { + i = j; + if (((Pinger) (obj)).sleepTime != 0x1d4c0) + { + obj.sleepTime = 0x1d4c0; + i = 1; + } + } + goto _L11 + context; + obj; + JVM INSTR monitorexit ; + throw context; + context; + intent; + JVM INSTR monitorexit ; + throw context; +_L10: + if (obj == android.net.NetworkInfo.State.CONNECTED && k == 1 && initialType == 0 || intent.getBooleanExtra("noConnectivity", false) || networkinfo == null) + { + wasAirplaneMode = false; + if (android.os.Build.VERSION.SDK_INT >= 17) + { + boolean flag; + if (android.provider.Settings.Global.getInt(getContentResolver(), "airplane_mode_on", 0) == 1) + { + flag = true; + } else + { + flag = false; + } + wasAirplaneMode = flag; + } else + { + boolean flag1; + if (android.provider.Settings.System.getInt(getContentResolver(), "airplane_mode_on", 0) == 1) + { + flag1 = true; + } else + { + flag1 = false; + } + wasAirplaneMode = flag1; + } + synchronized (mServers) + { + reconnectLocked(mServers, context.toString()); + } + return; + } + continue; /* Loop/switch isn't completed */ + context; + intent; + JVM INSTR monitorexit ; + throw context; + if (obj != android.net.NetworkInfo.State.DISCONNECTED) goto _L8; else goto _L12 +_L12: + k; + JVM INSTR tableswitch 0 1: default 436 + // 0 437 + // 1 494; + goto _L13 _L14 _L15 +_L15: + continue; /* Loop/switch isn't completed */ +_L13: + return; +_L14: + if (networkinfo == null || networkinfo.getType() != 1 || !isWifiConnected()) goto _L8; else goto _L16 +_L16: + synchronized (mServers) + { + reconnectLocked(mServers, context.toString()); + } + return; + context; + intent; + JVM INSTR monitorexit ; + throw context; + if (context.isAvailable()) goto _L8; else goto _L17 +_L17: + synchronized (mServers) + { + reconnectLocked(mServers, context.toString()); + } + return; + context; + intent; + JVM INSTR monitorexit ; + throw context; +_L2: + if (!context.equals("android.intent.action.SCREEN_OFF")) goto _L19; else goto _L18 +_L18: + screenOn = false; + if (areServersAlive()) + { + acquireOrReleaseWifiLock(); + wakeLock.acquire(5000L); + return; + } + goto _L8 +_L19: + if (context.equals("android.intent.action.SCREEN_ON")) + { + screenOn = true; + return; + } + if (!context.equals("android.intent.action.TIME_TICK")) goto _L8; else goto _L20 +_L20: + net/andchat/donate/Backend/ServerConnection; + JVM INSTR monitorenter ; + long l = System.currentTimeMillis(); + intent = ServerConnection.sCal; + i = intent.get(1); + k = intent.get(2); + j = intent.get(5); + ServerConnection.timeChanged(l); + context = (char[])null; + if (j != intent.get(5)) + { + context = (new StringBuilder()).append(Utils.getDay(intent.get(7), false)).append(" ").append(Utils.getMonth(intent.get(2), false)).append(" ").append(Utils.addPadding(intent.get(5))).append(" ").append(intent.get(1)).toString(); + obj = getString(0x7f0a0048, new Object[] { + context + }); + context = new char[((String) (obj)).length()]; + TextUtils.getChars(((CharSequence) (obj)), 0, ((String) (obj)).length(), context, 0); + } + goto _L21 +_L27: + if (i == intent.get(1) && k == intent.get(2)) + { + i = 0; + } else + { + i = 1; + } + if (!j) goto _L23; else goto _L22 +_L22: + if (!Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREFS_LOGS_MODE_YEAR_MONTH_DAY)) goto _L23; else goto _L24 +_L24: + k = 1; + goto _L25 +_L34: + intent = mServers; + k = intent.size() - 1; + goto _L26 +_L36: + net/andchat/donate/Backend/ServerConnection; + JVM INSTR monitorexit ; + return; + context; + net/andchat/donate/Backend/ServerConnection; + JVM INSTR monitorexit ; + throw context; +_L33: + j = 0; + goto _L27 +_L23: + k = 0; + goto _L25 +_L37: + obj = (ServerConnection)intent.valueAt(k); + if (!j) goto _L29; else goto _L28 +_L28: + ((ServerConnection) (obj)).pLogs.logAll(context); +_L29: + if (!i) goto _L31; else goto _L30 +_L30: + ((ServerConnection) (obj)).pLogs.closeAll(); +_L31: + k--; + continue; /* Loop/switch isn't completed */ +_L21: + if (context == null) goto _L33; else goto _L32 +_L32: + j = 1; + goto _L27 +_L25: + if (k != 0) + { + i = 1; + } + if (!j && !i) goto _L35; else goto _L34 +_L35: + break; /* Loop/switch isn't completed */ +_L26: + if (k >= 0) goto _L37; else goto _L36 + } + + private InfoReceiver() + { + this$0 = IRCService.this; + super(); + initialType = -1; + } + + InfoReceiver(InfoReceiver inforeceiver) + { + this(); + } + } + + private class Pinger extends Thread + { + + boolean interrupted; + final StringBuilder sb; + int sleepTime; + final IRCService this$0; + + public void run() + { + setName("PingerThread"); + sb.append("PING :"); +_L5: + if (interrupted) + { + return; + } + this; + JVM INSTR monitorenter ; + Object obj; + Object obj1; + int i; + int j; + try + { + wait(sleepTime); + } + catch (InterruptedException interruptedexception) { } + this; + JVM INSTR monitorexit ; + obj = mServers; + obj; + JVM INSTR monitorenter ; + i = mServers.size(); + sb.append(System.currentTimeMillis()).append("\r\n"); + obj1 = sb.toString(); + i--; +_L6: + if (i >= 0) goto _L2; else goto _L1 +_L1: + sb.setLength(6); + obj; + JVM INSTR monitorexit ; + obj = mListeners; + obj; + JVM INSTR monitorenter ; + obj1 = mListeners; + i = ((List) (obj1)).size() - 1; +_L7: + if (i >= 0) goto _L4; else goto _L3 +_L3: + obj; + JVM INSTR monitorexit ; + goto _L5 + obj1; + obj; + JVM INSTR monitorexit ; + throw obj1; + obj; + this; + JVM INSTR monitorexit ; + throw obj; +_L2: + ((ServerConnection)mServers.valueAt(i)).writeToServer(((String) (obj1))); + i--; + goto _L6 + obj1; + obj; + JVM INSTR monitorexit ; + throw obj1; +_L4: + j = i; + if (((List) (obj1)).get(i) != null) + { + break MISSING_BLOCK_LABEL_203; + } + ((List) (obj1)).remove(i); + j = i - 1; + i = j - 1; + goto _L7 + } + + private Pinger() + { + this$0 = IRCService.this; + super(); + sb = new StringBuilder(20); + interrupted = false; + sleepTime = 0x493e0; + } + + Pinger(Pinger pinger) + { + this(); + } + } + + public static final class PrefsHolder + { + + Uri pDefaultTone; + public int pMainOptions; + int pNotificationEvents; + int pReconnectLimit; + int pSoundOptions; + int pVibrateOptions; + public String partReason; + public String quitReason; + + public PrefsHolder() + { + } + } + + public static interface ServerStateListener + { + + public abstract void onAllStopped(); + + public abstract void onServerStateChanged(int i); + } + + + private static String ALL_MODES; + private static final long NO_VIBRATE_PATTERN[] = new long[1]; + private static final int PREFS_DETECT_CONNECTION; + static final int PREFS_ENABLE_CHATLOGS; + static final int PREFS_HIDE_MESSAGES; + private static final int PREFS_LOGS_MODE_YEAR_MONTH; + static final int PREFS_LOGS_MODE_YEAR_MONTH_DAY; + static final int PREFS_PLAY_SOUND; + private static final int PREFS_RECONNECT; + static final int PREFS_REJOIN_ON_KICK; + static final int PREFS_SHOW_NOTIFS; + static final int PREFS_SHOW_TIMESTAMPS; + static final int PREFS_SKIP_MOTD; + static final int PREFS_VIBRATE; + static final int PREF_DEBUG_LOG_ALL_MESSAGES; + static final int PREF_DEBUG_LOG_UNPARSEABLE; + static final int PREF_DEBUG_SHOW_IGNORED; + private static final long VIBRATE_PATTERN[] = { + 100L, 1000L + }; + private static int increment; + public static PrefsHolder sPreferences = new PrefsHolder(); + private final Binder binder = new IRCServiceBinder(); + private List mFinder; + protected Handler mHandler; + final List mListeners = new Vector(); + final SparseArray mManagers = new SparseArray(); + NotificationManager mNm; + private Notification mNotification; + private RemoteViews mNotificationView; + private Pinger mPinger; + private BroadcastReceiver mReceiver; + final SparseArray mSenders = new SparseArray(); + final SparseArray mServers = new SparseArray(); + private TelephonyManager mTm; + private android.net.wifi.WifiManager.WifiLock mWiFiLock; + private WifiManager mWifiManager; + SharedPreferences prefs; + boolean screenOn; + android.os.PowerManager.WakeLock wakeLock; + + public IRCService() + { + } + + private ServerConnection createServer(int i, ServerProfile serverprofile, MessageSender messagesender) + { + serverprofile = new ServerConnection(i, serverprofile, messagesender, getSessionManagerForId(i), this); + mServers.put(i, serverprofile); + fillFinder(); + return serverprofile; + } + + private void doStartForeground() + { + startForeground(0x7fffffff, mNotification); + } + + private void fillFinder() + { + SparseArray sparsearray = mServers; + int i = sparsearray.size(); + if (mFinder == null) + { + mFinder = new Vector(); + } + List list = mFinder; + list.clear(); + i--; + do + { + if (i < 0) + { + Collections.sort(list, String.CASE_INSENSITIVE_ORDER); + return; + } + list.add(((ServerConnection)sparsearray.valueAt(i)).pLabel); + i--; + } while (true); + } + + private void loadOptions() + { + Object obj; + Object obj1; + Object obj2; + StringBuilder stringbuilder; + int i; + int j; + int k; + int i1; + j = 0; + obj = prefs; + boolean flag = ((SharedPreferences) (obj)).getBoolean(getString(0x7f0a001f), true); + boolean flag1 = ((SharedPreferences) (obj)).getBoolean(getString(0x7f0a0020), true); + boolean flag2 = ((SharedPreferences) (obj)).getBoolean(getString(0x7f0a0018), true); + boolean flag3 = ((SharedPreferences) (obj)).getBoolean(getString(0x7f0a0021), false); + boolean flag4 = ((SharedPreferences) (obj)).getBoolean(getString(0x7f0a0024), false); + obj1 = new PrefsHolder(); + obj2 = ((SharedPreferences) (obj)).getString(getString(0x7f0a0025), null); + int l; + if (obj2 != null) + { + obj1.pDefaultTone = Uri.parse(((String) (obj2))); + } else + { + obj1.pDefaultTone = null; + } + obj2 = getString(0x7f0a0026); + obj1.pReconnectLimit = Utils.parseInt(((SharedPreferences) (obj)).getString(((String) (obj2)), "3"), 3, ((SharedPreferences) (obj)), ((String) (obj2)), "IRCService"); + if (flag2) + { + j = 0 | PREFS_RECONNECT; + } + i = j; + if (flag) + { + i = j | PREFS_PLAY_SOUND; + } + j = i; + if (flag1) + { + j = i | PREFS_VIBRATE; + } + k = j; + if (flag4) + { + k = j | PREFS_DETECT_CONNECTION; + } + obj2 = ((SharedPreferences) (obj)).getString(getString(0x7f0a0028), "0"); + if (!((String) (obj2)).equals("0")) goto _L2; else goto _L1 +_L1: + i = k | PREFS_LOGS_MODE_YEAR_MONTH; +_L12: + k = parseNotificationEvents(((SharedPreferences) (obj)).getString(getString(0x7f0a0029), null)); + l = parseNotificationEvents(((SharedPreferences) (obj)).getString(getString(0x7f0a002a), null)); + if (ALL_MODES != null) goto _L4; else goto _L3 +_L3: + obj2 = getResources().getStringArray(0x7f0b0005); + i1 = obj2.length; + stringbuilder = new StringBuilder(i1 * 10 + "###".length() * 5); + j = 0; +_L9: + if (j < i1) goto _L6; else goto _L5 +_L5: + ALL_MODES = stringbuilder.toString(); +_L4: + obj1.pNotificationEvents = parseNotificationEvents(((SharedPreferences) (obj)).getString(getString(0x7f0a002b), ALL_MODES)); + obj1.pSoundOptions = k; + obj1.pVibrateOptions = l; + obj2 = getString(0x7f0a0010); + j = Utils.parseInt(((SharedPreferences) (obj)).getString(((String) (obj2)), "10"), 10, ((SharedPreferences) (obj)), ((String) (obj2)), "IRCService"); + l = j; + if (j <= 0) + { + l = 10; + } + j = i; + if (((SharedPreferences) (obj)).getBoolean(getString(0x7f0a001c), false)) + { + j = i | PREFS_SHOW_TIMESTAMPS; + } + i = j; + if (((SharedPreferences) (obj)).getBoolean(getString(0x7f0a001b), true)) + { + i = j | PREFS_SHOW_NOTIFS; + } + j = i; + if (flag) + { + j = i | PREFS_PLAY_SOUND; + } + i = j; + if (flag1) + { + i = j | PREFS_VIBRATE; + } + j = i; + if (flag3) + { + j = i | PREFS_HIDE_MESSAGES; + } + k = j; + if (((SharedPreferences) (obj)).getBoolean(getString(0x7f0a0017), false)) + { + k = j | PREFS_REJOIN_ON_KICK; + } + i = k; + if (((SharedPreferences) (obj)).getBoolean(getString(0x7f0a001a), false)) + { + i = k | PREFS_SKIP_MOTD; + } + k = 1; + j = i; + if (((SharedPreferences) (obj)).getBoolean(getString(0x7f0a0027), false)) + { + j = i | PREFS_ENABLE_CHATLOGS; + k = 0; + } + i = j; + if (((SharedPreferences) (obj)).getBoolean(getString(0x7f0a0036), false)) + { + i = j | PREF_DEBUG_LOG_ALL_MESSAGES; + } + j = i; + if (((SharedPreferences) (obj)).getBoolean(getString(0x7f0a0037), false)) + { + j = i | PREF_DEBUG_LOG_UNPARSEABLE; + } + i = j; + if (((SharedPreferences) (obj)).getBoolean(getString(0x7f0a0038), false)) + { + i = j | PREF_DEBUG_SHOW_IGNORED; + } + obj1.quitReason = prefs.getString(getString(0x7f0a0012), "Bye"); + obj1.partReason = prefs.getString(getString(0x7f0a0011), "Leaving"); + obj1.pMainOptions = i; + sPreferences = ((PrefsHolder) (obj1)); + obj = mServers; + obj; + JVM INSTR monitorenter ; + obj1 = mServers; + j = ((SparseArray) (obj1)).size(); + ServerConnection.sTimeout = l; + i = 0; +_L10: + if (i < j) goto _L8; else goto _L7 +_L7: + obj; + JVM INSTR monitorexit ; + return; +_L2: + i = k; + if (((String) (obj2)).equals("1")) + { + i = k | PREFS_LOGS_MODE_YEAR_MONTH_DAY; + } + continue; /* Loop/switch isn't completed */ +_L6: + stringbuilder.append(obj2[j]); + if (j != i1 - 1) + { + stringbuilder.append("###"); + } + j++; + goto _L9 +_L8: + obj2 = (ServerConnection)((SparseArray) (obj1)).valueAt(i); + if (k == 0) + { + break MISSING_BLOCK_LABEL_900; + } + ((ServerConnection) (obj2)).pLogs.closeAll(); + ((ServerConnection) (obj2)).buildHilightRegexp(Utils.escape(((ServerConnection) (obj2)).pNick)); + i++; + goto _L10 + Exception exception; + exception; + obj; + JVM INSTR monitorexit ; + throw exception; + if (true) goto _L12; else goto _L11 +_L11: + } + + private int parseNotificationEvents(String s) + { + if (s != null) goto _L2; else goto _L1 +_L1: + int i = 11; +_L4: + return i; +_L2: + int j = 0; + s = MultiChoicePreference.parseStoredValue(s); + if (s == null) + { + return 11; + } + int k = s.length - 1; + do + { + i = j; + if (k < 0) + { + continue; + } + String s1 = s[k]; + if (s1.equals("HI")) + { + i = j | 1; + } else + if (s1.equals("PM")) + { + i = j | 2; + } else + if (s1.equals("CN")) + { + i = j | 4; + } else + if (s1.equals("SN")) + { + i = j | 0x10; + } else + { + i = j; + if (s1.equals("DC")) + { + i = j | 8; + } + } + k--; + j = i; + } while (true); + if (true) goto _L4; else goto _L3 +_L3: + } + + private void startBackgroundWork() + { + if (mPinger == null) + { + mPinger = new Pinger(null); + mPinger.start(); + } + } + + private void stopBackgroundWork() + { + if (mPinger != null) + { + synchronized (mPinger) + { + mPinger.interrupted = true; + mPinger.notify(); + mPinger.interrupt(); + mPinger = null; + } + return; + } else + { + return; + } + exception; + pinger; + JVM INSTR monitorexit ; + throw exception; + } + + void acquireOrReleaseWifiLock() + { + boolean flag; + boolean flag1; + flag = areServersAlive(); + flag1 = isWifiConnected(); + if (!flag1 || mServers.size() <= 0) goto _L2; else goto _L1 +_L1: + flag1 = mWiFiLock.isHeld(); + if (flag1 || !flag) goto _L4; else goto _L3 +_L3: + mWiFiLock.acquire(); +_L6: + return; +_L4: + if (flag1 && !flag) + { + mWiFiLock.release(); + return; + } + continue; /* Loop/switch isn't completed */ +_L2: + if (!flag1 && mWiFiLock.isHeld() || mServers.size() == 0 && mWiFiLock.isHeld()) + { + mWiFiLock.release(); + return; + } + if (true) goto _L6; else goto _L5 +_L5: + } + + public void addStateListener(ServerStateListener serverstatelistener) + { + List list; + int i; + int j; + list = mListeners; + j = list.size(); + i = j; +_L6: + if (i < j) goto _L2; else goto _L1 +_L1: + list.add(serverstatelistener); +_L4: + return; +_L2: + if (list.get(i) == serverstatelistener) goto _L4; else goto _L3 +_L3: + i++; + if (true) goto _L6; else goto _L5 +_L5: + } + + public boolean areServersAlive() + { + return getActiveServerCount() > 0; + } + + public void cleanUpIfRequired(int i) + { + ServerConnection serverconnection = (ServerConnection)mServers.get(i); + if (serverconnection != null) goto _L2; else goto _L1 +_L1: + mManagers.delete(i); + SessionManager.notifyPostDelete(i); + mSenders.delete(i); +_L4: + acquireOrReleaseWifiLock(); + if (mServers.size() == 0) + { + stopBackgroundWork(); + doStopForeground(false); + } + return; +_L2: + if (serverconnection.pState == 4) + { + SessionManager.notifyPostDelete(i); + serverconnection.pLogs.closeAll(); + mServers.delete(i); + fillFinder(); + mManagers.delete(i); + mSenders.delete(i); + } + if (true) goto _L4; else goto _L3 +_L3: + } + + public void doStopForeground(boolean flag) + { + stopForeground(flag); + ((NotificationManager)getSystemService("notification")).cancel(0x7fffffff); + } + + public int findNextActive(int i, boolean flag) + { + SparseArray sparsearray; + int l; + sparsearray = mServers; + l = sparsearray.size(); + if (l != 1) goto _L2; else goto _L1 +_L1: + int k; + return i; +_L2: + if ((k = sparsearray.indexOfKey(i)) < 0 || !flag && k + 1 > l) + { + continue; /* Loop/switch isn't completed */ + } + if (l != 2) goto _L4; else goto _L3 +_L3: + k; + JVM INSTR tableswitch 0 1: default 76 + // 0 265 + // 1 277; + goto _L4 _L5 _L6 +_L4: + String s; + Object obj; + String s2; + int j; + boolean flag1; + s = ((ServerConnection)sparsearray.valueAt(k)).pLabel; + obj = mFinder; + if (((String)((List) (obj)).get(0)).equals(s) && flag) + { + j = 1; + } else + { + j = 0; + } + if (!flag && j == 0 && ((String)((List) (obj)).get(l - 1)).equals(s)) + { + flag1 = true; + } else + { + flag1 = false; + } + if (j == 0) goto _L8; else goto _L7 +_L7: + s2 = (String)((List) (obj)).get(l - 1); + j = l - 1; +_L16: + if (j >= 0) goto _L10; else goto _L9 +_L9: + flag1 = false; + j = l - 1; +_L19: + if (j >= 0) goto _L12; else goto _L11 +_L11: + j = ((flag1) ? 1 : 0); +_L17: + if (!flag) + { + continue; /* Loop/switch isn't completed */ + } + if (j <= 0 || j >= l) + { + continue; /* Loop/switch isn't completed */ + } + s = (String)((List) (obj)).get(j - 1); + j = l - 1; +_L15: + if (j < 0) + { + continue; /* Loop/switch isn't completed */ + } + if (j != k) goto _L14; else goto _L13 +_L13: + j--; + goto _L15 +_L5: + return ((ServerConnection)sparsearray.valueAt(1)).id; +_L6: + return ((ServerConnection)sparsearray.valueAt(0)).id; +_L10: + ServerConnection serverconnection1 = (ServerConnection)sparsearray.valueAt(j); + if (serverconnection1.pLabel.equals(s2)) + { + return serverconnection1.id; + } + j--; + goto _L16 +_L8: + if (flag1) + { + String s3 = (String)((List) (obj)).get(0); + j = 0; + while (j < l) + { + ServerConnection serverconnection2 = (ServerConnection)sparsearray.valueAt(j); + if (serverconnection2.pLabel.equals(s3)) + { + return serverconnection2.id; + } + j++; + } + } + goto _L9 +_L12: + if (!((String)((List) (obj)).get(j)).equals(s)) goto _L18; else goto _L17 +_L18: + j--; + goto _L19 +_L14: + if (!((ServerConnection) (obj = (ServerConnection)sparsearray.valueAt(j))).pLabel.equals(s)) goto _L13; else goto _L20 +_L20: + return ((ServerConnection) (obj)).id; + if (j + 1 >= l) goto _L1; else goto _L21 +_L21: + String s1 = (String)((List) (obj)).get(j + 1); + j = 0; + while (j < l) + { + ServerConnection serverconnection; + if (j != k) + { + if ((serverconnection = (ServerConnection)sparsearray.valueAt(j)).pLabel.equals(s1)) + { + return serverconnection.id; + } + } + j++; + } + if (true) goto _L1; else goto _L22 +_L22: + } + + public int getActiveServerCount() + { + int i = 0; + SparseArray sparsearray = mServers; + sparsearray; + JVM INSTR monitorenter ; + SparseArray sparsearray1; + int j; + sparsearray1 = mServers; + j = sparsearray1.size() - 1; +_L2: + if (j >= 0) + { + break MISSING_BLOCK_LABEL_33; + } + sparsearray; + JVM INSTR monitorexit ; + return i; + ServerConnection serverconnection = (ServerConnection)sparsearray1.valueAt(j); + if (serverconnection.isReconnecting()) + { + i++; + break MISSING_BLOCK_LABEL_93; + } + Exception exception; + switch (serverconnection.pState) + { + default: + break; + + case 1: // '\001' + case 2: // '\002' + case 3: // '\003' + break; /* Loop/switch isn't completed */ + } + break MISSING_BLOCK_LABEL_93; + exception; + sparsearray; + JVM INSTR monitorexit ; + throw exception; +_L4: + j--; + if (true) goto _L2; else goto _L1 +_L1: + i++; + if (true) goto _L4; else goto _L3 +_L3: + if (true) goto _L2; else goto _L5 +_L5: + } + + public int[] getActiveServerIds() + { + SparseArray sparsearray = mServers; + sparsearray; + JVM INSTR monitorenter ; + SparseArray sparsearray1; + int ai[]; + int j; + sparsearray1 = mServers; + j = sparsearray1.size(); + ai = new int[j]; + int i = 0; +_L2: + if (i < j) + { + break MISSING_BLOCK_LABEL_37; + } + sparsearray; + JVM INSTR monitorexit ; + return ai; + ai[i] = ((ServerConnection)sparsearray1.valueAt(i)).id; + i++; + if (true) goto _L2; else goto _L1 +_L1: + Exception exception; + exception; + sparsearray; + JVM INSTR monitorexit ; + throw exception; + } + + public int getFirstActiveId() + { + SparseArray sparsearray = mServers; + sparsearray; + JVM INSTR monitorenter ; + SparseArray sparsearray1; + int j; + sparsearray1 = mServers; + j = sparsearray1.size(); + int i = 0; +_L4: + if (i < j) + { + break MISSING_BLOCK_LABEL_32; + } + sparsearray; + JVM INSTR monitorexit ; + return -1; + ServerConnection serverconnection; + serverconnection = (ServerConnection)sparsearray1.valueAt(i); + if (!serverconnection.isReconnecting()) + { + break MISSING_BLOCK_LABEL_65; + } + i = serverconnection.id; + sparsearray; + JVM INSTR monitorexit ; + return i; + Exception exception; + exception; + sparsearray; + JVM INSTR monitorexit ; + throw exception; + serverconnection.pState; + JVM INSTR tableswitch 1 3: default 107 + // 1 96 + // 2 96 + // 3 96; + goto _L1 _L2 _L2 _L2 +_L2: + i = serverconnection.id; + sparsearray; + JVM INSTR monitorexit ; + return i; +_L1: + i++; + if (true) goto _L4; else goto _L3 +_L3: + } + + public MessageSender getSenderForId(int i) + { + MessageSender messagesender1 = (MessageSender)mSenders.get(i); + MessageSender messagesender = messagesender1; + if (messagesender1 == null) + { + messagesender = new MessageSender(i); + mSenders.put(i, messagesender); + } + return messagesender; + } + + public ServerConnection getServer(int i, boolean flag, ServerProfile serverprofile, ChatWindow chatwindow) + { + ServerConnection serverconnection = (ServerConnection)mServers.get(i); + MessageSender messagesender = getSenderForId(i); + if (serverconnection != null) + { + if (chatwindow != null) + { + messagesender.setUi(chatwindow); + serverconnection.setMediator(messagesender); + } + return serverconnection; + } + if (flag) + { + doStartForeground(); + return createServer(i, serverprofile, messagesender); + } else + { + return null; + } + } + + public int getServerState(int i) + { + ServerConnection serverconnection = (ServerConnection)mServers.get(i); + if (serverconnection != null) + { + return serverconnection.pState; + } else + { + return 4; + } + } + + public SessionManager getSessionManagerForId(int i) + { + SessionManager sessionmanager1 = (SessionManager)mManagers.get(i); + SessionManager sessionmanager = sessionmanager1; + if (sessionmanager1 == null) + { + sessionmanager = new SessionManager(i, Utils.getIRCDb(this).getDetailsForId(i)); + mManagers.put(i, sessionmanager); + getSenderForId(i).setSessionManager(sessionmanager); + } + return sessionmanager; + } + + boolean isWifiConnected() + { + WifiInfo wifiinfo = mWifiManager.getConnectionInfo(); + return wifiinfo != null && wifiinfo.getBSSID() != null && wifiinfo.getNetworkId() != -1; + } + + public IBinder onBind(Intent intent) + { + return binder; + } + + public void onCreate() + { + super.onCreate(); + screenOn = true; + prefs = Utils.getPrefs(this); + loadOptions(); + wakeLock = ((PowerManager)getSystemService("power")).newWakeLock(1, "IRCService"); + wakeLock.setReferenceCounted(false); + Object obj = new RemoteViews(getPackageName(), 0x7f030024); + ((RemoteViews) (obj)).setTextViewText(0x7f08006f, getString(0x7f0a01bd)); + Notification notification = new Notification(); + notification.contentView = ((RemoteViews) (obj)); + notification.icon = 0x7f02000b; + notification.flags = 34; + Intent intent = new Intent(this, net/andchat/donate/Activities/Main); + intent.addFlags(0x14000000); + intent.setAction("net.andchat.donate.FROM_NOTIFICATION"); + notification.contentIntent = PendingIntent.getActivity(this, 0, intent, 0); + mNotification = notification; + mNm = (NotificationManager)getSystemService("notification"); + mNotificationView = ((RemoteViews) (obj)); + mHandler = new Handler() { + + final IRCService this$0; + + private void handleServConnUpdate(Message message) + { + obj1 = (ServerConnection)message.obj; + message.arg1; + JVM INSTR tableswitch 0 3: default 44 + // 0 45 + // 1 125 + // 2 145 + // 3 279; + goto _L1 _L2 _L3 _L4 _L5 +_L1: + return; +_L2: + notifyStateChange(((ServerConnection) (obj1)).id); + if (((ServerConnection) (obj1)).pConnectionChanged || Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREFS_RECONNECT) && ((ServerConnection) (obj1)).pReconnectCount <= IRCService.sPreferences.pReconnectLimit) + { + (((_cls1) (obj1)). new Thread() { + + final _cls1 this$1; + private final ServerConnection val$sc; + + public void run() + { + setName((new StringBuilder("Reconnecting ")).append(sc.pLabel).toString()); + sc.reconnect(); + } + + + { + this$1 = final__pcls1; + sc = ServerConnection.this; + super(); + } + }).start(); + } + if (!areServersAlive()) + { + stopBackgroundWork(); + } + updateNotification(); + return; +_L3: + if (obj1 != null) + { + notifyStateChange(((ServerConnection) (obj1)).id); + } + updateNotification(); + return; +_L4: + if (obj1 != null) + { + synchronized (mServers) + { + ((ServerConnection) (obj1)).pLogs.closeAll(); + mServers.delete(((ServerConnection) (obj1)).id); + } + } + if (mServers.size() == 0) + { + stopBackgroundWork(); + mManagers.clear(); + mSenders.clear(); + message = mListeners; + int j = message.size(); + int i = 0; + while (i < j) + { + obj1 = (ServerStateListener)message.get(i); + if (obj1 != null) + { + ((ServerStateListener) (obj1)).onAllStopped(); + } + i++; + } + } + if (false) + { + } + continue; /* Loop/switch isn't completed */ + obj1; + message; + JVM INSTR monitorexit ; + throw obj1; +_L5: + updateNotification(); + notifyStateChange(((ServerConnection) (obj1)).id); + if (message.arg2 == 1) + { + startBackgroundWork(); + return; + } + if (true) goto _L1; else goto _L6 +_L6: + } + + private void notifyStateChange(int i) + { + List list = mListeners; + int k = list.size(); + int j = 0; + do + { + if (j >= k) + { + return; + } + ServerStateListener serverstatelistener = (ServerStateListener)list.get(j); + if (serverstatelistener != null) + { + serverstatelistener.onServerStateChanged(i); + } + j++; + } while (true); + } + + public void handleMessage(Message message) + { + message.what; + JVM INSTR tableswitch 0 0: default 24 + // 0 32; + goto _L1 _L2 +_L1: + acquireOrReleaseWifiLock(); + return; +_L2: + handleServConnUpdate(message); + if (true) goto _L1; else goto _L3 +_L3: + } + + + { + this$0 = IRCService.this; + super(); + } + }; + mWifiManager = (WifiManager)getSystemService("wifi"); + mWiFiLock = mWifiManager.createWifiLock("IRCService"); + mWiFiLock.setReferenceCounted(false); + mTm = (TelephonyManager)getSystemService("phone"); + mReceiver = new InfoReceiver(null); + obj = new IntentFilter(); + ((IntentFilter) (obj)).addAction("android.net.conn.CONNECTIVITY_CHANGE"); + ((IntentFilter) (obj)).addAction("android.intent.action.SCREEN_OFF"); + ((IntentFilter) (obj)).addAction("android.intent.action.SCREEN_ON"); + ((IntentFilter) (obj)).addAction("android.intent.action.TIME_TICK"); + registerReceiver(mReceiver, ((IntentFilter) (obj))); + ((IRCApp)getApplication()).addWatcher(this); + } + + public void onDestroy() + { + doStopForeground(true); + mNm.cancel(0x7fffffff); + super.onDestroy(); + if (mReceiver != null) + { + unregisterReceiver(mReceiver); + mReceiver = null; + } + stopBackgroundWork(); + acquireOrReleaseWifiLock(); + ((IRCApp)getApplication()).removeWatcher(this); + } + + public void onPreferencesChanged() + { + loadOptions(); + SparseArray sparsearray = mManagers; + int k = sparsearray.size(); + String s = getString(0x7f0a0019); + int j = Utils.parseInt(prefs.getString(s, "20"), 20, prefs, s, "IRCService"); + int i = j; + if (j > 50) + { + i = 50; + prefs.edit().putString(s, "50").commit(); + } + j = 0; + do + { + if (j >= k) + { + return; + } + ((SessionManager)sparsearray.valueAt(j)).setInputLimit(i); + j++; + } while (true); + } + + public int onStartCommand(Intent intent, int i, int j) + { + super.onStartCommand(intent, i, j); + return 1; + } + + public void remove(ServerConnection serverconnection) + { + if (serverconnection.isReconnecting()) + { + serverconnection.wakeAndStop(); + } + serverconnection.pLogs.closeAll(); + mServers.delete(serverconnection.id); + fillFinder(); + updateNotification(); + } + + public void removeStateListener(ServerStateListener serverstatelistener) + { + List list = mListeners; + int j = list.size(); + int i = 0; + do + { + if (i >= j) + { + return; + } + if (list.get(i) == serverstatelistener) + { + list.remove(i); + return; + } + i++; + } while (true); + } + + public void runOnAnotherProfile(int i, String s) + { + ServerConnection serverconnection = getServer(i, false, null, null); + if (serverconnection == null) + { + return; + } else + { + CommandParser.handleCommand(s, serverconnection); + return; + } + } + + boolean shouldPlayNotification() + { + while (mTm == null || mTm.getCallState() == 0) + { + return true; + } + return false; + } + + public void stop() + { + if (mServers.size() == 0) + { + mManagers.clear(); + Main.sFilter = 0; + stopSelf(); + } + } + + public void stopAll() + { + int i; + i = mServers.size(); + if (i <= 0) + { + break MISSING_BLOCK_LABEL_61; + } + this; + JVM INSTR monitorenter ; + SparseArray sparsearray = mServers; + i--; +_L2: + if (i >= 0) + { + break MISSING_BLOCK_LABEL_30; + } + this; + JVM INSTR monitorexit ; + return; + (new Thread() { + + final IRCService this$0; + private final ServerConnection val$s; + + public void run() + { + s.stopConnection(2); + } + + + { + this$0 = IRCService.this; + s = serverconnection; + super(); + } + }).start(); + i--; + if (true) goto _L2; else goto _L1 +_L1: + Exception exception; + exception; + this; + JVM INSTR monitorexit ; + throw exception; + List list = mListeners; + int k = list.size(); + for (int j = 0; j < k; j++) + { + ServerStateListener serverstatelistener = (ServerStateListener)list.get(j); + if (serverstatelistener != null) + { + serverstatelistener.onAllStopped(); + } + } + + return; + } + + public void stopConnection(int i, int j) + { + ServerConnection serverconnection = (ServerConnection)mServers.get(i); + if (serverconnection == null) + { + return; + } else + { + serverconnection.stopConnection(j); + return; + } + } + + public void stopReconnecting(int i, int j) + { + ServerConnection serverconnection = (ServerConnection)mServers.get(i); + if (serverconnection != null) + { + serverconnection.pState = 4; + } + stopConnection(i, j); + } + + void updateNotification() + { + Object obj; + int i; + int j; + int k; + int l; + int i1; + l = 0; + k = 0; + j = 0; + obj = mServers; + i1 = ((SparseArray) (obj)).size(); + i = 0; +_L5: + if (i >= i1) + { + obj = mNotificationView; + Object obj1 = new StringBuilder(); + if (l > 0 || j > 0 || k > 0) + { + ((StringBuilder) (obj1)).append("Servers: "); + } + if (l > 0 || j > 0) + { + ((StringBuilder) (obj1)).append(l + j).append(" Active"); + } + if (k > 0) + { + if (l > 0 || j > 0) + { + ((StringBuilder) (obj1)).append(" | "); + } + ((StringBuilder) (obj1)).append(k).append(" Error"); + if (k > 1) + { + ((StringBuilder) (obj1)).append("s"); + } + } + if (((StringBuilder) (obj1)).length() == 0) + { + ((StringBuilder) (obj1)).append(getString(0x7f0a01bd)); + } + ((RemoteViews) (obj)).setTextViewText(0x7f08006f, ((StringBuilder) (obj1)).toString()); + obj1 = mNotification; + obj1.flags = 34; + boolean flag; + if (l + k + j == 0) + { + obj1.icon = 0x7f02000b; + } else + if (l > 0 && j + k == 0) + { + obj1.icon = 0x7f02000b; + } else + if (k > 0 && j + l == 0) + { + obj1.icon = 0x7f02000c; + } else + if (j > 0 && (l > 0 || k > 0)) + { + obj1.icon = 0x7f02000d; + } else + if (j > 0 && l + k == 0) + { + obj1.icon = 0x7f02000d; + } else + if ((j > 0 || l > 0) && k > 0) + { + obj1.icon = 0x7f02000d; + } + flag = shouldPlayNotification(); + if (k > 0 && !screenOn) + { + boolean flag1 = Utils.isBitSet(sPreferences.pNotificationEvents, 8); + if (flag1 && Utils.isBitSet(sPreferences.pMainOptions, PREFS_VIBRATE) && flag && Utils.isBitSet(sPreferences.pVibrateOptions, 8)) + { + obj1.vibrate = VIBRATE_PATTERN; + } else + { + obj1.vibrate = NO_VIBRATE_PATTERN; + } + if (flag1 && Utils.isBitSet(sPreferences.pMainOptions, PREFS_PLAY_SOUND) && flag && Utils.isBitSet(sPreferences.pSoundOptions, 8)) + { + if (sPreferences.pDefaultTone != null) + { + obj1.sound = sPreferences.pDefaultTone; + obj1.defaults = ((Notification) (obj1)).defaults & -2; + } else + { + obj1.sound = null; + obj1.defaults = ((Notification) (obj1)).defaults | 1; + } + } else + { + obj1.sound = null; + obj1.defaults = ((Notification) (obj1)).defaults & -2; + } + obj1.ledARGB = 0xffff0000; + obj1.ledOnMS = 1; + obj1.ledOffMS = 0; + obj1.flags = 1; + } else + { + obj1.sound = null; + obj1.vibrate = NO_VIBRATE_PATTERN; + obj1.ledARGB = 0; + obj1.defaults = 0; + } + obj1.flags = ((Notification) (obj1)).flags | 0x22; + mNotificationView = ((RemoteViews) (obj)); + mNotification = ((Notification) (obj1)); + if (k > 0 && !screenOn) + { + wakeLock.acquire(2000L); + } + mNm.notify(0x7fffffff, mNotification); + return; + } + ((ServerConnection)((SparseArray) (obj)).valueAt(i)).pState; + JVM INSTR tableswitch 0 3: default 464 + // 0 471 + // 1 480 + // 2 489 + // 3 489; + goto _L1 _L2 _L3 _L4 _L4 +_L1: + break; /* Loop/switch isn't completed */ +_L4: + break MISSING_BLOCK_LABEL_489; +_L6: + i++; + goto _L5 +_L2: + k++; + goto _L6 +_L3: + l++; + goto _L6 + j++; + goto _L6 + } + + static + { + increment = 0; + int i = increment; + increment = i + 1; + PREFS_SHOW_TIMESTAMPS = 1 << i; + i = increment; + increment = i + 1; + PREFS_SHOW_NOTIFS = 1 << i; + i = increment; + increment = i + 1; + PREFS_REJOIN_ON_KICK = 1 << i; + i = increment; + increment = i + 1; + PREFS_SKIP_MOTD = 1 << i; + i = increment; + increment = i + 1; + PREFS_PLAY_SOUND = 1 << i; + i = increment; + increment = i + 1; + PREFS_VIBRATE = 1 << i; + i = increment; + increment = i + 1; + PREFS_HIDE_MESSAGES = 1 << i; + i = increment; + increment = i + 1; + PREFS_RECONNECT = 1 << i; + i = increment; + increment = i + 1; + PREFS_DETECT_CONNECTION = 1 << i; + i = increment; + increment = i + 1; + PREFS_ENABLE_CHATLOGS = 1 << i; + i = increment; + increment = i + 1; + PREFS_LOGS_MODE_YEAR_MONTH = 1 << i; + i = increment; + increment = i + 1; + PREFS_LOGS_MODE_YEAR_MONTH_DAY = 1 << i; + i = increment; + increment = i + 1; + PREF_DEBUG_LOG_ALL_MESSAGES = 1 << i; + i = increment; + increment = i + 1; + PREF_DEBUG_LOG_UNPARSEABLE = 1 << i; + i = increment; + increment = i + 1; + PREF_DEBUG_SHOW_IGNORED = 1 << i; + } + + + + + +} diff --git a/app/src/main/java/net/andchat/donate/Backend/Ignores$IgnoreInfo.java b/app/src/main/java/net/andchat/donate/Backend/Ignores$IgnoreInfo.java new file mode 100644 index 0000000..dc8a842 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/Ignores$IgnoreInfo.java @@ -0,0 +1,26 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + + +// Referenced classes of package net.andchat.donate.Backend: +// Ignores + +public static final class mask +{ + + public final String hostname; + public final String ident; + public final int mask; + public String nick; + + public (String s, String s1, String s2, int i) + { + nick = s; + ident = s1; + hostname = s2; + mask = i; + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/Ignores.java b/app/src/main/java/net/andchat/donate/Backend/Ignores.java new file mode 100644 index 0000000..eb997ac --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/Ignores.java @@ -0,0 +1,203 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import android.util.SparseArray; +import java.util.List; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Backend: +// IRCDb + +public class Ignores +{ + public static final class IgnoreInfo + { + + public final String hostname; + public final String ident; + public final int mask; + public String nick; + + public IgnoreInfo(String s, String s1, String s2, int i) + { + nick = s; + ident = s1; + hostname = s2; + mask = i; + } + } + + + private static SparseArray sIgnores = new SparseArray(); + private final IRCDb mDb; + private final int mId; + private final List mIgnores; + + private Ignores(int i, IRCDb ircdb) + { + mIgnores = ircdb.getIgnores(i); + mDb = ircdb; + mId = i; + } + + public static void clear() + { + sIgnores.clear(); + } + + private IgnoreInfo findWithDetails(String s, String s1) + { + String s2; + List list; + int i; + int j; + s2 = s; + if (s == null) + { + s2 = ""; + } + s = s1; + if (s1 == null) + { + s = ""; + } + list = mIgnores; + j = list.size(); + i = 0; +_L6: + if (i < j) goto _L2; else goto _L1 +_L1: + s1 = null; +_L4: + return s1; +_L2: + IgnoreInfo ignoreinfo; + ignoreinfo = (IgnoreInfo)list.get(i); + if (!ignoreinfo.ident.equalsIgnoreCase(s2)) + { + break; /* Loop/switch isn't completed */ + } + s1 = ignoreinfo; + if (ignoreinfo.hostname.equalsIgnoreCase(s)) goto _L4; else goto _L3 +_L3: + i++; + if (true) goto _L6; else goto _L5 +_L5: + } + + private IgnoreInfo findWithNick(String s) + { + List list; + int i; + int j; + list = mIgnores; + j = list.size(); + i = 0; +_L6: + if (i < j) goto _L2; else goto _L1 +_L1: + IgnoreInfo ignoreinfo = null; +_L4: + return ignoreinfo; +_L2: + IgnoreInfo ignoreinfo1; + ignoreinfo1 = (IgnoreInfo)list.get(i); + ignoreinfo = ignoreinfo1; + if (ignoreinfo1.nick.equalsIgnoreCase(s)) goto _L4; else goto _L3 +_L3: + i++; + if (true) goto _L6; else goto _L5 +_L5: + } + + public static Ignores getIgnores(int i, IRCDb ircdb) + { + Ignores ignores1 = (Ignores)sIgnores.get(i); + Ignores ignores = ignores1; + if (ignores1 == null) + { + ignores = new Ignores(i, ircdb); + sIgnores.put(i, ignores); + } + return ignores; + } + + public void addOrUpdateIgnore(String s, String s1, String s2, int i) + { + s = new IgnoreInfo(s, s1, s2, i); + s1 = findWithDetails(s1, s2); + i = -1; + if (s1 != null) + { + i = mIgnores.indexOf(s1); + mIgnores.remove(s1); + } + if (i != -1) + { + mIgnores.add(i, s); + } else + { + mIgnores.add(s); + } + mDb.addOrUpdateIgnore(mId, s); + } + + public List getAllIgnores() + { + return mIgnores; + } + + public void nickChanged(String s, String s1, String s2, String s3) + { + s = findWithDetails(s2, s3); + if (s != null) + { + removeIgnore(s2, s3); + addOrUpdateIgnore(s1, ((IgnoreInfo) (s)).ident, ((IgnoreInfo) (s)).hostname, ((IgnoreInfo) (s)).mask); + } + } + + public boolean removeIgnore(String s) + { + s = findWithNick(s); + if (s != null) + { + mIgnores.remove(s); + mDb.removeFromIgnore(mId, s); + return true; + } else + { + return false; + } + } + + public boolean removeIgnore(String s, String s1) + { + s = findWithDetails(s, s1); + if (s != null) + { + mIgnores.remove(s); + mDb.removeFromIgnore(mId, s); + return true; + } else + { + return false; + } + } + + public boolean shouldIgnore(String s, String s1, int i) + { + s = findWithDetails(s, s1); + if (s == null) + { + return false; + } else + { + return Utils.isBitSet(((IgnoreInfo) (s)).mask, i); + } + } + +} diff --git a/app/src/main/java/net/andchat/donate/Backend/MessageSender.java b/app/src/main/java/net/andchat/donate/Backend/MessageSender.java new file mode 100644 index 0000000..876b080 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/MessageSender.java @@ -0,0 +1,77 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import android.os.Message; +import java.util.concurrent.ArrayBlockingQueue; +import net.andchat.donate.Activities.ChatWindow; +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.Misc.IRCMessage; + +public class MessageSender +{ + + private final int mId; + private SessionManager mManager; + private ChatWindow mUi; + + public MessageSender(int i) + { + mId = i; + } + + public boolean haveUi() + { + return mUi != null; + } + + public void sendFlaggedMessage(int i, Object obj) + { + if (mUi != null) + { + Message.obtain(mUi.flagHandler, i, obj).sendToTarget(); + } + } + + public void sendMessage(String s, CharSequence charsequence, int i) + { + String s1 = s; + if (s.length() == 0) + { + s1 = "Status"; + } + s = IRCMessage.obtain(); + s.set(s1, charsequence, i); + if (mUi == null || mUi.messageHandler == null) + { + mManager.addText(s, false); + } else + { + try + { + mUi.blocker.put(s); + mUi.messageHandler.sendEmptyMessage(0); + } + // Misplaced declaration of an exception variable + catch (String s) { } + // Misplaced declaration of an exception variable + catch (String s) { } + } + if (i != 1) + { + mManager.setMarked(s1, true); + } + } + + public void setSessionManager(SessionManager sessionmanager) + { + mManager = sessionmanager; + } + + public void setUi(ChatWindow chatwindow) + { + mUi = chatwindow; + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/Parser.java b/app/src/main/java/net/andchat/donate/Backend/Parser.java new file mode 100644 index 0000000..cd3930f --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/Parser.java @@ -0,0 +1,1117 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import java.util.StringTokenizer; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import net.andchat.donate.Misc.Utils; + +abstract class Parser +{ + + private static final Matcher sNetworkMatcher = Pattern.compile("NETWORK=([^ ]+)").matcher(""); + protected final Matcher mColourRemover = Pattern.compile("\\x03\\d?\\d?(?:,\\d?\\d?)?|\\x02|\\x1f|\\x16|\\x06|\\x07/").matcher(""); + private boolean mConnected; + + protected Parser() + { + } + + private boolean isIntStr(String s) + { + if (s != null) goto _L2; else goto _L1 +_L1: + int i; + return false; +_L2: + if ((i = s.length()) == 0) + { + continue; + } + i--; + do + { + if (i < 0) + { + return true; + } + if (!Character.isDigit(s.charAt(i))) + { + continue; + } + i--; + } while (true); + if (true) goto _L1; else goto _L3 +_L3: + } + + private String snip(String s, int i) + { + if (i >= s.length()) + { + return s; + } + if (s.charAt(i) == ':') + { + s = s.substring(i + 1); + } else + { + s = s.substring(i); + } + return s; + } + + public abstract boolean isChannelPrefix(char c); + + public abstract boolean isStatusPrefix(char c); + + public abstract void on001(String s); + + public abstract void on221(String s); + + public abstract void on324(String s, String s1); + + public abstract void on329(String s, long l); + + public abstract void on332(String s, String s1, boolean flag); + + public abstract void on333(String s, String s1, long l); + + public abstract void on433(); + + public abstract void onChannelPrivmsg(String s, String s1, String s2, String s3, String s4, int i); + + public abstract void onCtcpRequest(String s, String s1, String s2, String s3); + + public abstract void onError(CharSequence charsequence); + + public abstract void onISupport(String s); + + public abstract void onInvite(String s, String s1, String s2); + + public abstract void onInviteSent(String s, String s1); + + public abstract void onKill(String s, String s1, String s2, String s3); + + public abstract void onMessageReceived(String s); + + public abstract void onModeChanged(String s, String s1, String s2); + + public abstract void onMotdEnd(String s); + + public abstract void onMotdLine(String s); + + public abstract void onMotdStart(String s); + + public abstract void onNamesList(String s, String s1); + + public abstract void onNetworkName(String s); + + public abstract void onNickChanged(String s, String s1, String s2, String s3); + + public abstract void onNotice(String s, String s1, String s2, String s3, String s4, String s5); + + public abstract void onNumericMessage(String s, CharSequence charsequence, int i); + + public abstract void onPing(String s); + + public abstract void onPong(String s); + + public abstract void onPrivatePrivmsg(String s, String s1, String s2, String s3, int i); + + public abstract void onSaslMessage(String s, String s1, String as[]); + + public abstract void onTopicChanged(String s, String s1, String s2); + + public abstract void onUnknownMessage(CharSequence charsequence); + + public abstract void onUnparsableMessage(String s); + + public abstract void onUserJoined(String s, String s1, String s2, String s3); + + public abstract void onUserKicked(String s, String s1, String s2, String s3); + + public abstract void onUserParted(String s, String s1, String s2, String s3); + + public abstract void onUserQuit(String s, String s1, String s2); + + public abstract void onWallops(String s, String s1, String s2); + + public final void parse(String s) + { + int i; + int i3; + onMessageReceived(s); + i = 0; + i3 = s.indexOf(' '); + if (i3 != -1) goto _L2; else goto _L1 +_L1: + onUnparsableMessage(s); +_L6: + return; +_L2: + Object obj; + String s1; + Object obj3; + String s21; + String s12; + int i4; + if (s.charAt(0) == ':') + { + obj = s.substring(1, i3); + } else + { + obj = s.substring(0, i3); + } + obj1 = s.substring(i3 + 1); + i3 = ((String) (obj1)).indexOf(' '); + if (i3 == -1) goto _L4; else goto _L3 +_L3: + s21 = ((String) (obj1)).substring(0, i3); + s1 = ((String) (obj1)).substring(i3 + 1); + if (s21.equals("PRIVMSG")) + { + i3 = s1.indexOf(':'); + i = i3; + if (i3 == -1) + { + i = s1.indexOf(' ') + 1; + } + obj1 = s1.substring(0, i - 1); + obj3 = obj1; + i3 = i; + if (i < s1.length()) + { + obj3 = obj1; + i3 = i; + if (s1.charAt(i - 1) != ' ') + { + obj3 = obj1; + i3 = i; + if (s1.charAt(i) == ':') + { + i4 = s1.indexOf(':', i + 1); + obj3 = obj1; + i3 = i; + if (i4 > 0) + { + obj3 = s1.substring(0, i4 - 1); + i3 = i4; + } + } + } + } + s12 = s1.substring(i3 + 1); + i3 = ((String) (obj)).indexOf('!'); + String s22; + if (i3 == -1) + { + i = 1; + } else + { + i = 0; + } + if (i != 0) + { + if (stripColours(((String) (obj))).equals("")) + { + obj1 = "*"; + } else + { + obj1 = obj; + } + } else + { + obj1 = ((String) (obj)).substring(0, i3); + } + s22 = stripColours(s12); + i3 = s22.length(); + if (i3 > 2 && s22.charAt(0) == '\001' && s22.charAt(i3 - 1) == '\001') + { + String s19 = s22.substring(1, i3 - 1); + if (s19.length() >= 7 && s19.substring(0, 7).equals("ACTION ")) + { + s22 = s19.substring(s19.indexOf(' ') + 1); + if (isChannelPrefix(((String) (obj3)).charAt(0))) + { + i = ((String) (obj)).indexOf('!'); + i3 = ((String) (obj)).indexOf('@'); + String s13; + if (i3 == -1) + { + s13 = ""; + } else + { + s13 = ((String) (obj)).substring(i + 1, i3); + } + if (i3 == -1) + { + s19 = ""; + } else + { + s19 = ((String) (obj)).substring(i3 + 1); + } + onChannelPrivmsg(((String) (obj3)), ((String) (obj1)), s13, s19, s22, 0); + } else + { + i = ((String) (obj)).indexOf('!'); + i3 = ((String) (obj)).indexOf('@'); + String s14; + if (i3 == -1) + { + obj3 = ""; + } else + { + obj3 = ((String) (obj)).substring(i + 1, i3); + } + if (i3 == -1) + { + s14 = ""; + } else + { + s14 = ((String) (obj)).substring(i3 + 1); + } + onPrivatePrivmsg(((String) (obj1)), ((String) (obj3)), s14, s22, 0); + } + i = 1; + } else + { + i = ((String) (obj)).indexOf('!'); + i3 = ((String) (obj)).indexOf('@'); + String s15; + if (i3 == -1) + { + obj3 = ""; + } else + { + obj3 = ((String) (obj)).substring(i + 1, i3); + } + if (i3 == -1) + { + s15 = ""; + } else + { + s15 = ((String) (obj)).substring(i3 + 1); + } + onCtcpRequest(((String) (obj1)), ((String) (obj3)), s15, s19); + i = 1; + } + } else + if (isChannelPrefix(((String) (obj3)).charAt(0))) + { + i3 = ((String) (obj)).indexOf('@'); + int j4 = ((String) (obj)).indexOf('!'); + String s16; + String s20; + if (i3 == -1) + { + s16 = ""; + } else + { + s16 = ((String) (obj)).substring(j4 + 1, i3); + } + if (i3 == -1) + { + s20 = ""; + } else + { + s20 = ((String) (obj)).substring(i3 + 1); + } + if (i != 0) + { + i = 2; + } else + { + i = 1; + } + onChannelPrivmsg(((String) (obj3)), ((String) (obj1)), s16, s20, s22, i); + i = 1; + } else + { + i = ((String) (obj)).indexOf('!'); + i3 = ((String) (obj)).indexOf('@'); + String s17; + if (i3 == -1) + { + obj3 = ""; + } else + { + obj3 = ((String) (obj)).substring(i + 1, i3); + } + if (i3 == -1) + { + s17 = ""; + } else + { + s17 = ((String) (obj)).substring(i3 + 1); + } + onPrivatePrivmsg(((String) (obj1)), ((String) (obj3)), s17, s22, 1); + i = 1; + } + } +_L40: + if (i != 0) goto _L6; else goto _L5 +_L5: + obj1 = s1; + if (s21.length() != 3) + { + break; /* Loop/switch isn't completed */ + } + obj1 = s1; + if (!isIntStr(s21)) + { + break; /* Loop/switch isn't completed */ + } + i = Integer.parseInt(s21); + i; + JVM INSTR lookupswitch 78: default 1136 + // 1: 2924 + // 5: 3238 + // 221: 2999 + // 305: 3025 + // 306: 3025 + // 315: 3209 + // 321: 3086 + // 322: 3054 + // 324: 2457 + // 329: 2513 + // 331: 2637 + // 332: 2680 + // 333: 2747 + // 337: 3025 + // 341: 2611 + // 346: 2056 + // 348: 2056 + // 352: 3180 + // 353: 2173 + // 366: 2397 + // 367: 2056 + // 372: 1968 + // 375: 1968 + // 376: 1968 + // 401: 1911 + // 402: 1911 + // 403: 1911 + // 404: 2871 + // 405: 1911 + // 406: 1911 + // 407: 1911 + // 408: 1911 + // 409: 1911 + // 411: 1911 + // 412: 1911 + // 413: 1911 + // 414: 1911 + // 415: 1911 + // 421: 1911 + // 422: 2111 + // 423: 1911 + // 424: 1911 + // 431: 1911 + // 432: 1940 + // 433: 2832 + // 436: 1911 + // 437: 1911 + // 441: 1911 + // 442: 1911 + // 443: 1911 + // 444: 1911 + // 445: 1911 + // 446: 1911 + // 451: 1911 + // 461: 1911 + // 462: 1911 + // 463: 1911 + // 464: 1911 + // 465: 1911 + // 466: 1911 + // 467: 1911 + // 471: 1911 + // 472: 1911 + // 473: 1911 + // 474: 1911 + // 475: 1911 + // 476: 1911 + // 477: 1911 + // 478: 1911 + // 481: 1911 + // 482: 2871 + // 483: 1911 + // 484: 1911 + // 485: 1911 + // 491: 1911 + // 501: 1911 + // 502: 1911 + // 972: 3114; + goto _L7 _L8 _L9 _L10 _L11 _L11 _L12 _L13 _L14 _L15 _L16 _L17 _L18 _L19 _L11 _L20 _L21 _L21 _L22 _L23 _L24 _L21 _L25 _L25 _L25 _L26 _L26 _L26 _L27 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L28 _L26 _L26 _L26 _L29 _L30 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L26 _L27 _L26 _L26 _L26 _L26 _L26 _L26 _L31 +_L7: + if (s1.indexOf(':') != -1) + { + i3 = s1.indexOf(' ') + 1; + s13 = snip(s1, i3); + i4 = s1.indexOf(':'); + StringBuilder stringbuilder; + long l4; + long l5; + if (i4 != -1 && i3 + 1 < i4) + { + obj3 = s1.substring(i3 + 1, i4 - 1); + obj1 = obj3; + if (((String) (obj3)).length() > 0) + { + obj1 = obj3; + if (!isChannelPrefix(((String) (obj3)).charAt(0))) + { + obj3 = s1.substring(i3, i4 - 1); + obj1 = obj3; + if (((String) (obj3)).length() > 0) + { + obj1 = obj3; + if (!isChannelPrefix(((String) (obj3)).charAt(0))) + { + obj1 = null; + } + } + } + } + } else + { + obj1 = null; + } + onNumericMessage(((String) (obj1)), s13, i); + obj1 = s1; + } else + { + obj1 = snip(s1, s1.indexOf(' ') + 1); + onNumericMessage(null, ((CharSequence) (obj1)), i); + } +_L33: + if (true) goto _L6; else goto _L32 +_L4: + if (((String) (obj)).equals("PING")) + { + s = ((String) (obj1)); + if (((String) (obj1)).charAt(0) == ':') + { + s = ((String) (obj1)).substring(1); + } + onPing(s); + return; + } + if (((String) (obj)).equals("AUTHENTICATE")) + { + onSaslMessage(((String) (obj)), ((String) (obj1)), null); + return; + } else + { + onUnparsableMessage(s); + return; + } +_L26: + obj1 = snip(s1, s1.indexOf(' ') + 1); + onNumericMessage(null, ((CharSequence) (obj1)), i); + goto _L33 +_L29: + onNumericMessage(null, s1.substring(s1.indexOf(' ') + 1), i); + obj1 = s1; + goto _L33 +_L25: + obj1 = snip(s1, s1.indexOf(' ') + 1); + if (!mConnected || i == 375) + { + if (i == 375) + { + onMotdStart(((String) (obj1))); + } + mConnected = true; + } else + if (i == 372) + { + onMotdLine(((String) (obj1))); + } else + if (i == 376) + { + onMotdEnd(((String) (obj1))); + } + goto _L33 +_L21: + obj1 = s1.substring(s1.indexOf(' ') + 1); + i3 = ((String) (obj1)).indexOf(' '); + onNumericMessage(((String) (obj1)).substring(0, i3), ((String) (obj1)).substring(i3 + 1), i); + obj1 = s1; + goto _L33 +_L28: + if (!mConnected) + { + onNumericMessage(null, s1.substring(s1.indexOf(':') + 1), i); + mConnected = true; + } + obj1 = snip(s1, s1.indexOf(' ') + 1); + onNumericMessage(null, ((CharSequence) (obj1)), i); + goto _L33 +_L23: + obj3 = new StringTokenizer(s1); + i3 = 0; + obj1 = new String(); + i = ((StringTokenizer) (obj3)).countTokens(); + if (i > 0) + { + i *= 2; + } else + { + i = (i + 1) * 2; + } + stringbuilder = new StringBuilder(i); + i = i3; +_L37: + if (((StringTokenizer) (obj3)).hasMoreTokens()) goto _L35; else goto _L34 +_L35: + switch (i) + { + default: + stringbuilder.append(((StringTokenizer) (obj3)).nextToken()).append(" "); + break; + + case 0: // '\0' + case 1: // '\001' + ((StringTokenizer) (obj3)).nextToken(); + i++; + break; + + case 2: // '\002' + obj1 = ((StringTokenizer) (obj3)).nextToken(); + i++; + break; + + case 3: // '\003' + stringbuilder.append(((StringTokenizer) (obj3)).nextToken().substring(1)).append(" "); + i++; + break; + } + if (true) goto _L37; else goto _L36 +_L36: +_L34: + if (!isChannelPrefix(((String) (obj1)).charAt(0))) + { + onUnparsableMessage(s); + return; + } + onNamesList(((String) (obj1)), stringbuilder.toString()); + obj1 = s1; + goto _L33 +_L24: + i3 = s1.indexOf(' '); + if (s1.charAt(i3 + 1) == ':') + { + obj1 = s1.substring(i3 + 2); + } else + { + obj1 = s1.substring(i3 + 1); + } + onNumericMessage(null, ((CharSequence) (obj1)), i); + goto _L33 +_L15: + obj1 = s1.substring(s1.indexOf(' ', 1)).trim(); + i = ((String) (obj1)).indexOf(' '); + on324(((String) (obj1)).substring(0, i), ((String) (obj1)).substring(i).trim()); + obj1 = s1; + goto _L33 +_L16: + i = s1.lastIndexOf(' '); + obj3 = s1.substring(i + 1, s1.length()); + obj1 = s1.substring(s1.indexOf(' ', 1) + 1, i); + l4 = -1L; + l5 = Long.parseLong(((String) (obj3))); + l4 = l5 * 1000L; +_L38: + if (l4 != -1L) + { + on329(((String) (obj1)), l4); + } + obj1 = s1; + goto _L33 + obj3; + onUnparsableMessage(s); + goto _L38 +_L20: + obj1 = Utils.split(s1); + onInviteSent(obj1[2], obj1[1]); + obj1 = s1; + goto _L33 +_L17: + obj1 = s1.substring(s1.indexOf(' ')).trim(); + on332(((String) (obj1)).substring(0, ((String) (obj1)).indexOf(' ')), null, false); + obj1 = s1; + goto _L33 +_L18: + obj1 = s1.substring(s1.indexOf(' ', s1.indexOf(' '))).trim(); + on332(((String) (obj1)).substring(0, ((String) (obj1)).indexOf(' ')), stripColours(((String) (obj1)).substring(((String) (obj1)).indexOf(' ') + 2)), true); + obj1 = s1; + goto _L33 +_L19: + obj3 = s1.substring(s1.indexOf(' ', s1.indexOf(' '))).trim(); + i = ((String) (obj3)).indexOf(' '); + obj1 = ((String) (obj3)).substring(0, i); + obj3 = Utils.split(((String) (obj3)).substring(i + 1)); + on333(((String) (obj1)), obj3[0], Long.parseLong(obj3[1]) * 1000L); + obj1 = s1; + goto _L33 +_L30: + onNumericMessage(null, s1.substring(s1.indexOf(' ') + 1), i); + if (!mConnected) + { + on433(); + } + obj1 = s1; + goto _L33 +_L27: + i3 = s1.indexOf(' '); + obj1 = s1.substring(i3 + 1); + onNumericMessage(s1.substring(i3 + 1, s1.indexOf(':') - 1), ((CharSequence) (obj1)), i); + obj1 = s1; + goto _L33 +_L8: + i3 = s1.indexOf(' '); + on001(s1.substring(0, i3)); + if (s1.charAt(i3 + 1) == ':') + { + obj1 = s1.substring(i3 + 2); + } else + { + obj1 = s1.substring(i3); + } + onNumericMessage(null, ((CharSequence) (obj1)), i); + onNetworkName(((String) (obj))); + goto _L33 +_L10: + on221(snip(s1, s1.indexOf(' ') + 1)); + obj1 = s1; + goto _L33 +_L11: + obj1 = snip(s1, s1.indexOf(' ') + 1); + onNumericMessage(null, ((CharSequence) (obj1)), i); + goto _L33 +_L14: + onNumericMessage(null, stripColours(s1.substring(s1.indexOf(' ') + 1)), i); + obj1 = s1; + goto _L33 +_L13: + onNumericMessage(null, s1.substring(s1.indexOf(' ') + 1), i); + obj1 = s1; + goto _L33 +_L31: + if (s1.indexOf(':') != -1) + { + obj3 = s1.substring(s1.indexOf(' ') + 1); + obj1 = obj3; + if (((String) (obj3)).charAt(0) == ':') + { + obj1 = ((String) (obj3)).substring(1); + } + onNumericMessage(null, ((CharSequence) (obj1)), i); + } + obj1 = s1; + goto _L33 +_L22: + obj1 = s1.substring(s1.indexOf(' ') + 1); + onNumericMessage("", ((CharSequence) (obj1)), i); + goto _L33 +_L12: + obj1 = s1.substring(s1.indexOf(' ') + 1); + onNumericMessage("", ((CharSequence) (obj1)), i); + if (true) goto _L33; else goto _L39 +_L39: + goto _L6 +_L9: + synchronized (sNetworkMatcher) + { + if (sNetworkMatcher.reset(s1).find()) + { + onNetworkName(sNetworkMatcher.group(1)); + } + } + s1 = s1.substring(s1.indexOf(' ') + 1); + onISupport(s1); + goto _L7 + s; + obj1; + JVM INSTR monitorexit ; + throw s; +_L32: + if (s21.equals("JOIN")) + { + i = ((String) (obj)).indexOf('!'); + if (i == -1) + { + s = ((String) (obj)); + } else + { + s = ((String) (obj)).substring(0, i); + } + if (i == -1) + { + obj3 = ""; + } else + { + obj3 = ((String) (obj)).substring(i + 1); + } + s13 = ""; + s19 = ""; + s1 = s13; + obj = s19; + if (((String) (obj3)).length() > 0) + { + i = ((String) (obj3)).indexOf('@'); + s1 = s13; + obj = s19; + if (i != -1) + { + s1 = ((String) (obj3)).substring(0, i); + obj = ((String) (obj3)).substring(i + 1); + } + } + if (((String) (obj1)).charAt(0) == ':') + { + obj1 = ((String) (obj1)).substring(1); + } + onUserJoined(((String) (obj1)), s, s1, ((String) (obj))); + return; + } + if (s21.equals("PART")) + { + int j = ((String) (obj)).indexOf('!'); + Object obj2; + String s9; + if (j == -1) + { + s = ((String) (obj)); + } else + { + s = ((String) (obj)).substring(0, j); + } + if (j == -1) + { + obj = ""; + } else + { + obj = ((String) (obj)).substring(j + 1); + } + j = ((String) (obj1)).indexOf(' '); + if (j == -1) + { + obj2 = obj1; + } else + { + obj2 = ((String) (obj1)).substring(0, j); + } + s9 = ""; + j = ((String) (obj1)).indexOf(':'); + if (j != -1) + { + s9 = stripColours(((String) (obj1)).substring(j + 1)); + } + onUserParted(((String) (obj2)), s, ((String) (obj)), s9); + return; + } + if (s21.equals("QUIT")) + { + int k = ((String) (obj)).indexOf('!'); + if (k == -1) + { + s = ((String) (obj)); + } else + { + s = ((String) (obj)).substring(0, k); + } + if (((String) (obj1)).length() > 0) + { + obj = ((String) (obj1)).substring(1); + } else + { + obj = ""; + } + onUserQuit(s, null, stripColours(((String) (obj)))); + return; + } + if (s21.equals("NICK")) + { + int l = ((String) (obj)).indexOf('!'); + String s2; + int j3; + if (l != -1) + { + s = ((String) (obj)).substring(0, l); + } else + { + s = ((String) (obj)); + } + if (((String) (obj1)).charAt(0) == ':') + { + obj1 = ((String) (obj1)).substring(1); + } + j3 = ((String) (obj)).indexOf('@'); + if (l == -1 || j3 == -1) + { + s2 = ""; + } else + { + s2 = ((String) (obj)).substring(l + 1, j3); + } + if (l == -1 || j3 == -1) + { + obj = ""; + } else + { + obj = ((String) (obj)).substring(j3 + 1); + } + onNickChanged(s, ((String) (obj1)), s2, ((String) (obj))); + return; + } + if (s21.equals("NOTICE") || s21.equals("AUTH") || ((String) (obj)).equals("NOTICE")) + { + int i1 = ((String) (obj)).indexOf('!'); + if (i1 == -1) + { + s = null; + if (isStatusPrefix(((String) (obj1)).charAt(0))) + { + s = ((String) (obj1)).substring(1, ((String) (obj1)).indexOf(' ')); + } + onNotice(null, null, null, null, ((String) (obj1)).substring(((String) (obj1)).indexOf(':') + 1), s); + return; + } + String s10 = ((String) (obj1)).substring(0, ((String) (obj1)).indexOf(' ')); + if (isChannelPrefix(s10.charAt(0)) && !isChannelPrefix(s10.charAt(1))) + { + int k3 = ((String) (obj)).indexOf('@'); + String s3; + if (k3 == -1) + { + s = ""; + } else + { + s = ((String) (obj)).substring(i1 + 1, k3); + } + if (k3 == -1) + { + s3 = ""; + } else + { + s3 = ((String) (obj)).substring(k3 + 1); + } + onNotice(s10, ((String) (obj)).substring(0, i1), s, s3, stripColours(((String) (obj1)).substring(((String) (obj1)).indexOf(' ') + 2)), null); + return; + } + char c = ((String) (obj1)).charAt(0); + boolean flag = isStatusPrefix(c); + s = s10; + if (flag) + { + s = s10.substring(1); + } + int l3 = ((String) (obj)).indexOf('@'); + String s4; + String s18; + if (i1 == -1) + { + s4 = ""; + } else + { + s4 = ((String) (obj)).substring(i1 + 1, l3); + } + if (l3 == -1) + { + s10 = ""; + } else + { + s10 = ((String) (obj)).substring(l3 + 1); + } + s18 = ((String) (obj)).substring(0, i1); + obj1 = stripColours(((String) (obj1)).substring(((String) (obj1)).indexOf(' ') + 2)); + if (flag) + { + obj = String.valueOf(c); + } else + { + obj = null; + } + onNotice(s, s18, s4, s10, ((String) (obj1)), ((String) (obj))); + return; + } + if (s21.equals("INVITE")) + { + int j1 = ((String) (obj)).indexOf('!'); + String s5; + if (j1 == -1) + { + s = ((String) (obj)); + } else + { + s = ((String) (obj)).substring(0, j1); + } + if (j1 == -1) + { + obj = ""; + } else + { + obj = ((String) (obj)).substring(j1 + 1); + } + s5 = ((String) (obj1)).substring(((String) (obj1)).indexOf(' ') + 1); + obj1 = s5; + if (s5.charAt(0) == ':') + { + obj1 = s5.substring(1); + } + onInvite(s, ((String) (obj)), ((String) (obj1))); + return; + } + if (s21.equals("MODE")) + { + int k1 = ((String) (obj1)).indexOf(' '); + if (k1 <= 0) + { + onUnparsableMessage(s); + return; + } + String s6 = ((String) (obj1)).substring(0, k1); + s = ((String) (obj1)).substring(k1 + 1); + if (isChannelPrefix(s6.charAt(0))) + { + obj1 = s.trim(); + int l1 = ((String) (obj)).indexOf('!'); + s = ((String) (obj)); + if (l1 != -1) + { + s = ((String) (obj)).substring(0, l1); + } + onModeChanged(s6, ((String) (obj1)), s); + return; + } else + { + onModeChanged(s6, s.substring(1), null); + return; + } + } + if (s21.equals("TOPIC")) + { + int i2 = ((String) (obj)).indexOf('!'); + if (i2 != -1) + { + obj = ((String) (obj)).substring(0, i2); + } + i2 = ((String) (obj1)).indexOf(' '); + onTopicChanged(((String) (obj1)).substring(0, i2), stripColours(((String) (obj1)).substring(((String) (obj1)).indexOf(':', i2) + 1)), ((String) (obj))); + return; + } + if (s21.equals("KICK")) + { + int j2 = ((String) (obj)).indexOf('!'); + String s7; + String s11; + if (j2 == -1) + { + s = ((String) (obj)); + } else + { + s = ((String) (obj)).substring(0, j2); + } + s7 = ((String) (obj1)).substring(0, ((String) (obj1)).indexOf(' ')); + obj = ""; + s11 = Utils.split(((CharSequence) (obj1)))[1]; + j2 = ((String) (obj1)).indexOf(':'); + if (j2 != -1) + { + obj = ((String) (obj1)).substring(j2 + 1); + } + onUserKicked(s7, s11, s, ((String) (obj))); + return; + } + if (((String) (obj)).equals("ERROR")) + { + obj = new StringBuilder(); + s = s21; + if (s21.charAt(0) == ':') + { + s = s21.substring(1); + } + ((StringBuilder) (obj)).append(s); + ((StringBuilder) (obj)).append(" ").append(((String) (obj1))); + onError(((CharSequence) (obj))); + return; + } + if (s21.equals("WALLOPS")) + { + int k2 = ((String) (obj)).indexOf('!'); + if (k2 == -1) + { + s = ((String) (obj)); + } else + { + s = ((String) (obj)).substring(0, k2); + } + if (k2 == -1) + { + obj = ""; + } else + { + obj = ((String) (obj)).substring(k2 + 1, ((String) (obj)).length()); + } + if (((String) (obj1)).charAt(0) == ':') + { + obj1 = ((String) (obj1)).substring(1); + } + onWallops(s, ((String) (obj)), ((String) (obj1))); + return; + } + if (s21.equals("KILL")) + { + int l2 = ((String) (obj1)).indexOf(' '); + String s8 = ((String) (obj1)).substring(0, l2); + obj1 = ((String) (obj1)).substring(((String) (obj1)).indexOf(' ', l2 + 1) + 1, ((String) (obj1)).length()); + l2 = ((String) (obj)).indexOf('!'); + if (l2 == -1) + { + s = ((String) (obj)); + } else + { + s = ((String) (obj)).substring(0, l2); + } + if (l2 == -1) + { + obj = ""; + } else + { + obj = ((String) (obj)).substring(l2 + 1); + } + onKill(s8, s, ((String) (obj)), ((String) (obj1))); + return; + } + if (s21.equals("PONG")) + { + onPong(((String) (obj1)).substring(((String) (obj1)).indexOf(' ') + 2)); + return; + } + if (s21.equals("CAP")) + { + s = Utils.split(((CharSequence) (obj1))); + String as[] = new String[s.length - 1]; + System.arraycopy(s, 1, as, 0, as.length); + onSaslMessage(s21, s[0], as); + return; + } + onUnknownMessage(s); + return; + goto _L40 + } + + protected void reset() + { + mConnected = false; + } + + public abstract String stripColours(String s); + +} diff --git a/app/src/main/java/net/andchat/donate/Backend/ServerConnection$1.java b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$1.java new file mode 100644 index 0000000..18b4e58 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$1.java @@ -0,0 +1,42 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + + +// Referenced classes of package net.andchat.donate.Backend: +// ServerConnection + +class this._cls0 + implements Runnable +{ + + final ServerConnection this$0; + + public void run() + { + this; + JVM INSTR monitorenter ; + Exception exception; + try + { + wait(800L); + } + catch (InterruptedException interruptedexception) { } + this; + JVM INSTR monitorexit ; + removeServerConnectionFlag(2); + return; + exception; + this; + JVM INSTR monitorexit ; + throw exception; + } + + () + { + this$0 = ServerConnection.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/ServerConnection$2.java b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$2.java new file mode 100644 index 0000000..f204ea4 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$2.java @@ -0,0 +1,42 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + + +// Referenced classes of package net.andchat.donate.Backend: +// ServerConnection + +class this._cls0 + implements Runnable +{ + + final ServerConnection this$0; + + public void run() + { + this; + JVM INSTR monitorenter ; + Exception exception; + try + { + wait(600L); + } + catch (InterruptedException interruptedexception) { } + this; + JVM INSTR monitorexit ; + removeServerConnectionFlag(1); + return; + exception; + this; + JVM INSTR monitorexit ; + throw exception; + } + + () + { + this$0 = ServerConnection.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/ServerConnection$CharsetUtil.java b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$CharsetUtil.java new file mode 100644 index 0000000..9dd544d --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$CharsetUtil.java @@ -0,0 +1,195 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import com.glaforge.i18n.io.CharsetToolkit; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.util.Arrays; + +// Referenced classes of package net.andchat.donate.Backend: +// ServerConnection + +private static final class mGuessCharset +{ + + private final byte mBuffer[] = new byte[1024]; + private final String mCharset; + private final boolean mGuessCharset; + + private String StringFromBuffer(byte abyte0[]) + throws UnsupportedEncodingException + { + if (abyte0[0] != -1) goto _L2; else goto _L1 +_L1: + int i; + int j; + j = abyte0.length; + i = 0; +_L5: + if (i < j) goto _L4; else goto _L3 +_L3: + return null; +_L4: + if (abyte0[i] != -1) + { + byte abyte1[] = new byte[j - i]; + System.arraycopy(abyte0, i, abyte1, 0, abyte1.length); + return StringFromBuffer(abyte1); + } + i++; + goto _L5 +_L2: + if (abyte0[abyte0.length - 1] == 10) + { + int k = abyte0.length; + i = k; + if (abyte0[k - 2] == 13) + { + i = k - 2; + } + String s; + String s3; + if (mGuessCharset) + { + s = CharsetToolkit.guessEncoding(abyte0, i, mCharset); + } else + { + s = mCharset; + } + s3 = s; + if (s == null) + { + s3 = mCharset; + } + return new String(abyte0, 0, i, s3); + } + if (abyte0[0] != -1 && abyte0[abyte0.length - 1] != -1) + { + String s1; + String s4; + if (mGuessCharset) + { + s1 = CharsetToolkit.guessEncoding(abyte0, abyte0.length, mCharset); + } else + { + s1 = mCharset; + } + s4 = s1; + if (s1 == null) + { + s4 = mCharset; + } + return new String(abyte0, 0, abyte0.length, s4); + } + i = abyte0.length - 1; +_L6: + if (i >= 0) + { +label0: + { + if (abyte0[i] == -1) + { + break label0; + } + int l = i; + if (i != 0) + { + l = i; + if (abyte0[i - 1] == 13) + { + l = i - 1; + } + } + if (l != 0) + { + String s2; + String s5; + if (mGuessCharset) + { + s2 = CharsetToolkit.guessEncoding(abyte0, l, mCharset); + } else + { + s2 = mCharset; + } + s5 = s2; + if (s2 == null) + { + s5 = mCharset; + } + return new String(abyte0, 0, l, s5); + } + } + } + goto _L3 + i--; + goto _L6 + } + + public String readLine(InputStream inputstream) + throws IOException + { + byte abyte0[]; + int i; + abyte0 = mBuffer; + Arrays.fill(abyte0, (byte)-1); + i = 0; +_L6: + boolean flag; + boolean flag1; + int j; + if (i >= 1024) + { + return StringFromBuffer(abyte0); + } + j = inputstream.read(); + if (j == -1) + { + return StringFromBuffer(abyte0); + } + flag1 = false; + flag = flag1; + j; + JVM INSTR tableswitch 10 13: default 84 + // 10 120 + // 11 88 + // 12 88 + // 13 105; + goto _L1 _L2 _L3 _L3 _L4 +_L1: + flag = flag1; +_L3: + abyte0[i] = (byte)j; + if (flag) + { + return StringFromBuffer(abyte0); + } + break; /* Loop/switch isn't completed */ +_L4: + flag = flag1; + if (i > 0) goto _L3; else goto _L5 +_L5: + i++; + goto _L6 +_L2: + flag = true; + if (i > 1) goto _L3; else goto _L5 + } + + public (String s) + { + mCharset = s; + boolean flag; + if (s.equalsIgnoreCase("UTF-8")) + { + flag = false; + } else + { + flag = true; + } + mGuessCharset = flag; + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/ServerConnection$Connection$1.java b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$Connection$1.java new file mode 100644 index 0000000..01c5b54 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$Connection$1.java @@ -0,0 +1,42 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import android.os.Message; +import android.util.Log; +import net.andchat.donate.Misc.Colours; +import net.andchat.donate.Misc.ServerProfile; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Backend: +// ServerConnection, IRCService + +class this._cls1 + implements r +{ + + final this._cls1 this$1; + + public void uncaughtException(Thread thread, Throwable throwable) + { + Log.e("ServerConnection", "Exception", throwable); + thread = ServerConnection.access$0(cess._mth4(this._cls1.this), 0x7f0a0043, new Object[] { + cess._mth0(this._cls1.this).getAddress() + }); + throwable = Utils.createMessage(cess._mth4(this._cls1.this).isShowingTimestamps(), thread); + Utils.addColour(cess._mth4(this._cls1.this).isShowingTimestamps(), throwable, ServerConnection.access$1(cess._mth4(this._cls1.this)).getColourForEvent(0x7f0b002c), 0, thread.length()); + Utils.addLinks(throwable); + cess._mth4(this._cls1.this).sendToAll(throwable, 3); + cess._mth4(this._cls1.this).pState = 0; + Message.obtain(ServerConnection.access$2(cess._mth4(this._cls1.this)).mHandler, 0, 3, 0, cess._mth1(this._cls1.this)).sendToTarget(); + cess._mth2(this._cls1.this); + } + + () + { + this$1 = this._cls1.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/ServerConnection$Connection$2.java b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$Connection$2.java new file mode 100644 index 0000000..6f89f20 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$Connection$2.java @@ -0,0 +1,29 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import android.os.Handler; +import android.os.Looper; +import android.os.Message; + +// Referenced classes of package net.andchat.donate.Backend: +// ServerConnection + +class this._cls1 extends Handler +{ + + final this._cls1 this$1; + + public void handleMessage(Message message) + { + ServerConnection.access$5(cess._mth1(this._cls1.this), (String)message.obj); + } + + (Looper looper) + { + this$1 = this._cls1.this; + super(looper); + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/ServerConnection$Connection.java b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$Connection.java new file mode 100644 index 0000000..a5a444a --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$Connection.java @@ -0,0 +1,505 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import android.content.SharedPreferences; +import android.os.Handler; +import android.os.HandlerThread; +import android.os.Looper; +import android.os.Message; +import android.text.TextUtils; +import android.util.Log; +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStreamWriter; +import java.net.InetSocketAddress; +import java.net.NoRouteToHostException; +import java.net.Socket; +import java.net.SocketException; +import java.net.SocketTimeoutException; +import java.net.UnknownHostException; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.util.concurrent.atomic.AtomicBoolean; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; +import net.andchat.donate.Misc.Colours; +import net.andchat.donate.Misc.ServerProfile; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Backend: +// ServerConnection, IRCService, Parser + +private class mServ extends Thread +{ + + private InputStream mIn; + private final ServerProfile mOptions; + private BufferedWriter mOut; + private int mReconnectDelay; + private final ServerConnection mServ; + private final Socket mSock; + private boolean mWasStopped; + final ServerConnection this$0; + + private void stopCommandQ() + { + if (ServerConnection.access$4(ServerConnection.this) != null) + { + ServerConnection.access$4(ServerConnection.this).quit(); + ServerConnection.access$6(ServerConnection.this, null); + } + } + + public void run() + { + if (!ServerConnection.access$7(ServerConnection.this).get()) goto _L2; else goto _L1 +_L1: + this; + JVM INSTR monitorenter ; + int k = mReconnectDelay * 1000; + int i; + if (k > 30000) + { + i = 30000; + } else + { + i = k; + if (k <= 0) + { + i = 5000; + } + } + wait(i); +_L3: + this; + JVM INSTR monitorexit ; + Object obj; + Object obj2; + try + { + ServerConnection.access$7(ServerConnection.this).set(false); + if (mWasStopped) + { + stopCommandQ(); + return; + } + } + // Misplaced declaration of an exception variable + catch (Object obj2) + { + Object obj1; + Object obj3; + String s; + android.text.SpannableStringBuilder spannablestringbuilder; + int j; + boolean flag; + boolean flag1; + if (pConnectTime != 0L && System.currentTimeMillis() > pConnectTime + 60000L) + { + j = 1; + } else + { + j = 0; + } + if (j != 0) + { + pReconnectCount = 0; + pConnectTime = 0L; + } + obj1 = new StringBuilder(); + if (obj2 instanceof SocketTimeoutException) + { + ((StringBuilder) (obj1)).append("Disconnected: Connection timed out."); + } else + if (obj2 instanceof NoRouteToHostException) + { + ((StringBuilder) (obj1)).append("Disconnected: No route to host."); + } else + if ((obj2 instanceof SocketException) || (obj2 instanceof UnknownHostException)) + { + ((StringBuilder) (obj1)).append("Disconnected: ").append(((IOException) (obj2)).getMessage()); + } else + { + obj2 = ((IOException) (obj2)).getMessage(); + if (obj2 != null && ((String) (obj2)).length() > 0) + { + ((StringBuilder) (obj1)).append("Disconnected: ").append(((String) (obj2))); + } else + { + ((StringBuilder) (obj1)).append("Disconnected"); + } + } + if (mOptions.usesSSL()) + { + j = ((StringBuilder) (obj1)).indexOf("You should never see this"); + if (j != -1) + { + ((StringBuilder) (obj1)).replace(j, "You should never see this".length() + j, ""); + } + } + flag1 = ServerConnection.access$8(); + j = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b002a); + obj2 = Utils.createMessage(ServerConnection.access$8(), ((CharSequence) (obj1))); + Utils.addColour(flag1, ((android.text.SpannableStringBuilder) (obj2)), j, 0, ((StringBuilder) (obj1)).length()); + sendToAll(((CharSequence) (obj2)), 1); + if (pState == 1 || pState == 3) + { + stopConn(0); + } + deactivateAllAndUpdateUi(true); + return; + } + break MISSING_BLOCK_LABEL_304; + obj; + ((InterruptedException) (obj)).printStackTrace(); + goto _L3 + obj; + this; + JVM INSTR monitorexit ; + throw obj; + removeServerConnectionFlag(16); + flag1 = ServerConnection.access$8(); + obj1 = Utils.getConnectionMessage(ServerConnection.access$2(ServerConnection.this), true, mOptions); + if (pReconnectCount <= 0) goto _L5; else goto _L4 +_L4: + if (pReconnectCount <= 9) goto _L7; else goto _L6 +_L6: + obj2 = String.valueOf(pReconnectCount).toCharArray(); + ((StringBuilder) (obj1)).insert(0, "[").insert(1, ((char []) (obj2)), 0, obj2.length).insert(obj2.length + 1, "] "); +_L5: + sendMessage("Status", Utils.createMessage(flag1, ((CharSequence) (obj1))), 1); + pState = 3; + Message.obtain(ServerConnection.access$2(ServerConnection.this).mHandler, 0, 3, 0, mServ).sendToTarget(); +_L2: + obj3 = mOptions; + obj2 = ((ServerProfile) (obj3)).getCharset(); + obj1 = obj2; + if (TextUtils.isEmpty(((CharSequence) (obj2)))) + { + obj1 = ServerConnection.access$2(ServerConnection.this).prefs.getString(ServerConnection.access$2(ServerConnection.this).getString(0x7f0a000f), "UTF-8"); + } + mSock.connect(new InetSocketAddress(((ServerProfile) (obj3)).getAddress(), ((ServerProfile) (obj3)).getPort()), ServerConnection.sTimeout * 1000); + mIn = mSock.getInputStream(); + mOut = new BufferedWriter(new OutputStreamWriter(mSock.getOutputStream(), ((String) (obj1))), 1024); + j = ((ServerProfile) (obj3)).getAuthModes(); + obj2 = new StringBuilder(20); + if (Utils.isBitSet(j, net.andchat.donate.Misc.Modes.MODE_PASSWORD)) + { + s = ((ServerProfile) (obj3)).getServerPassword(); + if (!TextUtils.isEmpty(s)) + { + write(((StringBuilder) (obj2)).append("PASS ").append(s).append("\r\n").toString()); + } + ((StringBuilder) (obj2)).setLength(0); + } + if (Utils.isBitSet(j, net.andchat.donate.Misc.Modes.MODE_SASL)) + { + j = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b002c); + s = ServerConnection.access$9(ServerConnection.this, 0x7f0a0052); + spannablestringbuilder = Utils.createMessage(ServerConnection.access$8(), s); + sendMessage("Status", Utils.addColour(ServerConnection.access$8(), spannablestringbuilder, j, 0, s.length()), 1); + write("CAP REQ :sasl\r\n"); + } + write(((StringBuilder) (obj2)).append("NICK ").append(((ServerProfile) (obj3)).getNick(1)).append("\r\n").toString()); + ((StringBuilder) (obj2)).setLength(0); + write(((StringBuilder) (obj2)).append("USER ").append(((ServerProfile) (obj3)).getUsername()).append(" 0 ").append(((ServerProfile) (obj3)).getAddress()).append(" :").append(((ServerProfile) (obj3)).getRealname()).append("\r\n").toString()); + j = 0; + obj2 = mIn; + obj3 = mServ.pParser; + obj1 = new (((String) (obj1))); +_L12: + s = (() (obj1)).readLine(((InputStream) (obj2))); + if (s == null) goto _L9; else goto _L8 +_L8: + if (pState != 0) goto _L10; else goto _L9 +_L9: + throw new IOException(); +_L7: + ((StringBuilder) (obj1)).insert(0, "[").insert(1, pReconnectCount).insert(2, "] "); + goto _L5 +_L10: + flag = j; + if (j != 0) + { + break MISSING_BLOCK_LABEL_942; + } + mServ.pState = 1; + Message.obtain(ServerConnection.access$2(ServerConnection.this).mHandler, 0, 3, 1, mServ).sendToTarget(); + flag = true; + pConnectTime = System.currentTimeMillis(); + j = ((flag) ? 1 : 0); + if (s.length() == 0) goto _L12; else goto _L11 +_L11: + ((Parser) (obj3)).parse(s); + j = ((flag) ? 1 : 0); + goto _L12 + } + + protected void stopConn(int i) + { + int j = 4; + if (pState == 0 && pState == 4) + { + return; + } + pState = 2; + Message.obtain(ServerConnection.access$2(ServerConnection.this).mHandler, 0, 3, 0, mServ).sendToTarget(); + ServerConnection serverconnection; + try + { + write((new StringBuilder("QUIT :")).append(getQuitReason()).append("\r\n").toString()); + } + catch (NullPointerException nullpointerexception) + { + mIn = null; + mOut = null; + ServerConnection serverconnection1; + Object obj; + ServerConnection serverconnection2; + Object obj1; + try + { + mSock.shutdownInput(); + } + catch (IOException ioexception2) { } + catch (UnsupportedOperationException unsupportedoperationexception1) { } + try + { + mSock.shutdownOutput(); + } + catch (IOException ioexception1) { } + catch (UnsupportedOperationException unsupportedoperationexception) { } + try + { + mSock.close(); + } + catch (IOException ioexception) { } + serverconnection1 = ServerConnection.this; + if (i == 0) + { + j = 0; + } + serverconnection1.pState = j; + Message.obtain(ServerConnection.access$2(ServerConnection.this).mHandler, 0, i, 0, mServ).sendToTarget(); + stopCommandQ(); + return; + } + // Misplaced declaration of an exception variable + catch (Object obj) + { + mIn = null; + mOut = null; + try + { + mSock.shutdownInput(); + } + // Misplaced declaration of an exception variable + catch (Object obj) { } + // Misplaced declaration of an exception variable + catch (Object obj) { } + try + { + mSock.shutdownOutput(); + } + // Misplaced declaration of an exception variable + catch (Object obj) { } + // Misplaced declaration of an exception variable + catch (Object obj) { } + try + { + mSock.close(); + } + // Misplaced declaration of an exception variable + catch (Object obj) { } + obj = ServerConnection.this; + if (i == 0) + { + j = 0; + } + obj.pState = j; + Message.obtain(ServerConnection.access$2(ServerConnection.this).mHandler, 0, i, 0, mServ).sendToTarget(); + stopCommandQ(); + return; + } + finally + { + mIn = null; + } + mIn = null; + mOut = null; + try + { + mSock.shutdownInput(); + } + // Misplaced declaration of an exception variable + catch (Object obj) { } + // Misplaced declaration of an exception variable + catch (Object obj) { } + try + { + mSock.shutdownOutput(); + } + // Misplaced declaration of an exception variable + catch (Object obj) { } + // Misplaced declaration of an exception variable + catch (Object obj) { } + try + { + mSock.close(); + } + // Misplaced declaration of an exception variable + catch (Object obj) { } + serverconnection = ServerConnection.this; + if (i == 0) + { + j = 0; + } + serverconnection.pState = j; + Message.obtain(ServerConnection.access$2(ServerConnection.this).mHandler, 0, i, 0, mServ).sendToTarget(); + stopCommandQ(); + return; + mOut = null; + try + { + mSock.shutdownInput(); + } + // Misplaced declaration of an exception variable + catch (Object obj1) { } + // Misplaced declaration of an exception variable + catch (Object obj1) { } + try + { + mSock.shutdownOutput(); + } + // Misplaced declaration of an exception variable + catch (Object obj1) { } + // Misplaced declaration of an exception variable + catch (Object obj1) { } + try + { + mSock.close(); + } + // Misplaced declaration of an exception variable + catch (Object obj1) { } + serverconnection2 = ServerConnection.this; + if (i == 0) + { + j = 0; + } + serverconnection2.pState = j; + Message.obtain(ServerConnection.access$2(ServerConnection.this).mHandler, 0, i, 0, mServ).sendToTarget(); + stopCommandQ(); + throw obj; + } + + public void write(String s) + { + if (mOut == null) + { + return; + } + try + { + mOut.write(s); + mOut.flush(); + return; + } + // Misplaced declaration of an exception variable + catch (String s) + { + return; + } + // Misplaced declaration of an exception variable + catch (String s) + { + return; + } + } + + + + + + + public (ServerConnection serverconnection1, int i) + { + this$0 = ServerConnection.this; + super(); + mReconnectDelay = i; + mServ = serverconnection1; + mOptions = serverconnection1.pOptions; + serverconnection1 = null; + if (!mOptions.usesSSL()) goto _L2; else goto _L1 +_L1: + Object obj = new (ServerConnection.this, null); + SSLContext sslcontext = SSLContext.getInstance("TLS"); + SecureRandom securerandom = new SecureRandom(); + sslcontext.init(null, new TrustManager[] { + obj + }, securerandom); + obj = sslcontext.getSocketFactory().createSocket(); + serverconnection1 = ((ServerConnection) (obj)); +_L4: + mSock = serverconnection1; + setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { + + final ServerConnection.Connection this$1; + + public void uncaughtException(Thread thread, Throwable throwable) + { + Log.e("ServerConnection", "Exception", throwable); + thread = ServerConnection.access$0(this$0, 0x7f0a0043, new Object[] { + mOptions.getAddress() + }); + throwable = Utils.createMessage(isShowingTimestamps(), thread); + Utils.addColour(isShowingTimestamps(), throwable, ServerConnection.access$1(this$0).getColourForEvent(0x7f0b002c), 0, thread.length()); + Utils.addLinks(throwable); + sendToAll(throwable, 3); + pState = 0; + Message.obtain(ServerConnection.access$2(this$0).mHandler, 0, 3, 0, mServ).sendToTarget(); + stopCommandQ(); + } + + + { + this$1 = ServerConnection.Connection.this; + super(); + } + }); + ServerConnection.access$3(ServerConnection.this, new HandlerThread("CommandsQ")); + ServerConnection.access$4(ServerConnection.this).start(); + ServerConnection.access$6(ServerConnection.this, new Handler(ServerConnection.access$4(ServerConnection.this).getLooper()) { + + final ServerConnection.Connection this$1; + + public void handleMessage(Message message) + { + ServerConnection.access$5(mServ, (String)message.obj); + } + + + { + this$1 = ServerConnection.Connection.this; + super(looper); + } + }); + return; +_L2: + serverconnection1 = new Socket(); + continue; /* Loop/switch isn't completed */ + Object obj1; + obj1; + continue; /* Loop/switch isn't completed */ + obj1; + continue; /* Loop/switch isn't completed */ + obj1; + if (true) goto _L4; else goto _L3 +_L3: + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/ServerConnection$LogManager$Logger.java b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$LogManager$Logger.java new file mode 100644 index 0000000..b3e4a7a --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$LogManager$Logger.java @@ -0,0 +1,173 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import android.content.SharedPreferences; +import android.os.Environment; +import android.text.TextUtils; +import android.util.Log; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.util.Calendar; +import net.andchat.donate.Misc.ServerProfile; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Backend: +// ServerConnection, IRCService + +private final class mWriter +{ + + final String mChan; + final BufferedWriter mWriter; + final mChan this$1; + + private void flush(BufferedWriter bufferedwriter) + { + try + { + bufferedwriter.flush(); + return; + } + // Misplaced declaration of an exception variable + catch (BufferedWriter bufferedwriter) + { + Log.e("AndChat::Logs", "Error while force flushing buffer", bufferedwriter); + } + } + + private StringBuilder getFolderName() + { + StringBuilder stringbuilder = new StringBuilder(10); + stringbuilder.append(Utils.getMonth(ServerConnection.sCal.get(2), false)); + stringbuilder.append("-"); + stringbuilder.append(ServerConnection.sCal.get(1)); + if (Utils.isBitSet(IRCService.sPreferences., IRCService.PREFS_LOGS_MODE_YEAR_MONTH_DAY)) + { + stringbuilder.append(File.separator).append(Utils.addPadding(ServerConnection.sCal.get(5))); + } + return stringbuilder; + } + + public void close() + { + this; + JVM INSTR monitorenter ; + BufferedWriter bufferedwriter = mWriter; + if (bufferedwriter != null) goto _L2; else goto _L1 +_L1: + this; + JVM INSTR monitorexit ; + return; +_L2: + Exception exception; + try + { + mWriter.close(); + continue; /* Loop/switch isn't completed */ + } + catch (IOException ioexception) { } + finally + { + this; + } + Log.e("AndChat::Logs", (new StringBuilder("Couldn't close writer for ")).append(mChan).toString()); + if (true) goto _L1; else goto _L3 +_L3: + throw exception; + } + + public void log(char ac[], boolean flag) + { + this; + JVM INSTR monitorenter ; + Object obj = mWriter; + if (obj == null) goto _L2; else goto _L1 +_L1: + int j = ac.length; + int i = 0; +_L10: + if (i < j) goto _L4; else goto _L3 +_L3: + if (!flag) goto _L2; else goto _L5 +_L5: + flush(((BufferedWriter) (obj))); +_L2: + this; + JVM INSTR monitorexit ; + return; +_L4: + char c; + c = ac[i]; + if (c != '\uFFFF') + { + break MISSING_BLOCK_LABEL_128; + } + if (ac[i - 1] == '\n') goto _L7; else goto _L6 +_L6: + ((BufferedWriter) (obj)).write(10); +_L7: + if (!flag) goto _L2; else goto _L8 +_L8: + flush(((BufferedWriter) (obj))); + goto _L2 + obj; + Log.e("AndChat::Logs", (new StringBuilder(String.valueOf(mChan))).append(": couldn't write message to log. Message was ").append(new String(ac)).toString(), ((Throwable) (obj))); + goto _L2 + ac; + throw ac; + ((BufferedWriter) (obj)).write(c); + if (i != j - 1 || ac[j - 1] == '\n') + { + break MISSING_BLOCK_LABEL_160; + } + ((BufferedWriter) (obj)).write(10); + i++; + if (true) goto _L10; else goto _L9 +_L9: + } + + public String toString() + { + return super.toString(); + } + + public (String s) + { + Object obj; + File file1; + this$1 = this._cls1.this; + super(); + mChan = s; + File file = new File(Environment.getExternalStorageDirectory(), (new StringBuilder(File.separator)).append("net.andchat.donate").append(File.separator).append(_mth0(_cls0.this).pLabel).append(File.separator).append(getFolderName()).toString()); + if (!file.exists() || !file.isDirectory()) + { + file.mkdirs(); + } + file1 = new File(file, (new StringBuilder(String.valueOf(s))).append(".txt").toString()); + obj = null; + String s2 = _mth0(_cls0.this).pOptions.getCharset(); + String s1 = s2; + try + { + if (TextUtils.isEmpty(s2)) + { + s1 = ServerConnection.access$2(_mth0(_cls0.this)).prefs.getString(ServerConnection.access$2(_mth0(_cls0.this)).getString(0x7f0a000f), "UTF-8"); + } + = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file1, true), s1), 512); + } + // Misplaced declaration of an exception variable + catch ( ) + { + Log.e("AndChat::Logs", (new StringBuilder("Couldn't create log file for ")).append(s).toString()); + = obj; + } + mWriter = mWriter.this; + return; + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/ServerConnection$LogManager.java b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$LogManager.java new file mode 100644 index 0000000..7fc8532 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$LogManager.java @@ -0,0 +1,366 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import android.content.SharedPreferences; +import android.os.Environment; +import android.text.TextUtils; +import android.util.Log; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; +import net.andchat.donate.Misc.ServerProfile; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Backend: +// ServerConnection, IRCService + +class FIND +{ + private final class Logger + { + + final String mChan; + final BufferedWriter mWriter; + final ServerConnection.LogManager this$1; + + private void flush(BufferedWriter bufferedwriter) + { + try + { + bufferedwriter.flush(); + return; + } + // Misplaced declaration of an exception variable + catch (BufferedWriter bufferedwriter) + { + Log.e("AndChat::Logs", "Error while force flushing buffer", bufferedwriter); + } + } + + private StringBuilder getFolderName() + { + StringBuilder stringbuilder = new StringBuilder(10); + stringbuilder.append(Utils.getMonth(ServerConnection.sCal.get(2), false)); + stringbuilder.append("-"); + stringbuilder.append(ServerConnection.sCal.get(1)); + if (Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREFS_LOGS_MODE_YEAR_MONTH_DAY)) + { + stringbuilder.append(File.separator).append(Utils.addPadding(ServerConnection.sCal.get(5))); + } + return stringbuilder; + } + + public void close() + { + this; + JVM INSTR monitorenter ; + BufferedWriter bufferedwriter = mWriter; + if (bufferedwriter != null) goto _L2; else goto _L1 +_L1: + this; + JVM INSTR monitorexit ; + return; +_L2: + Exception exception; + try + { + mWriter.close(); + continue; /* Loop/switch isn't completed */ + } + catch (IOException ioexception) { } + finally + { + this; + } + Log.e("AndChat::Logs", (new StringBuilder("Couldn't close writer for ")).append(mChan).toString()); + if (true) goto _L1; else goto _L3 +_L3: + throw exception; + } + + public void log(char ac[], boolean flag) + { + this; + JVM INSTR monitorenter ; + Object obj = mWriter; + if (obj == null) goto _L2; else goto _L1 +_L1: + int j = ac.length; + int i = 0; +_L10: + if (i < j) goto _L4; else goto _L3 +_L3: + if (!flag) goto _L2; else goto _L5 +_L5: + flush(((BufferedWriter) (obj))); +_L2: + this; + JVM INSTR monitorexit ; + return; +_L4: + char c; + c = ac[i]; + if (c != '\uFFFF') + { + break MISSING_BLOCK_LABEL_128; + } + if (ac[i - 1] == '\n') goto _L7; else goto _L6 +_L6: + ((BufferedWriter) (obj)).write(10); +_L7: + if (!flag) goto _L2; else goto _L8 +_L8: + flush(((BufferedWriter) (obj))); + goto _L2 + obj; + Log.e("AndChat::Logs", (new StringBuilder(String.valueOf(mChan))).append(": couldn't write message to log. Message was ").append(new String(ac)).toString(), ((Throwable) (obj))); + goto _L2 + ac; + throw ac; + ((BufferedWriter) (obj)).write(c); + if (i != j - 1 || ac[j - 1] == '\n') + { + break MISSING_BLOCK_LABEL_160; + } + ((BufferedWriter) (obj)).write(10); + i++; + if (true) goto _L10; else goto _L9 +_L9: + } + + public String toString() + { + return super.toString(); + } + + public Logger(String s) + { + Object obj; + File file1; + this$1 = ServerConnection.LogManager.this; + super(); + mChan = s; + File file = new File(Environment.getExternalStorageDirectory(), (new StringBuilder(File.separator)).append("net.andchat.donate").append(File.separator).append(pLabel).append(File.separator).append(getFolderName()).toString()); + if (!file.exists() || !file.isDirectory()) + { + file.mkdirs(); + } + file1 = new File(file, (new StringBuilder(String.valueOf(s))).append(".txt").toString()); + obj = null; + String s2 = pOptions.getCharset(); + String s1 = s2; + try + { + if (TextUtils.isEmpty(s2)) + { + s1 = ServerConnection.access$2(this$0).prefs.getString(ServerConnection.access$2(this$0).getString(0x7f0a000f), "UTF-8"); + } + logmanager = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file1, true), s1), 512); + } + // Misplaced declaration of an exception variable + catch (ServerConnection.LogManager logmanager) + { + Log.e("AndChat::Logs", (new StringBuilder("Couldn't create log file for ")).append(s).toString()); + logmanager = obj; + } + mWriter = ServerConnection.LogManager.this; + return; + } + } + + + private final char FIND[]; + private final List mLoggers = new ArrayList(); + final ServerConnection this$0; + + private Logger find(String s) + { + String s1 = sanitizeChan(s); + s = mLoggers; + s; + JVM INSTR monitorenter ; + List list; + int i; + list = mLoggers; + i = list.size() - 1; +_L2: + if (i >= 0) + { + break MISSING_BLOCK_LABEL_37; + } + s; + JVM INSTR monitorexit ; + return null; + Logger logger = (Logger)list.get(i); + int j; + j = i; + if (logger != null) + { + break MISSING_BLOCK_LABEL_74; + } + list.remove(i); + j = i - 1; + if (!logger.mChan.equalsIgnoreCase(s1)) + { + break MISSING_BLOCK_LABEL_96; + } + s; + JVM INSTR monitorexit ; + return logger; + Exception exception; + exception; + s; + JVM INSTR monitorexit ; + throw exception; + i = j - 1; + if (true) goto _L2; else goto _L1 +_L1: + } + + private Logger newLogger(String s) + { + Logger logger; + if (s.length() == 0) + { + s = "Status"; + } else + { + s = sanitizeChan(s); + } + logger = new Logger(s); + synchronized (mLoggers) + { + mLoggers.add(logger); + StringBuilder stringbuilder = new StringBuilder(); + stringbuilder.append(ServerConnection.access$0(ServerConnection.this, 0x7f0a0049, new Object[] { + ServerConnection.format(System.currentTimeMillis()) + })); + logger.log(stringbuilder.toString().toCharArray(), false); + } + return logger; + exception; + s; + JVM INSTR monitorexit ; + throw exception; + } + + private String sanitizeChan(String s) + { + int j = FIND.length; + int i = 0; + do + { + if (i >= j) + { + return s; + } + s = s.replace(FIND[i], '_'); + i++; + } while (true); + } + + public void close(String s) + { + s = find(sanitizeChan(s)); + if (s != null) + { + s.close(); + mLoggers.remove(s); + } + } + + public void closeAll() + { + List list = mLoggers; + list; + JVM INSTR monitorenter ; + List list1; + int i; + list1 = mLoggers; + i = list1.size() - 1; +_L2: + if (i >= 0) + { + break MISSING_BLOCK_LABEL_34; + } + list1.clear(); + list; + JVM INSTR monitorexit ; + return; + ((Logger)list1.get(i)).close(); + i--; + if (true) goto _L2; else goto _L1 +_L1: + Exception exception; + exception; + list; + JVM INSTR monitorexit ; + throw exception; + } + + public void log(String s, char ac[], boolean flag) + { + s = s.trim(); + Logger logger; + Logger logger1; + if (s.length() == 0 || s.charAt(0) == '$') + { + s = "Status"; + } else + { + s = sanitizeChan(s); + } + logger1 = find(s); + logger = logger1; + if (logger1 == null) + { + logger = newLogger(s); + } + logger.log(ac, flag); + } + + public void logAll(char ac[]) + { + List list = mLoggers; + list; + JVM INSTR monitorenter ; + List list1; + int i; + list1 = mLoggers; + i = list1.size() - 1; +_L2: + if (i >= 0) + { + break MISSING_BLOCK_LABEL_30; + } + list; + JVM INSTR monitorexit ; + return; + ((Logger)list1.get(i)).log(ac, false); + i--; + if (true) goto _L2; else goto _L1 +_L1: + ac; + list; + JVM INSTR monitorexit ; + throw ac; + } + + + public Logger.mWriter() + { + this$0 = ServerConnection.this; + super(); + FIND = (new char[] { + ':', File.separatorChar + }); + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/ServerConnection$ParserImpl$1.java b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$ParserImpl$1.java new file mode 100644 index 0000000..f822b97 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$ParserImpl$1.java @@ -0,0 +1,31 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import net.andchat.donate.Backend.Sessions.SessionManager; + +// Referenced classes of package net.andchat.donate.Backend: +// ServerConnection + +class val.names extends Thread +{ + + final val.names this$1; + private final String val$channel; + private final String val$names; + + public void run() + { + cess._mth1(this._cls1.this).pSessionManager.addNewNames(cess._mth1(this._cls1.this).pNick, val$channel, val$names); + } + + () + { + this$1 = final_; + val$channel = s; + val$names = String.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/ServerConnection$ParserImpl$2.java b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$ParserImpl$2.java new file mode 100644 index 0000000..910f933 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$ParserImpl$2.java @@ -0,0 +1,51 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + + +// Referenced classes of package net.andchat.donate.Backend: +// ServerConnection + +class val.chan extends Thread +{ + + final val.chan this$1; + private final String val$chan; + private final String val$key; + + public void run() + { + StringBuilder stringbuilder; + try + { + Thread.sleep(5000L); + } + catch (InterruptedException interruptedexception) { } + try + { + stringbuilder = new StringBuilder(); + if (val$key != null) + { + stringbuilder.append("JOIN ").append(val$chan).append(" ").append(val$key).append("\r\n"); + ServerConnection.access$5(cess._mth1(this._cls1.this), stringbuilder.toString()); + return; + } + } + catch (Exception exception) + { + return; + } + ServerConnection.access$5(cess._mth1(this._cls1.this), stringbuilder.append("JOIN ").append(val$chan).append("\r\n").toString()); + return; + } + + () + { + this$1 = final_; + val$key = s; + val$chan = String.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/ServerConnection$ParserImpl$3.java b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$ParserImpl$3.java new file mode 100644 index 0000000..eae51d0 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$ParserImpl$3.java @@ -0,0 +1,92 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.Misc.Colours; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Backend: +// ServerConnection + +class val.chan extends Thread +{ + + final val.chan this$1; + private final String val$chan; + + public void run() + { + this; + JVM INSTR monitorenter ; + Exception exception; + try + { + wait(500L); + } + catch (InterruptedException interruptedexception) { } + this; + JVM INSTR monitorexit ; + boolean flag = ServerConnection.access$8(); + net.andchat.donate.Backend.Sessions. = cess._mth1(this._cls1.this).pSessionManager.getUserCount(val$chan); + StringBuilder stringbuilder = new StringBuilder(100); + stringbuilder.append(ServerConnection.access$0(cess._mth1(this._cls1.this), 0x7f0a0071, new Object[] { + Integer.valueOf(.) + })); + if (. > 0) + { + stringbuilder.append(ServerConnection.access$0(cess._mth1(this._cls1.this), 0x7f0a0072, new Object[] { + Integer.valueOf(.) + })); + } + if (. > 0) + { + stringbuilder.append(ServerConnection.access$0(cess._mth1(this._cls1.this), 0x7f0a0073, new Object[] { + Integer.valueOf(.) + })); + } + if (. > 0) + { + stringbuilder.append(ServerConnection.access$0(cess._mth1(this._cls1.this), 0x7f0a0074, new Object[] { + Integer.valueOf(.) + })); + } + if (. > 0) + { + stringbuilder.append(ServerConnection.access$0(cess._mth1(this._cls1.this), 0x7f0a0075, new Object[] { + Integer.valueOf(.) + })); + } + if (. > 0) + { + stringbuilder.append(ServerConnection.access$0(cess._mth1(this._cls1.this), 0x7f0a0076, new Object[] { + Integer.valueOf(.) + })); + } + stringbuilder.append(ServerConnection.access$0(cess._mth1(this._cls1.this), 0x7f0a0077, new Object[] { + Integer.valueOf(.) + })); + int i = stringbuilder.length(); + if (. > 0) + { + int j = ServerConnection.access$1(cess._mth1(this._cls1.this)).getColourForEvent(0x7f0b0028); + android.text.SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.access$8(), stringbuilder); + Utils.addColour(flag, spannablestringbuilder, j, 0, i); + cess._mth1(this._cls1.this).sendMessage(val$chan, spannablestringbuilder, 1); + } + return; + exception; + this; + JVM INSTR monitorexit ; + throw exception; + } + + () + { + this$1 = final_; + val$chan = String.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/ServerConnection$ParserImpl.java b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$ParserImpl.java new file mode 100644 index 0000000..3c81b81 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$ParserImpl.java @@ -0,0 +1,1730 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import android.app.KeyguardManager; +import android.text.SpannableString; +import android.text.SpannableStringBuilder; +import android.text.TextUtils; +import android.util.Log; +import java.io.UnsupportedEncodingException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.Misc.Base64; +import net.andchat.donate.Misc.Colours; +import net.andchat.donate.Misc.CommandParser; +import net.andchat.donate.Misc.ServerProfile; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Backend: +// Parser, ServerConnection, IRCService, MessageSender, +// Ignores + +private class extends Parser +{ + + private int m433Count; + final StringBuilder reusableSB; + final ServerConnection this$0; + + private void sendCount(final String chan) + { + (new Thread() { + + final ServerConnection.ParserImpl this$1; + private final String val$chan; + + public void run() + { + this; + JVM INSTR monitorenter ; + Exception exception; + try + { + wait(500L); + } + catch (InterruptedException interruptedexception) { } + this; + JVM INSTR monitorexit ; + boolean flag = ServerConnection.access$8(); + net.andchat.donate.Backend.Sessions.Session.UserCount usercount = pSessionManager.getUserCount(chan); + StringBuilder stringbuilder = new StringBuilder(100); + stringbuilder.append(ServerConnection.access$0(this$0, 0x7f0a0071, new Object[] { + Integer.valueOf(usercount.total) + })); + if (usercount.owner > 0) + { + stringbuilder.append(ServerConnection.access$0(this$0, 0x7f0a0072, new Object[] { + Integer.valueOf(usercount.owner) + })); + } + if (usercount.admin > 0) + { + stringbuilder.append(ServerConnection.access$0(this$0, 0x7f0a0073, new Object[] { + Integer.valueOf(usercount.admin) + })); + } + if (usercount.op > 0) + { + stringbuilder.append(ServerConnection.access$0(this$0, 0x7f0a0074, new Object[] { + Integer.valueOf(usercount.op) + })); + } + if (usercount.hop > 0) + { + stringbuilder.append(ServerConnection.access$0(this$0, 0x7f0a0075, new Object[] { + Integer.valueOf(usercount.hop) + })); + } + if (usercount.voice > 0) + { + stringbuilder.append(ServerConnection.access$0(this$0, 0x7f0a0076, new Object[] { + Integer.valueOf(usercount.voice) + })); + } + stringbuilder.append(ServerConnection.access$0(this$0, 0x7f0a0077, new Object[] { + Integer.valueOf(usercount.normal) + })); + int i = stringbuilder.length(); + if (usercount.total > 0) + { + int j = ServerConnection.access$1(this$0).getColourForEvent(0x7f0b0028); + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.access$8(), stringbuilder); + Utils.addColour(flag, spannablestringbuilder, j, 0, i); + sendMessage(chan, spannablestringbuilder, 1); + } + return; + exception; + this; + JVM INSTR monitorexit ; + throw exception; + } + + + { + this$1 = ServerConnection.ParserImpl.this; + chan = s; + super(); + } + }).start(); + } + + private boolean shouldNotify() + { + return ((KeyguardManager)ServerConnection.access$2(ServerConnection.this).getSystemService("keyguard")).inKeyguardRestrictedInputMode() || !mMessageSender.haveUi() || !ServerConnection.access$2(ServerConnection.this).screenOn; + } + + public boolean isChannelPrefix(char c) + { + return Utils.isChannelPrefix(c); + } + + public boolean isStatusPrefix(char c) + { + net.andchat.donate.Backend.Sessions.n n = pSessionManager.getStatusMap(); + if (n == null) + { + return false; + } else + { + return Utils.isStatusPrefix(n, c); + } + } + + public void on001(String s) + { + int i; + if (pNick != null) + { + pSessionManager.updateNick(pNick, s, pSessionManager.getSessionList()); + } + pNick = s; + sendFlaggedMessage(3, s); + buildHilightRegexp(Utils.escape(s)); + boolean flag2 = Utils.isBitSet(pOptions.getAuthModes(), net.andchat.donate.Misc.Modes.MODE_NICKSERV); + String s1 = pOptions.getAutojoinList(); + StringBuilder stringbuilder = new StringBuilder(); + if (flag2) + { + i = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b002c); + Object obj = ServerConnection.access$9(ServerConnection.this, 0x7f0a0053); + sendMessage("Status", Utils.addColour(ServerConnection.access$8(), Utils.createMessage(ServerConnection.access$8(), ((CharSequence) (obj))), i, 0, ((String) (obj)).length()), 1); + obj = pOptions.getNickservPassword(); + stringbuilder.append("PRIVMSG NickServ :identify "); + stringbuilder.append(((String) (obj))).append("\r\n"); + ServerConnection.access$5(ServerConnection.this, stringbuilder.toString()); + stringbuilder.setLength(0); + Object obj1; + Object obj2; + Pattern pattern; + String as[]; + int j; + boolean flag1; + int k; + int l; + try + { + Thread.sleep(1000L); + } + catch (InterruptedException interruptedexception) { } + } + obj2 = pOptions.getAutorunList(); + if (obj2 != null && ((String) (obj2)).length() > 1) + { + flag1 = true; + } else + { + flag1 = false; + } + if (!flag1) goto _L2; else goto _L1 +_L1: + pattern = Pattern.compile("\\$nick"); + l = "sleep ".length(); + if (((String) (obj2)).indexOf("\n") == -1) goto _L4; else goto _L3 +_L3: + as = ((String) (obj2)).split("\n"); + j = as.length; + i = 0; +_L12: + if (i < j) goto _L5; else goto _L2 +_L2: + if (s1 != null && s1.length() > 0) + { + i = 1; + } else + { + i = 0; + } + if (flag1 && i != 0) + { + try + { + Thread.sleep(1000L); + } + // Misplaced declaration of an exception variable + catch (String s) { } + } + if (i != 0) + { + stringbuilder.setLength(0); + stringbuilder.append("/j ").append(s1); + CommandParser.handleCommand(stringbuilder.toString(), ServerConnection.this); + } + if (!checkFlagActive(4)) goto _L7; else goto _L6 +_L6: + removeServerConnectionFlag(4); + s = pSessionManager.getSessionList(); + j = s.length; + if (j <= 0) goto _L7; else goto _L8 +_L8: + if (i != 0 || flag1) + { + try + { + Thread.sleep(250L); + } + catch (InterruptedException interruptedexception1) { } + } + stringbuilder.setLength(0); + stringbuilder.append("JOIN "); + i = j - 1; + if (i >= 0) goto _L9; else goto _L7 +_L7: + return; +_L5: + obj2 = as[i]; + if (!TextUtils.isEmpty(((CharSequence) (obj2)))) goto _L11; else goto _L10 +_L10: + i++; + goto _L12 +_L11: + if (!((String) (obj2)).startsWith("sleep ")) + { + break MISSING_BLOCK_LABEL_528; + } + k = Utils.parseInt(((String) (obj2)).substring(l), -1); +label0: + { + if (k != -1) + { + break label0; + } + StringIndexOutOfBoundsException stringindexoutofboundsexception; + boolean flag; + try + { + Log.w("ServerConnection", "sleep value not an int, skipping"); + } + catch (InterruptedException interruptedexception2) { } + // Misplaced declaration of an exception variable + catch (Object obj1) { } + } + goto _L10 + Thread.sleep(k); + goto _L10 + obj1 = obj2; + if (((String) (obj2)).charAt(0) != '/') + { + obj1 = stringbuilder.append("/").append(((String) (obj2))).toString(); + } + obj2 = pattern.matcher(((CharSequence) (obj1))); + if (((Matcher) (obj2)).find()) + { + obj1 = ((Matcher) (obj2)).replaceAll(s); + } + CommandParser.handleCommand(((String) (obj1)), ServerConnection.this); + stringbuilder.setLength(0); + goto _L10 +_L4: + k = 1; + flag = true; + i = 1; + if (!((String) (obj2)).startsWith("sleep ")) goto _L14; else goto _L13 +_L13: + i = k; + l = Utils.parseInt(((String) (obj2)).substring(l), -1); + i = 0; + flag = false; + k = 0; + if (l == -1) goto _L16; else goto _L15 +_L15: + Thread.sleep(l); + i = k; +_L14: + if (i != 0) + { + obj1 = obj2; + if (((String) (obj2)).charAt(0) != '/') + { + obj1 = stringbuilder.append("/").append(((String) (obj2))).toString(); + } + obj2 = pattern.matcher(((CharSequence) (obj1))); + if (((Matcher) (obj2)).find()) + { + obj1 = ((Matcher) (obj2)).replaceAll(s); + } + CommandParser.handleCommand(((String) (obj1)), ServerConnection.this); + } + goto _L2 +_L16: + Log.w("ServerConnection", "sleep value not an int, skipping"); + i = k; + goto _L14 + obj1; + goto _L14 +_L9: + obj1 = s[i]; + if (((String) (obj1)).length() != 0 && Utils.isChannelPrefix(((String) (obj1)).charAt(0))) + { + obj2 = pSessionManager.getKey(((String) (obj1))); + stringbuilder.append(((String) (obj1))); + if (obj2 != null) + { + stringbuilder.append(" ").append(((String) (obj2))); + } + ServerConnection.access$5(ServerConnection.this, stringbuilder.append("\r\n").toString()); + stringbuilder.setLength(5); + } + i--; + break MISSING_BLOCK_LABEL_441; + stringindexoutofboundsexception; + i = ((flag) ? 1 : 0); + goto _L14 + } + + public void on221(String s) + { + s = ServerConnection.access$0(ServerConnection.this, 0x7f0a0069, new Object[] { + s + }); + sendMessage(getCurrentSession().getSessionName(), Utils.createMessage(ServerConnection.access$8(), s), 1); + } + + public void on324(String s, String s1) + { + boolean flag = ServerConnection.access$8(); + if (pSessionManager.haveSessionFor(s)) + { + pSessionManager.getMetadata(s).r = s1; + } + String s2 = ServerConnection.access$0(ServerConnection.this, 0x7f0a006e, new Object[] { + s1 + }); + int i = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0017); + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.access$8(), s2); + Utils.addColour(flag, spannablestringbuilder, i, 0, s2.length()); + pSessionManager.checkForModes(s, s1, pNick); + sendMessage(s, spannablestringbuilder, 1); + } + + public void on329(String s, long l) + { + boolean flag = ServerConnection.access$8(); + if (pSessionManager.haveSessionFor(s)) + { + pSessionManager.getMetadata(s).e = l; + } + String s1 = ServerConnection.access$0(ServerConnection.this, 0x7f0a006d, new Object[] { + ServerConnection.format(l) + }); + int i = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0018); + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.access$8(), s1); + Utils.addColour(flag, spannablestringbuilder, i, 0, s1.length()); + sendMessage(s, spannablestringbuilder, 1); + } + + public void on332(String s, String s1, boolean flag) + { + boolean flag1 = ServerConnection.access$8(); + String s2; + SpannableStringBuilder spannablestringbuilder; + int i; + if (flag) + { + s2 = ServerConnection.access$0(ServerConnection.this, 0x7f0a006b, new Object[] { + s, s1 + }); + } else + { + s2 = ServerConnection.access$0(ServerConnection.this, 0x7f0a006a, new Object[] { + s + }); + } + i = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0016); + spannablestringbuilder = Utils.createMessage(ServerConnection.access$8(), s2); + Utils.addColour(flag1, spannablestringbuilder, i, 0, s2.length()); + if (flag && s1.length() >= 4) + { + Utils.addLinks(spannablestringbuilder); + } + sendMessage(s, spannablestringbuilder, 1); + } + + public void on333(String s, String s1, long l) + { + boolean flag = ServerConnection.access$8(); + s1 = ServerConnection.access$0(ServerConnection.this, 0x7f0a006c, new Object[] { + s1, ServerConnection.format(l) + }); + int i = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0016); + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.access$8(), s1); + Utils.addColour(flag, spannablestringbuilder, i, 0, s1.length()); + sendMessage(s, spannablestringbuilder, 1); + } + + public void on433() + { + Object obj; + String s; + s = ""; + obj = null; + m433Count; + JVM INSTR tableswitch 0 2: default 36 + // 0 107 + // 1 151 + // 2 195; + goto _L1 _L2 _L3 _L4 +_L1: + sendMessage("Status", Utils.createMessage(ServerConnection.access$8(), ((CharSequence) (obj))), 1); + if (s.length() > 0) + { + ServerConnection.access$5(ServerConnection.this, (new StringBuilder("NICK ")).append(s).append("\r\n").toString()); + pNick = s; + sendFlaggedMessage(3, s); + } + return; +_L2: + s = pOptions.getNick(2); + obj = ServerConnection.access$0(ServerConnection.this, 0x7f0a006f, new Object[] { + s + }); + m433Count = m433Count + 1; + continue; /* Loop/switch isn't completed */ +_L3: + s = pOptions.getNick(3); + obj = ServerConnection.access$0(ServerConnection.this, 0x7f0a006f, new Object[] { + s + }); + m433Count = m433Count + 1; + continue; /* Loop/switch isn't completed */ +_L4: + obj = ServerConnection.access$9(ServerConnection.this, 0x7f0a0070); + if (true) goto _L1; else goto _L5 +_L5: + } + + public void onChannelPrivmsg(String s, String s1, String s2, String s3, String s4, int i) + { + StringBuilder stringbuilder; + boolean flag; + int k; + int l; + boolean flag1; + k = 0; + flag = false; + l = s1.length(); + flag1 = ServerConnection.access$8(); + stringbuilder = reusableSB; + stringbuilder.setLength(0); + i; + JVM INSTR tableswitch 0 2: default 56 + // 0 446 + // 1 57 + // 2 692; + goto _L1 _L2 _L3 _L4 +_L1: + return; +_L3: + boolean flag2; + flag2 = Utils.isBitSet(IRCService.sPreferences.Options, IRCService.PREF_DEBUG_SHOW_IGNORED); + i = 0; + if (!ServerConnection.access$10(ServerConnection.this).shouldIgnore(s2, s3, 1)) + { + break; /* Loop/switch isn't completed */ + } + if (!flag2) + { + continue; /* Loop/switch isn't completed */ + } + i = 1; + break; /* Loop/switch isn't completed */ + if (true) goto _L1; else goto _L5 +_L5: + s2 = pSessionManager.getNickStatus(s1, s); + int k1 = pSessionManager.getNickColor(s1, s); + stringbuilder.ensureCapacity(s1.length() + 2 + 2 + s4.length() + 1); + stringbuilder.append("<").append(s2).append(s1).append("> ").append(s4); + s3 = Utils.createMessage(ServerConnection.access$8(), stringbuilder); + k = s2.length() + l; + if (pHilightMatcher.reset(s4).find()) + { + flag = true; + Utils.addColourAndBold(flag1, s3, ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0014), 1, k + 1); + int i1 = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0013); + Utils.addColour(flag1, s3, i1, 0, 1); + Utils.addColour(flag1, s3, i1, k + 1, k + 2); + } else + { + int j1 = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0013); + Utils.addColour(flag1, s3, j1, 0, 1); + Utils.addColour(flag1, s3, j1, k + 1, k + 2); + Utils.addColour(flag1, s3, k1, 1, s2.length() + 1 + s1.length()); + } + if (s4.length() >= 4) + { + Utils.addLinks(s3); + } + if (flag && shouldNotify()) + { + makeNotif(s3.toString(), s, s, 1); + } + if (flag2 && i != 0) + { + s3.append(" [IGNORED]"); + } + s1 = ServerConnection.this; + if (flag) + { + i = 3; + } else + { + i = 2; + } + s1.sendMessage(s, s3, i); + return; +_L2: + flag2 = Utils.isBitSet(IRCService.sPreferences.Options, IRCService.PREF_DEBUG_SHOW_IGNORED); + i = 0; + if (!ServerConnection.access$10(ServerConnection.this).shouldIgnore(s2, s3, 1)) + { + break; /* Loop/switch isn't completed */ + } + if (!flag2) + { + continue; /* Loop/switch isn't completed */ + } + i = 1; + break; /* Loop/switch isn't completed */ + if (true) goto _L1; else goto _L6 +_L6: + stringbuilder.append("* ").append(s1).append(" ").append(s4); + s2 = Utils.createMessage(ServerConnection.access$8(), stringbuilder); + int j; + if (pHilightMatcher.reset(s4).find()) + { + k = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0014); + j = 1; + Utils.addColourAndBold(flag1, s2, k, 2, s1.length() + 2); + } else + { + Utils.addColour(flag1, s2, pSessionManager.getNickColor(s1, s), 2, s1.length() + 2); + j = k; + } + if (s4.length() >= 4) + { + Utils.addLinks(s2); + } + if (j != 0 && shouldNotify()) + { + makeNotif(s2.toString(), s, s, 1); + } + if (flag2 && i != 0) + { + s2.append(" [IGNORED]"); + } + s1 = ServerConnection.this; + if (j != 0) + { + i = 3; + } else + { + i = 2; + } + s1.sendMessage(s, s2, i); + return; +_L4: + s2 = s1; + if (s1 == null) + { + s2 = "*"; + } + stringbuilder.append(s2).append(" ").append(s4); + s1 = Utils.createMessage(ServerConnection.access$8(), stringbuilder); + if (s4.length() >= 4) + { + Utils.addLinks(s1); + } + sendMessage(s, s1, 2); + return; + } + + public void onCtcpRequest(String s, String s1, String s2, String s3) + { +label0: + { + boolean flag1 = Utils.isBitSet(IRCService.sPreferences.Options, IRCService.PREF_DEBUG_SHOW_IGNORED); + boolean flag = false; + if (ServerConnection.access$10(ServerConnection.this).shouldIgnore(s1, s2, 8)) + { + if (!flag1) + { + break label0; + } + flag = true; + } + boolean flag2 = ServerConnection.access$8(); + s1 = s3.toUpperCase(); + s2 = ServerConnection.access$0(ServerConnection.this, 0x7f0a0066, new Object[] { + s1, s + }); + int i = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0027); + s3 = Utils.createMessage(flag2, s2); + Utils.addColour(flag2, s3, i, 0, s2.length()); + if (flag && flag1) + { + s3.append(" [IGNORED]"); + } + sendMessage(getCurrentSession().getSessionName(), s3, 1); + if (s1.equals("VERSION")) + { + s1 = new StringBuilder(); + ServerConnection.access$5(ServerConnection.this, s1.append("NOTICE ").append(s).append(" :\001VERSION ").append("AndChat").append(" ").append("1.4.3.2").append(" http://www.andchat.net\001\r\n").toString()); + } + } + } + + public void onError(CharSequence charsequence) + { + sendMessage("Status", Utils.createMessage(ServerConnection.access$8(), charsequence), 1); + } + + public void onISupport(String s) + { + int i = s.indexOf("PREFIX="); + if (i == -1) + { + return; + } else + { + String s1 = s.substring(i + 8, s.indexOf(" ", i)); + i = s1.indexOf(')'); + s = s1.substring(0, i); + s1 = s1.substring(i + 1); + pSessionManager.buildStatusMap(s, s1); + return; + } + } + + public void onInvite(String s, String s1, String s2) + { + boolean flag = ServerConnection.access$8(); + s = ServerConnection.access$0(ServerConnection.this, 0x7f0a0057, new Object[] { + s, s1, s2 + }); + int k = s.length(); + s1 = ServerConnection.access$9(ServerConnection.this, 0x7f0a0058); + int l = s1.length(); + int i = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b001b); + s = (new StringBuilder(s)).append(s1); + s1 = Utils.createMessage(ServerConnection.access$8(), s); + Utils.addColour(flag, s1, i, 0, s.length() - l); + int j = k + 1; + i = j; + if (flag) + { + i = j + (ServerConnection.sTimeLength + 3); + } + k += l; + j = k; + if (flag) + { + j = k + (ServerConnection.sTimeLength + 3); + } + s1.setSpan(new net.andchat.donate.Misc.gth(s2), i, j, 33); + sendMessage(getCurrentSession().getSessionName(), s1, 1); + } + + public void onInviteSent(String s, String s1) + { + boolean flag = ServerConnection.access$8(); + s1 = ServerConnection.access$0(ServerConnection.this, 0x7f0a0056, new Object[] { + s1, s + }); + int i = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b001c); + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.access$8(), s1); + Utils.addColour(flag, spannablestringbuilder, i, 0, s1.length()); + sendMessage(s, spannablestringbuilder, 1); + } + + public void onKill(String s, String s1, String s2, String s3) + { + if (s.equals(pNick)) + { + boolean flag = ServerConnection.access$8(); + s = ServerConnection.access$0(ServerConnection.this, 0x7f0a0067, new Object[] { + s1, s3 + }); + int i = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b002b); + s1 = Utils.createMessage(flag, s); + Utils.addColour(flag, s1, i, 0, s.length()); + sendToAll(s1, 1); + deactivateAllAndUpdateUi(false); + return; + } else + { + onUserQuit(s, null, ServerConnection.access$0(ServerConnection.this, 0x7f0a0068, new Object[] { + s1, s3 + })); + return; + } + } + + public void onMessageReceived(String s) + { + if (Utils.isBitSet(IRCService.sPreferences.Options, IRCService.PREF_DEBUG_LOG_ALL_MESSAGES)) + { + ServerConnection.access$11(ServerConnection.this, "_DEBUG_", s, true); + } + } + + public void onModeChanged(String s, String s1, String s2) + { + if (s2 == null) + { + s2 = ServerConnection.access$0(ServerConnection.this, 0x7f0a005a, new Object[] { + s1, s + }); + sendMessage("Status", Utils.createMessage(ServerConnection.access$8(), s2), 1); + } else + { + boolean flag = ServerConnection.access$8(); + s2 = ServerConnection.access$0(ServerConnection.this, 0x7f0a005b, new Object[] { + s1, s2 + }); + int i = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b001d); + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.access$8(), s2); + Utils.addColour(flag, spannablestringbuilder, i, 0, s2.length()); + sendMessage(s, spannablestringbuilder, 1); + } + pSessionManager.checkForModes(s, s1, pNick); + } + + public void onMotdEnd(String s) + { + if (!Utils.isBitSet(IRCService.sPreferences.Options, IRCService.PREFS_SKIP_MOTD) || checkFlagActive(2)) + { + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.access$8(), s); + if (s.length() >= 4) + { + Utils.addLinks(spannablestringbuilder); + } + sendMessage("Status", spannablestringbuilder, 1); + (new Thread(removeMotdFlag)).start(); + } + } + + public void onMotdLine(String s) + { + if (!Utils.isBitSet(IRCService.sPreferences.Options, IRCService.PREFS_SKIP_MOTD) || checkFlagActive(2)) + { + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.access$8(), s); + if (s.length() >= 4) + { + Utils.addLinks(spannablestringbuilder); + } + sendMessage("Status", spannablestringbuilder, 1); + } + } + + public void onMotdStart(String s) + { + if (!Utils.isBitSet(IRCService.sPreferences.Options, IRCService.PREFS_SKIP_MOTD) || checkFlagActive(2)) + { + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.access$8(), s); + if (s.length() >= 4) + { + Utils.addLinks(spannablestringbuilder); + } + sendMessage("Status", spannablestringbuilder, 1); + return; + } else + { + boolean flag = ServerConnection.access$8(); + int i = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b002c); + s = ServerConnection.access$9(ServerConnection.this, 0x7f0a004f); + SpannableStringBuilder spannablestringbuilder1 = Utils.createMessage(ServerConnection.access$8(), s); + Utils.addColour(flag, spannablestringbuilder1, i, 0, s.length()); + sendMessage("Status", spannablestringbuilder1, 1); + return; + } + } + + public void onNamesList(final String channel, final String names) + { + if (!checkFlagActive(1) && pSessionManager.haveSessionFor(channel)) + { + (new Thread() { + + final ServerConnection.ParserImpl this$1; + private final String val$channel; + private final String val$names; + + public void run() + { + pSessionManager.addNewNames(pNick, channel, names); + } + + + { + this$1 = ServerConnection.ParserImpl.this; + channel = s; + names = s1; + super(); + } + }).start(); + return; + } + Object obj = new StringBuilder(ServerConnection.access$0(ServerConnection.this, 0x7f0a0059, new Object[] { + channel + })); + if (names.length() > 0) + { + ((StringBuilder) (obj)).append(" ").append(names); + } + names = Utils.createMessage(ServerConnection.access$8(), ((CharSequence) (obj))); + obj = ServerConnection.this; + if (!pSessionManager.haveSessionFor(channel)) + { + channel = "Status"; + } + ((ServerConnection) (obj)).sendMessage(channel, names, 1); + } + + public void onNetworkName(String s) + { + } + + public void onNickChanged(String s, String s1, String s2, String s3) + { + boolean flag = s.equals(pNick); + if (flag) + { + pNick = s1; + buildHilightRegexp(Utils.escape(s1)); + sendFlaggedMessage(3, s1); + } + ServerConnection.access$10(ServerConnection.this).nickChanged(s, s1, s2, s3); + s3 = pSessionManager.getUserSessions(s); + SpannableStringBuilder spannablestringbuilder; + int i; + boolean flag1; + if (flag) + { + s2 = ServerConnection.access$0(ServerConnection.this, 0x7f0a0064, new Object[] { + s1 + }); + } else + { + s2 = ServerConnection.access$0(ServerConnection.this, 0x7f0a0065, new Object[] { + s, s1 + }); + } + flag1 = ServerConnection.access$8(); + spannablestringbuilder = Utils.createMessage(flag1, s2); + if (flag) + { + i = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0025); + } else + { + i = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0026); + } + Utils.addColour(flag1, spannablestringbuilder, i, 0, s2.length()); + i = s3.length - 1; + do + { + if (i < 0) + { + pSessionManager.updateNick(s, s1, s3); + if (flag) + { + sendMessage("Status", spannablestringbuilder, 1); + } + if (pSessionManager.updateSessionName(s, s1)) + { + sendFlaggedMessage(6, null); + } + if (!Utils.isChannelPrefix(s.charAt(0)) && pSessionManager.haveSessionFor(s1)) + { + s = Utils.createMessage(ServerConnection.access$8(), s2); + Utils.addColour(flag1, s, ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0026), 0, s2.length()); + sendMessage(s1, s, 1); + } + return; + } + String s4 = s3[i]; + sendMessage(s4, new SpannableString(spannablestringbuilder), 1); + i--; + } while (true); + } + + public void onNotice(String s, String s1, String s2, String s3, String s4, String s5) + { + if (s1 != null) goto _L2; else goto _L1 +_L1: + s1 = null; + s = s1; + if (s5 != null) + { + s = s1; + if (Utils.isChannelPrefix(s5.charAt(0))) + { + s = s5; + } + } + s2 = ServerConnection.this; + s1 = s; + if (s == null) + { + s1 = "Status"; + } + s2.sendMessage(s1, Utils.createMessage(ServerConnection.access$8(), s4), 1); +_L4: + return; +_L2: + boolean flag; + boolean flag1; + if ((s == null || s != null && s.equals(pNick)) && s5 == null) + { + flag1 = Utils.isBitSet(IRCService.sPreferences.Options, IRCService.PREF_DEBUG_SHOW_IGNORED); + flag = false; + if (!ServerConnection.access$10(ServerConnection.this).shouldIgnore(s2, s3, 4)) + { + break; /* Loop/switch isn't completed */ + } + if (!flag1) + { + continue; /* Loop/switch isn't completed */ + } + flag = true; + break; /* Loop/switch isn't completed */ + } + break MISSING_BLOCK_LABEL_318; + if (true) goto _L4; else goto _L3 +_L3: + int j = s4.length(); + int i = s1.length(); + boolean flag2 = ServerConnection.access$8(); + s = new StringBuilder(j + 5 + i); + s.append("-").append(s1).append("-: ").append(s4); + j = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0019); + s = Utils.createMessage(ServerConnection.access$8(), s); + Utils.addColour(flag2, s, j, 0, 1); + Utils.addColour(flag2, s, j, i + 1, i + 4); + if (s4.length() >= 4) + { + Utils.addLinks(s); + } + if (shouldNotify()) + { + makeNotif(s.toString(), s1, getCurrentSession().getSessionName(), 16); + } + if (flag && flag1) + { + s.append(" [IGNORED]"); + } + sendMessage(getCurrentSession().getSessionName(), s, 2); + return; + flag1 = Utils.isBitSet(IRCService.sPreferences.Options, IRCService.PREF_DEBUG_SHOW_IGNORED); + flag = false; + if (!ServerConnection.access$10(ServerConnection.this).shouldIgnore(s2, s3, 4)) + { + break; /* Loop/switch isn't completed */ + } + if (!flag1) + { + continue; /* Loop/switch isn't completed */ + } + flag = true; + break; /* Loop/switch isn't completed */ + if (true) goto _L4; else goto _L5 +_L5: + boolean flag3 = ServerConnection.access$8(); + int j1 = s4.length(); + int l = s1.length(); + int i1 = s.length(); + byte byte0; + int k; + if (s5 != null) + { + byte0 = 1; + } else + { + byte0 = 0; + } + if (byte0 != 0) + { + k = s5.length(); + } else + { + k = 0; + } + s2 = new StringBuilder(k + (l + 5 + i1 + j1)); + s2.append("-").append(s1).append("/"); + if (byte0 != 0) + { + s2.append(s5); + } + s2.append(s).append("-: ").append(s4); + k = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b001a); + s3 = Utils.createMessage(ServerConnection.access$8(), s2); + Utils.addColour(flag3, s3, k, 1, s2.length() - j1 - 3); + j1 = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0019); + Utils.addColour(flag3, s3, j1, 0, 1); + if (byte0 != 0) + { + k = 3; + } else + { + k = 2; + } + k = l + i1 + k; + if (byte0 != 0) + { + byte0 = 3; + } else + { + byte0 = 2; + } + Utils.addColour(flag3, s3, j1, k, k + byte0); + if (s4.length() >= 4) + { + Utils.addLinks(s3); + } + if (shouldNotify()) + { + makeNotif(s3.toString(), s1, s, 4); + } + if (flag && flag1) + { + s3.append(" [IGNORED]"); + } + sendMessage(s, s3, 2); + return; + } + + public void onNumericMessage(String s, CharSequence charsequence, int i) + { + boolean flag1; + boolean flag2; + flag1 = false; + flag2 = false; + i; + JVM INSTR lookupswitch 17: default 152 + // 315: 220 + // 352: 269 + // 366: 518 + // 401: 783 + // 471: 658 + // 472: 680 + // 473: 658 + // 474: 658 + // 475: 658 + // 476: 680 + // 477: 680 + // 478: 680 + // 482: 680 + // 900: 859 + // 903: 859 + // 904: 859 + // 905: 859; + goto _L1 _L2 _L3 _L4 _L5 _L6 _L7 _L6 _L6 _L6 _L7 _L7 _L7 _L7 _L8 _L8 _L8 _L8 +_L1: + int j; + boolean flag; + flag = flag2; + j = ((flag1) ? 1 : 0); +_L19: + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.access$8(), charsequence); + if (flag) + { + Utils.addColour(ServerConnection.access$8(), spannablestringbuilder, j, 0, charsequence.length()); + } + charsequence = ServerConnection.this; + if (s == null || s.length() == 0) + { + s = "Status"; + } + charsequence.sendMessage(s, spannablestringbuilder, 1); +_L17: + return; +_L2: + if (checkFlagActive(4)) + { + removeServerConnectionFlag(4); + s = charsequence.toString(); + s = s.substring(0, s.indexOf(' ')); + j = ((flag1) ? 1 : 0); + flag = flag2; + continue; /* Loop/switch isn't completed */ + } + continue; /* Loop/switch isn't completed */ +_L3: + String s1; + String s4; + String s5; + String s7; + s7 = charsequence.toString(); + s1 = null; + s4 = null; + s5 = null; + i = s7.indexOf(' '); + j = 0; +_L15: + if (j >= 4) + { + pSessionManager.setIdentAndHost(s, s1, s5, s4); + if (checkFlagActive(4)) + { + j = ((flag1) ? 1 : 0); + flag = flag2; + continue; /* Loop/switch isn't completed */ + } + continue; /* Loop/switch isn't completed */ + } + j; + JVM INSTR tableswitch 0 3: default 376 + // 0 385 + // 1 421 + // 2 455 + // 3 469; + goto _L9 _L10 _L11 _L12 _L13 +_L9: + break; /* Loop/switch isn't completed */ +_L10: + break; /* Loop/switch isn't completed */ +_L16: + j++; + if (true) goto _L15; else goto _L14 +_L14: + s = s7.substring(0, i); + i = s7.indexOf(' ', i + 1); + s5 = s7.substring(s.length() + 1, i); + goto _L16 +_L11: + s4 = s7.substring(i + 1, s7.indexOf(' ', i + 1)); + i = s7.indexOf(' ', i + 1); + goto _L16 +_L12: + i = s7.indexOf(' ', i + 1); + goto _L16 +_L13: + String s6 = s7.substring(i + 1, s7.indexOf(' ', i + 1)); + s1 = s6; + goto _L16 + StringIndexOutOfBoundsException stringindexoutofboundsexception; + stringindexoutofboundsexception; + Log.e("ServerConnection", s7, stringindexoutofboundsexception); + onUnparsableMessage(s7); + goto _L16 +_L4: + s = charsequence.toString(); + s = s.substring(0, s.indexOf(' ', 1)).trim(); + boolean flag3 = checkFlagActive(1); + if (flag3 || pSessionManager.haveSessionFor(s)) + { + sendCount(s); + ServerConnection.access$5(ServerConnection.this, (new StringBuilder("WHO ")).append(s).append("\r\n").toString()); + if (flag3) + { + (new Thread(removeNameFlag)).start(); + return; + } + } else + { + if (!pSessionManager.haveSessionFor(s)) + { + s = "Status"; + } + j = ((flag1) ? 1 : 0); + flag = flag2; + continue; /* Loop/switch isn't completed */ + } + if (true) goto _L17; else goto _L6 +_L6: + s = getCurrentSession().getSessionName(); + j = ((flag1) ? 1 : 0); + flag = flag2; + continue; /* Loop/switch isn't completed */ +_L7: + String s2 = charsequence.toString(); + j = s2.indexOf(' ', 1); + if (j != -1) + { + s2 = s2.substring(0, j); + } + j = ((flag1) ? 1 : 0); + flag = flag2; + s = s2; + if (i == 477) + { + j = ((flag1) ? 1 : 0); + flag = flag2; + s = s2; + if (!pSessionManager.haveSessionFor(s2)) + { + s = getCurrentSession().getSessionName(); + j = ((flag1) ? 1 : 0); + flag = flag2; + } + } + continue; /* Loop/switch isn't completed */ +_L5: + String s3; + if (charsequence instanceof String) + { + s3 = (String)charsequence; + } else + { + s3 = charsequence.toString(); + } + s3 = s3.substring(0, s3.indexOf(' ')); + j = ((flag1) ? 1 : 0); + flag = flag2; + if (pSessionManager.haveSessionFor(s3)) + { + s = s3; + j = ((flag1) ? 1 : 0); + flag = flag2; + } + continue; /* Loop/switch isn't completed */ +_L8: + j = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b002c); + flag = true; + ServerConnection.access$5(ServerConnection.this, "CAP END\r\n"); + if (true) goto _L19; else goto _L18 +_L18: + } + + public void onPing(String s) + { + ServerConnection.access$5(ServerConnection.this, (new StringBuilder("PONG :")).append(s).append("\r\n").toString()); + } + + public void onPong(String s) + { + if (!checkFlagActive(8)) + { + return; + } else + { + removeServerConnectionFlag(8); + s = (new StringBuilder("Pong: ")).append(s).toString(); + sendMessage("Status", Utils.createMessage(ServerConnection.access$8(), s), 1); + return; + } + } + + public void onPrivatePrivmsg(String s, String s1, String s2, String s3, int i) + { + boolean flag; + boolean flag1; + flag1 = Utils.isBitSet(IRCService.sPreferences.Options, IRCService.PREF_DEBUG_SHOW_IGNORED); + flag = false; + if (!ServerConnection.access$10(ServerConnection.this).shouldIgnore(s1, s2, 2)) goto _L2; else goto _L1 +_L1: + if (!flag1) goto _L4; else goto _L3 +_L3: + flag = true; +_L2: + if (!pSessionManager.haveSessionFor(s)) + { + pSessionManager.addSession(s, pNick, 2); + sendFlaggedMessage(2, s); + boolean flag2 = ServerConnection.access$8(); + s1 = new SpannableStringBuilder(); + s1.append(Utils.getPmStart(ServerConnection.access$2(ServerConnection.this), s, flag2)); + if (flag && flag1) + { + s1.append(" [IGNORED]"); + } + sendMessage(s, s1, 2); + } + pSessionManager.setMarked(s, true); + i; + JVM INSTR tableswitch 0 1: default 180 + // 0 349 + // 1 181; + goto _L4 _L5 _L6 +_L4: + return; +_L6: + i = s.length(); + int j = s3.length(); + boolean flag3 = ServerConnection.access$8(); + s1 = new StringBuilder(i + 4 + j); + s1.append("<").append(s).append("> ").append(s3); + s1 = Utils.createMessage(ServerConnection.access$8(), s1); + int k = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0013); + Utils.addColour(flag3, s1, k, 0, 1); + Utils.addColour(flag3, s1, k, i + 1, i + 2); + if (j >= 4) + { + Utils.addLinks(s1); + } + if (shouldNotify()) + { + makeNotif(s1.toString(), s, s, 2); + } + if (flag && flag1) + { + s1.append(" [IGNORED]"); + } + sendMessage(s, s1, 2); + return; +_L5: + s1 = new StringBuilder(); + s1.append("* ").append(s).append(" ").append(s3); + s1 = Utils.createMessage(ServerConnection.access$8(), s1); + if (s3.length() >= 4) + { + Utils.addLinks(s1); + } + if (flag && flag1) + { + s1.append(" [IGNORED]"); + } + sendMessage(s, s1, 2); + if (shouldNotify()) + { + makeNotif(s1.toString(), s, s, 2); + return; + } + if (true) goto _L4; else goto _L7 +_L7: + } + + public void onSaslMessage(String s, String s1, String as[]) + { + int i; + boolean flag; + boolean flag1; + flag1 = false; + int j; + if (as != null) + { + i = 1; + } else + { + i = 0; + } + if (!s.equals("CAP")) goto _L2; else goto _L1 +_L1: + flag = flag1; + if (s1 == null) goto _L4; else goto _L3 +_L3: + flag = flag1; + if (i == 0) goto _L4; else goto _L5 +_L5: + flag = flag1; + if (as.length < 2) goto _L4; else goto _L6 +_L6: + flag = flag1; + if (!as[0].equals("ACK")) goto _L4; else goto _L7 +_L7: + j = as.length; + flag = false; + i = 1; +_L13: + if (i < j) goto _L9; else goto _L8 +_L8: + if (flag) + { + ServerConnection.access$5(ServerConnection.this, "AUTHENTICATE PLAIN\r\n"); + } +_L4: + if (!flag) + { + ServerConnection.access$5(ServerConnection.this, "CAP END\r\n"); + } + return; +_L9: + i; + JVM INSTR tableswitch 1 1: default 136 + // 1 170; + goto _L10 _L11 +_L10: + flag1 = as[i].equals("sasl"); + flag = flag1; + if (flag1) goto _L8; else goto _L12 +_L12: + flag = flag1; +_L15: + i++; + goto _L13 +_L11: + flag1 = as[i].equals(":sasl"); + flag = flag1; + if (!flag1) goto _L15; else goto _L14 +_L14: + flag = flag1; + goto _L8 +_L2: + flag = flag1; + if (!s.equals("AUTHENTICATE")) goto _L4; else goto _L16 +_L16: + flag = flag1; + if (!s1.equals("+")) goto _L4; else goto _L17 +_L17: + as = pOptions.getSASLUsername(); + s1 = pOptions.getCharset(); + s = (byte[])null; + try + { + s = (new String((new StringBuilder(String.valueOf(as))).append("\0").append(as).append("\0").append(pOptions.getSASLPassword()).toString())).getBytes(s1); + } + // Misplaced declaration of an exception variable + catch (String s) + { + s = (new String((new StringBuilder(String.valueOf(as))).append("\0").append(as).append("\0").append(pOptions.getSASLPassword()).toString())).getBytes(); + } + s1 = new String(Base64.encode(s, 0, s.length, 4), s1); + s = s1; +_L18: + ServerConnection.access$5(ServerConnection.this, (new StringBuilder("AUTHENTICATE ")).append(s).toString()); + flag = true; + goto _L4 + s1; + s = new String(Base64.encode(s, 0, s.length, 4)); + goto _L18 + } + + public void onTopicChanged(String s, String s1, String s2) + { + int i; + boolean flag; + if (s2 != null && s2.length() > 0) + { + i = 1; + } else + { + i = 0; + } + if (i != 0) + { + s1 = ServerConnection.access$0(ServerConnection.this, 0x7f0a0055, new Object[] { + s2, s1 + }); + } else + { + s1 = ServerConnection.access$0(ServerConnection.this, 0x7f0a0054, new Object[] { + s1 + }); + } + flag = ServerConnection.access$8(); + i = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0015); + s2 = Utils.createMessage(ServerConnection.access$8(), s1); + Utils.addColour(flag, s2, i, 0, s1.length()); + Utils.addLinks(s2); + sendMessage(s, s2, 1); + } + + public void onUnknownMessage(CharSequence charsequence) + { + charsequence = Utils.createMessage(ServerConnection.access$8(), charsequence); + sendMessage("Status", charsequence, 1); + } + + public void onUnparsableMessage(String s) + { + if (Utils.isBitSet(IRCService.sPreferences.Options, IRCService.PREF_DEBUG_LOG_UNPARSEABLE)) + { + ServerConnection.access$11(ServerConnection.this, "_unparseable_", s, true); + } + s = ServerConnection.access$0(ServerConnection.this, 0x7f0a007c, new Object[] { + s + }); + SpannableStringBuilder spannablestringbuilder = new SpannableStringBuilder(s); + Utils.addColour(false, spannablestringbuilder, Colours.getInstance().getColourForEvent(0x7f0b002c), 0, s.length()); + onUnknownMessage(spannablestringbuilder); + } + + public void onUserJoined(String s, String s1, String s2, String s3) + { + if (s1.equals(pNick)) + { + pSessionManager.addSession(s, s1, 1); + sendFlaggedMessage(1, s); + ServerConnection.access$5(ServerConnection.this, (new StringBuilder("MODE ")).append(s).append("\r\n").toString()); + if (!pSessionManager.getActive(s)) + { + pSessionManager.setActive(s, true); + sendFlaggedMessage(6, null); + } + } else + { + pSessionManager.addName(s, s1, s2, s3); + if (!Utils.isBitSet(IRCService.sPreferences.Options, IRCService.PREFS_HIDE_MESSAGES)) + { + boolean flag = ServerConnection.access$8(); + s1 = ServerConnection.access$0(ServerConnection.this, 0x7f0a005c, new Object[] { + s1, s3 + }); + int i = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b001e); + s2 = Utils.createMessage(ServerConnection.access$8(), s1); + Utils.addColour(flag, s2, i, 0, s1.length()); + sendMessage(s, s2, 1); + return; + } + } + } + + public void onUserKicked(String s, String s1, String s2, String s3) + { + pSessionManager.removeName(s, s1); + boolean flag = ServerConnection.access$8(); + if (s1.equals(pNick)) + { + pSessionManager.setActive(s, false); + sendFlaggedMessage(6, null); + s1 = ServerConnection.access$0(ServerConnection.this, 0x7f0a005f, new Object[] { + s, s2, s3 + }); + int i = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0020); + s2 = Utils.createMessage(ServerConnection.access$8(), s1); + Utils.addColour(flag, s2, i, 0, s1.length()); + sendMessage(s, s2, 2); + pSessionManager.setActive(s, false); + pSessionManager.removeAllNames(s); + sendFlaggedMessage(5, s); + if (Utils.isBitSet(IRCService.sPreferences.Options, IRCService.PREFS_REJOIN_ON_KICK)) + { + s1 = ServerConnection.access$9(ServerConnection.this, 0x7f0a0060); + int j = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0021); + s2 = Utils.createMessage(ServerConnection.access$8(), s1); + Utils.addColour(flag, s2, j, 0, s1.length()); + sendMessage(s, s2, 1); + pLogs.close(s); + (new Thread() { + + final ServerConnection.ParserImpl this$1; + private final String val$chan; + private final String val$key; + + public void run() + { + StringBuilder stringbuilder; + try + { + Thread.sleep(5000L); + } + catch (InterruptedException interruptedexception) { } + try + { + stringbuilder = new StringBuilder(); + if (key != null) + { + stringbuilder.append("JOIN ").append(chan).append(" ").append(key).append("\r\n"); + ServerConnection.access$5(this$0, stringbuilder.toString()); + return; + } + } + catch (Exception exception) + { + return; + } + ServerConnection.access$5(this$0, stringbuilder.append("JOIN ").append(chan).append("\r\n").toString()); + return; + } + + + { + this$1 = ServerConnection.ParserImpl.this; + key = s; + chan = s1; + super(); + } + }).start(); + } + return; + } + if (s2.equals(pNick)) + { + s1 = ServerConnection.access$0(ServerConnection.this, 0x7f0a0061, new Object[] { + s1, s, s3 + }); + int k = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0022); + s2 = Utils.createMessage(ServerConnection.access$8(), s1); + Utils.addColour(flag, s2, k, 0, s1.length()); + sendMessage(s, s2, 1); + return; + } else + { + s1 = ServerConnection.access$0(ServerConnection.this, 0x7f0a0062, new Object[] { + s1, s2, s3 + }); + int l = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0023); + s2 = Utils.createMessage(ServerConnection.access$8(), s1); + Utils.addColour(flag, s2, l, 0, s1.length()); + sendMessage(s, s2, 1); + return; + } + } + + public void onUserParted(String s, String s1, String s2, String s3) + { + if (s1.equals(pNick)) + { + pLogs.close(s); + pSessionManager.removeSession(s); + sendFlaggedMessage(4, s); + } else + { + pSessionManager.removeName(s, s1); + if (!Utils.isBitSet(IRCService.sPreferences.Options, IRCService.PREFS_HIDE_MESSAGES)) + { + int i; + if (s3 != null && s3.length() > 0) + { + i = 1; + } else + { + i = 0; + } + if (i != 0) + { + s1 = ServerConnection.access$0(ServerConnection.this, 0x7f0a005e, new Object[] { + s1, s2, s3 + }); + } else + { + s1 = ServerConnection.access$0(ServerConnection.this, 0x7f0a005d, new Object[] { + s1, s2 + }); + } + i = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b001f); + s2 = Utils.createMessage(ServerConnection.access$8(), s1); + Utils.addColour(ServerConnection.access$8(), s2, i, 0, s1.length()); + sendMessage(s, s2, 1); + return; + } + } + } + + public void onUserQuit(String s, String s1, String s2) + { + int i = 0; + if (Utils.isBitSet(IRCService.sPreferences.Options, IRCService.PREFS_HIDE_MESSAGES)) + { + pSessionManager.getQuitSessions(s); + } else + { + if (s.equals(pNick)) + { + deactivateAllAndUpdateUi(false); + return; + } + s1 = ServerConnection.access$0(ServerConnection.this, 0x7f0a0063, new Object[] { + s, s2 + }); + s = pSessionManager.getQuitSessions(s); + boolean flag = ServerConnection.access$8(); + int j = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0024); + s2 = Utils.createMessage(flag, s1); + Utils.addColour(flag, s2, j, 0, s1.length()); + j = s.length; + while (i < j) + { + s1 = s[i]; + sendMessage(s1, new SpannableString(s2), 1); + i++; + } + } + } + + public void onWallops(String s, String s1, String s2) + { + boolean flag = ServerConnection.access$8(); + int i = s.length(); + int j = s2.length(); + s1 = new StringBuilder(i + j + 12); + s1.append("-").append(s).append("/").append("Wallops-: ").append(s2); + int k = s1.length(); + int l = Colours.getInstance().getColourForEvent(0x7f0b001a); + s = Utils.createMessage(ServerConnection.access$8(), s1); + Utils.addColour(flag, s, l, 0, k - j - 2); + l = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b0013); + Utils.addColour(flag, s, l, 0, 1); + Utils.addColour(flag, s, l, i + 9, k - j - 2); + sendMessage(getCurrentSession().getSessionName(), s, 1); + } + + protected void reset() + { + super.reset(); + m433Count = 0; + reusableSB.setLength(0); + } + + public String stripColours(String s) + { + return mColourRemover.reset(s).replaceAll(""); + } + + + private _cls3.val.chan() + { + this$0 = ServerConnection.this; + super(); + m433Count = 0; + reusableSB = new StringBuilder(); + } + + reusableSB(reusableSB reusablesb) + { + this(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/ServerConnection$TrustAllSSL.java b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$TrustAllSSL.java new file mode 100644 index 0000000..4512bd5 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/ServerConnection$TrustAllSSL.java @@ -0,0 +1,86 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import java.security.Principal; +import java.security.cert.CertificateExpiredException; +import java.security.cert.CertificateNotYetValidException; +import java.security.cert.X509Certificate; +import java.util.Date; +import javax.net.ssl.X509TrustManager; +import net.andchat.donate.Misc.Colours; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Backend: +// ServerConnection + +private final class + implements X509TrustManager +{ + + final ServerConnection this$0; + + public void checkClientTrusted(X509Certificate ax509certificate[], String s) + { + } + + public void checkServerTrusted(X509Certificate ax509certificate[], String s) + { + s = ax509certificate[0]; + ax509certificate = new StringBuilder(300); + String s1 = ServerConnection.access$9(ServerConnection.this, 0x7f0a0044); + ax509certificate.append(s1); + ax509certificate.append(ServerConnection.access$0(ServerConnection.this, 0x7f0a0045, new Object[] { + s.getSubjectDN().toString(), s.getIssuerDN().toString(), s.getNotBefore().toGMTString(), s.getNotAfter().toGMTString(), s.getSigAlgName().toString() + })); + boolean flag = ServerConnection.access$8(); + int i = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b002d); + android.text.SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.access$8(), ax509certificate); + Utils.addColour(flag, spannablestringbuilder, i, 0, s1.length()); + sendMessage("Status", spannablestringbuilder, 1); + try + { + s.checkValidity(); + return; + } + // Misplaced declaration of an exception variable + catch (String s) + { + ax509certificate.setLength(0); + ax509certificate.append(ServerConnection.access$9(ServerConnection.this, 0x7f0a0046)); + i = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b002e); + s = Utils.createMessage(ServerConnection.access$8(), ax509certificate); + Utils.addColour(flag, s, i, 0, ax509certificate.length()); + sendMessage("Status", s, 1); + return; + } + // Misplaced declaration of an exception variable + catch (String s) + { + ax509certificate.setLength(0); + } + ax509certificate.append(ServerConnection.access$9(ServerConnection.this, 0x7f0a0047)); + i = ServerConnection.access$1(ServerConnection.this).getColourForEvent(0x7f0b002f); + s = Utils.createMessage(ServerConnection.access$8(), ax509certificate); + Utils.addColour(flag, s, i, 0, ax509certificate.length()); + sendMessage("Status", s, 1); + } + + public X509Certificate[] getAcceptedIssuers() + { + return null; + } + + private () + { + this$0 = ServerConnection.this; + super(); + } + + this._cls0(this._cls0 _pcls0) + { + this(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/ServerConnection.java b/app/src/main/java/net/andchat/donate/Backend/ServerConnection.java new file mode 100644 index 0000000..8e5810b --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/ServerConnection.java @@ -0,0 +1,3606 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend; + +import android.app.KeyguardManager; +import android.app.Notification; +import android.app.NotificationManager; +import android.app.PendingIntent; +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.res.Resources; +import android.net.Uri; +import android.os.Environment; +import android.os.Handler; +import android.os.HandlerThread; +import android.os.Looper; +import android.os.Message; +import android.text.SpannableString; +import android.text.SpannableStringBuilder; +import android.text.TextUtils; +import android.util.Log; +import com.glaforge.i18n.io.CharsetToolkit; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStreamWriter; +import java.io.UnsupportedEncodingException; +import java.net.InetSocketAddress; +import java.net.NoRouteToHostException; +import java.net.Socket; +import java.net.SocketException; +import java.net.SocketTimeoutException; +import java.net.UnknownHostException; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.Principal; +import java.security.SecureRandom; +import java.security.cert.CertificateExpiredException; +import java.security.cert.CertificateNotYetValidException; +import java.security.cert.X509Certificate; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.IRCApp; +import net.andchat.donate.Misc.Base64; +import net.andchat.donate.Misc.Colours; +import net.andchat.donate.Misc.CommandParser; +import net.andchat.donate.Misc.IRCMessage; +import net.andchat.donate.Misc.ServerProfile; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Backend: +// IRCService, Ignores, MessageSender, Parser + +public final class ServerConnection + implements net.andchat.donate.Misc.CommandParser.Helper +{ + private static final class CharsetUtil + { + + private final byte mBuffer[] = new byte[1024]; + private final String mCharset; + private final boolean mGuessCharset; + + private String StringFromBuffer(byte abyte0[]) + throws UnsupportedEncodingException + { + if (abyte0[0] != -1) goto _L2; else goto _L1 +_L1: + int i; + int j; + j = abyte0.length; + i = 0; +_L5: + if (i < j) goto _L4; else goto _L3 +_L3: + return null; +_L4: + if (abyte0[i] != -1) + { + byte abyte1[] = new byte[j - i]; + System.arraycopy(abyte0, i, abyte1, 0, abyte1.length); + return StringFromBuffer(abyte1); + } + i++; + goto _L5 +_L2: + if (abyte0[abyte0.length - 1] == 10) + { + int k = abyte0.length; + i = k; + if (abyte0[k - 2] == 13) + { + i = k - 2; + } + String s1; + String s4; + if (mGuessCharset) + { + s1 = CharsetToolkit.guessEncoding(abyte0, i, mCharset); + } else + { + s1 = mCharset; + } + s4 = s1; + if (s1 == null) + { + s4 = mCharset; + } + return new String(abyte0, 0, i, s4); + } + if (abyte0[0] != -1 && abyte0[abyte0.length - 1] != -1) + { + String s2; + String s5; + if (mGuessCharset) + { + s2 = CharsetToolkit.guessEncoding(abyte0, abyte0.length, mCharset); + } else + { + s2 = mCharset; + } + s5 = s2; + if (s2 == null) + { + s5 = mCharset; + } + return new String(abyte0, 0, abyte0.length, s5); + } + i = abyte0.length - 1; +_L6: + if (i >= 0) + { +label0: + { + if (abyte0[i] == -1) + { + break label0; + } + int l = i; + if (i != 0) + { + l = i; + if (abyte0[i - 1] == 13) + { + l = i - 1; + } + } + if (l != 0) + { + String s3; + String s6; + if (mGuessCharset) + { + s3 = CharsetToolkit.guessEncoding(abyte0, l, mCharset); + } else + { + s3 = mCharset; + } + s6 = s3; + if (s3 == null) + { + s6 = mCharset; + } + return new String(abyte0, 0, l, s6); + } + } + } + goto _L3 + i--; + goto _L6 + } + + public String readLine(InputStream inputstream) + throws IOException + { + byte abyte0[]; + int i; + abyte0 = mBuffer; + Arrays.fill(abyte0, (byte)-1); + i = 0; +_L6: + boolean flag; + boolean flag1; + int j; + if (i >= 1024) + { + return StringFromBuffer(abyte0); + } + j = inputstream.read(); + if (j == -1) + { + return StringFromBuffer(abyte0); + } + flag1 = false; + flag = flag1; + j; + JVM INSTR tableswitch 10 13: default 84 + // 10 120 + // 11 88 + // 12 88 + // 13 105; + goto _L1 _L2 _L3 _L3 _L4 +_L1: + flag = flag1; +_L3: + abyte0[i] = (byte)j; + if (flag) + { + return StringFromBuffer(abyte0); + } + break; /* Loop/switch isn't completed */ +_L4: + flag = flag1; + if (i > 0) goto _L3; else goto _L5 +_L5: + i++; + goto _L6 +_L2: + flag = true; + if (i > 1) goto _L3; else goto _L5 + } + + public CharsetUtil(String s1) + { + mCharset = s1; + boolean flag; + if (s1.equalsIgnoreCase("UTF-8")) + { + flag = false; + } else + { + flag = true; + } + mGuessCharset = flag; + } + } + + private class Connection extends Thread + { + + private InputStream mIn; + private final ServerProfile mOptions; + private BufferedWriter mOut; + private int mReconnectDelay; + private final ServerConnection mServ; + private final Socket mSock; + private boolean mWasStopped; + final ServerConnection this$0; + + private void stopCommandQ() + { + if (mUserCommandsHT != null) + { + mUserCommandsHT.quit(); + mUserCommandsH = null; + } + } + + public void run() + { + if (!mReconnecting.get()) goto _L2; else goto _L1 +_L1: + this; + JVM INSTR monitorenter ; + int k = mReconnectDelay * 1000; + int i; + if (k > 30000) + { + i = 30000; + } else + { + i = k; + if (k <= 0) + { + i = 5000; + } + } + wait(i); +_L3: + this; + JVM INSTR monitorexit ; + Object obj; + Object obj2; + try + { + mReconnecting.set(false); + if (mWasStopped) + { + stopCommandQ(); + return; + } + } + // Misplaced declaration of an exception variable + catch (Object obj2) + { + Object obj1; + Object obj3; + String s1; + SpannableStringBuilder spannablestringbuilder; + int j; + boolean flag; + boolean flag1; + if (pConnectTime != 0L && System.currentTimeMillis() > pConnectTime + 60000L) + { + j = 1; + } else + { + j = 0; + } + if (j != 0) + { + pReconnectCount = 0; + pConnectTime = 0L; + } + obj1 = new StringBuilder(); + if (obj2 instanceof SocketTimeoutException) + { + ((StringBuilder) (obj1)).append("Disconnected: Connection timed out."); + } else + if (obj2 instanceof NoRouteToHostException) + { + ((StringBuilder) (obj1)).append("Disconnected: No route to host."); + } else + if ((obj2 instanceof SocketException) || (obj2 instanceof UnknownHostException)) + { + ((StringBuilder) (obj1)).append("Disconnected: ").append(((IOException) (obj2)).getMessage()); + } else + { + obj2 = ((IOException) (obj2)).getMessage(); + if (obj2 != null && ((String) (obj2)).length() > 0) + { + ((StringBuilder) (obj1)).append("Disconnected: ").append(((String) (obj2))); + } else + { + ((StringBuilder) (obj1)).append("Disconnected"); + } + } + if (mOptions.usesSSL()) + { + j = ((StringBuilder) (obj1)).indexOf("You should never see this"); + if (j != -1) + { + ((StringBuilder) (obj1)).replace(j, "You should never see this".length() + j, ""); + } + } + flag1 = ServerConnection.shouldShowTimeStamps(); + j = mColours.getColourForEvent(0x7f0b002a); + obj2 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), ((CharSequence) (obj1))); + Utils.addColour(flag1, ((SpannableStringBuilder) (obj2)), j, 0, ((StringBuilder) (obj1)).length()); + sendToAll(((CharSequence) (obj2)), 1); + if (pState == 1 || pState == 3) + { + stopConn(0); + } + deactivateAllAndUpdateUi(true); + return; + } + break MISSING_BLOCK_LABEL_304; + obj; + ((InterruptedException) (obj)).printStackTrace(); + goto _L3 + obj; + this; + JVM INSTR monitorexit ; + throw obj; + removeServerConnectionFlag(16); + flag1 = ServerConnection.shouldShowTimeStamps(); + obj1 = Utils.getConnectionMessage(mService, true, mOptions); + if (pReconnectCount <= 0) goto _L5; else goto _L4 +_L4: + if (pReconnectCount <= 9) goto _L7; else goto _L6 +_L6: + obj2 = String.valueOf(pReconnectCount).toCharArray(); + ((StringBuilder) (obj1)).insert(0, "[").insert(1, ((char []) (obj2)), 0, obj2.length).insert(obj2.length + 1, "] "); +_L5: + sendMessage("Status", Utils.createMessage(flag1, ((CharSequence) (obj1))), 1); + pState = 3; + Message.obtain(mService.mHandler, 0, 3, 0, mServ).sendToTarget(); +_L2: + obj3 = mOptions; + obj2 = ((ServerProfile) (obj3)).getCharset(); + obj1 = obj2; + if (TextUtils.isEmpty(((CharSequence) (obj2)))) + { + obj1 = mService.prefs.getString(mService.getString(0x7f0a000f), "UTF-8"); + } + mSock.connect(new InetSocketAddress(((ServerProfile) (obj3)).getAddress(), ((ServerProfile) (obj3)).getPort()), ServerConnection.sTimeout * 1000); + mIn = mSock.getInputStream(); + mOut = new BufferedWriter(new OutputStreamWriter(mSock.getOutputStream(), ((String) (obj1))), 1024); + j = ((ServerProfile) (obj3)).getAuthModes(); + obj2 = new StringBuilder(20); + if (Utils.isBitSet(j, net.andchat.donate.Misc.ServerProfile.AuthenticationModes.MODE_PASSWORD)) + { + s1 = ((ServerProfile) (obj3)).getServerPassword(); + if (!TextUtils.isEmpty(s1)) + { + write(((StringBuilder) (obj2)).append("PASS ").append(s1).append("\r\n").toString()); + } + ((StringBuilder) (obj2)).setLength(0); + } + if (Utils.isBitSet(j, net.andchat.donate.Misc.ServerProfile.AuthenticationModes.MODE_SASL)) + { + j = mColours.getColourForEvent(0x7f0b002c); + s1 = s(0x7f0a0052); + spannablestringbuilder = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s1); + sendMessage("Status", Utils.addColour(ServerConnection.shouldShowTimeStamps(), spannablestringbuilder, j, 0, s1.length()), 1); + write("CAP REQ :sasl\r\n"); + } + write(((StringBuilder) (obj2)).append("NICK ").append(((ServerProfile) (obj3)).getNick(1)).append("\r\n").toString()); + ((StringBuilder) (obj2)).setLength(0); + write(((StringBuilder) (obj2)).append("USER ").append(((ServerProfile) (obj3)).getUsername()).append(" 0 ").append(((ServerProfile) (obj3)).getAddress()).append(" :").append(((ServerProfile) (obj3)).getRealname()).append("\r\n").toString()); + j = 0; + obj2 = mIn; + obj3 = mServ.pParser; + obj1 = new CharsetUtil(((String) (obj1))); +_L12: + s1 = ((CharsetUtil) (obj1)).readLine(((InputStream) (obj2))); + if (s1 == null) goto _L9; else goto _L8 +_L8: + if (pState != 0) goto _L10; else goto _L9 +_L9: + throw new IOException(); +_L7: + ((StringBuilder) (obj1)).insert(0, "[").insert(1, pReconnectCount).insert(2, "] "); + goto _L5 +_L10: + flag = j; + if (j != 0) + { + break MISSING_BLOCK_LABEL_942; + } + mServ.pState = 1; + Message.obtain(mService.mHandler, 0, 3, 1, mServ).sendToTarget(); + flag = true; + pConnectTime = System.currentTimeMillis(); + j = ((flag) ? 1 : 0); + if (s1.length() == 0) goto _L12; else goto _L11 +_L11: + ((Parser) (obj3)).parse(s1); + j = ((flag) ? 1 : 0); + goto _L12 + } + + protected void stopConn(int i) + { + int j = 4; + if (pState == 0 && pState == 4) + { + return; + } + pState = 2; + Message.obtain(mService.mHandler, 0, 3, 0, mServ).sendToTarget(); + ServerConnection serverconnection; + try + { + write((new StringBuilder("QUIT :")).append(getQuitReason()).append("\r\n").toString()); + } + catch (NullPointerException nullpointerexception) + { + mIn = null; + mOut = null; + ServerConnection serverconnection1; + Object obj; + ServerConnection serverconnection2; + Object obj1; + try + { + mSock.shutdownInput(); + } + catch (IOException ioexception2) { } + catch (UnsupportedOperationException unsupportedoperationexception1) { } + try + { + mSock.shutdownOutput(); + } + catch (IOException ioexception1) { } + catch (UnsupportedOperationException unsupportedoperationexception) { } + try + { + mSock.close(); + } + catch (IOException ioexception) { } + serverconnection1 = ServerConnection.this; + if (i == 0) + { + j = 0; + } + serverconnection1.pState = j; + Message.obtain(mService.mHandler, 0, i, 0, mServ).sendToTarget(); + stopCommandQ(); + return; + } + // Misplaced declaration of an exception variable + catch (Object obj) + { + mIn = null; + mOut = null; + try + { + mSock.shutdownInput(); + } + // Misplaced declaration of an exception variable + catch (Object obj) { } + // Misplaced declaration of an exception variable + catch (Object obj) { } + try + { + mSock.shutdownOutput(); + } + // Misplaced declaration of an exception variable + catch (Object obj) { } + // Misplaced declaration of an exception variable + catch (Object obj) { } + try + { + mSock.close(); + } + // Misplaced declaration of an exception variable + catch (Object obj) { } + obj = ServerConnection.this; + if (i == 0) + { + j = 0; + } + obj.pState = j; + Message.obtain(mService.mHandler, 0, i, 0, mServ).sendToTarget(); + stopCommandQ(); + return; + } + finally + { + mIn = null; + } + mIn = null; + mOut = null; + try + { + mSock.shutdownInput(); + } + // Misplaced declaration of an exception variable + catch (Object obj) { } + // Misplaced declaration of an exception variable + catch (Object obj) { } + try + { + mSock.shutdownOutput(); + } + // Misplaced declaration of an exception variable + catch (Object obj) { } + // Misplaced declaration of an exception variable + catch (Object obj) { } + try + { + mSock.close(); + } + // Misplaced declaration of an exception variable + catch (Object obj) { } + serverconnection = ServerConnection.this; + if (i == 0) + { + j = 0; + } + serverconnection.pState = j; + Message.obtain(mService.mHandler, 0, i, 0, mServ).sendToTarget(); + stopCommandQ(); + return; + mOut = null; + try + { + mSock.shutdownInput(); + } + // Misplaced declaration of an exception variable + catch (Object obj1) { } + // Misplaced declaration of an exception variable + catch (Object obj1) { } + try + { + mSock.shutdownOutput(); + } + // Misplaced declaration of an exception variable + catch (Object obj1) { } + // Misplaced declaration of an exception variable + catch (Object obj1) { } + try + { + mSock.close(); + } + // Misplaced declaration of an exception variable + catch (Object obj1) { } + serverconnection2 = ServerConnection.this; + if (i == 0) + { + j = 0; + } + serverconnection2.pState = j; + Message.obtain(mService.mHandler, 0, i, 0, mServ).sendToTarget(); + stopCommandQ(); + throw obj; + } + + public void write(String s1) + { + if (mOut == null) + { + return; + } + try + { + mOut.write(s1); + mOut.flush(); + return; + } + // Misplaced declaration of an exception variable + catch (String s1) + { + return; + } + // Misplaced declaration of an exception variable + catch (String s1) + { + return; + } + } + + + + + + + public Connection(ServerConnection serverconnection1, int i) + { + this$0 = ServerConnection.this; + super(); + mReconnectDelay = i; + mServ = serverconnection1; + mOptions = serverconnection1.pOptions; + serverconnection1 = null; + if (!mOptions.usesSSL()) goto _L2; else goto _L1 +_L1: + Object obj = new TrustAllSSL(null); + SSLContext sslcontext = SSLContext.getInstance("TLS"); + SecureRandom securerandom = new SecureRandom(); + sslcontext.init(null, new TrustManager[] { + obj + }, securerandom); + obj = sslcontext.getSocketFactory().createSocket(); + serverconnection1 = ((ServerConnection) (obj)); +_L4: + mSock = serverconnection1; + setUncaughtExceptionHandler(new _cls1()); + mUserCommandsHT = new HandlerThread("CommandsQ"); + mUserCommandsHT.start(); + mUserCommandsH = new _cls2(mUserCommandsHT.getLooper()); + return; +_L2: + serverconnection1 = new Socket(); + continue; /* Loop/switch isn't completed */ + Object obj1; + obj1; + continue; /* Loop/switch isn't completed */ + obj1; + continue; /* Loop/switch isn't completed */ + obj1; + if (true) goto _L4; else goto _L3 +_L3: + } + } + + class LogManager + { + + private final char FIND[]; + private final List mLoggers = new ArrayList(); + final ServerConnection this$0; + + private Logger find(String s1) + { + String s2 = sanitizeChan(s1); + s1 = mLoggers; + s1; + JVM INSTR monitorenter ; + List list; + int i; + list = mLoggers; + i = list.size() - 1; +_L2: + if (i >= 0) + { + break MISSING_BLOCK_LABEL_37; + } + s1; + JVM INSTR monitorexit ; + return null; + Logger logger = (Logger)list.get(i); + int j; + j = i; + if (logger != null) + { + break MISSING_BLOCK_LABEL_74; + } + list.remove(i); + j = i - 1; + if (!logger.mChan.equalsIgnoreCase(s2)) + { + break MISSING_BLOCK_LABEL_96; + } + s1; + JVM INSTR monitorexit ; + return logger; + Exception exception; + exception; + s1; + JVM INSTR monitorexit ; + throw exception; + i = j - 1; + if (true) goto _L2; else goto _L1 +_L1: + } + + private Logger newLogger(String s1) + { + Logger logger; + if (s1.length() == 0) + { + s1 = "Status"; + } else + { + s1 = sanitizeChan(s1); + } + logger = new Logger(s1); + synchronized (mLoggers) + { + mLoggers.add(logger); + StringBuilder stringbuilder = new StringBuilder(); + stringbuilder.append(s(0x7f0a0049, new Object[] { + ServerConnection.format(System.currentTimeMillis()) + })); + logger.log(stringbuilder.toString().toCharArray(), false); + } + return logger; + exception; + s1; + JVM INSTR monitorexit ; + throw exception; + } + + private String sanitizeChan(String s1) + { + int j = FIND.length; + int i = 0; + do + { + if (i >= j) + { + return s1; + } + s1 = s1.replace(FIND[i], '_'); + i++; + } while (true); + } + + public void close(String s1) + { + s1 = find(sanitizeChan(s1)); + if (s1 != null) + { + s1.close(); + mLoggers.remove(s1); + } + } + + public void closeAll() + { + List list = mLoggers; + list; + JVM INSTR monitorenter ; + List list1; + int i; + list1 = mLoggers; + i = list1.size() - 1; +_L2: + if (i >= 0) + { + break MISSING_BLOCK_LABEL_34; + } + list1.clear(); + list; + JVM INSTR monitorexit ; + return; + ((Logger)list1.get(i)).close(); + i--; + if (true) goto _L2; else goto _L1 +_L1: + Exception exception; + exception; + list; + JVM INSTR monitorexit ; + throw exception; + } + + public void log(String s1, char ac[], boolean flag) + { + s1 = s1.trim(); + Logger logger; + Logger logger1; + if (s1.length() == 0 || s1.charAt(0) == '$') + { + s1 = "Status"; + } else + { + s1 = sanitizeChan(s1); + } + logger1 = find(s1); + logger = logger1; + if (logger1 == null) + { + logger = newLogger(s1); + } + logger.log(ac, flag); + } + + public void logAll(char ac[]) + { + List list = mLoggers; + list; + JVM INSTR monitorenter ; + List list1; + int i; + list1 = mLoggers; + i = list1.size() - 1; +_L2: + if (i >= 0) + { + break MISSING_BLOCK_LABEL_30; + } + list; + JVM INSTR monitorexit ; + return; + ((Logger)list1.get(i)).log(ac, false); + i--; + if (true) goto _L2; else goto _L1 +_L1: + ac; + list; + JVM INSTR monitorexit ; + throw ac; + } + + + public LogManager() + { + this$0 = ServerConnection.this; + super(); + FIND = (new char[] { + ':', File.separatorChar + }); + } + } + + private final class LogManager.Logger + { + + final String mChan; + final BufferedWriter mWriter; + final LogManager this$1; + + private void flush(BufferedWriter bufferedwriter) + { + try + { + bufferedwriter.flush(); + return; + } + // Misplaced declaration of an exception variable + catch (BufferedWriter bufferedwriter) + { + Log.e("AndChat::Logs", "Error while force flushing buffer", bufferedwriter); + } + } + + private StringBuilder getFolderName() + { + StringBuilder stringbuilder = new StringBuilder(10); + stringbuilder.append(Utils.getMonth(ServerConnection.sCal.get(2), false)); + stringbuilder.append("-"); + stringbuilder.append(ServerConnection.sCal.get(1)); + if (Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREFS_LOGS_MODE_YEAR_MONTH_DAY)) + { + stringbuilder.append(File.separator).append(Utils.addPadding(ServerConnection.sCal.get(5))); + } + return stringbuilder; + } + + public void close() + { + this; + JVM INSTR monitorenter ; + BufferedWriter bufferedwriter = mWriter; + if (bufferedwriter != null) goto _L2; else goto _L1 +_L1: + this; + JVM INSTR monitorexit ; + return; +_L2: + Exception exception; + try + { + mWriter.close(); + continue; /* Loop/switch isn't completed */ + } + catch (IOException ioexception) { } + finally + { + this; + } + Log.e("AndChat::Logs", (new StringBuilder("Couldn't close writer for ")).append(mChan).toString()); + if (true) goto _L1; else goto _L3 +_L3: + throw exception; + } + + public void log(char ac[], boolean flag) + { + this; + JVM INSTR monitorenter ; + Object obj = mWriter; + if (obj == null) goto _L2; else goto _L1 +_L1: + int j = ac.length; + int i = 0; +_L10: + if (i < j) goto _L4; else goto _L3 +_L3: + if (!flag) goto _L2; else goto _L5 +_L5: + flush(((BufferedWriter) (obj))); +_L2: + this; + JVM INSTR monitorexit ; + return; +_L4: + char c; + c = ac[i]; + if (c != '\uFFFF') + { + break MISSING_BLOCK_LABEL_128; + } + if (ac[i - 1] == '\n') goto _L7; else goto _L6 +_L6: + ((BufferedWriter) (obj)).write(10); +_L7: + if (!flag) goto _L2; else goto _L8 +_L8: + flush(((BufferedWriter) (obj))); + goto _L2 + obj; + Log.e("AndChat::Logs", (new StringBuilder(String.valueOf(mChan))).append(": couldn't write message to log. Message was ").append(new String(ac)).toString(), ((Throwable) (obj))); + goto _L2 + ac; + throw ac; + ((BufferedWriter) (obj)).write(c); + if (i != j - 1 || ac[j - 1] == '\n') + { + break MISSING_BLOCK_LABEL_160; + } + ((BufferedWriter) (obj)).write(10); + i++; + if (true) goto _L10; else goto _L9 +_L9: + } + + public String toString() + { + return super.toString(); + } + + public LogManager.Logger(String s1) + { + Object obj; + File file1; + this$1 = LogManager.this; + super(); + mChan = s1; + File file = new File(Environment.getExternalStorageDirectory(), (new StringBuilder(File.separator)).append("net.andchat.donate").append(File.separator).append(pLabel).append(File.separator).append(getFolderName()).toString()); + if (!file.exists() || !file.isDirectory()) + { + file.mkdirs(); + } + file1 = new File(file, (new StringBuilder(String.valueOf(s1))).append(".txt").toString()); + obj = null; + String s3 = pOptions.getCharset(); + String s2 = s3; + try + { + if (TextUtils.isEmpty(s3)) + { + s2 = mService.prefs.getString(mService.getString(0x7f0a000f), "UTF-8"); + } + logmanager = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file1, true), s2), 512); + } + // Misplaced declaration of an exception variable + catch (LogManager logmanager) + { + Log.e("AndChat::Logs", (new StringBuilder("Couldn't create log file for ")).append(s1).toString()); + logmanager = obj; + } + mWriter = LogManager.this; + return; + } + } + + private class ParserImpl extends Parser + { + + private int m433Count; + final StringBuilder reusableSB; + final ServerConnection this$0; + + private void sendCount(String s1) + { + (s1. new Thread() { + + final ParserImpl this$1; + private final String val$chan; + + public void run() + { + this; + JVM INSTR monitorenter ; + Exception exception; + try + { + wait(500L); + } + catch (InterruptedException interruptedexception) { } + this; + JVM INSTR monitorexit ; + boolean flag = ServerConnection.shouldShowTimeStamps(); + net.andchat.donate.Backend.Sessions.Session.UserCount usercount = pSessionManager.getUserCount(chan); + StringBuilder stringbuilder = new StringBuilder(100); + stringbuilder.append(s(0x7f0a0071, new Object[] { + Integer.valueOf(usercount.total) + })); + if (usercount.owner > 0) + { + stringbuilder.append(s(0x7f0a0072, new Object[] { + Integer.valueOf(usercount.owner) + })); + } + if (usercount.admin > 0) + { + stringbuilder.append(s(0x7f0a0073, new Object[] { + Integer.valueOf(usercount.admin) + })); + } + if (usercount.op > 0) + { + stringbuilder.append(s(0x7f0a0074, new Object[] { + Integer.valueOf(usercount.op) + })); + } + if (usercount.hop > 0) + { + stringbuilder.append(s(0x7f0a0075, new Object[] { + Integer.valueOf(usercount.hop) + })); + } + if (usercount.voice > 0) + { + stringbuilder.append(s(0x7f0a0076, new Object[] { + Integer.valueOf(usercount.voice) + })); + } + stringbuilder.append(s(0x7f0a0077, new Object[] { + Integer.valueOf(usercount.normal) + })); + int i = stringbuilder.length(); + if (usercount.total > 0) + { + int j = mColours.getColourForEvent(0x7f0b0028); + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), stringbuilder); + Utils.addColour(flag, spannablestringbuilder, j, 0, i); + sendMessage(chan, spannablestringbuilder, 1); + } + return; + exception; + this; + JVM INSTR monitorexit ; + throw exception; + } + + + { + this$1 = final_parserimpl; + chan = String.this; + super(); + } + }).start(); + } + + private boolean shouldNotify() + { + return ((KeyguardManager)mService.getSystemService("keyguard")).inKeyguardRestrictedInputMode() || !mMessageSender.haveUi() || !mService.screenOn; + } + + public boolean isChannelPrefix(char c) + { + return Utils.isChannelPrefix(c); + } + + public boolean isStatusPrefix(char c) + { + net.andchat.donate.Backend.Sessions.SessionManager.StatusMap statusmap = pSessionManager.getStatusMap(); + if (statusmap == null) + { + return false; + } else + { + return Utils.isStatusPrefix(statusmap, c); + } + } + + public void on001(String s1) + { + int i; + if (pNick != null) + { + pSessionManager.updateNick(pNick, s1, pSessionManager.getSessionList()); + } + pNick = s1; + sendFlaggedMessage(3, s1); + buildHilightRegexp(Utils.escape(s1)); + boolean flag2 = Utils.isBitSet(pOptions.getAuthModes(), net.andchat.donate.Misc.ServerProfile.AuthenticationModes.MODE_NICKSERV); + String s2 = pOptions.getAutojoinList(); + StringBuilder stringbuilder = new StringBuilder(); + if (flag2) + { + i = mColours.getColourForEvent(0x7f0b002c); + Object obj = s(0x7f0a0053); + sendMessage("Status", Utils.addColour(ServerConnection.shouldShowTimeStamps(), Utils.createMessage(ServerConnection.shouldShowTimeStamps(), ((CharSequence) (obj))), i, 0, ((String) (obj)).length()), 1); + obj = pOptions.getNickservPassword(); + stringbuilder.append("PRIVMSG NickServ :identify "); + stringbuilder.append(((String) (obj))).append("\r\n"); + writeToServerInternal(stringbuilder.toString()); + stringbuilder.setLength(0); + Object obj1; + Object obj2; + Pattern pattern; + String as[]; + int j; + boolean flag1; + int k; + int l; + try + { + Thread.sleep(1000L); + } + catch (InterruptedException interruptedexception) { } + } + obj2 = pOptions.getAutorunList(); + if (obj2 != null && ((String) (obj2)).length() > 1) + { + flag1 = true; + } else + { + flag1 = false; + } + if (!flag1) goto _L2; else goto _L1 +_L1: + pattern = Pattern.compile("\\$nick"); + l = "sleep ".length(); + if (((String) (obj2)).indexOf("\n") == -1) goto _L4; else goto _L3 +_L3: + as = ((String) (obj2)).split("\n"); + j = as.length; + i = 0; +_L12: + if (i < j) goto _L5; else goto _L2 +_L2: + if (s2 != null && s2.length() > 0) + { + i = 1; + } else + { + i = 0; + } + if (flag1 && i != 0) + { + try + { + Thread.sleep(1000L); + } + // Misplaced declaration of an exception variable + catch (String s1) { } + } + if (i != 0) + { + stringbuilder.setLength(0); + stringbuilder.append("/j ").append(s2); + CommandParser.handleCommand(stringbuilder.toString(), ServerConnection.this); + } + if (!checkFlagActive(4)) goto _L7; else goto _L6 +_L6: + removeServerConnectionFlag(4); + s1 = pSessionManager.getSessionList(); + j = s1.length; + if (j <= 0) goto _L7; else goto _L8 +_L8: + if (i != 0 || flag1) + { + try + { + Thread.sleep(250L); + } + catch (InterruptedException interruptedexception1) { } + } + stringbuilder.setLength(0); + stringbuilder.append("JOIN "); + i = j - 1; + if (i >= 0) goto _L9; else goto _L7 +_L7: + return; +_L5: + obj2 = as[i]; + if (!TextUtils.isEmpty(((CharSequence) (obj2)))) goto _L11; else goto _L10 +_L10: + i++; + goto _L12 +_L11: + if (!((String) (obj2)).startsWith("sleep ")) + { + break MISSING_BLOCK_LABEL_528; + } + k = Utils.parseInt(((String) (obj2)).substring(l), -1); +label0: + { + if (k != -1) + { + break label0; + } + StringIndexOutOfBoundsException stringindexoutofboundsexception; + boolean flag; + try + { + Log.w("ServerConnection", "sleep value not an int, skipping"); + } + catch (InterruptedException interruptedexception2) { } + // Misplaced declaration of an exception variable + catch (Object obj1) { } + } + goto _L10 + Thread.sleep(k); + goto _L10 + obj1 = obj2; + if (((String) (obj2)).charAt(0) != '/') + { + obj1 = stringbuilder.append("/").append(((String) (obj2))).toString(); + } + obj2 = pattern.matcher(((CharSequence) (obj1))); + if (((Matcher) (obj2)).find()) + { + obj1 = ((Matcher) (obj2)).replaceAll(s1); + } + CommandParser.handleCommand(((String) (obj1)), ServerConnection.this); + stringbuilder.setLength(0); + goto _L10 +_L4: + k = 1; + flag = true; + i = 1; + if (!((String) (obj2)).startsWith("sleep ")) goto _L14; else goto _L13 +_L13: + i = k; + l = Utils.parseInt(((String) (obj2)).substring(l), -1); + i = 0; + flag = false; + k = 0; + if (l == -1) goto _L16; else goto _L15 +_L15: + Thread.sleep(l); + i = k; +_L14: + if (i != 0) + { + obj1 = obj2; + if (((String) (obj2)).charAt(0) != '/') + { + obj1 = stringbuilder.append("/").append(((String) (obj2))).toString(); + } + obj2 = pattern.matcher(((CharSequence) (obj1))); + if (((Matcher) (obj2)).find()) + { + obj1 = ((Matcher) (obj2)).replaceAll(s1); + } + CommandParser.handleCommand(((String) (obj1)), ServerConnection.this); + } + goto _L2 +_L16: + Log.w("ServerConnection", "sleep value not an int, skipping"); + i = k; + goto _L14 + obj1; + goto _L14 +_L9: + obj1 = s1[i]; + if (((String) (obj1)).length() != 0 && Utils.isChannelPrefix(((String) (obj1)).charAt(0))) + { + obj2 = pSessionManager.getKey(((String) (obj1))); + stringbuilder.append(((String) (obj1))); + if (obj2 != null) + { + stringbuilder.append(" ").append(((String) (obj2))); + } + writeToServerInternal(stringbuilder.append("\r\n").toString()); + stringbuilder.setLength(5); + } + i--; + break MISSING_BLOCK_LABEL_441; + stringindexoutofboundsexception; + i = ((flag) ? 1 : 0); + goto _L14 + } + + public void on221(String s1) + { + s1 = s(0x7f0a0069, new Object[] { + s1 + }); + sendMessage(getCurrentSession().getSessionName(), Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s1), 1); + } + + public void on324(String s1, String s2) + { + boolean flag = ServerConnection.shouldShowTimeStamps(); + if (pSessionManager.haveSessionFor(s1)) + { + pSessionManager.getMetadata(s1).modes = s2; + } + String s3 = s(0x7f0a006e, new Object[] { + s2 + }); + int i = mColours.getColourForEvent(0x7f0b0017); + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s3); + Utils.addColour(flag, spannablestringbuilder, i, 0, s3.length()); + pSessionManager.checkForModes(s1, s2, pNick); + sendMessage(s1, spannablestringbuilder, 1); + } + + public void on329(String s1, long l) + { + boolean flag = ServerConnection.shouldShowTimeStamps(); + if (pSessionManager.haveSessionFor(s1)) + { + pSessionManager.getMetadata(s1).creationTime = l; + } + String s2 = s(0x7f0a006d, new Object[] { + ServerConnection.format(l) + }); + int i = mColours.getColourForEvent(0x7f0b0018); + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s2); + Utils.addColour(flag, spannablestringbuilder, i, 0, s2.length()); + sendMessage(s1, spannablestringbuilder, 1); + } + + public void on332(String s1, String s2, boolean flag) + { + boolean flag1 = ServerConnection.shouldShowTimeStamps(); + String s3; + SpannableStringBuilder spannablestringbuilder; + int i; + if (flag) + { + s3 = s(0x7f0a006b, new Object[] { + s1, s2 + }); + } else + { + s3 = s(0x7f0a006a, new Object[] { + s1 + }); + } + i = mColours.getColourForEvent(0x7f0b0016); + spannablestringbuilder = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s3); + Utils.addColour(flag1, spannablestringbuilder, i, 0, s3.length()); + if (flag && s2.length() >= 4) + { + Utils.addLinks(spannablestringbuilder); + } + sendMessage(s1, spannablestringbuilder, 1); + } + + public void on333(String s1, String s2, long l) + { + boolean flag = ServerConnection.shouldShowTimeStamps(); + s2 = s(0x7f0a006c, new Object[] { + s2, ServerConnection.format(l) + }); + int i = mColours.getColourForEvent(0x7f0b0016); + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s2); + Utils.addColour(flag, spannablestringbuilder, i, 0, s2.length()); + sendMessage(s1, spannablestringbuilder, 1); + } + + public void on433() + { + Object obj; + String s1; + s1 = ""; + obj = null; + m433Count; + JVM INSTR tableswitch 0 2: default 36 + // 0 107 + // 1 151 + // 2 195; + goto _L1 _L2 _L3 _L4 +_L1: + sendMessage("Status", Utils.createMessage(ServerConnection.shouldShowTimeStamps(), ((CharSequence) (obj))), 1); + if (s1.length() > 0) + { + writeToServerInternal((new StringBuilder("NICK ")).append(s1).append("\r\n").toString()); + pNick = s1; + sendFlaggedMessage(3, s1); + } + return; +_L2: + s1 = pOptions.getNick(2); + obj = s(0x7f0a006f, new Object[] { + s1 + }); + m433Count = m433Count + 1; + continue; /* Loop/switch isn't completed */ +_L3: + s1 = pOptions.getNick(3); + obj = s(0x7f0a006f, new Object[] { + s1 + }); + m433Count = m433Count + 1; + continue; /* Loop/switch isn't completed */ +_L4: + obj = s(0x7f0a0070); + if (true) goto _L1; else goto _L5 +_L5: + } + + public void onChannelPrivmsg(String s1, String s2, String s3, String s4, String s5, int i) + { + StringBuilder stringbuilder; + boolean flag; + int k; + int l; + boolean flag1; + k = 0; + flag = false; + l = s2.length(); + flag1 = ServerConnection.shouldShowTimeStamps(); + stringbuilder = reusableSB; + stringbuilder.setLength(0); + i; + JVM INSTR tableswitch 0 2: default 56 + // 0 446 + // 1 57 + // 2 692; + goto _L1 _L2 _L3 _L4 +_L1: + return; +_L3: + boolean flag2; + flag2 = Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREF_DEBUG_SHOW_IGNORED); + i = 0; + if (!mIgnores.shouldIgnore(s3, s4, 1)) + { + break; /* Loop/switch isn't completed */ + } + if (!flag2) + { + continue; /* Loop/switch isn't completed */ + } + i = 1; + break; /* Loop/switch isn't completed */ + if (true) goto _L1; else goto _L5 +_L5: + s3 = pSessionManager.getNickStatus(s2, s1); + int k1 = pSessionManager.getNickColor(s2, s1); + stringbuilder.ensureCapacity(s2.length() + 2 + 2 + s5.length() + 1); + stringbuilder.append("<").append(s3).append(s2).append("> ").append(s5); + s4 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), stringbuilder); + k = s3.length() + l; + if (pHilightMatcher.reset(s5).find()) + { + flag = true; + Utils.addColourAndBold(flag1, s4, mColours.getColourForEvent(0x7f0b0014), 1, k + 1); + int i1 = mColours.getColourForEvent(0x7f0b0013); + Utils.addColour(flag1, s4, i1, 0, 1); + Utils.addColour(flag1, s4, i1, k + 1, k + 2); + } else + { + int j1 = mColours.getColourForEvent(0x7f0b0013); + Utils.addColour(flag1, s4, j1, 0, 1); + Utils.addColour(flag1, s4, j1, k + 1, k + 2); + Utils.addColour(flag1, s4, k1, 1, s3.length() + 1 + s2.length()); + } + if (s5.length() >= 4) + { + Utils.addLinks(s4); + } + if (flag && shouldNotify()) + { + makeNotif(s4.toString(), s1, s1, 1); + } + if (flag2 && i != 0) + { + s4.append(" [IGNORED]"); + } + s2 = ServerConnection.this; + if (flag) + { + i = 3; + } else + { + i = 2; + } + s2.sendMessage(s1, s4, i); + return; +_L2: + flag2 = Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREF_DEBUG_SHOW_IGNORED); + i = 0; + if (!mIgnores.shouldIgnore(s3, s4, 1)) + { + break; /* Loop/switch isn't completed */ + } + if (!flag2) + { + continue; /* Loop/switch isn't completed */ + } + i = 1; + break; /* Loop/switch isn't completed */ + if (true) goto _L1; else goto _L6 +_L6: + stringbuilder.append("* ").append(s2).append(" ").append(s5); + s3 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), stringbuilder); + int j; + if (pHilightMatcher.reset(s5).find()) + { + k = mColours.getColourForEvent(0x7f0b0014); + j = 1; + Utils.addColourAndBold(flag1, s3, k, 2, s2.length() + 2); + } else + { + Utils.addColour(flag1, s3, pSessionManager.getNickColor(s2, s1), 2, s2.length() + 2); + j = k; + } + if (s5.length() >= 4) + { + Utils.addLinks(s3); + } + if (j != 0 && shouldNotify()) + { + makeNotif(s3.toString(), s1, s1, 1); + } + if (flag2 && i != 0) + { + s3.append(" [IGNORED]"); + } + s2 = ServerConnection.this; + if (j != 0) + { + i = 3; + } else + { + i = 2; + } + s2.sendMessage(s1, s3, i); + return; +_L4: + s3 = s2; + if (s2 == null) + { + s3 = "*"; + } + stringbuilder.append(s3).append(" ").append(s5); + s2 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), stringbuilder); + if (s5.length() >= 4) + { + Utils.addLinks(s2); + } + sendMessage(s1, s2, 2); + return; + } + + public void onCtcpRequest(String s1, String s2, String s3, String s4) + { +label0: + { + boolean flag1 = Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREF_DEBUG_SHOW_IGNORED); + boolean flag = false; + if (mIgnores.shouldIgnore(s2, s3, 8)) + { + if (!flag1) + { + break label0; + } + flag = true; + } + boolean flag2 = ServerConnection.shouldShowTimeStamps(); + s2 = s4.toUpperCase(); + s3 = s(0x7f0a0066, new Object[] { + s2, s1 + }); + int i = mColours.getColourForEvent(0x7f0b0027); + s4 = Utils.createMessage(flag2, s3); + Utils.addColour(flag2, s4, i, 0, s3.length()); + if (flag && flag1) + { + s4.append(" [IGNORED]"); + } + sendMessage(getCurrentSession().getSessionName(), s4, 1); + if (s2.equals("VERSION")) + { + s2 = new StringBuilder(); + writeToServerInternal(s2.append("NOTICE ").append(s1).append(" :\001VERSION ").append("AndChat").append(" ").append("1.4.3.2").append(" http://www.andchat.net\001\r\n").toString()); + } + } + } + + public void onError(CharSequence charsequence) + { + sendMessage("Status", Utils.createMessage(ServerConnection.shouldShowTimeStamps(), charsequence), 1); + } + + public void onISupport(String s1) + { + int i = s1.indexOf("PREFIX="); + if (i == -1) + { + return; + } else + { + String s2 = s1.substring(i + 8, s1.indexOf(" ", i)); + i = s2.indexOf(')'); + s1 = s2.substring(0, i); + s2 = s2.substring(i + 1); + pSessionManager.buildStatusMap(s1, s2); + return; + } + } + + public void onInvite(String s1, String s2, String s3) + { + boolean flag = ServerConnection.shouldShowTimeStamps(); + s1 = s(0x7f0a0057, new Object[] { + s1, s2, s3 + }); + int k = s1.length(); + s2 = s(0x7f0a0058); + int l = s2.length(); + int i = mColours.getColourForEvent(0x7f0b001b); + s1 = (new StringBuilder(s1)).append(s2); + s2 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s1); + Utils.addColour(flag, s2, i, 0, s1.length() - l); + int j = k + 1; + i = j; + if (flag) + { + i = j + (ServerConnection.sTimeLength + 3); + } + k += l; + j = k; + if (flag) + { + j = k + (ServerConnection.sTimeLength + 3); + } + s2.setSpan(new net.andchat.donate.Misc.Utils.ChannelSpan(s3), i, j, 33); + sendMessage(getCurrentSession().getSessionName(), s2, 1); + } + + public void onInviteSent(String s1, String s2) + { + boolean flag = ServerConnection.shouldShowTimeStamps(); + s2 = s(0x7f0a0056, new Object[] { + s2, s1 + }); + int i = mColours.getColourForEvent(0x7f0b001c); + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s2); + Utils.addColour(flag, spannablestringbuilder, i, 0, s2.length()); + sendMessage(s1, spannablestringbuilder, 1); + } + + public void onKill(String s1, String s2, String s3, String s4) + { + if (s1.equals(pNick)) + { + boolean flag = ServerConnection.shouldShowTimeStamps(); + s1 = s(0x7f0a0067, new Object[] { + s2, s4 + }); + int i = mColours.getColourForEvent(0x7f0b002b); + s2 = Utils.createMessage(flag, s1); + Utils.addColour(flag, s2, i, 0, s1.length()); + sendToAll(s2, 1); + deactivateAllAndUpdateUi(false); + return; + } else + { + onUserQuit(s1, null, s(0x7f0a0068, new Object[] { + s2, s4 + })); + return; + } + } + + public void onMessageReceived(String s1) + { + if (Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREF_DEBUG_LOG_ALL_MESSAGES)) + { + logMessage("_DEBUG_", s1, true); + } + } + + public void onModeChanged(String s1, String s2, String s3) + { + if (s3 == null) + { + s3 = s(0x7f0a005a, new Object[] { + s2, s1 + }); + sendMessage("Status", Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s3), 1); + } else + { + boolean flag = ServerConnection.shouldShowTimeStamps(); + s3 = s(0x7f0a005b, new Object[] { + s2, s3 + }); + int i = mColours.getColourForEvent(0x7f0b001d); + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s3); + Utils.addColour(flag, spannablestringbuilder, i, 0, s3.length()); + sendMessage(s1, spannablestringbuilder, 1); + } + pSessionManager.checkForModes(s1, s2, pNick); + } + + public void onMotdEnd(String s1) + { + if (!Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREFS_SKIP_MOTD) || checkFlagActive(2)) + { + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s1); + if (s1.length() >= 4) + { + Utils.addLinks(spannablestringbuilder); + } + sendMessage("Status", spannablestringbuilder, 1); + (new Thread(removeMotdFlag)).start(); + } + } + + public void onMotdLine(String s1) + { + if (!Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREFS_SKIP_MOTD) || checkFlagActive(2)) + { + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s1); + if (s1.length() >= 4) + { + Utils.addLinks(spannablestringbuilder); + } + sendMessage("Status", spannablestringbuilder, 1); + } + } + + public void onMotdStart(String s1) + { + if (!Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREFS_SKIP_MOTD) || checkFlagActive(2)) + { + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s1); + if (s1.length() >= 4) + { + Utils.addLinks(spannablestringbuilder); + } + sendMessage("Status", spannablestringbuilder, 1); + return; + } else + { + boolean flag = ServerConnection.shouldShowTimeStamps(); + int i = mColours.getColourForEvent(0x7f0b002c); + s1 = s(0x7f0a004f); + SpannableStringBuilder spannablestringbuilder1 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s1); + Utils.addColour(flag, spannablestringbuilder1, i, 0, s1.length()); + sendMessage("Status", spannablestringbuilder1, 1); + return; + } + } + + public void onNamesList(final String channel, String s1) + { + if (!checkFlagActive(1) && pSessionManager.haveSessionFor(channel)) + { + (s1. new Thread() { + + final ParserImpl this$1; + private final String val$channel; + private final String val$names; + + public void run() + { + pSessionManager.addNewNames(pNick, channel, names); + } + + + { + this$1 = final_parserimpl; + channel = s1; + names = String.this; + super(); + } + }).start(); + return; + } + Object obj = new StringBuilder(s(0x7f0a0059, new Object[] { + channel + })); + if (s1.length() > 0) + { + ((StringBuilder) (obj)).append(" ").append(s1); + } + s1 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), ((CharSequence) (obj))); + obj = ServerConnection.this; + if (!pSessionManager.haveSessionFor(channel)) + { + channel = "Status"; + } + ((ServerConnection) (obj)).sendMessage(channel, s1, 1); + } + + public void onNetworkName(String s1) + { + } + + public void onNickChanged(String s1, String s2, String s3, String s4) + { + boolean flag = s1.equals(pNick); + if (flag) + { + pNick = s2; + buildHilightRegexp(Utils.escape(s2)); + sendFlaggedMessage(3, s2); + } + mIgnores.nickChanged(s1, s2, s3, s4); + s4 = pSessionManager.getUserSessions(s1); + SpannableStringBuilder spannablestringbuilder; + int i; + boolean flag1; + if (flag) + { + s3 = s(0x7f0a0064, new Object[] { + s2 + }); + } else + { + s3 = s(0x7f0a0065, new Object[] { + s1, s2 + }); + } + flag1 = ServerConnection.shouldShowTimeStamps(); + spannablestringbuilder = Utils.createMessage(flag1, s3); + if (flag) + { + i = mColours.getColourForEvent(0x7f0b0025); + } else + { + i = mColours.getColourForEvent(0x7f0b0026); + } + Utils.addColour(flag1, spannablestringbuilder, i, 0, s3.length()); + i = s4.length - 1; + do + { + if (i < 0) + { + pSessionManager.updateNick(s1, s2, s4); + if (flag) + { + sendMessage("Status", spannablestringbuilder, 1); + } + if (pSessionManager.updateSessionName(s1, s2)) + { + sendFlaggedMessage(6, null); + } + if (!Utils.isChannelPrefix(s1.charAt(0)) && pSessionManager.haveSessionFor(s2)) + { + s1 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s3); + Utils.addColour(flag1, s1, mColours.getColourForEvent(0x7f0b0026), 0, s3.length()); + sendMessage(s2, s1, 1); + } + return; + } + String s5 = s4[i]; + sendMessage(s5, new SpannableString(spannablestringbuilder), 1); + i--; + } while (true); + } + + public void onNotice(String s1, String s2, String s3, String s4, String s5, String s6) + { + if (s2 != null) goto _L2; else goto _L1 +_L1: + s2 = null; + s1 = s2; + if (s6 != null) + { + s1 = s2; + if (Utils.isChannelPrefix(s6.charAt(0))) + { + s1 = s6; + } + } + s3 = ServerConnection.this; + s2 = s1; + if (s1 == null) + { + s2 = "Status"; + } + s3.sendMessage(s2, Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s5), 1); +_L4: + return; +_L2: + boolean flag; + boolean flag1; + if ((s1 == null || s1 != null && s1.equals(pNick)) && s6 == null) + { + flag1 = Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREF_DEBUG_SHOW_IGNORED); + flag = false; + if (!mIgnores.shouldIgnore(s3, s4, 4)) + { + break; /* Loop/switch isn't completed */ + } + if (!flag1) + { + continue; /* Loop/switch isn't completed */ + } + flag = true; + break; /* Loop/switch isn't completed */ + } + break MISSING_BLOCK_LABEL_318; + if (true) goto _L4; else goto _L3 +_L3: + int j = s5.length(); + int i = s2.length(); + boolean flag2 = ServerConnection.shouldShowTimeStamps(); + s1 = new StringBuilder(j + 5 + i); + s1.append("-").append(s2).append("-: ").append(s5); + j = mColours.getColourForEvent(0x7f0b0019); + s1 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s1); + Utils.addColour(flag2, s1, j, 0, 1); + Utils.addColour(flag2, s1, j, i + 1, i + 4); + if (s5.length() >= 4) + { + Utils.addLinks(s1); + } + if (shouldNotify()) + { + makeNotif(s1.toString(), s2, getCurrentSession().getSessionName(), 16); + } + if (flag && flag1) + { + s1.append(" [IGNORED]"); + } + sendMessage(getCurrentSession().getSessionName(), s1, 2); + return; + flag1 = Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREF_DEBUG_SHOW_IGNORED); + flag = false; + if (!mIgnores.shouldIgnore(s3, s4, 4)) + { + break; /* Loop/switch isn't completed */ + } + if (!flag1) + { + continue; /* Loop/switch isn't completed */ + } + flag = true; + break; /* Loop/switch isn't completed */ + if (true) goto _L4; else goto _L5 +_L5: + boolean flag3 = ServerConnection.shouldShowTimeStamps(); + int j1 = s5.length(); + int l = s2.length(); + int i1 = s1.length(); + byte byte0; + int k; + if (s6 != null) + { + byte0 = 1; + } else + { + byte0 = 0; + } + if (byte0 != 0) + { + k = s6.length(); + } else + { + k = 0; + } + s3 = new StringBuilder(k + (l + 5 + i1 + j1)); + s3.append("-").append(s2).append("/"); + if (byte0 != 0) + { + s3.append(s6); + } + s3.append(s1).append("-: ").append(s5); + k = mColours.getColourForEvent(0x7f0b001a); + s4 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s3); + Utils.addColour(flag3, s4, k, 1, s3.length() - j1 - 3); + j1 = mColours.getColourForEvent(0x7f0b0019); + Utils.addColour(flag3, s4, j1, 0, 1); + if (byte0 != 0) + { + k = 3; + } else + { + k = 2; + } + k = l + i1 + k; + if (byte0 != 0) + { + byte0 = 3; + } else + { + byte0 = 2; + } + Utils.addColour(flag3, s4, j1, k, k + byte0); + if (s5.length() >= 4) + { + Utils.addLinks(s4); + } + if (shouldNotify()) + { + makeNotif(s4.toString(), s2, s1, 4); + } + if (flag && flag1) + { + s4.append(" [IGNORED]"); + } + sendMessage(s1, s4, 2); + return; + } + + public void onNumericMessage(String s1, CharSequence charsequence, int i) + { + boolean flag1; + boolean flag2; + flag1 = false; + flag2 = false; + i; + JVM INSTR lookupswitch 17: default 152 + // 315: 220 + // 352: 269 + // 366: 518 + // 401: 783 + // 471: 658 + // 472: 680 + // 473: 658 + // 474: 658 + // 475: 658 + // 476: 680 + // 477: 680 + // 478: 680 + // 482: 680 + // 900: 859 + // 903: 859 + // 904: 859 + // 905: 859; + goto _L1 _L2 _L3 _L4 _L5 _L6 _L7 _L6 _L6 _L6 _L7 _L7 _L7 _L7 _L8 _L8 _L8 _L8 +_L1: + int j; + boolean flag; + flag = flag2; + j = ((flag1) ? 1 : 0); +_L19: + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), charsequence); + if (flag) + { + Utils.addColour(ServerConnection.shouldShowTimeStamps(), spannablestringbuilder, j, 0, charsequence.length()); + } + charsequence = ServerConnection.this; + if (s1 == null || s1.length() == 0) + { + s1 = "Status"; + } + charsequence.sendMessage(s1, spannablestringbuilder, 1); +_L17: + return; +_L2: + if (checkFlagActive(4)) + { + removeServerConnectionFlag(4); + s1 = charsequence.toString(); + s1 = s1.substring(0, s1.indexOf(' ')); + j = ((flag1) ? 1 : 0); + flag = flag2; + continue; /* Loop/switch isn't completed */ + } + continue; /* Loop/switch isn't completed */ +_L3: + String s2; + String s5; + String s6; + String s8; + s8 = charsequence.toString(); + s2 = null; + s5 = null; + s6 = null; + i = s8.indexOf(' '); + j = 0; +_L15: + if (j >= 4) + { + pSessionManager.setIdentAndHost(s1, s2, s6, s5); + if (checkFlagActive(4)) + { + j = ((flag1) ? 1 : 0); + flag = flag2; + continue; /* Loop/switch isn't completed */ + } + continue; /* Loop/switch isn't completed */ + } + j; + JVM INSTR tableswitch 0 3: default 376 + // 0 385 + // 1 421 + // 2 455 + // 3 469; + goto _L9 _L10 _L11 _L12 _L13 +_L9: + break; /* Loop/switch isn't completed */ +_L10: + break; /* Loop/switch isn't completed */ +_L16: + j++; + if (true) goto _L15; else goto _L14 +_L14: + s1 = s8.substring(0, i); + i = s8.indexOf(' ', i + 1); + s6 = s8.substring(s1.length() + 1, i); + goto _L16 +_L11: + s5 = s8.substring(i + 1, s8.indexOf(' ', i + 1)); + i = s8.indexOf(' ', i + 1); + goto _L16 +_L12: + i = s8.indexOf(' ', i + 1); + goto _L16 +_L13: + String s7 = s8.substring(i + 1, s8.indexOf(' ', i + 1)); + s2 = s7; + goto _L16 + StringIndexOutOfBoundsException stringindexoutofboundsexception; + stringindexoutofboundsexception; + Log.e("ServerConnection", s8, stringindexoutofboundsexception); + onUnparsableMessage(s8); + goto _L16 +_L4: + s1 = charsequence.toString(); + s1 = s1.substring(0, s1.indexOf(' ', 1)).trim(); + boolean flag3 = checkFlagActive(1); + if (flag3 || pSessionManager.haveSessionFor(s1)) + { + sendCount(s1); + writeToServerInternal((new StringBuilder("WHO ")).append(s1).append("\r\n").toString()); + if (flag3) + { + (new Thread(removeNameFlag)).start(); + return; + } + } else + { + if (!pSessionManager.haveSessionFor(s1)) + { + s1 = "Status"; + } + j = ((flag1) ? 1 : 0); + flag = flag2; + continue; /* Loop/switch isn't completed */ + } + if (true) goto _L17; else goto _L6 +_L6: + s1 = getCurrentSession().getSessionName(); + j = ((flag1) ? 1 : 0); + flag = flag2; + continue; /* Loop/switch isn't completed */ +_L7: + String s3 = charsequence.toString(); + j = s3.indexOf(' ', 1); + if (j != -1) + { + s3 = s3.substring(0, j); + } + j = ((flag1) ? 1 : 0); + flag = flag2; + s1 = s3; + if (i == 477) + { + j = ((flag1) ? 1 : 0); + flag = flag2; + s1 = s3; + if (!pSessionManager.haveSessionFor(s3)) + { + s1 = getCurrentSession().getSessionName(); + j = ((flag1) ? 1 : 0); + flag = flag2; + } + } + continue; /* Loop/switch isn't completed */ +_L5: + String s4; + if (charsequence instanceof String) + { + s4 = (String)charsequence; + } else + { + s4 = charsequence.toString(); + } + s4 = s4.substring(0, s4.indexOf(' ')); + j = ((flag1) ? 1 : 0); + flag = flag2; + if (pSessionManager.haveSessionFor(s4)) + { + s1 = s4; + j = ((flag1) ? 1 : 0); + flag = flag2; + } + continue; /* Loop/switch isn't completed */ +_L8: + j = mColours.getColourForEvent(0x7f0b002c); + flag = true; + writeToServerInternal("CAP END\r\n"); + if (true) goto _L19; else goto _L18 +_L18: + } + + public void onPing(String s1) + { + writeToServerInternal((new StringBuilder("PONG :")).append(s1).append("\r\n").toString()); + } + + public void onPong(String s1) + { + if (!checkFlagActive(8)) + { + return; + } else + { + removeServerConnectionFlag(8); + s1 = (new StringBuilder("Pong: ")).append(s1).toString(); + sendMessage("Status", Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s1), 1); + return; + } + } + + public void onPrivatePrivmsg(String s1, String s2, String s3, String s4, int i) + { + boolean flag; + boolean flag1; + flag1 = Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREF_DEBUG_SHOW_IGNORED); + flag = false; + if (!mIgnores.shouldIgnore(s2, s3, 2)) goto _L2; else goto _L1 +_L1: + if (!flag1) goto _L4; else goto _L3 +_L3: + flag = true; +_L2: + if (!pSessionManager.haveSessionFor(s1)) + { + pSessionManager.addSession(s1, pNick, 2); + sendFlaggedMessage(2, s1); + boolean flag2 = ServerConnection.shouldShowTimeStamps(); + s2 = new SpannableStringBuilder(); + s2.append(Utils.getPmStart(mService, s1, flag2)); + if (flag && flag1) + { + s2.append(" [IGNORED]"); + } + sendMessage(s1, s2, 2); + } + pSessionManager.setMarked(s1, true); + i; + JVM INSTR tableswitch 0 1: default 180 + // 0 349 + // 1 181; + goto _L4 _L5 _L6 +_L4: + return; +_L6: + i = s1.length(); + int j = s4.length(); + boolean flag3 = ServerConnection.shouldShowTimeStamps(); + s2 = new StringBuilder(i + 4 + j); + s2.append("<").append(s1).append("> ").append(s4); + s2 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s2); + int k = mColours.getColourForEvent(0x7f0b0013); + Utils.addColour(flag3, s2, k, 0, 1); + Utils.addColour(flag3, s2, k, i + 1, i + 2); + if (j >= 4) + { + Utils.addLinks(s2); + } + if (shouldNotify()) + { + makeNotif(s2.toString(), s1, s1, 2); + } + if (flag && flag1) + { + s2.append(" [IGNORED]"); + } + sendMessage(s1, s2, 2); + return; +_L5: + s2 = new StringBuilder(); + s2.append("* ").append(s1).append(" ").append(s4); + s2 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s2); + if (s4.length() >= 4) + { + Utils.addLinks(s2); + } + if (flag && flag1) + { + s2.append(" [IGNORED]"); + } + sendMessage(s1, s2, 2); + if (shouldNotify()) + { + makeNotif(s2.toString(), s1, s1, 2); + return; + } + if (true) goto _L4; else goto _L7 +_L7: + } + + public void onSaslMessage(String s1, String s2, String as[]) + { + int i; + boolean flag; + boolean flag1; + flag1 = false; + int j; + if (as != null) + { + i = 1; + } else + { + i = 0; + } + if (!s1.equals("CAP")) goto _L2; else goto _L1 +_L1: + flag = flag1; + if (s2 == null) goto _L4; else goto _L3 +_L3: + flag = flag1; + if (i == 0) goto _L4; else goto _L5 +_L5: + flag = flag1; + if (as.length < 2) goto _L4; else goto _L6 +_L6: + flag = flag1; + if (!as[0].equals("ACK")) goto _L4; else goto _L7 +_L7: + j = as.length; + flag = false; + i = 1; +_L13: + if (i < j) goto _L9; else goto _L8 +_L8: + if (flag) + { + writeToServerInternal("AUTHENTICATE PLAIN\r\n"); + } +_L4: + if (!flag) + { + writeToServerInternal("CAP END\r\n"); + } + return; +_L9: + i; + JVM INSTR tableswitch 1 1: default 136 + // 1 170; + goto _L10 _L11 +_L10: + flag1 = as[i].equals("sasl"); + flag = flag1; + if (flag1) goto _L8; else goto _L12 +_L12: + flag = flag1; +_L15: + i++; + goto _L13 +_L11: + flag1 = as[i].equals(":sasl"); + flag = flag1; + if (!flag1) goto _L15; else goto _L14 +_L14: + flag = flag1; + goto _L8 +_L2: + flag = flag1; + if (!s1.equals("AUTHENTICATE")) goto _L4; else goto _L16 +_L16: + flag = flag1; + if (!s2.equals("+")) goto _L4; else goto _L17 +_L17: + as = pOptions.getSASLUsername(); + s2 = pOptions.getCharset(); + s1 = (byte[])null; + try + { + s1 = (new String((new StringBuilder(String.valueOf(as))).append("\0").append(as).append("\0").append(pOptions.getSASLPassword()).toString())).getBytes(s2); + } + // Misplaced declaration of an exception variable + catch (String s1) + { + s1 = (new String((new StringBuilder(String.valueOf(as))).append("\0").append(as).append("\0").append(pOptions.getSASLPassword()).toString())).getBytes(); + } + s2 = new String(Base64.encode(s1, 0, s1.length, 4), s2); + s1 = s2; +_L18: + writeToServerInternal((new StringBuilder("AUTHENTICATE ")).append(s1).toString()); + flag = true; + goto _L4 + s2; + s1 = new String(Base64.encode(s1, 0, s1.length, 4)); + goto _L18 + } + + public void onTopicChanged(String s1, String s2, String s3) + { + int i; + boolean flag; + if (s3 != null && s3.length() > 0) + { + i = 1; + } else + { + i = 0; + } + if (i != 0) + { + s2 = s(0x7f0a0055, new Object[] { + s3, s2 + }); + } else + { + s2 = s(0x7f0a0054, new Object[] { + s2 + }); + } + flag = ServerConnection.shouldShowTimeStamps(); + i = mColours.getColourForEvent(0x7f0b0015); + s3 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s2); + Utils.addColour(flag, s3, i, 0, s2.length()); + Utils.addLinks(s3); + sendMessage(s1, s3, 1); + } + + public void onUnknownMessage(CharSequence charsequence) + { + charsequence = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), charsequence); + sendMessage("Status", charsequence, 1); + } + + public void onUnparsableMessage(String s1) + { + if (Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREF_DEBUG_LOG_UNPARSEABLE)) + { + logMessage("_unparseable_", s1, true); + } + s1 = s(0x7f0a007c, new Object[] { + s1 + }); + SpannableStringBuilder spannablestringbuilder = new SpannableStringBuilder(s1); + Utils.addColour(false, spannablestringbuilder, Colours.getInstance().getColourForEvent(0x7f0b002c), 0, s1.length()); + onUnknownMessage(spannablestringbuilder); + } + + public void onUserJoined(String s1, String s2, String s3, String s4) + { + if (s2.equals(pNick)) + { + pSessionManager.addSession(s1, s2, 1); + sendFlaggedMessage(1, s1); + writeToServerInternal((new StringBuilder("MODE ")).append(s1).append("\r\n").toString()); + if (!pSessionManager.getActive(s1)) + { + pSessionManager.setActive(s1, true); + sendFlaggedMessage(6, null); + } + } else + { + pSessionManager.addName(s1, s2, s3, s4); + if (!Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREFS_HIDE_MESSAGES)) + { + boolean flag = ServerConnection.shouldShowTimeStamps(); + s2 = s(0x7f0a005c, new Object[] { + s2, s4 + }); + int i = mColours.getColourForEvent(0x7f0b001e); + s3 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s2); + Utils.addColour(flag, s3, i, 0, s2.length()); + sendMessage(s1, s3, 1); + return; + } + } + } + + public void onUserKicked(String s1, String s2, String s3, String s4) + { + pSessionManager.removeName(s1, s2); + boolean flag = ServerConnection.shouldShowTimeStamps(); + if (s2.equals(pNick)) + { + pSessionManager.setActive(s1, false); + sendFlaggedMessage(6, null); + s2 = s(0x7f0a005f, new Object[] { + s1, s3, s4 + }); + int i = mColours.getColourForEvent(0x7f0b0020); + s3 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s2); + Utils.addColour(flag, s3, i, 0, s2.length()); + sendMessage(s1, s3, 2); + pSessionManager.setActive(s1, false); + pSessionManager.removeAllNames(s1); + sendFlaggedMessage(5, s1); + if (Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREFS_REJOIN_ON_KICK)) + { + s2 = s(0x7f0a0060); + int j = mColours.getColourForEvent(0x7f0b0021); + s3 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s2); + Utils.addColour(flag, s3, j, 0, s2.length()); + sendMessage(s1, s3, 1); + pLogs.close(s1); + (s1. new Thread() { + + final ParserImpl this$1; + private final String val$chan; + private final String val$key; + + public void run() + { + StringBuilder stringbuilder; + try + { + Thread.sleep(5000L); + } + catch (InterruptedException interruptedexception) { } + try + { + stringbuilder = new StringBuilder(); + if (key != null) + { + stringbuilder.append("JOIN ").append(chan).append(" ").append(key).append("\r\n"); + writeToServerInternal(stringbuilder.toString()); + return; + } + } + catch (Exception exception) + { + return; + } + writeToServerInternal(stringbuilder.append("JOIN ").append(chan).append("\r\n").toString()); + return; + } + + + { + this$1 = final_parserimpl; + key = s1; + chan = String.this; + super(); + } + }).start(); + } + return; + } + if (s3.equals(pNick)) + { + s2 = s(0x7f0a0061, new Object[] { + s2, s1, s4 + }); + int k = mColours.getColourForEvent(0x7f0b0022); + s3 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s2); + Utils.addColour(flag, s3, k, 0, s2.length()); + sendMessage(s1, s3, 1); + return; + } else + { + s2 = s(0x7f0a0062, new Object[] { + s2, s3, s4 + }); + int l = mColours.getColourForEvent(0x7f0b0023); + s3 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s2); + Utils.addColour(flag, s3, l, 0, s2.length()); + sendMessage(s1, s3, 1); + return; + } + } + + public void onUserParted(String s1, String s2, String s3, String s4) + { + if (s2.equals(pNick)) + { + pLogs.close(s1); + pSessionManager.removeSession(s1); + sendFlaggedMessage(4, s1); + } else + { + pSessionManager.removeName(s1, s2); + if (!Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREFS_HIDE_MESSAGES)) + { + int i; + if (s4 != null && s4.length() > 0) + { + i = 1; + } else + { + i = 0; + } + if (i != 0) + { + s2 = s(0x7f0a005e, new Object[] { + s2, s3, s4 + }); + } else + { + s2 = s(0x7f0a005d, new Object[] { + s2, s3 + }); + } + i = mColours.getColourForEvent(0x7f0b001f); + s3 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s2); + Utils.addColour(ServerConnection.shouldShowTimeStamps(), s3, i, 0, s2.length()); + sendMessage(s1, s3, 1); + return; + } + } + } + + public void onUserQuit(String s1, String s2, String s3) + { + int i = 0; + if (Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREFS_HIDE_MESSAGES)) + { + pSessionManager.getQuitSessions(s1); + } else + { + if (s1.equals(pNick)) + { + deactivateAllAndUpdateUi(false); + return; + } + s2 = s(0x7f0a0063, new Object[] { + s1, s3 + }); + s1 = pSessionManager.getQuitSessions(s1); + boolean flag = ServerConnection.shouldShowTimeStamps(); + int j = mColours.getColourForEvent(0x7f0b0024); + s3 = Utils.createMessage(flag, s2); + Utils.addColour(flag, s3, j, 0, s2.length()); + j = s1.length; + while (i < j) + { + s2 = s1[i]; + sendMessage(s2, new SpannableString(s3), 1); + i++; + } + } + } + + public void onWallops(String s1, String s2, String s3) + { + boolean flag = ServerConnection.shouldShowTimeStamps(); + int i = s1.length(); + int j = s3.length(); + s2 = new StringBuilder(i + j + 12); + s2.append("-").append(s1).append("/").append("Wallops-: ").append(s3); + int k = s2.length(); + int l = Colours.getInstance().getColourForEvent(0x7f0b001a); + s1 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), s2); + Utils.addColour(flag, s1, l, 0, k - j - 2); + l = mColours.getColourForEvent(0x7f0b0013); + Utils.addColour(flag, s1, l, 0, 1); + Utils.addColour(flag, s1, l, i + 9, k - j - 2); + sendMessage(getCurrentSession().getSessionName(), s1, 1); + } + + protected void reset() + { + super.reset(); + m433Count = 0; + reusableSB.setLength(0); + } + + public String stripColours(String s1) + { + return mColourRemover.reset(s1).replaceAll(""); + } + + + private ParserImpl() + { + this$0 = ServerConnection.this; + super(); + m433Count = 0; + reusableSB = new StringBuilder(); + } + + ParserImpl(ParserImpl parserimpl) + { + this(); + } + } + + private final class TrustAllSSL + implements X509TrustManager + { + + final ServerConnection this$0; + + public void checkClientTrusted(X509Certificate ax509certificate[], String s1) + { + } + + public void checkServerTrusted(X509Certificate ax509certificate[], String s1) + { + s1 = ax509certificate[0]; + ax509certificate = new StringBuilder(300); + String s2 = s(0x7f0a0044); + ax509certificate.append(s2); + ax509certificate.append(s(0x7f0a0045, new Object[] { + s1.getSubjectDN().toString(), s1.getIssuerDN().toString(), s1.getNotBefore().toGMTString(), s1.getNotAfter().toGMTString(), s1.getSigAlgName().toString() + })); + boolean flag = ServerConnection.shouldShowTimeStamps(); + int i = mColours.getColourForEvent(0x7f0b002d); + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), ax509certificate); + Utils.addColour(flag, spannablestringbuilder, i, 0, s2.length()); + sendMessage("Status", spannablestringbuilder, 1); + try + { + s1.checkValidity(); + return; + } + // Misplaced declaration of an exception variable + catch (String s1) + { + ax509certificate.setLength(0); + ax509certificate.append(s(0x7f0a0046)); + i = mColours.getColourForEvent(0x7f0b002e); + s1 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), ax509certificate); + Utils.addColour(flag, s1, i, 0, ax509certificate.length()); + sendMessage("Status", s1, 1); + return; + } + // Misplaced declaration of an exception variable + catch (String s1) + { + ax509certificate.setLength(0); + } + ax509certificate.append(s(0x7f0a0047)); + i = mColours.getColourForEvent(0x7f0b002f); + s1 = Utils.createMessage(ServerConnection.shouldShowTimeStamps(), ax509certificate); + Utils.addColour(flag, s1, i, 0, ax509certificate.length()); + sendMessage("Status", s1, 1); + } + + public X509Certificate[] getAcceptedIssuers() + { + return null; + } + + private TrustAllSSL() + { + this$0 = ServerConnection.this; + super(); + } + + TrustAllSSL(TrustAllSSL trustallssl) + { + this(); + } + } + + + static final Calendar sCal = Calendar.getInstance(); + private static final StringBuilder sTime; + public static final int sTimeLength; + static int sTimeout; + public final int id; + private Colours mColours; + private Connection mConnection; + private Ignores mIgnores; + private long mLastNotif; + private char mLogBuf[]; + private boolean mLogsEnabled; + MessageSender mMessageSender; + private int mNotifCount; + private final AtomicBoolean mReconnecting = new AtomicBoolean(false); + private final IRCService mService; + private Handler mUserCommandsH; + private HandlerThread mUserCommandsHT; + long pConnectTime; + boolean pConnectionChanged; + int pFlags; + Matcher pHilightMatcher; + final String pLabel; + final LogManager pLogs = new LogManager(); + String pNick; + final ServerProfile pOptions; + ParserImpl pParser; + int pReconnectCount; + final SessionManager pSessionManager; + int pState; + final Runnable removeMotdFlag = new Runnable() { + + final ServerConnection this$0; + + public void run() + { + this; + JVM INSTR monitorenter ; + Exception exception; + try + { + wait(800L); + } + catch (InterruptedException interruptedexception) { } + this; + JVM INSTR monitorexit ; + removeServerConnectionFlag(2); + return; + exception; + this; + JVM INSTR monitorexit ; + throw exception; + } + + + { + this$0 = ServerConnection.this; + super(); + } + }; + final Runnable removeNameFlag = new Runnable() { + + final ServerConnection this$0; + + public void run() + { + this; + JVM INSTR monitorenter ; + Exception exception; + try + { + wait(600L); + } + catch (InterruptedException interruptedexception) { } + this; + JVM INSTR monitorexit ; + removeServerConnectionFlag(1); + return; + exception; + this; + JVM INSTR monitorexit ; + throw exception; + } + + + { + this$0 = ServerConnection.this; + super(); + } + }; + + ServerConnection(int i, ServerProfile serverprofile, MessageSender messagesender, SessionManager sessionmanager, IRCService ircservice) + { + pOptions = serverprofile; + pLabel = serverprofile.getName(); + id = i; + setMediator(messagesender); + pSessionManager = sessionmanager; + sessionmanager.setServ(this); + mService = ircservice; + mColours = Colours.getInstance(); + pParser = new ParserImpl(null); + pReconnectCount = 0; + pNick = serverprofile.getNick(1); + mConnection = new Connection(this, 0); + pFlags = 0; + mLogsEnabled = serverprofile.isLoggingEnabled(); + logMessage("Status", Utils.createMessage(shouldShowTimeStamps(), Utils.getConnectionMessage(mService, false, serverprofile))); + if (mLogsEnabled && !Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREFS_ENABLE_CHATLOGS)) + { + i = mColours.getColourForEvent(0x7f0b002d); + serverprofile = s(0x7f0a004e); + messagesender = Utils.createMessage(shouldShowTimeStamps(), serverprofile); + Utils.addColour(shouldShowTimeStamps(), messagesender, i, 0, serverprofile.length()); + sendMessage("Status", messagesender, 1); + } + mIgnores = Ignores.getIgnores(id, Utils.getIRCDb(mService.getApplicationContext())); + pState = 3; + Message.obtain(mService.mHandler, 0, 3, 0, this).sendToTarget(); + mConnection.start(); + } + + static StringBuilder format(long l) + { + StringBuilder stringbuilder; + synchronized (sCal) + { + sCal.setTimeInMillis(l); + stringbuilder = (new StringBuilder(24)).append(Utils.getDay(sCal.get(7), true)).append(" ").append(Utils.getMonth(sCal.get(2), true)).append(" ").append(Utils.addPadding(sCal.get(5))).append(" ").append(sCal.get(1)).append(" ").append(Utils.addPadding(sCal.get(11))).append(":").append(Utils.addPadding(sCal.get(12))).append(":").append(Utils.addPadding(sCal.get(13))); + sCal.setTimeInMillis(System.currentTimeMillis()); + } + return stringbuilder; + exception; + calendar; + JVM INSTR monitorexit ; + throw exception; + } + + public static CharSequence getTime() + { + return sTime; + } + + private void logMessage(String s1, CharSequence charsequence, boolean flag) + { + this; + JVM INSTR monitorenter ; + if (flag) goto _L2; else goto _L1 +_L1: + if (!mLogsEnabled) goto _L4; else goto _L3 +_L3: + boolean flag1 = Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREFS_ENABLE_CHATLOGS); + if (flag1) goto _L2; else goto _L4 +_L4: + this; + JVM INSTR monitorexit ; + return; +_L2: + char ac1[]; + int i; + i = charsequence.length(); + if (mLogBuf == null) + { + mLogBuf = new char[i]; + } + ac1 = mLogBuf; + char ac[] = ac1; + if (i > ac1.length) + { + ac = new char[i]; + } + Arrays.fill(ac, '\uFFFF'); + TextUtils.getChars(charsequence, 0, i, ac, 0); + pLogs.log(s1, ac, flag); + if (true) goto _L4; else goto _L5 +_L5: + s1; + throw s1; + } + + private String s(int i) + { + return mService.getString(i); + } + + private transient String s(int i, Object aobj[]) + { + return mService.getString(i, aobj); + } + + private static boolean shouldShowTimeStamps() + { + return Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREFS_SHOW_TIMESTAMPS); + } + + static void timeChanged(long l) + { + sCal.setTimeInMillis(l); + sTime.setLength(0); + sTime.append(Utils.addPadding(sCal.get(11))).append(":").append(Utils.addPadding(sCal.get(12))); + } + + private void writeToServerInternal(String s1) + { + if (mConnection != null && pState != 0) + { + mConnection.write(s1); + } + } + + public void addServerConnnectionFlag(int i) + { + pFlags = pFlags | i; + } + + void buildHilightRegexp(String s1) + { + Object obj; + String s2; + String s4; + String as[]; + boolean flag; + as = (String[])null; + s4 = mService.prefs.getString(mService.getString(0x7f0a0022), null); + flag = TextUtils.isEmpty(s4); + s2 = s4; + obj = as; + if (flag) goto _L2; else goto _L1 +_L1: + if (s4.indexOf(',') != -1) goto _L4; else goto _L3 +_L3: + s2 = Utils.escape(s4.trim()); + obj = as; +_L2: + s1 = (new StringBuilder()).append("(?i)").append("(?:").append("^").append("|[^\\w").append(":\\]\\[\\{\\}\\|\\-#=\\*\\^\\$\243\"'!`\\.,\\\\])").append("(?:").append(s1); + String as1[]; + int i; + int k; + if (obj == null && !flag) + { + s1.append("|").append(s2); + } else + if (obj != null) + { + int l = obj.length; + int j = 0; + while (j < l) + { + String s3 = obj[j]; + if (s3 != null) + { + s1.append("|").append(s3); + } + j++; + } + } + s1.append(")").append("(?:").append("[;:,'> !\\.\\?]").append("| \\-").append("|$)"); + pHilightMatcher = Pattern.compile(s1.toString()).matcher(""); + return; +_L4: + as1 = s4.split(","); + k = as1.length; + i = 0; +_L6: + s2 = s4; + obj = as1; + if (i >= k) goto _L2; else goto _L5 +_L5: + obj = as1[i]; + if (((String) (obj)).length() == 0) + { + as1[i] = null; + } else + { + as1[i] = Utils.escape(((String) (obj)).trim()); + } + i++; + goto _L6 + } + + public boolean checkFlagActive(int i) + { + return Utils.isBitSet(pFlags, i); + } + + public void closeLog(String s1) + { + pLogs.close(s1); + } + + void deactivateAllAndUpdateUi(boolean flag) + { + SessionManager sessionmanager = pSessionManager; + String as[] = sessionmanager.getSessionList(); + int i = as.length; + boolean flag1 = false; + i--; + do + { + if (i < 0) + { + if (flag) + { + pLogs.closeAll(); + } + if (flag1) + { + sendFlaggedMessage(6, null); + } + return; + } + String s1 = as[i]; + if (sessionmanager.getActive(s1)) + { + flag1 = true; + sessionmanager.setActive(s1, false); + sessionmanager.removeAllNames(s1); + } + i--; + } while (true); + } + + public void forceConnect() + { + if (isReconnecting()) + { + synchronized (mConnection) + { + mConnection.notify(); + } + return; + } else + { + return; + } + exception; + connection; + JVM INSTR monitorexit ; + throw exception; + } + + public int getConnectionState() + { + return pState; + } + + public String getCurrentNick() + { + return pNick; + } + + public Session getCurrentSession() + { + return pSessionManager.getCurrentSession(); + } + + public Ignores getIgnoreList() + { + return mIgnores; + } + + public String getPartReason() + { + return IRCService.sPreferences.partReason; + } + + public String getQuitReason() + { + return IRCService.sPreferences.quitReason; + } + + public Resources getResources() + { + return mService.getResources(); + } + + public ServerConnection getServerConnection() + { + return this; + } + + public SessionManager getSessionManager() + { + return pSessionManager; + } + + public void handleAddMessage(IRCMessage ircmessage) + { + sendMessage(ircmessage.target, ircmessage.message, ircmessage.val); + } + + public void handleBan(String s1) + { + Utils.handleBanHammer(s1, this); + } + + public void handleJoin(String s1) + { + writeToServer((new StringBuilder("JOIN ")).append(s1).append("\r\n").toString()); + } + + public void handleKick(String s1) + { + Utils.handleKicking(s1, this); + } + + public void handleOpAction(String s1, char c, char c1) + { + writeToServer(Utils.buildOpAction(s1, c, c1, getCurrentSession().getSessionName())); + } + + public void handleQuit(String s1) + { + Utils.handleQuit(s1, mService, id); + } + + public void handleStartPm(String s1) + { + if (!pSessionManager.haveSessionFor(s1)) + { + pSessionManager.addSession(s1, pNick, 2); + sendMessage(s1, Utils.getPmStart(mService, s1, shouldShowTimeStamps()), 2); + } + } + + public boolean isInReconnectMode() + { + return checkFlagActive(16); + } + + public boolean isReconnecting() + { + return mConnection != null && mReconnecting.get(); + } + + public boolean isShowingTimestamps() + { + return shouldShowTimeStamps(); + } + + public void logMessage(String s1, CharSequence charsequence) + { + this; + JVM INSTR monitorenter ; + logMessage(s1, charsequence, false); + this; + JVM INSTR monitorexit ; + return; + s1; + throw s1; + } + + void makeNotif(String s1, String s2, String s3, int i) + { +_L2: + return; + if (!Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREFS_SHOW_NOTIFS) || !Utils.isBitSet(IRCService.sPreferences.pNotificationEvents, i)) goto _L2; else goto _L1 +_L1: + long l = System.currentTimeMillis(); + if (l - mLastNotif < 5000L) goto _L2; else goto _L3 +_L3: + String s4; + NotificationManager notificationmanager; + StringBuilder stringbuilder; + IRCService ircservice; + mLastNotif = l; + ircservice = mService; + notificationmanager = ircservice.mNm; + stringbuilder = new StringBuilder(); + s4 = s3; + if (s3.length() > 0) + { + s4 = s3; + if (s3.charAt(0) == '$') + { + s4 = "Status"; + } + } + i; + JVM INSTR lookupswitch 4: default 148 + // 1: 149 + // 2: 542 + // 4: 566 + // 16: 591; + goto _L4 _L5 _L6 _L7 _L8 +_L8: + break MISSING_BLOCK_LABEL_591; +_L4: + return; +_L5: + stringbuilder.append(s(0x7f0a0078, new Object[] { + s4 + })); +_L9: + s2 = new android.support.v4.app.NotificationCompat.Builder(mService); + s2.setSmallIcon(0x7f02000b).setTicker(s1).setWhen(l); + int k = 0; + s3 = new Intent(ircservice, IRCApp.CHAT_CLASS); + s3.putExtra("id", id); + s3.putExtra("window", s4); + s3.setAction("net.andchat.donate.FROM_NOTIFICATION"); + s3.addFlags(0x14000000); + s3.setData(Uri.parse((new StringBuilder("irc://")).append(l).toString())); + s2.setAutoCancel(true); + boolean flag = mService.shouldPlayNotification(); + int j = k; + if (Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREFS_PLAY_SOUND)) + { + j = k; + if (flag) + { + j = k; + if (Utils.isBitSet(IRCService.sPreferences.pSoundOptions, i)) + { + if (IRCService.sPreferences.pDefaultTone != null) + { + s2.setSound(IRCService.sPreferences.pDefaultTone); + j = k; + } else + { + j = false | true; + } + } + } + } + k = j; + if (Utils.isBitSet(IRCService.sPreferences.pMainOptions, IRCService.PREFS_VIBRATE)) + { + k = j; + if (flag) + { + k = j; + if (Utils.isBitSet(IRCService.sPreferences.pVibrateOptions, i)) + { + k = j | 2; + } + } + } + s2.setDefaults(k); + mNotifCount = mNotifCount + 1; + s3 = PendingIntent.getActivity(ircservice, 0, s3, 0); + if (mNotifCount > 0) + { + s2.setNumber(mNotifCount); + } + s2.setContentTitle(stringbuilder); + s2.setContentText(s1); + s2.setContentIntent(s3); + s1 = s2.build(); + if (IRCApp.LEGACY_VERSION && mNotifCount > 0) + { + s1.number = mNotifCount; + } + s1.flags = ((Notification) (s1)).flags | 1; + s1.ledARGB = 0xff00ffff; + s1.ledOnMS = 1; + s1.ledOffMS = 0; + notificationmanager.notify(id, s1); + return; +_L6: + stringbuilder.append(s(0x7f0a007b, new Object[] { + s2 + })); + goto _L9 +_L7: + stringbuilder.append(s(0x7f0a007a, new Object[] { + s4 + })); + goto _L9 + stringbuilder.append(s(0x7f0a0079, new Object[] { + s2 + })); + goto _L9 + } + + public void prepareForReconnect() + { + addServerConnnectionFlag(4); + } + + void reconnect() + { + int j; + if (mReconnecting.get()) + { + return; + } + mReconnecting.set(true); + addServerConnnectionFlag(16); + Message.obtain(mService.mHandler, 0, 3, 0, this).sendToTarget(); + pConnectionChanged = false; + pReconnectCount = pReconnectCount + 1; + if (pReconnectCount > IRCService.sPreferences.pReconnectLimit) + { + String s1 = s(0x7f0a0050, new Object[] { + Integer.valueOf(IRCService.sPreferences.pReconnectLimit) + }); + sendMessage("Status", Utils.createMessage(shouldShowTimeStamps(), s1), 1); + removeServerConnectionFlag(16); + mReconnecting.set(false); + return; + } + j = pReconnectCount * 5; + if (j > 0) goto _L2; else goto _L1 +_L1: + int i = 5; +_L4: + pParser.reset(); + mConnection = new Connection(this, i); + String s2 = s(0x7f0a0051, new Object[] { + Integer.valueOf(pReconnectCount), Integer.valueOf(i) + }); + sendMessage("Status", Utils.createMessage(shouldShowTimeStamps(), s2), 1); + mService.wakeLock.acquire(5500L); + prepareForReconnect(); + mConnection.start(); + return; +_L2: + i = j; + if (j > 30) + { + i = 30; + } + if (true) goto _L4; else goto _L3 +_L3: + } + + void removeServerConnectionFlag(int i) + { + pFlags = pFlags & ~i; + } + + public void resetNotificationCount() + { + if (mNotifCount > 0) + { + mNotifCount = 0; + } + mLastNotif = 0L; + } + + void sendConnectionChangedMessage() + { + pConnectionChanged = true; + boolean flag = shouldShowTimeStamps(); + String s1 = s(0x7f0a004d); + SpannableStringBuilder spannablestringbuilder = Utils.createMessage(shouldShowTimeStamps(), s1); + Utils.addColour(flag, spannablestringbuilder, mColours.getColourForEvent(0x7f0b0029), 0, s1.length()); + sendToAll(spannablestringbuilder, 1); + } + + public void sendFlaggedMessage(int i, Object obj) + { + mMessageSender.sendFlaggedMessage(i, obj); + } + + void sendMessage(String s1, CharSequence charsequence, int i) + { + String s2 = s1; + if (s1.length() == 0) + { + s2 = "Status"; + } + logMessage(s2, charsequence); + mMessageSender.sendMessage(s2, charsequence, i); + } + + void sendToAll(CharSequence charsequence, int i) + { + String as[] = pSessionManager.getSessionList(); + int j = as.length - 1; + do + { + if (j < 0) + { + return; + } + String s1 = as[j]; + SpannableStringBuilder spannablestringbuilder = new SpannableStringBuilder(); + spannablestringbuilder.append(charsequence); + sendMessage(s1, spannablestringbuilder, i); + j--; + } while (true); + } + + protected void setMediator(MessageSender messagesender) + { + mMessageSender = messagesender; + } + + protected void stopConnection(int i) + { + removeServerConnectionFlag(16); + int j = pState; + if (j != 0 && j != 4) + { + pState = 2; + mConnection.stopConn(i); + } else + { + wakeAndStop(); + Message.obtain(mService.mHandler, 0, i, 0, this).sendToTarget(); + deactivateAllAndUpdateUi(true); + } + mService.mNm.cancel(id); + } + + public String toString() + { + return super.toString(); + } + + void wakeAndStop() + { + if (isReconnecting()) + { + mConnection.mWasStopped = true; + forceConnect(); + } + } + + public void writeToServer(String s1) + { + if (mUserCommandsH == null) + { + return; + } else + { + Message.obtain(mUserCommandsH, 0, s1).sendToTarget(); + return; + } + } + + static + { + sTime = new StringBuilder(5); + timeChanged(System.currentTimeMillis()); + sTimeLength = sTime.length(); + } + + + + + + + + + + + + + + // Unreferenced inner class net/andchat/donate/Backend/ServerConnection$Connection$1 + +/* anonymous class */ + class Connection._cls1 + implements Thread.UncaughtExceptionHandler + { + + final Connection this$1; + + public void uncaughtException(Thread thread, Throwable throwable) + { + Log.e("ServerConnection", "Exception", throwable); + thread = s(0x7f0a0043, new Object[] { + mOptions.getAddress() + }); + throwable = Utils.createMessage(isShowingTimestamps(), thread); + Utils.addColour(isShowingTimestamps(), throwable, mColours.getColourForEvent(0x7f0b002c), 0, thread.length()); + Utils.addLinks(throwable); + sendToAll(throwable, 3); + pState = 0; + Message.obtain(mService.mHandler, 0, 3, 0, mServ).sendToTarget(); + stopCommandQ(); + } + + + { + this$1 = Connection.this; + super(); + } + } + + + // Unreferenced inner class net/andchat/donate/Backend/ServerConnection$Connection$2 + +/* anonymous class */ + class Connection._cls2 extends Handler + { + + final Connection this$1; + + public void handleMessage(Message message) + { + mServ.writeToServerInternal((String)message.obj); + } + + + { + this$1 = Connection.this; + super(looper); + } + } + +} diff --git a/app/src/main/java/net/andchat/donate/Backend/Sessions/BaseSession.java b/app/src/main/java/net/andchat/donate/Backend/Sessions/BaseSession.java new file mode 100644 index 0000000..3741b75 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/Sessions/BaseSession.java @@ -0,0 +1,354 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend.Sessions; + +import android.text.SpannableStringBuilder; +import java.util.ArrayList; +import java.util.List; +import net.andchat.donate.Misc.LimitedSizeQueue; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Backend.Sessions: +// Session, SessionManager + +abstract class BaseSession extends Session +{ + + protected boolean mAmActive; + private Session.History mHistory; + private boolean mInvalidated; + private int mLastType; + private final SessionManager mManager; + private boolean mMarked; + protected final Session.MetaData mMeta = new Session.MetaData(); + private String mName; + protected String mNick; + private LimitedSizeQueue mText; + private int mTextType; + private int mType; + + BaseSession(String s, String s1, int i, SessionManager sessionmanager) + { + mName = s1; + mType = i; + mText = new LimitedSizeQueue(1000, 100); + mManager = sessionmanager; + mNick = s; + mAmActive = true; + } + + public void addHistoricText(CharSequence charsequence) + { + if (mHistory == null) + { + mHistory = new Session.History(getSessionManager().getInputLimit()); + } + mHistory.add(charsequence); + } + + public void addMultipleNicks(String s) + { + } + + public void addSingleNick(String s, String s1, String s2) + { + } + + public final void addText(CharSequence charsequence, boolean flag, int i) + { + mText.add(charsequence); + if (!flag) + { + if (i > mTextType) + { + mTextType = i; + } + } else + { + markValidated(); + } + if (mLastType != mTextType || !flag) goto _L2; else goto _L1 +_L1: + mInvalidated = false; +_L4: + mLastType = mTextType; + return; +_L2: + if (!flag && mLastType != mTextType) + { + mInvalidated = true; + } + if (true) goto _L4; else goto _L3 +_L3: + } + + public void changeNick(String s, String s1) + { + if (s.equalsIgnoreCase(mNick)) + { + mNick = s1; + } + } + + public void clearAllNicks() + { + } + + public final void clearTextTypeInfo() + { + boolean flag; + if (mTextType == 0 && mLastType == 0 && !isInvalidated()) + { + flag = false; + } else + { + flag = true; + } + mTextType = 0; + mLastType = 0; + markValidated(); + if (flag) + { + SessionManager.notifyPostClear(); + } + } + + public volatile int compareTo(Object obj) + { + return compareTo((Session)obj); + } + + public int compareTo(Session session) + { + return Utils.STRING_COMPARE.compare(getSessionName(), session.getSessionName()); + } + + public boolean equals(Object obj) + { + if (this != obj) + { + if (!(obj instanceof Session)) + { + return false; + } + obj = (Session)obj; + if (getType() != ((Session) (obj)).getType() || !getSessionName().equals(((Session) (obj)).getSessionName())) + { + return false; + } + } + return true; + } + + public final int getCurrentTextType() + { + return mTextType; + } + + public final CharSequence getHistoricDownText(CharSequence charsequence) + { + CharSequence charsequence1 = charsequence; + if (mHistory != null) + { + charsequence1 = mHistory.getDown(charsequence); + } + return charsequence1; + } + + public final CharSequence getHistoricUpText(CharSequence charsequence) + { + CharSequence charsequence1 = charsequence; + if (mHistory != null) + { + charsequence1 = mHistory.getUp(charsequence); + } + return charsequence1; + } + + public int getMaskForNick(String s) + { + return 0; + } + + public final Session.MetaData getMetaData() + { + return mMeta; + } + + public int getNickColour(String s) + { + return 0; + } + + public Session.NickInfo getNickInfo(String s) + { + return null; + } + + public List getNickList() + { + return new ArrayList(1); + } + + public String getNickStatus(String s) + { + return ""; + } + + public List getNickSuggestions(String s) + { + return null; + } + + public String getOwnStatus() + { + return ""; + } + + int getOwnStatusMask() + { + return 0; + } + + public final CharSequence getSavedInputText() + { + if (mHistory != null) + { + return mHistory.mSavedLine; + } else + { + return null; + } + } + + protected SessionManager getSessionManager() + { + return mManager; + } + + public final LimitedSizeQueue getSessionMessages() + { + return mText; + } + + public final String getSessionName() + { + return mName; + } + + public final int getType() + { + return mType; + } + + public Session.UserCount getUserCount() + { + return new Session.UserCount(); + } + + public final boolean isActive() + { + return mAmActive; + } + + public boolean isInvalidated() + { + return mInvalidated; + } + + public boolean isMarked() + { + return mMarked; + } + + public boolean isNickInSession(String s) + { + return false; + } + + public void markValidated() + { + mInvalidated = false; + } + + public final void putSavedInputText(CharSequence charsequence) + { + Session.History history = mHistory; + if (history != null) + { + Object obj = charsequence; + if (charsequence instanceof SpannableStringBuilder) + { + obj = new SpannableStringBuilder(charsequence); + } + history.mSavedLine = ((CharSequence) (obj)); + } else + if (charsequence.length() != 0) + { + Session.History history1 = new Session.History(getSessionManager().getInputLimit()); + Object obj1 = charsequence; + if (charsequence instanceof SpannableStringBuilder) + { + obj1 = new SpannableStringBuilder(charsequence); + } + history1.mSavedLine = ((CharSequence) (obj1)); + mHistory = history1; + return; + } + } + + public boolean removeNick(String s) + { + return false; + } + + public final void renameSession(String s) + { + mName = s; + } + + public void setActive(boolean flag) + { + } + + public void setAsMarked(boolean flag) + { + mMarked = flag; + } + + final void setInputHistoryLimit(int i) + { + if (mHistory != null) + { + mHistory.setLimit(i); + } + } + + public void setNickInfo(String s, String s1, String s2) + { + } + + public String toString() + { + return getSessionName(); + } + + public final void trimInputHistory(int i) + { + int j = i; + if (i < 0) + { + j = 0; + } + if (mHistory != null) + { + mHistory.trimTo(j); + } + } + + public void updateNickStatus(String s, int i) + { + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/Sessions/ChannelSession$1.java b/app/src/main/java/net/andchat/donate/Backend/Sessions/ChannelSession$1.java new file mode 100644 index 0000000..8d7ee99 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/Sessions/ChannelSession$1.java @@ -0,0 +1,29 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend.Sessions; + +import java.util.Comparator; + +// Referenced classes of package net.andchat.donate.Backend.Sessions: +// ChannelSession + +class + implements Comparator +{ + + public volatile int compare(Object obj, Object obj1) + { + return compare((compare)obj, (compare)obj1); + } + + public int compare(compare compare1, compare compare2) + { + return compare1.name.compareToIgnoreCase(compare2.name); + } + + () + { + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/Sessions/ChannelSession.java b/app/src/main/java/net/andchat/donate/Backend/Sessions/ChannelSession.java new file mode 100644 index 0000000..74b175c --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/Sessions/ChannelSession.java @@ -0,0 +1,438 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend.Sessions; + +import android.graphics.Color; +import android.util.Log; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Random; +import java.util.Vector; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import net.andchat.donate.Backend.ServerConnection; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Backend.Sessions: +// BaseSession, SessionManager + +class ChannelSession extends BaseSession +{ + + private static final int DEFAULT_COLOUR = Color.rgb(115, 175, 204); + private static final Comparator sComparator = new Comparator() { + + public volatile int compare(Object obj, Object obj1) + { + return compare((Session.NickInfo)obj, (Session.NickInfo)obj1); + } + + public int compare(Session.NickInfo nickinfo, Session.NickInfo nickinfo1) + { + return nickinfo.name.compareToIgnoreCase(nickinfo1.name); + } + + }; + private Random mBlue; + private final Session.NickInfo mDummyNick = new Session.NickInfo(); + private Random mGreen; + private Vector mNames; + private Random mRed; + private int mStatusMask; + + ChannelSession(String s, String s1, int i, SessionManager sessionmanager) + { + super(s, s1, i, sessionmanager); + mNames = new Vector(); + mBlue = new Random(); + mGreen = new Random(); + mRed = new Random(); + } + + private Session.NickInfo findNick(String s) + { + Vector vector = mNames; + Session.NickInfo nickinfo = mDummyNick; + nickinfo.name = s; + int i = Collections.binarySearch(vector, nickinfo, sComparator); + if (i < 0) + { + return null; + } else + { + return (Session.NickInfo)vector.get(i); + } + } + + private int nextColour() + { + return Color.rgb(mRed.nextInt(128) + 128, mGreen.nextInt(128) + 128, mBlue.nextInt(128) + 128); + } + + private void sort() + { + synchronized (mNames) + { + Collections.sort(mNames, sComparator); + } + return; + exception; + vector; + JVM INSTR monitorexit ; + throw exception; + } + + public void addMultipleNicks(String s) + { + String as[]; + Vector vector; + int i; + int k; + int i1; + as = Utils.split(s); + vector = mNames; + i = 0; + i1 = as.length; + k = 0; +_L2: + String s1; + int l; + if (k >= i1) + { + sort(); + return; + } + s1 = as[k]; + l = 0; + if (s1.length() != 0) + { + break; /* Loop/switch isn't completed */ + } +_L3: + k++; + if (true) goto _L2; else goto _L1 +_L1: + char c; + Session.NickInfo nickinfo; + int j; + nickinfo = new Session.NickInfo(); + c = s1.charAt(0); + j = 0; + s = getSessionManager().getStatusMap(); +_L4: +label0: + { + if (Utils.isStatusPrefix(s, c)) + { + break label0; + } + s = s1; + if (j > 0) + { + s = s1.substring(j); + } + j = i; + if (i == 0) + { + j = i; + if (s.equals(mNick)) + { + mStatusMask = l; + getSessionManager().pServ.sendFlaggedMessage(5, getSessionName()); + j = 1; + } + } + nickinfo.status = l; + nickinfo.name = s; + nickinfo.colour = nextColour(); + vector.add(nickinfo); + i = j; + } + goto _L3 + l |= s.getPrefixLevel(c); + j++; + c = s1.charAt(j); + goto _L4 + } + + public void addSingleNick(String s, String s1, String s2) + { + if (findNick(s) == null) + { + Session.NickInfo nickinfo = new Session.NickInfo(); + nickinfo.name = s; + nickinfo.ident = s1; + nickinfo.hostname = s2; + nickinfo.colour = nextColour(); + mNames.add(nickinfo); + sort(); + } + } + + public void changeNick(String s, String s1) + { + boolean flag = s.equalsIgnoreCase(mNick); + super.changeNick(s, s1); + s = findNick(s); + if (s != null) + { + s.name = s1; + } + if (flag) + { + if (s != null) + { + mStatusMask = ((Session.NickInfo) (s)).status; + } else + { + mStatusMask = 0; + } + } + sort(); + } + + public void clearAllNicks() + { + mNames.clear(); + } + + public int getMaskForNick(String s) + { + s = findNick(s); + if (s == null) + { + return 0; + } else + { + return ((Session.NickInfo) (s)).status; + } + } + + public int getNickColour(String s) + { + s = findNick(s); + if (s == null) + { + return DEFAULT_COLOUR; + } else + { + return ((Session.NickInfo) (s)).colour; + } + } + + public Session.NickInfo getNickInfo(String s) + { + s = findNick(s); + if (s != null) + { + return s; + } else + { + return null; + } + } + + +// JavaClassFileOutputException: Prev chain is broken + + public String getNickStatus(String s) + { + int i = getMaskForNick(s); + return getSessionManager().getStatusMap().convertLevelToPrefix(i); + } + + public List getNickSuggestions(String s) + { + s = Pattern.compile((new StringBuilder("(?i)^")).append(Utils.escape(s)).append("(?:.+)?").toString()).matcher(""); + Vector vector = mNames; + int j = vector.size(); + ArrayList arraylist = new ArrayList(10); + int i = 0; + do + { + if (i >= j) + { + return arraylist; + } + String s1 = ((Session.NickInfo)vector.get(i)).name; + if (s.reset(s1).matches()) + { + arraylist.add(s1); + } + i++; + } while (true); + } + + public String getOwnStatus() + { + return getSessionManager().getStatusMap().convertLevelToPrefix(mStatusMask); + } + + public int getOwnStatusMask() + { + return mStatusMask; + } + + public Session.UserCount getUserCount() + { + Vector vector = mNames; + vector; + JVM INSTR monitorenter ; + int i; + int j; + int l; + int i1; + int j1; + int k1; + j = 0; + k1 = 0; + l = 0; + j1 = 0; + i = 0; + i1 = 0; + Object obj; + int l1; + int i2; + int j2; + int k2; + int l2; + int i3; + obj = mNames; + l1 = ((Vector) (obj)).size(); + SessionManager sessionmanager = getSessionManager(); + i2 = sessionmanager.getStatusMap().getModeLevel('q'); + j2 = sessionmanager.getStatusMap().getModeLevel('a'); + k2 = sessionmanager.getStatusMap().getModeLevel('o'); + l2 = sessionmanager.getStatusMap().getModeLevel('h'); + i3 = sessionmanager.getStatusMap().getModeLevel('v'); + int k = 0; +_L2: + if (k < l1) + { + break MISSING_BLOCK_LABEL_168; + } + obj = new Session.UserCount(); + obj.owner = j; + obj.admin = k1; + obj.op = l; + obj.hop = j1; + obj.voice = i; + obj.normal = i1; + obj.total = l1; + mMeta.userCount = ((Session.UserCount) (obj)); + vector; + JVM INSTR monitorexit ; + return ((Session.UserCount) (obj)); + int j3 = ((Session.NickInfo)((Vector) (obj)).get(k)).status; + if (Utils.isBitSet(j3, i2)) + { + j++; + break MISSING_BLOCK_LABEL_282; + } + if (Utils.isBitSet(j3, j2)) + { + k1++; + break MISSING_BLOCK_LABEL_282; + } + if (Utils.isBitSet(j3, k2)) + { + l++; + break MISSING_BLOCK_LABEL_282; + } + if (Utils.isBitSet(j3, l2)) + { + j1++; + break MISSING_BLOCK_LABEL_282; + } + Exception exception; + if (Utils.isBitSet(j3, i3)) + { + i++; + } else + { + i1++; + } + break MISSING_BLOCK_LABEL_282; + exception; + vector; + JVM INSTR monitorexit ; + throw exception; + k++; + if (true) goto _L2; else goto _L1 +_L1: + } + + public boolean hasCapability(int i) + { + switch (i) + { + case 2: // '\002' + case 3: // '\003' + case 4: // '\004' + default: + return false; + + case 1: // '\001' + case 5: // '\005' + case 6: // '\006' + return true; + } + } + + public boolean isNickInSession(String s) + { + return findNick(s) != null; + } + + public boolean removeNick(String s) + { + s = findNick(s); + if (s != null) + { + mNames.remove(s); + return true; + } else + { + return false; + } + } + + public void setActive(boolean flag) + { + mAmActive = flag; + } + + public void setNickInfo(String s, String s1, String s2) + { + Session.NickInfo nickinfo = findNick(s); + if (nickinfo == null) + { + Log.e(getSessionName(), (new StringBuilder("Unable to find info for ")).append(s).toString()); + return; + } else + { + nickinfo.ident = s1; + nickinfo.hostname = s2; + return; + } + } + + public void updateNickStatus(String s, int i) + { + if (s.equals(mNick)) + { + mStatusMask = i; + getSessionManager().pServ.sendFlaggedMessage(5, getSessionName()); + } + s = findNick(s); + if (s != null) + { + s.status = i; + } + } + +} diff --git a/app/src/main/java/net/andchat/donate/Backend/Sessions/NullSession.java b/app/src/main/java/net/andchat/donate/Backend/Sessions/NullSession.java new file mode 100644 index 0000000..9cba7c9 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/Sessions/NullSession.java @@ -0,0 +1,214 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend.Sessions; + +import java.util.ArrayList; +import java.util.List; +import net.andchat.donate.Misc.LimitedSizeQueue; + +// Referenced classes of package net.andchat.donate.Backend.Sessions: +// Session + +class NullSession extends Session +{ + + NullSession() + { + } + + public void addHistoricText(CharSequence charsequence) + { + } + + public void addMultipleNicks(String s) + { + } + + public void addSingleNick(String s, String s1, String s2) + { + } + + public void addText(CharSequence charsequence, boolean flag, int i) + { + } + + public void changeNick(String s, String s1) + { + } + + public void clearAllNicks() + { + } + + public void clearTextTypeInfo() + { + } + + public volatile int compareTo(Object obj) + { + return compareTo((Session)obj); + } + + public int compareTo(Session session) + { + return 0; + } + + public int getCurrentTextType() + { + return 0; + } + + public CharSequence getHistoricDownText(CharSequence charsequence) + { + return null; + } + + public CharSequence getHistoricUpText(CharSequence charsequence) + { + return null; + } + + public int getMaskForNick(String s) + { + return 0; + } + + public Session.MetaData getMetaData() + { + return new Session.MetaData(); + } + + public int getNickColour(String s) + { + return 0; + } + + public Session.NickInfo getNickInfo(String s) + { + return null; + } + + public List getNickList() + { + return new ArrayList(1); + } + + public String getNickStatus(String s) + { + return ""; + } + + public List getNickSuggestions(String s) + { + return null; + } + + public String getOwnStatus() + { + return ""; + } + + public int getOwnStatusMask() + { + return 0; + } + + public CharSequence getSavedInputText() + { + return null; + } + + public LimitedSizeQueue getSessionMessages() + { + return new LimitedSizeQueue(1, 1); + } + + public String getSessionName() + { + return "null"; + } + + public int getType() + { + return 0; + } + + public Session.UserCount getUserCount() + { + return new Session.UserCount(); + } + + public boolean hasCapability(int i) + { + return false; + } + + public boolean isActive() + { + return false; + } + + public boolean isInvalidated() + { + return false; + } + + public boolean isMarked() + { + return false; + } + + public boolean isNickInSession(String s) + { + return false; + } + + public void markValidated() + { + } + + public void putSavedInputText(CharSequence charsequence) + { + } + + public boolean removeNick(String s) + { + return false; + } + + public void renameSession(String s) + { + } + + public void setActive(boolean flag) + { + } + + public void setAsMarked(boolean flag) + { + } + + public void setInputHistoryLimit(int i) + { + } + + public void setNickInfo(String s, String s1, String s2) + { + } + + public String toString() + { + return getSessionName(); + } + + public void trimInputHistory(int i) + { + } + + public void updateNickStatus(String s, int i) + { + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/Sessions/PrivateSession.java b/app/src/main/java/net/andchat/donate/Backend/Sessions/PrivateSession.java new file mode 100644 index 0000000..d5464e9 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/Sessions/PrivateSession.java @@ -0,0 +1,30 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend.Sessions; + + +// Referenced classes of package net.andchat.donate.Backend.Sessions: +// BaseSession, SessionManager + +class PrivateSession extends BaseSession +{ + + PrivateSession(String s, String s1, int i, SessionManager sessionmanager) + { + super(s, s1, i, sessionmanager); + } + + public boolean hasCapability(int i) + { + switch (i) + { + default: + return false; + + case 6: // '\006' + return true; + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/Sessions/Session$History.java b/app/src/main/java/net/andchat/donate/Backend/Sessions/Session$History.java new file mode 100644 index 0000000..5b5c110 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/Sessions/Session$History.java @@ -0,0 +1,150 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend.Sessions; + +import java.util.ArrayList; +import java.util.List; + +// Referenced classes of package net.andchat.donate.Backend.Sessions: +// Session + +protected static class setLimit +{ + + final List mEntries; + int mIdx; + int mLimit; + CharSequence mSavedLine; + + public void add(CharSequence charsequence) + { + if (mLimit == 0) + { + return; + } + List list = mEntries; + if (list.size() > mLimit) + { + list.remove(0); + } + list.add(charsequence); + mIdx = list.size(); + } + + public CharSequence getDown(CharSequence charsequence) + { + if (mLimit != 0) + { + List list = mEntries; + int k = list.size(); + if (k != 0) + { + int i = mIdx; + if (i >= 0 && i < k) + { + CharSequence charsequence1 = (CharSequence)list.get(i); + if (charsequence.length() > 0 && !charsequence1.equals(charsequence)) + { + list.set(i, charsequence); + } + } + int j = i + 1; + i = j; + if (j >= k + 1) + { + i = j; + if (charsequence.length() > 0) + { + add(charsequence); + i = j + 1; + } + } + mIdx = i; + if (i < 0 || i >= k) + { + charsequence = null; + } else + { + charsequence = (CharSequence)list.get(i); + } + return charsequence; + } + } + return charsequence; + } + + public CharSequence getUp(CharSequence charsequence) + { + if (mLimit != 0) goto _L2; else goto _L1 +_L1: + return charsequence; +_L2: + List list; + int l; + list = mEntries; + l = list.size(); + if (l == 0) goto _L1; else goto _L3 +_L3: + int k; + int i = mIdx; + if (i >= 0 && i < l) + { + CharSequence charsequence1 = (CharSequence)list.get(i); + if (charsequence.length() > 0 && !charsequence1.equals(charsequence)) + { + list.set(i, charsequence); + } + } + k = i - 1; + if (k >= l - 1 && charsequence.length() > 0 && !((CharSequence)list.get(l - 1)).equals(charsequence)) + { + add(charsequence); + } + if (k != l) goto _L5; else goto _L4 +_L4: + int j = k - 1; +_L7: + k = j; + if (j < 0) + { + k = 0; + } + mIdx = k; + return (CharSequence)list.get(k); +_L5: + j = k; + if (k > l) + { + j = l - 1; + } + if (true) goto _L7; else goto _L6 +_L6: + } + + public void setLimit(int i) + { + mLimit = i; + trimTo(i); + } + + public void trimTo(int i) + { + List list = mEntries; + if (i == 0) + { + list.clear(); + mIdx = 0; + return; + } + for (; list.size() > i; list.remove(0)) { } + mIdx = list.size(); + } + + public _cls9(int i) + { + mEntries = new ArrayList(i); + setLimit(i); + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/Sessions/Session$MetaData.java b/app/src/main/java/net/andchat/donate/Backend/Sessions/Session$MetaData.java new file mode 100644 index 0000000..a0ae03f --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/Sessions/Session$MetaData.java @@ -0,0 +1,22 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend.Sessions; + + +// Referenced classes of package net.andchat.donate.Backend.Sessions: +// Session + +public static class +{ + + public String channelKey; + public long creationTime; + public String modes; + public userCount; + + public () + { + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/Sessions/Session$NickInfo.java b/app/src/main/java/net/andchat/donate/Backend/Sessions/Session$NickInfo.java new file mode 100644 index 0000000..629ce17 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/Sessions/Session$NickInfo.java @@ -0,0 +1,30 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend.Sessions; + + +// Referenced classes of package net.andchat.donate.Backend.Sessions: +// Session + +public static final class +{ + + public int colour; + public String hostname; + public String ident; + public String name; + public int status; + + public String toString() + { + StringBuilder stringbuilder = new StringBuilder(); + stringbuilder.append("Name = ").append(name).append(", ").append("host = ").append(hostname).append(", ").append(" status = ").append(status); + return stringbuilder.toString(); + } + + protected () + { + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/Sessions/Session$UserCount.java b/app/src/main/java/net/andchat/donate/Backend/Sessions/Session$UserCount.java new file mode 100644 index 0000000..e887c4b --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/Sessions/Session$UserCount.java @@ -0,0 +1,40 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend.Sessions; + + +// Referenced classes of package net.andchat.donate.Backend.Sessions: +// Session + +public static class + implements Comparable +{ + + public int admin; + public int hop; + public int normal; + public int op; + public int owner; + public int total; + public int voice; + + public volatile int compareTo(Object obj) + { + return compareTo((compareTo)obj); + } + + public int compareTo(compareTo compareto) + { + while (compareto == null || compareto.total != total || compareto.owner != owner || compareto.admin != admin || compareto.op != op || compareto.hop != hop || compareto.voice != voice || compareto.normal != normal) + { + return -1; + } + return 0; + } + + public () + { + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/Sessions/Session.java b/app/src/main/java/net/andchat/donate/Backend/Sessions/Session.java new file mode 100644 index 0000000..057ef75 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/Sessions/Session.java @@ -0,0 +1,321 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend.Sessions; + +import java.util.ArrayList; +import java.util.List; +import net.andchat.donate.Misc.LimitedSizeQueue; + +// Referenced classes of package net.andchat.donate.Backend.Sessions: +// StatusSession, PrivateSession, ChannelSession, SessionManager + +public abstract class Session + implements Comparable +{ + protected static class History + { + + final List mEntries; + int mIdx; + int mLimit; + CharSequence mSavedLine; + + public void add(CharSequence charsequence) + { + if (mLimit == 0) + { + return; + } + List list = mEntries; + if (list.size() > mLimit) + { + list.remove(0); + } + list.add(charsequence); + mIdx = list.size(); + } + + public CharSequence getDown(CharSequence charsequence) + { + if (mLimit != 0) + { + List list = mEntries; + int k = list.size(); + if (k != 0) + { + int i = mIdx; + if (i >= 0 && i < k) + { + CharSequence charsequence1 = (CharSequence)list.get(i); + if (charsequence.length() > 0 && !charsequence1.equals(charsequence)) + { + list.set(i, charsequence); + } + } + int j = i + 1; + i = j; + if (j >= k + 1) + { + i = j; + if (charsequence.length() > 0) + { + add(charsequence); + i = j + 1; + } + } + mIdx = i; + if (i < 0 || i >= k) + { + charsequence = null; + } else + { + charsequence = (CharSequence)list.get(i); + } + return charsequence; + } + } + return charsequence; + } + + public CharSequence getUp(CharSequence charsequence) + { + if (mLimit != 0) goto _L2; else goto _L1 +_L1: + return charsequence; +_L2: + List list; + int l; + list = mEntries; + l = list.size(); + if (l == 0) goto _L1; else goto _L3 +_L3: + int k; + int i = mIdx; + if (i >= 0 && i < l) + { + CharSequence charsequence1 = (CharSequence)list.get(i); + if (charsequence.length() > 0 && !charsequence1.equals(charsequence)) + { + list.set(i, charsequence); + } + } + k = i - 1; + if (k >= l - 1 && charsequence.length() > 0 && !((CharSequence)list.get(l - 1)).equals(charsequence)) + { + add(charsequence); + } + if (k != l) goto _L5; else goto _L4 +_L4: + int j = k - 1; +_L7: + k = j; + if (j < 0) + { + k = 0; + } + mIdx = k; + return (CharSequence)list.get(k); +_L5: + j = k; + if (k > l) + { + j = l - 1; + } + if (true) goto _L7; else goto _L6 +_L6: + } + + public void setLimit(int i) + { + mLimit = i; + trimTo(i); + } + + public void trimTo(int i) + { + List list = mEntries; + if (i == 0) + { + list.clear(); + mIdx = 0; + return; + } + for (; list.size() > i; list.remove(0)) { } + mIdx = list.size(); + } + + public History(int i) + { + mEntries = new ArrayList(i); + setLimit(i); + } + } + + public static class MetaData + { + + public String channelKey; + public long creationTime; + public String modes; + public UserCount userCount; + + public MetaData() + { + } + } + + public static final class NickInfo + { + + public int colour; + public String hostname; + public String ident; + public String name; + public int status; + + public String toString() + { + StringBuilder stringbuilder = new StringBuilder(); + stringbuilder.append("Name = ").append(name).append(", ").append("host = ").append(hostname).append(", ").append(" status = ").append(status); + return stringbuilder.toString(); + } + + protected NickInfo() + { + } + } + + public static class UserCount + implements Comparable + { + + public int admin; + public int hop; + public int normal; + public int op; + public int owner; + public int total; + public int voice; + + public volatile int compareTo(Object obj) + { + return compareTo((UserCount)obj); + } + + public int compareTo(UserCount usercount) + { + while (usercount == null || usercount.total != total || usercount.owner != owner || usercount.admin != admin || usercount.op != op || usercount.hop != hop || usercount.voice != voice || usercount.normal != normal) + { + return -1; + } + return 0; + } + + public UserCount() + { + } + } + + + public Session() + { + } + + static Session createSession(String s, String s1, int i, SessionManager sessionmanager) + { + switch (i) + { + default: + throw new IllegalArgumentException("type must be one of TYPE_{STATUS|PRIVATE|CHANNEL}"); + + case 0: // '\0' + return new StatusSession(s, s1, i, sessionmanager); + + case 2: // '\002' + return new PrivateSession(s, s1, i, sessionmanager); + + case 1: // '\001' + return new ChannelSession(s, s1, i, sessionmanager); + } + } + + public abstract void addHistoricText(CharSequence charsequence); + + public abstract void addMultipleNicks(String s); + + public abstract void addSingleNick(String s, String s1, String s2); + + public abstract void addText(CharSequence charsequence, boolean flag, int i); + + public abstract void changeNick(String s, String s1); + + public abstract void clearAllNicks(); + + public abstract void clearTextTypeInfo(); + + public abstract int getCurrentTextType(); + + public abstract CharSequence getHistoricDownText(CharSequence charsequence); + + public abstract CharSequence getHistoricUpText(CharSequence charsequence); + + public abstract int getMaskForNick(String s); + + public abstract MetaData getMetaData(); + + public abstract int getNickColour(String s); + + public abstract NickInfo getNickInfo(String s); + + public abstract List getNickList(); + + public abstract String getNickStatus(String s); + + public abstract List getNickSuggestions(String s); + + public abstract String getOwnStatus(); + + abstract int getOwnStatusMask(); + + public abstract CharSequence getSavedInputText(); + + public abstract LimitedSizeQueue getSessionMessages(); + + public abstract String getSessionName(); + + public abstract int getType(); + + public abstract UserCount getUserCount(); + + public abstract boolean hasCapability(int i); + + public abstract boolean isActive(); + + public abstract boolean isInvalidated(); + + public abstract boolean isMarked(); + + public abstract boolean isNickInSession(String s); + + public abstract void markValidated(); + + public abstract void putSavedInputText(CharSequence charsequence); + + public abstract boolean removeNick(String s); + + public abstract void renameSession(String s); + + public abstract void setActive(boolean flag); + + public abstract void setAsMarked(boolean flag); + + abstract void setInputHistoryLimit(int i); + + public abstract void setNickInfo(String s, String s1, String s2); + + public abstract void trimInputHistory(int i); + + public abstract void updateNickStatus(String s, int i); +} diff --git a/app/src/main/java/net/andchat/donate/Backend/Sessions/SessionManager$GlobalEventWatcher.java b/app/src/main/java/net/andchat/donate/Backend/Sessions/SessionManager$GlobalEventWatcher.java new file mode 100644 index 0000000..8117015 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/Sessions/SessionManager$GlobalEventWatcher.java @@ -0,0 +1,31 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend.Sessions; + + +// Referenced classes of package net.andchat.donate.Backend.Sessions: +// SessionManager + +public static interface +{ + + public abstract void onCurrentSessionChanged(int i, String s); + + public abstract void onMessageReceived(String s, int i, int j); + + public abstract void onSessionActivated(String s, int i); + + public abstract void onSessionAdded(String s, int i, int j); + + public abstract void onSessionDeactivated(String s, int i); + + public abstract void onSessionManagerDeleted(int i); + + public abstract void onSessionRemoved(String s, int i); + + public abstract void onSessionRenamed(String s, String s1); + + public abstract void onSessionTextStateCleared(); +} diff --git a/app/src/main/java/net/andchat/donate/Backend/Sessions/SessionManager$NickWatcher.java b/app/src/main/java/net/andchat/donate/Backend/Sessions/SessionManager$NickWatcher.java new file mode 100644 index 0000000..385447c --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/Sessions/SessionManager$NickWatcher.java @@ -0,0 +1,23 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend.Sessions; + + +// Referenced classes of package net.andchat.donate.Backend.Sessions: +// SessionManager + +public static interface +{ + + public abstract void onNickAdded(String s, String s1); + + public abstract void onNickChanged(String s, String s1, String s2); + + public abstract void onNickModeChanged(String s, String s1, String s2); + + public abstract void onNickRemoved(String s, String s1); + + public abstract void onNicksReceived(String s); +} diff --git a/app/src/main/java/net/andchat/donate/Backend/Sessions/SessionManager$StatusMap.java b/app/src/main/java/net/andchat/donate/Backend/Sessions/SessionManager$StatusMap.java new file mode 100644 index 0000000..bb58b4c --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/Sessions/SessionManager$StatusMap.java @@ -0,0 +1,174 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend.Sessions; + +import android.util.Log; +import java.util.Arrays; + +// Referenced classes of package net.andchat.donate.Backend.Sessions: +// SessionManager + +public static final class +{ + + private final int mLevels[]; + private final char mModes[]; + private final char mPrefixes[]; + + private int getLevel(char c, boolean flag) + { + char ac[]; + int i; + int j; + if (flag) + { + ac = mPrefixes; + } else + { + ac = mModes; + } + j = ac.length; + i = 0; + do + { + if (i >= j) + { + return -1; + } + if (c == ac[i]) + { + return mLevels[i]; + } + i++; + } while (true); + } + + public String convertLevelToPrefix(int i) + { + int ai[] = mLevels; + int k = ai.length; + int j = Arrays.binarySearch(ai, i); + if (j > 0) + { + return String.valueOf(mPrefixes[j]); + } + j = 0; + do + { + if (j >= k) + { + return ""; + } + if ((ai[j] & i) == ai[j]) + { + return String.valueOf(mPrefixes[j]); + } + j++; + } while (true); + } + + public int getModeLevel(char c) + { + return getLevel(c, false); + } + + public int getPrefixLevel(char c) + { + return getLevel(c, true); + } + + public String getPrefixes() + { + return new String(mPrefixes); + } + + public boolean isMode(char c) + { + char ac[] = mModes; + int j = ac.length; + int i = 0; + do + { + if (i >= j) + { + return false; + } + if (c == ac[i]) + { + return true; + } + i++; + } while (true); + } + + public boolean isPrefix(char c) + { + char ac[] = mPrefixes; + int j = ac.length; + int i = 0; + do + { + if (i >= j) + { + return false; + } + if (c == ac[i]) + { + return true; + } + i++; + } while (true); + } + + public char mapModeToPrefix(char c) + { + char ac[] = mModes; + int j = ac.length; + int i = 0; + do + { + if (i >= j) + { + return '?'; + } + if (c == ac[i]) + { + return mPrefixes[i]; + } + i++; + } while (true); + } + + private (String s, String s1) + { + String s3 = s; + String s2 = s1; + if (s.length() != s1.length()) + { + s3 = "ov"; + s2 = "@+"; + Log.w("SessionManager", "Mismatch between modes.length & prefixes.length. Falling back to basic support"); + } + mModes = s3.toCharArray(); + mPrefixes = s2.toCharArray(); + int j = mModes.length; + mLevels = new int[j]; + int i = 0; + do + { + if (i >= j) + { + return; + } + mLevels[i] = 1 << i; + i++; + } while (true); + } + + mLevels(String s, String s1, mLevels mlevels) + { + this(s, s1); + } +} diff --git a/app/src/main/java/net/andchat/donate/Backend/Sessions/SessionManager.java b/app/src/main/java/net/andchat/donate/Backend/Sessions/SessionManager.java new file mode 100644 index 0000000..42f55f7 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/Sessions/SessionManager.java @@ -0,0 +1,1399 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend.Sessions; + +import android.util.Log; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Vector; +import net.andchat.donate.Backend.ServerConnection; +import net.andchat.donate.Misc.IRCMessage; +import net.andchat.donate.Misc.LimitedSizeQueue; +import net.andchat.donate.Misc.ServerProfile; +import net.andchat.donate.Misc.Utils; + +// Referenced classes of package net.andchat.donate.Backend.Sessions: +// NullSession, Session + +public final class SessionManager + implements Comparable +{ + public static interface GlobalEventWatcher + { + + public abstract void onCurrentSessionChanged(int i, String s); + + public abstract void onMessageReceived(String s, int i, int j); + + public abstract void onSessionActivated(String s, int i); + + public abstract void onSessionAdded(String s, int i, int j); + + public abstract void onSessionDeactivated(String s, int i); + + public abstract void onSessionManagerDeleted(int i); + + public abstract void onSessionRemoved(String s, int i); + + public abstract void onSessionRenamed(String s, String s1); + + public abstract void onSessionTextStateCleared(); + } + + public static interface NickWatcher + { + + public abstract void onNickAdded(String s, String s1); + + public abstract void onNickChanged(String s, String s1, String s2); + + public abstract void onNickModeChanged(String s, String s1, String s2); + + public abstract void onNickRemoved(String s, String s1); + + public abstract void onNicksReceived(String s); + } + + public static final class StatusMap + { + + private final int mLevels[]; + private final char mModes[]; + private final char mPrefixes[]; + + private int getLevel(char c, boolean flag) + { + char ac[]; + int i; + int j; + if (flag) + { + ac = mPrefixes; + } else + { + ac = mModes; + } + j = ac.length; + i = 0; + do + { + if (i >= j) + { + return -1; + } + if (c == ac[i]) + { + return mLevels[i]; + } + i++; + } while (true); + } + + public String convertLevelToPrefix(int i) + { + int ai[] = mLevels; + int k = ai.length; + int j = Arrays.binarySearch(ai, i); + if (j > 0) + { + return String.valueOf(mPrefixes[j]); + } + j = 0; + do + { + if (j >= k) + { + return ""; + } + if ((ai[j] & i) == ai[j]) + { + return String.valueOf(mPrefixes[j]); + } + j++; + } while (true); + } + + public int getModeLevel(char c) + { + return getLevel(c, false); + } + + public int getPrefixLevel(char c) + { + return getLevel(c, true); + } + + public String getPrefixes() + { + return new String(mPrefixes); + } + + public boolean isMode(char c) + { + char ac[] = mModes; + int j = ac.length; + int i = 0; + do + { + if (i >= j) + { + return false; + } + if (c == ac[i]) + { + return true; + } + i++; + } while (true); + } + + public boolean isPrefix(char c) + { + char ac[] = mPrefixes; + int j = ac.length; + int i = 0; + do + { + if (i >= j) + { + return false; + } + if (c == ac[i]) + { + return true; + } + i++; + } while (true); + } + + public char mapModeToPrefix(char c) + { + char ac[] = mModes; + int j = ac.length; + int i = 0; + do + { + if (i >= j) + { + return '?'; + } + if (c == ac[i]) + { + return mPrefixes[i]; + } + i++; + } while (true); + } + + private StatusMap(String s, String s1) + { + String s3 = s; + String s2 = s1; + if (s.length() != s1.length()) + { + s3 = "ov"; + s2 = "@+"; + Log.w("SessionManager", "Mismatch between modes.length & prefixes.length. Falling back to basic support"); + } + mModes = s3.toCharArray(); + mPrefixes = s2.toCharArray(); + int j = mModes.length; + mLevels = new int[j]; + int i = 0; + do + { + if (i >= j) + { + return; + } + mLevels[i] = 1 << i; + i++; + } while (true); + } + + StatusMap(String s, String s1, StatusMap statusmap) + { + this(s, s1); + } + } + + + public static final Session NULL_SESSION = new NullSession(); + private static List sGlobalWatchers = new Vector(); + private Session mCurrentSession; + private final int mId; + private int mInputLimit; + private StatusMap mMap; + private List mNickWatchers; + private final ServerProfile mProfile; + private List mSessions; + ServerConnection pServ; + + public SessionManager(int i, ServerProfile serverprofile) + { + mCurrentSession = NULL_SESSION; + mSessions = new Vector(); + mNickWatchers = new Vector(); + Session session = Session.createSession("", "Status", 0, this); + mSessions.add(session); + mId = i; + mProfile = serverprofile; + notifySessionAdd("Status", 0, i); + } + + public static void addEventWatcher(GlobalEventWatcher globaleventwatcher) + { + List list; + int i; + list = sGlobalWatchers; + i = list.size() - 1; +_L6: + if (i >= 0) goto _L2; else goto _L1 +_L1: + list.add(globaleventwatcher); +_L4: + return; +_L2: + if (list.get(i) == globaleventwatcher) goto _L4; else goto _L3 +_L3: + i--; + if (true) goto _L6; else goto _L5 +_L5: + } + + private String filterModes(boolean flag, String s) + { + int j; + int k; + int l; + k = 0; + l = s.length(); + j = 1; +_L2: + int i; + if (j >= l) + { + return s.substring(k + 1); + } + char c = s.charAt(j); + i = k; + switch (c) + { + default: + i = k; + if (!mMap.isMode(c)) + { + i = k + 1; + } + break; + + case 73: // 'I' + case 97: // 'a' + case 98: // 'b' + case 101: // 'e' + case 104: // 'h' + case 107: // 'k' + case 111: // 'o' + case 113: // 'q' + case 118: // 'v' + break; + + case 108: // 'l' + break; /* Loop/switch isn't completed */ + } +_L3: + j++; + k = i; + if (true) goto _L2; else goto _L1 +_L1: + i = k; + if (!flag) + { + i = k + 1; + } + goto _L3 + if (true) goto _L2; else goto _L4 +_L4: + } + + private Session get(String s) + { + List list; + int i; + int j; + list = mSessions; + j = list.size(); + i = 0; +_L6: + if (i < j) goto _L2; else goto _L1 +_L1: + Session session = null; +_L4: + return session; +_L2: + Session session1; + session1 = (Session)list.get(i); + session = session1; + if (session1.getSessionName().equalsIgnoreCase(s)) goto _L4; else goto _L3 +_L3: + i++; + if (true) goto _L6; else goto _L5 +_L5: + } + + private int getMask(int i, int j, boolean flag) + { + if (flag) + { + return i | j; + } else + { + return ~j & i; + } + } + + private static int getPlusMinusCount(String s) + { + int i; + int j; + int k; + j = 0; + k = s.length(); + i = 0; +_L5: + if (i < k) goto _L2; else goto _L1 +_L1: + return j; +_L2: + s.charAt(i); + JVM INSTR lookupswitch 3: default 56 + // 32: 14 + // 43: 63 + // 45: 63; + goto _L3 _L1 _L4 _L4 +_L3: + i++; + goto _L5 +_L4: + j++; + goto _L3 + } + + private void handleMultipleModeChanges(String s, String s1, String s2) + { + int i = s1.indexOf(' '); + if (i != -1) goto _L2; else goto _L1 +_L1: + return; +_L2: + String s3; + Object obj; + int i1; + obj = s1.substring(i + 1); + s3 = s1.substring(0, i); + i1 = getPlusMinusCount(s1); + i = 0; +_L6: + if (i >= i1) goto _L1; else goto _L3 +_L3: + int j; +label0: + { + int k = s3.lastIndexOf('+'); + if (k != -1) + { + j = k; + if (k != 0) + { + break label0; + } + } + j = s3.lastIndexOf('-'); + } + boolean flag; + if (j == -1) + { + Object obj1; + String as[]; + int l; + if (s3.charAt(0) == '+') + { + flag = true; + } else + { + flag = false; + } + s1 = filterModes(flag, s3); + } else + if (j == 0) + { + if (s3.charAt(j) == '+') + { + flag = true; + } else + { + flag = false; + } + s1 = filterModes(flag, s3); + } else + { + s1 = s3.substring(j); + if (s1.charAt(0) == '+') + { + flag = true; + } else + { + flag = false; + } + s1 = filterModes(flag, s1); + } + obj1 = obj; + if (s1.length() != 0) + { + l = s1.length(); + as = Utils.split(((CharSequence) (obj))); + obj1 = as; + if (as.length > l) + { + obj1 = new String[l]; + System.arraycopy(as, as.length - l, obj1, 0, l); + } + obj = ((String) (obj)).substring(0, ((String) (obj)).lastIndexOf(obj1[0])).trim(); + parseModes(flag, s, s1, ((String []) (obj1)), s2); + obj1 = obj; + } + if (j == -1 || ((String) (obj1)).length() == 0) goto _L1; else goto _L4 +_L4: + s3 = s3.substring(0, j); + if (s3.length() == 0) goto _L1; else goto _L5 +_L5: + i++; + obj = obj1; + goto _L6 + } + + private void handleSingleModeChange(String s, String s1, String s2) + { + boolean flag = false; + int i = s1.indexOf(' '); + if (i == -1) + { + return; + } + String s3 = s1.substring(0, i); + if (s1.charAt(0) == '+') + { + flag = true; + } + parseModes(flag, s, filterModes(flag, s3), Utils.split(s1.substring(i + 1)), s2); + } + + public static void notifyPostClear() + { + List list = sGlobalWatchers; + int j = list.size(); + int i = 0; + do + { + if (i >= j) + { + return; + } + GlobalEventWatcher globaleventwatcher = (GlobalEventWatcher)list.get(i); + if (globaleventwatcher != null) + { + globaleventwatcher.onSessionTextStateCleared(); + } + i++; + } while (true); + } + + public static void notifyPostDelete(int i) + { + List list = sGlobalWatchers; + int k = list.size(); + int j = 0; + do + { + if (j >= k) + { + return; + } + GlobalEventWatcher globaleventwatcher = (GlobalEventWatcher)list.get(j); + if (globaleventwatcher != null) + { + globaleventwatcher.onSessionManagerDeleted(i); + } + j++; + } while (true); + } + + private static void notifySessionAdd(String s, int i, int j) + { + List list = sGlobalWatchers; + int l = list.size(); + int k = 0; + do + { + if (k >= l) + { + return; + } + GlobalEventWatcher globaleventwatcher = (GlobalEventWatcher)list.get(k); + if (globaleventwatcher != null) + { + globaleventwatcher.onSessionAdded(s, i, j); + } + k++; + } while (true); + } + + private void parseModes(boolean flag, String s, String s1, String as[], String s2) + { + Session session = get(s); + if (session != null) goto _L2; else goto _L1 +_L1: + int k; + return; +_L2: + if ((k = s1.length()) == 0) goto _L1; else goto _L3 +_L3: + List list; + int j; + list = mNickWatchers; + j = 0; +_L10: + if (j >= k) goto _L1; else goto _L4 +_L4: + char c = s1.charAt(j); + c; + JVM INSTR tableswitch 107 107: default 68 + // 107 167; + goto _L5 _L6 +_L5: + if (!mMap.isMode(c)) goto _L8; else goto _L7 +_L7: + String s3; + int i; + int l; + s3 = as[j]; + l = getMask(session.getMaskForNick(s3), mMap.getModeLevel(c), flag); + boolean flag1 = s3.equals(s2); + session.updateNickStatus(s3, l); + if (flag1) + { + pServ.sendFlaggedMessage(5, s); + } + i = list.size() - 1; +_L11: + if (i >= 0) goto _L9; else goto _L8 +_L8: + j++; + goto _L10 +_L6: + Session.MetaData metadata = session.getMetaData(); + if (flag) + { + s3 = as[j]; + } else + { + s3 = null; + } + metadata.channelKey = s3; + goto _L8 +_L9: + NickWatcher nickwatcher = (NickWatcher)list.get(i); + if (nickwatcher == null) + { + list.remove(i); + i--; + } else + { + nickwatcher.onNickModeChanged(s, s3, mMap.convertLevelToPrefix(l)); + } + i--; + goto _L11 + } + + public static void removeEventWatcher(GlobalEventWatcher globaleventwatcher) + { + List list = sGlobalWatchers; + int i = list.size() - 1; + do + { + if (i < 0) + { + return; + } + if (list.get(i) == globaleventwatcher) + { + list.remove(i); + return; + } + i--; + } while (true); + } + + public void addName(String s, String s1, String s2, String s3) + { + Session session = get(s); + if (session != null) + { + session.addSingleNick(s1, s2, s3); + s2 = mNickWatchers; + int i = s2.size() - 1; + while (i >= 0) + { + s3 = (NickWatcher)s2.get(i); + if (s3 == null) + { + s2.remove(i); + i--; + } else + { + s3.onNickAdded(s, s1); + } + i--; + } + } + } + + public void addNewNames(String s, String s1, String s2) + { + Session session1 = get(s1); + Session session = session1; + if (session1 == null) + { + session = Session.createSession(s, s1, 1, this); + mSessions.add(session); + } + session.addMultipleNicks(s2); + } + + public void addNickWatcher(NickWatcher nickwatcher) + { + List list; + int i; + list = mNickWatchers; + i = list.size() - 1; +_L6: + if (i >= 0) goto _L2; else goto _L1 +_L1: + list.add(nickwatcher); +_L4: + return; +_L2: + if (list.get(i) == nickwatcher) goto _L4; else goto _L3 +_L3: + i--; + if (true) goto _L6; else goto _L5 +_L5: + } + + public void addSession(String s, String s1, int i) + { + if (mMap == null) + { + buildStatusMap("qaohv", "~&@%+"); + } + if (get(s) == null) + { + s1 = Session.createSession(s1, s, i, this); + mSessions.add(s1); + notifySessionAdd(s, i, mId); + return; + } else + { + setActive(s, true); + return; + } + } + + public void addText(IRCMessage ircmessage, boolean flag) + { + Session session; + Session session1 = get(ircmessage.target); + session = session1; + if (session1 == null) + { + session = get("Status"); + ircmessage.target = "Status"; + } + if (session == null) goto _L2; else goto _L1 +_L1: + List list; + int i; + int j; + list = sGlobalWatchers; + j = list.size(); + i = 0; +_L6: + if (i < j) goto _L4; else goto _L3 +_L3: + session.addText(ircmessage.message, flag, ircmessage.val); +_L2: + ircmessage.recycle(); + return; +_L4: + GlobalEventWatcher globaleventwatcher = (GlobalEventWatcher)list.get(i); + if (globaleventwatcher != null) + { + globaleventwatcher.onMessageReceived(ircmessage.target, ircmessage.val, mId); + } + i++; + if (true) goto _L6; else goto _L5 +_L5: + } + + public void buildStatusMap(String s, String s1) + { + mMap = new StatusMap(s, s1, null); + } + + public void checkForModes(String s, String s1, String s2) + { + if (s.length() == 0 || !Utils.isChannelPrefix(s.charAt(0))) + { + return; + } + switch (getPlusMinusCount(s1)) + { + default: + handleMultipleModeChanges(s, s1, s2); + return; + + case 1: // '\001' + handleSingleModeChange(s, s1, s2); + break; + } + } + + public void clearScrollbackForAll() + { + List list = mSessions; + int j = mSessions.size(); + int i = 0; + do + { + if (i >= j) + { + return; + } + ((Session)list.get(i)).trimInputHistory(0); + i++; + } while (true); + } + + public volatile int compareTo(Object obj) + { + return compareTo((SessionManager)obj); + } + + public int compareTo(SessionManager sessionmanager) + { + return mProfile.getName().compareToIgnoreCase(sessionmanager.mProfile.getName()); + } + + public void deleteText(String s, int i) + { + String s1 = s; + if (s.length() == 0) + { + s1 = "Status"; + } + s = get(s1); + if (s != null) + { + s.getSessionMessages().removeWithLimit(i); + } + } + + public boolean getActive(String s) + { + s = get(s); + if (s != null) + { + return s.isActive(); + } else + { + return false; + } + } + + public Session getCurrentSession() + { + return mCurrentSession; + } + + public Session getDefaultSession() + { + return get("Status"); + } + + public int getId() + { + return mId; + } + + int getInputLimit() + { + return mInputLimit; + } + + public String getKey(String s) + { + if (Utils.isChannelPrefix(s.charAt(0))) + { + if ((s = get(s)) != null) + { + return s.getMetaData().channelKey; + } + } + return null; + } + + public Session.MetaData getMetadata(String s) + { + s = get(s); + if (s != null) + { + return s.getMetaData(); + } else + { + return null; + } + } + + public int getNickColor(String s, String s1) + { + s1 = get(s1); + if (s1 != null) + { + return s1.getNickColour(s); + } else + { + return 0; + } + } + + public List getNickList(String s) + { + s = get(s); + if (s != null) + { + return s.getNickList(); + } else + { + return Collections.emptyList(); + } + } + + public String getNickStatus(String s, String s1) + { + s1 = get(s1); + if (s1 != null) + { + return s1.getNickStatus(s); + } else + { + return ""; + } + } + + public String getOurStatus(String s) + { + s = get(s); + if (s != null) + { + return mMap.convertLevelToPrefix(s.getOwnStatusMask()); + } else + { + return ""; + } + } + + public ServerProfile getProfile() + { + return mProfile; + } + + public String[] getQuitSessions(String s) + { + StringBuilder stringbuilder; + List list; + List list1; + int j; + int k; + stringbuilder = new StringBuilder(); + list = mSessions; + k = list.size(); + list1 = mNickWatchers; + j = 0; +_L3: + String s1; + Session session; + if (j >= k) + { + return Utils.split(stringbuilder.toString().trim()); + } + session = (Session)list.get(j); + s1 = session.getSessionName(); + if (!session.removeNick(s)) goto _L2; else goto _L1 +_L1: + int i; + stringbuilder.append(" ").append(s1); + i = list1.size() - 1; +_L4: + if (i >= 0) + { + break MISSING_BLOCK_LABEL_115; + } +_L2: + j++; + goto _L3 + NickWatcher nickwatcher = (NickWatcher)list1.get(i); + if (nickwatcher == null) + { + list1.remove(i); + i--; + } else + { + nickwatcher.onNickRemoved(s1, s); + } + i--; + goto _L4 + } + + public Session getSession(String s) + { + return get(s); + } + + public int getSessionCount() + { + return mSessions.size(); + } + + public String[] getSessionList() + { + List list = mSessions; + int j = list.size(); + String as[] = new String[j]; + int i = 0; + do + { + if (i >= j) + { + return as; + } + as[i] = ((Session)list.get(i)).getSessionName(); + i++; + } while (true); + } + + public List getSessionObjects() + { + ArrayList arraylist; + synchronized (mSessions) + { + arraylist = new ArrayList(); + arraylist.addAll(mSessions); + } + return arraylist; + exception; + list; + JVM INSTR monitorexit ; + throw exception; + } + + public StatusMap getStatusMap() + { + return mMap; + } + + public Session.UserCount getUserCount(String s) + { + Session session = get(s); + List list = mNickWatchers; + int i = list.size() - 1; + do + { + NickWatcher nickwatcher; + if (i < 0) + { + if (session != null) + { + return session.getUserCount(); + } else + { + return new Session.UserCount(); + } + } + nickwatcher = (NickWatcher)list.get(i); + if (nickwatcher == null) + { + list.remove(i); + i--; + } else + { + nickwatcher.onNicksReceived(s); + } + i--; + } while (true); + } + + public String[] getUserSessions(String s) + { + StringBuilder stringbuilder = new StringBuilder(); + List list = mSessions; + int j = list.size(); + int i = 0; + do + { + Session session; + String s1; + if (i >= j) + { + switch (stringbuilder.length()) + { + default: + return Utils.split(stringbuilder.toString().trim()); + + case 0: // '\0' + return new String[0]; + } + } + session = (Session)list.get(i); + s1 = session.getSessionName(); + if (session.isNickInSession(s)) + { + stringbuilder.append(' ').append(s1); + } + i++; + } while (true); + } + + public boolean haveSessionFor(String s) + { + return get(s) != null; + } + + public boolean isMarked(String s) + { + if (s.length() != 0) + { + if ((s = get(s)) != null) + { + return s.isMarked(); + } + } + return false; + } + + public boolean needsRefresh() + { + List list = mSessions; + int i = list.size() - 1; + do + { + if (i < 0) + { + return false; + } + if (((Session)list.get(i)).isInvalidated()) + { + return true; + } + i--; + } while (true); + } + + public void removeAllNames(String s) + { + s = get(s); + if (s != null) + { + s.clearAllNicks(); + } + } + + public void removeName(String s, String s1) + { + Object obj = get(s); + if (obj != null) + { + ((Session) (obj)).removeNick(s1); + obj = mNickWatchers; + int i = ((List) (obj)).size() - 1; + while (i >= 0) + { + NickWatcher nickwatcher = (NickWatcher)((List) (obj)).get(i); + if (nickwatcher == null) + { + ((List) (obj)).remove(i); + i--; + } else + { + nickwatcher.onNickRemoved(s, s1); + } + i--; + } + } + } + + public void removeNickWatcher(NickWatcher nickwatcher) + { + List list = mNickWatchers; + int i = list.size() - 1; + do + { + if (i < 0) + { + return; + } + if (list.get(i) == nickwatcher) + { + list.remove(i); + return; + } + i--; + } while (true); + } + + public void removeSession(String s) + { + Object obj = get(s); + if (obj == null) + { + Log.e("SessionManager", "Unpossible! Session not found"); + } + if (((Session) (obj)).hasCapability(6)) + { + mSessions.remove(obj); + obj = sGlobalWatchers; + int j = ((List) (obj)).size(); + int i = 0; + while (i < j) + { + GlobalEventWatcher globaleventwatcher = (GlobalEventWatcher)((List) (obj)).get(i); + if (globaleventwatcher != null) + { + globaleventwatcher.onSessionRemoved(s, mId); + } + i++; + } + } + } + + public void setActive(String s, boolean flag) + { + Object obj; + int i; + int j; + obj = get(s); + if (obj != null) + { + ((Session) (obj)).setActive(flag); + } + obj = sGlobalWatchers; + j = ((List) (obj)).size(); + i = 0; +_L2: + GlobalEventWatcher globaleventwatcher; + if (i >= j) + { + return; + } + globaleventwatcher = (GlobalEventWatcher)((List) (obj)).get(i); + if (globaleventwatcher != null) + { + break; /* Loop/switch isn't completed */ + } +_L3: + i++; + if (true) goto _L2; else goto _L1 +_L1: + if (flag) + { + globaleventwatcher.onSessionActivated(s, mId); + } else + { + globaleventwatcher.onSessionDeactivated(s, mId); + } + goto _L3 + if (true) goto _L2; else goto _L4 +_L4: + } + + public void setCurrentSession(Session session) + { + mCurrentSession = session; + List list = sGlobalWatchers; + int j = list.size(); + int i = 0; + do + { + if (i >= j) + { + return; + } + GlobalEventWatcher globaleventwatcher = (GlobalEventWatcher)list.get(i); + if (globaleventwatcher != null) + { + globaleventwatcher.onCurrentSessionChanged(mId, session.getSessionName()); + } + i++; + } while (true); + } + + public void setIdentAndHost(String s, String s1, String s2, String s3) + { + s = get(s); + if (s != null) + { + s.setNickInfo(s1, s2, s3); + } + } + + public void setInputLimit(int i) + { + mInputLimit = i; + List list = mSessions; + list; + JVM INSTR monitorenter ; + List list1; + int k; + list1 = mSessions; + k = list1.size(); + int j = 0; +_L2: + if (j < k) + { + break MISSING_BLOCK_LABEL_38; + } + list; + JVM INSTR monitorexit ; + return; + ((Session)list1.get(j)).setInputHistoryLimit(i); + j++; + if (true) goto _L2; else goto _L1 +_L1: + Exception exception; + exception; + list; + JVM INSTR monitorexit ; + throw exception; + } + + public void setMarked(String s, boolean flag) + { + if (s.length() != 0) + { + if ((s = get(s)) != null) + { + s.setAsMarked(flag); + return; + } + } + } + + public void setServ(ServerConnection serverconnection) + { + if (pServ == null) + { + pServ = serverconnection; + } + synchronized (pServ) + { + pServ = serverconnection; + } + return; + serverconnection; + serverconnection1; + JVM INSTR monitorexit ; + throw serverconnection; + } + + public void updateNick(String s, String s1, String as[]) + { + int i; + int l; + l = as.length; + i = 0; +_L2: + Session session; + if (i >= l) + { + return; + } + session = get(as[i]); + if (session != null) + { + break; /* Loop/switch isn't completed */ + } +_L3: + i++; + if (true) goto _L2; else goto _L1 +_L1: + List list; + int j; + int k; + list = mNickWatchers; + k = list.size(); + j = 0; +_L4: +label0: + { + if (j < k) + { + break label0; + } + session.changeNick(s, s1); + } + goto _L3 + NickWatcher nickwatcher = (NickWatcher)list.get(j); + if (nickwatcher == null) + { + list.remove(j); + k--; + } else + { + nickwatcher.onNickChanged(session.getSessionName(), s, s1); + } + j++; + goto _L4 + } + + public boolean updateSessionName(String s, String s1) + { + Object obj = get(s); + if (obj != null) + { + ((Session) (obj)).renameSession(s1); + obj = sGlobalWatchers; + int j = ((List) (obj)).size(); + int i = 0; + do + { + if (i >= j) + { + return true; + } + GlobalEventWatcher globaleventwatcher = (GlobalEventWatcher)((List) (obj)).get(i); + if (globaleventwatcher != null) + { + globaleventwatcher.onSessionRenamed(s, s1); + } + i++; + } while (true); + } else + { + return false; + } + } + +} diff --git a/app/src/main/java/net/andchat/donate/Backend/Sessions/StatusSession.java b/app/src/main/java/net/andchat/donate/Backend/Sessions/StatusSession.java new file mode 100644 index 0000000..27fa843 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Backend/Sessions/StatusSession.java @@ -0,0 +1,23 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Backend.Sessions; + + +// Referenced classes of package net.andchat.donate.Backend.Sessions: +// BaseSession, SessionManager + +class StatusSession extends BaseSession +{ + + StatusSession(String s, String s1, int i, SessionManager sessionmanager) + { + super(s, s1, i, sessionmanager); + } + + public boolean hasCapability(int i) + { + return false; + } +} diff --git a/app/src/main/java/net/andchat/donate/IRCApp$PreferenceChangeWatcher.java b/app/src/main/java/net/andchat/donate/IRCApp$PreferenceChangeWatcher.java new file mode 100644 index 0000000..604836e --- /dev/null +++ b/app/src/main/java/net/andchat/donate/IRCApp$PreferenceChangeWatcher.java @@ -0,0 +1,15 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate; + + +// Referenced classes of package net.andchat.donate: +// IRCApp + +public static interface +{ + + public abstract void onPreferencesChanged(); +} diff --git a/app/src/main/java/net/andchat/donate/IRCApp.java b/app/src/main/java/net/andchat/donate/IRCApp.java new file mode 100644 index 0000000..dfe1279 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/IRCApp.java @@ -0,0 +1,208 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate; + +import android.app.Application; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; +import java.util.List; +import java.util.Vector; +import net.andchat.donate.Activities.CurrentUI; +import net.andchat.donate.Activities.LegacyUI; +import net.andchat.donate.Backend.Crypt; +import net.andchat.donate.Backend.IRCDb; +import net.andchat.donate.Backend.Ignores; +import net.andchat.donate.Misc.Colours; + +public class IRCApp extends Application +{ + public static interface PreferenceChangeWatcher + { + + public abstract void onPreferencesChanged(); + } + + + public static final Class CHAT_CLASS; + public static final boolean DONATE; + public static final boolean LEGACY_VERSION; + private Crypt mCrypt; + private IRCDb mDb; + private SharedPreferences mPrefs; + private final List mWatchers = new Vector(3); + + public IRCApp() + { + } + + private void initCrypt() + { + if (mCrypt == null) + { + mCrypt = new Crypt(this); + } + } + + private void initDb() + { + if (mDb == null) + { + mDb = new IRCDb(this); + } + } + + private void initPrefs() + { + if (mPrefs == null) + { + mPrefs = PreferenceManager.getDefaultSharedPreferences(this); + } + } + + public void addWatcher(PreferenceChangeWatcher preferencechangewatcher) + { + List list; + int i; + list = mWatchers; + i = list.size() - 1; +_L6: + if (i >= 0) goto _L2; else goto _L1 +_L1: + list.add(preferencechangewatcher); +_L4: + return; +_L2: + if (list.get(i) == preferencechangewatcher) goto _L4; else goto _L3 +_L3: + i--; + if (true) goto _L6; else goto _L5 +_L5: + } + + public void clearCrypt() + { + if (mCrypt != null) + { + mCrypt.clear(); + mCrypt = null; + } + } + + public void closeDb() + { + if (mDb != null) + { + mDb.shutdown(); + mDb = null; + } + } + + public Crypt getCrypt() + { + initCrypt(); + return mCrypt; + } + + public IRCDb getDb() + { + initDb(); + return mDb; + } + + public SharedPreferences getPrefs() + { + initPrefs(); + return mPrefs; + } + + public void notifyWatchers() + { + List list = mWatchers; + int i = list.size() - 1; + do + { + if (i < 0) + { + return; + } + PreferenceChangeWatcher preferencechangewatcher = (PreferenceChangeWatcher)list.get(i); + if (preferencechangewatcher == null) + { + list.remove(i); + i--; + } else + { + preferencechangewatcher.onPreferencesChanged(); + } + i--; + } while (true); + } + + public void onCreate() + { + super.onCreate(); + Colours.init(this); + } + + public void onTerminate() + { + super.onTerminate(); + closeDb(); + clearCrypt(); + mPrefs = null; + Colours.getInstance().clear(); + Ignores.clear(); + } + + public void removeWatcher(PreferenceChangeWatcher preferencechangewatcher) + { + List list = mWatchers; + int i = list.size() - 1; + do + { + if (i < 0) + { + return; + } + if (list.get(i) == preferencechangewatcher) + { + list.remove(i); + return; + } + i--; + } while (true); + } + + static + { + boolean flag1 = true; + Object obj; + boolean flag; + if (android.os.Build.VERSION.SDK_INT < 11) + { + flag = true; + } else + { + flag = false; + } + LEGACY_VERSION = flag; + if (LEGACY_VERSION) + { + obj = net/andchat/donate/Activities/LegacyUI; + } else + { + obj = net/andchat/donate/Activities/CurrentUI; + } + CHAT_CLASS = ((Class) (obj)); + if (net/andchat/donate/IRCApp.getPackage().toString().indexOf("donate") > -1) + { + flag = flag1; + } else + { + flag = false; + } + DONATE = flag; + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/AbstractMenuInflator$ActionBarMenu.java b/app/src/main/java/net/andchat/donate/Misc/AbstractMenuInflator$ActionBarMenu.java new file mode 100644 index 0000000..807ab4f --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/AbstractMenuInflator$ActionBarMenu.java @@ -0,0 +1,52 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + +import android.content.Context; +import com.markupartist.android.widget.ActionBar; + +// Referenced classes of package net.andchat.donate.Misc: +// AbstractMenuInflator, Utils + +public static class mContext extends AbstractMenuInflator +{ + + private boolean haveOverflow; + private final ActionBar mActionBar; + private final Context mContext; + + public void addItem(String s, int i, int j, int k) + { + if (k == 0) + { + s = new com.markupartist.android.widget.(0x7f020039, mContext.getString(0x7f0a009c)); + mActionBar.addAction(s); + return; + } else + { + s = new com.markupartist.android.widget.ar(i, s); + mActionBar.addAction(s); + return; + } + } + + public boolean shouldParseItem(int i) + { + if (i == 0 && !haveOverflow) + { + haveOverflow = true; + return true; + } else + { + return false | Utils.isBitSet(i, 2) | Utils.isBitSet(i, 1); + } + } + + public (ActionBar actionbar, Context context) + { + mActionBar = actionbar; + mContext = context; + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/AbstractMenuInflator$QuickActionsMenu.java b/app/src/main/java/net/andchat/donate/Misc/AbstractMenuInflator$QuickActionsMenu.java new file mode 100644 index 0000000..8c921e1 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/AbstractMenuInflator$QuickActionsMenu.java @@ -0,0 +1,32 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + +import net.londatiga.android.ActionItem; +import net.londatiga.android.QuickAction; + +// Referenced classes of package net.andchat.donate.Misc: +// AbstractMenuInflator + +public static class mQuickActions extends AbstractMenuInflator +{ + + private final QuickAction mQuickActions; + + public void addItem(String s, int i, int j, int k) + { + mQuickActions.addActionItem(new ActionItem(j, s)); + } + + public boolean shouldParseItem(int i) + { + return i == 0; + } + + public (QuickAction quickaction) + { + mQuickActions = quickaction; + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/AbstractMenuInflator$SlideInMenu.java b/app/src/main/java/net/andchat/donate/Misc/AbstractMenuInflator$SlideInMenu.java new file mode 100644 index 0000000..e69de29 diff --git a/app/src/main/java/net/andchat/donate/Misc/AbstractMenuInflator.java b/app/src/main/java/net/andchat/donate/Misc/AbstractMenuInflator.java new file mode 100644 index 0000000..b283e4a --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/AbstractMenuInflator.java @@ -0,0 +1,256 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + +import android.content.Context; +import android.content.res.Resources; +import android.content.res.XmlResourceParser; +import android.view.InflateException; +import android.view.LayoutInflater; +import android.view.ViewGroup; +import android.widget.Button; +import com.markupartist.android.widget.ActionBar; +import java.io.IOException; +import net.londatiga.android.ActionItem; +import net.londatiga.android.QuickAction; +import org.xmlpull.v1.XmlPullParserException; + +// Referenced classes of package net.andchat.donate.Misc: +// Utils + +public abstract class AbstractMenuInflator +{ + public static class ActionBarMenu extends AbstractMenuInflator + { + + private boolean haveOverflow; + private final ActionBar mActionBar; + private final Context mContext; + + public void addItem(String s, int i, int j, int k) + { + if (k == 0) + { + s = new com.markupartist.android.widget.ActionBar.GenericAction(0x7f020039, mContext.getString(0x7f0a009c)); + mActionBar.addAction(s); + return; + } else + { + s = new com.markupartist.android.widget.ActionBar.GenericAction(i, s); + mActionBar.addAction(s); + return; + } + } + + public boolean shouldParseItem(int i) + { + if (i == 0 && !haveOverflow) + { + haveOverflow = true; + return true; + } else + { + return false | Utils.isBitSet(i, 2) | Utils.isBitSet(i, 1); + } + } + + public ActionBarMenu(ActionBar actionbar, Context context) + { + mActionBar = actionbar; + mContext = context; + } + } + + public static class QuickActionsMenu extends AbstractMenuInflator + { + + private final QuickAction mQuickActions; + + public void addItem(String s, int i, int j, int k) + { + mQuickActions.addActionItem(new ActionItem(j, s)); + } + + public boolean shouldParseItem(int i) + { + return i == 0; + } + + public QuickActionsMenu(QuickAction quickaction) + { + mQuickActions = quickaction; + } + } + + public static class SlideInMenu extends AbstractMenuInflator + { + + private final int mButtonResource; + private final android.view.View.OnClickListener mListener; + private final ViewGroup mRoot; + + public void addItem(String s, int i, int j, int k) + { + ViewGroup viewgroup = mRoot; + Button button = (Button)LayoutInflater.from(viewgroup.getContext()).inflate(mButtonResource, viewgroup, false); + button.setId(j); + button.setText(s); + button.setOnClickListener(mListener); + viewgroup.addView(button); + } + + public boolean shouldParseItem(int i) + { + return false | Utils.isBitSet(i, 2) | Utils.isBitSet(i, 1); + } + + public SlideInMenu(ViewGroup viewgroup, int i, android.view.View.OnClickListener onclicklistener) + { + mRoot = viewgroup; + mButtonResource = i; + mListener = onclicklistener; + } + } + + + public AbstractMenuInflator() + { + } + + public void addActionsFromXML(Context context, int i) + { + Context context1; + Context context2; + Context context3; + String s; + String s1; + Object obj; + s1 = null; + obj = null; + s = null; + context2 = s; + context1 = s1; + context3 = obj; + Resources resources = context.getResources(); + context2 = s; + context1 = s1; + context3 = obj; + context = resources.getXml(i); + context2 = context; + context1 = context; + context3 = context; + int j = context.getEventType(); + i = 0; +_L4: + if (i != 0) + { + if (context != null) + { + context.close(); + } + return; + } + j; + JVM INSTR tableswitch 1 2: default 100 + // 1 413 + // 2 129; + goto _L1 _L2 _L3 +_L2: + break MISSING_BLOCK_LABEL_413; +_L1: + j = i; +_L6: + context2 = context; + context1 = context; + context3 = context; + int k = context.next(); + i = j; + j = k; + goto _L4 +_L3: + j = i; + context2 = context; + context1 = context; + context3 = context; + if (!context.getName().equals("item")) goto _L6; else goto _L5 +_L5: + context2 = context; + context1 = context; + context3 = context; + k = context.getAttributeResourceValue("http://schemas.android.com/apk/res/android", "id", 0); + j = i; + if (k == 0) goto _L6; else goto _L7 +_L7: + context2 = context; + context1 = context; + context3 = context; + int l = context.getAttributeIntValue("http://schemas.android.com/apk/res/android", "showAsAction", -1); + j = i; + context2 = context; + context1 = context; + context3 = context; + if (!shouldParseItem(l)) goto _L6; else goto _L8 +_L8: + context2 = context; + context1 = context; + context3 = context; + j = context.getAttributeResourceValue("http://schemas.android.com/apk/res/android", "icon", -1); + context2 = context; + context1 = context; + context3 = context; + s1 = context.getAttributeValue("http://schemas.android.com/apk/res/android", "title"); + s = s1; + context2 = context; + context1 = context; + context3 = context; + if (s1.length() <= 0) goto _L10; else goto _L9 +_L9: + s = s1; + context2 = context; + context1 = context; + context3 = context; + if (s1.charAt(0) != '@') goto _L10; else goto _L11 +_L11: + context2 = context; + context1 = context; + context3 = context; + int i1 = context.getAttributeResourceValue("http://schemas.android.com/apk/res/android", "title", -1); + if (i1 != -1) goto _L13; else goto _L12 +_L12: + s = ""; +_L10: + context2 = context; + context1 = context; + context3 = context; + addItem(s, j, k, l); + j = i; + goto _L6 + context; + context1 = context2; + throw new InflateException("Error inflating menu XML", context); + context; + if (context1 != null) + { + context1.close(); + } + throw context; +_L13: + context2 = context; + context1 = context; + context3 = context; + s = resources.getString(i1); + goto _L10 + j = 1; + goto _L6 + context; + context1 = context3; + throw new InflateException("Error inflating menu XML", context); + goto _L4 + } + + public abstract void addItem(String s, int i, int j, int k); + + public abstract boolean shouldParseItem(int i); +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Backup$BackupOp.java b/app/src/main/java/net/andchat/donate/Misc/Backup$BackupOp.java new file mode 100644 index 0000000..b4ad87c --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Backup$BackupOp.java @@ -0,0 +1,86 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + +import android.app.Activity; +import android.os.Handler; +import android.os.Message; +import java.io.File; +import java.io.InputStream; +import java.util.concurrent.atomic.AtomicBoolean; + +// Referenced classes of package net.andchat.donate.Misc: +// Backup + +public static final class mIs extends Thread +{ + + private final Backup mBackup; + private Activity mCtx; + private File mFile; + public Handler mHandler; + private InputStream mIs; + public final AtomicBoolean mRunning; + public final int opType; + public boolean showDialog; + + public void run() + { + Message.obtain(mHandler, 0).sendToTarget(); + mRunning.set(true); + opType; + JVM INSTR tableswitch 0 1: default 44 + // 0 142 + // 1 92; + goto _L1 _L2 _L3 +_L1: + mCtx = null; + if (showDialog) + { + Message.obtain(mHandler, 1).sendToTarget(); + } + Message.obtain(mHandler, 2).sendToTarget(); + mHandler = null; + mRunning.set(false); + return; +_L3: + if (mFile != null) + { + Backup.access$0(mBackup, mCtx, mFile); + } else + if (mIs != null) + { + Backup.access$1(mBackup, mCtx, mIs); + } + continue; /* Loop/switch isn't completed */ +_L2: + Backup.access$2(mBackup, mCtx); + if (true) goto _L1; else goto _L4 +_L4: + } + + private n(int i, Activity activity, Backup backup, Handler handler) + { + mCtx = activity; + opType = i; + mRunning = new AtomicBoolean(false); + showDialog = true; + mHandler = handler; + mBackup = backup; + } + + public mBackup(int i, Activity activity, Backup backup, File file, Handler handler) + { + this(i, activity, backup, handler); + mFile = file; + mIs = null; + } + + public mIs(int i, Activity activity, Backup backup, InputStream inputstream, Handler handler) + { + this(i, activity, backup, handler); + mIs = inputstream; + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Backup$Preference.java b/app/src/main/java/net/andchat/donate/Misc/Backup$Preference.java new file mode 100644 index 0000000..1dd8787 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Backup$Preference.java @@ -0,0 +1,26 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + + +// Referenced classes of package net.andchat.donate.Misc: +// Backup + +private static final class +{ + + public String key; + public Class type; + public String value; + + private () + { + } + + ( ) + { + this(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Backup$Stats.java b/app/src/main/java/net/andchat/donate/Misc/Backup$Stats.java new file mode 100644 index 0000000..efa0971 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Backup$Stats.java @@ -0,0 +1,36 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + + +// Referenced classes of package net.andchat.donate.Misc: +// Backup + +public static final class +{ + + public boolean crypt; + public Exception exception; + public String fileName; + public int goodPreferences; + public int goodServers; + public int opType; + public int totalPreferences; + public int totalServers; + + public String toString() + { + return super.toString(); + } + + private () + { + } + + ( ) + { + this(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Backup.java b/app/src/main/java/net/andchat/donate/Misc/Backup.java new file mode 100644 index 0000000..348f1cc --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Backup.java @@ -0,0 +1,523 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + +import android.app.Activity; +import android.content.SharedPreferences; +import android.os.Environment; +import android.os.Handler; +import android.os.Message; +import android.util.Log; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.atomic.AtomicBoolean; +import net.andchat.donate.Backend.Crypt; +import net.andchat.donate.Backend.IRCDb; +import org.xmlpull.v1.XmlPullParser; +import org.xmlpull.v1.XmlPullParserFactory; +import org.xmlpull.v1.XmlSerializer; + +// Referenced classes of package net.andchat.donate.Misc: +// Utils, ServerProfile + +public final class Backup +{ + public static final class BackupOp extends Thread + { + + private final Backup mBackup; + private Activity mCtx; + private File mFile; + public Handler mHandler; + private InputStream mIs; + public final AtomicBoolean mRunning; + public final int opType; + public boolean showDialog; + + public void run() + { + Message.obtain(mHandler, 0).sendToTarget(); + mRunning.set(true); + opType; + JVM INSTR tableswitch 0 1: default 44 + // 0 142 + // 1 92; + goto _L1 _L2 _L3 +_L1: + mCtx = null; + if (showDialog) + { + Message.obtain(mHandler, 1).sendToTarget(); + } + Message.obtain(mHandler, 2).sendToTarget(); + mHandler = null; + mRunning.set(false); + return; +_L3: + if (mFile != null) + { + mBackup.importData(mCtx, mFile); + } else + if (mIs != null) + { + mBackup.importData(mCtx, mIs); + } + continue; /* Loop/switch isn't completed */ +_L2: + mBackup.exportData(mCtx); + if (true) goto _L1; else goto _L4 +_L4: + } + + private BackupOp(int i, Activity activity, Backup backup, Handler handler) + { + mCtx = activity; + opType = i; + mRunning = new AtomicBoolean(false); + showDialog = true; + mHandler = handler; + mBackup = backup; + } + + public BackupOp(int i, Activity activity, Backup backup, File file, Handler handler) + { + this(i, activity, backup, handler); + mFile = file; + mIs = null; + } + + public BackupOp(int i, Activity activity, Backup backup, InputStream inputstream, Handler handler) + { + this(i, activity, backup, handler); + mIs = inputstream; + } + } + + private static final class Preference + { + + public String key; + public Class type; + public String value; + + private Preference() + { + } + + Preference(Preference preference) + { + this(); + } + } + + public static final class Stats + { + + public boolean crypt; + public Exception exception; + public String fileName; + public int goodPreferences; + public int goodServers; + public int opType; + public int totalPreferences; + public int totalServers; + + public String toString() + { + return super.toString(); + } + + private Stats() + { + } + + Stats(Stats stats) + { + this(); + } + } + + + private Stats mStats; + + public Backup() + { + } + + private void exportData(Activity activity) + { + Object obj1; + File file1; + Stats stats; + Object obj2; + Object obj3; + obj2 = Utils.getIRCDb(activity); + obj3 = Utils.getPrefs(activity); + File file = new File((new StringBuilder()).append(Environment.getExternalStorageDirectory()).append(File.separator).append("net.andchat.donate").append(File.separator).append("Backups").toString()); + if (!file.exists() || !file.isDirectory()) + { + file.mkdirs(); + } + obj1 = Calendar.getInstance(); + ((Calendar) (obj1)).setTimeInMillis(System.currentTimeMillis()); + file1 = new File(file, (new StringBuilder("Backup-")).append(((Calendar) (obj1)).get(1)).append("-").append(Utils.getMonth(((Calendar) (obj1)).get(2), true)).append("-").append(Utils.addPadding(((Calendar) (obj1)).get(5))).append("_").append(Utils.addPadding(((Calendar) (obj1)).get(11))).append(Utils.addPadding(((Calendar) (obj1)).get(12))).append(Utils.addPadding(((Calendar) (obj1)).get(13))).append(".xml").toString()); + stats = new Stats(null); + mStats = stats; + stats.opType = 0; + obj1 = null; + XmlSerializer xmlserializer = XmlPullParserFactory.newInstance().newSerializer(); + Object obj; + try + { + xmlserializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true); + } + catch (IllegalStateException illegalstateexception) { } + obj = new FileOutputStream(file1, true); + stats.fileName = file1.getPath(); + xmlserializer.setOutput(((java.io.OutputStream) (obj)), "UTF-8"); + xmlserializer.startDocument("UTF-8", null); + xmlserializer.startTag(null, "AndChat"); + xmlserializer.startTag(null, "servers"); + stats.totalServers = ((IRCDb) (obj2)).toXml(xmlserializer, stats); + xmlserializer.endTag(null, "servers"); + if (((SharedPreferences) (obj3)).getBoolean(activity.getString(0x7f0a001d), false)) + { + Utils.getCrypt(activity).toXml(xmlserializer); + stats.crypt = true; + } + activity = ((SharedPreferences) (obj3)).getAll(); + obj1 = activity.keySet(); + stats.totalPreferences = activity.size(); + xmlserializer.startTag(null, "preferences"); + obj1 = ((Set) (obj1)).iterator(); +_L2: + if (!((Iterator) (obj1)).hasNext()) + { + xmlserializer.endTag(null, "preferences"); + xmlserializer.endTag(null, "AndChat"); + xmlserializer.endDocument(); + ((FileOutputStream) (obj)).close(); + return; + } + obj2 = (String)((Iterator) (obj1)).next(); + obj3 = activity.get(obj2); + xmlserializer.startTag(null, "preference"); + if (!(obj3 instanceof String)) + { + break; /* Loop/switch isn't completed */ + } + xmlserializer.attribute(null, "type", "string"); +_L3: + xmlserializer.attribute(null, "key", ((String) (obj2))); + xmlserializer.attribute(null, "value", String.valueOf(obj3)); + xmlserializer.endTag(null, "preference"); + stats.goodPreferences = stats.goodPreferences + 1; + if (true) goto _L2; else goto _L1 + activity; +_L4: + stats.exception = activity; + if (obj != null) + { + try + { + ((FileOutputStream) (obj)).close(); + } + // Misplaced declaration of an exception variable + catch (Activity activity) { } + file1.delete(); + return; + } else + { + return; + } +_L1: +label0: + { + if (!(obj3 instanceof Boolean)) + { + break label0; + } + xmlserializer.attribute(null, "type", "bool"); + } + goto _L3 +label1: + { + if (!(obj3 instanceof Integer)) + { + break label1; + } + xmlserializer.attribute(null, "type", "int"); + } + goto _L3 + Log.e("AndChat::Backup", (new StringBuilder("Unknown preference type: ")).append(obj3).toString()); + goto _L3 + activity; + obj = obj1; + goto _L4 + } + + private void importData(Activity activity, File file) + { + mStats = new Stats(null); + mStats.opType = 1; + try + { + file = new FileInputStream(file); + } + // Misplaced declaration of an exception variable + catch (Activity activity) + { + mStats.exception = activity; + return; + } + importData(activity, ((InputStream) (file)), mStats); + file.close(); +_L2: + return; + activity; + if (true) goto _L2; else goto _L1 +_L1: + } + + private void importData(Activity activity, InputStream inputstream) + { + mStats = new Stats(null); + importData(activity, inputstream, mStats); + } + + private void importData(Activity activity, InputStream inputstream, Stats stats) + { + stats.opType = 1; + android.content.SharedPreferences.Editor editor; + IRCDb ircdb; + XmlPullParser xmlpullparser; + ArrayList arraylist; + ArrayList arraylist1; + ircdb = Utils.getIRCDb(activity); + editor = Utils.getPrefs(activity).edit(); + xmlpullparser = XmlPullParserFactory.newInstance().newPullParser(); + xmlpullparser.setInput(inputstream, null); + arraylist = new ArrayList(); + arraylist1 = new ArrayList(); + Object obj; + Object obj1; + obj1 = null; + obj = null; + int i = xmlpullparser.getEventType(); +_L8: + if (i != 1) goto _L2; else goto _L1 +_L1: + stats.totalServers = arraylist.size(); + ircdb.addMultiple(arraylist, stats); + i = arraylist1.size(); + stats.totalPreferences = i; + inputstream = arraylist1.iterator(); +_L20: + if (inputstream.hasNext()) goto _L4; else goto _L3 +_L3: + if (i <= 0) + { + break MISSING_BLOCK_LABEL_142; + } + editor.commit(); + Object obj2; + Object obj3; + if (stats.crypt && obj1 != null && obj != null) + { + try + { + Utils.getCrypt(activity).fromXml(((String) (obj1)), ((String) (obj))); + return; + } + // Misplaced declaration of an exception variable + catch (Activity activity) + { + stats.exception = activity; + } + return; + } + goto _L5 +_L2: + inputstream = xmlpullparser.getName(); + if (inputstream != null) goto _L7; else goto _L6 +_L6: + i = xmlpullparser.next(); + goto _L8 +_L9: + i = xmlpullparser.next(); + obj1 = obj2; + obj = obj3; + goto _L8 +_L22: + if (!inputstream.equalsIgnoreCase("server")) + { + break MISSING_BLOCK_LABEL_257; + } + arraylist.add(ServerProfile.fromXml(xmlpullparser, activity)); + obj2 = obj1; + obj3 = obj; + goto _L9 + if (!inputstream.equals("ignore")) goto _L11; else goto _L10 +_L10: + Object obj4; + String s; + inputstream = xmlpullparser.getAttributeValue(null, "label"); + obj2 = xmlpullparser.getAttributeValue(null, "nick"); + obj3 = xmlpullparser.getAttributeValue(null, "ident"); + obj4 = xmlpullparser.getAttributeValue(null, "host"); + s = xmlpullparser.getAttributeValue(null, "mask"); + if (inputstream != null && obj3 != null && obj4 != null && s != null) + { + break MISSING_BLOCK_LABEL_371; + } + Log.e("AndChat::Backup", "Missing info for ignore, skipping..."); + obj2 = obj1; + obj3 = obj; + goto _L9 + int j = Integer.parseInt(s); + i = arraylist.size(); + obj4 = new net.andchat.donate.Backend.Ignores.IgnoreInfo(((String) (obj2)), ((String) (obj3)), ((String) (obj4)), j); + i--; +_L23: + obj2 = obj1; + obj3 = obj; + if (i < 0) goto _L9; else goto _L12 +_L12: + obj2 = (ServerProfile)arraylist.get(i); + if (!((ServerProfile) (obj2)).getName().equalsIgnoreCase(inputstream)) goto _L14; else goto _L13 +_L13: + ((ServerProfile) (obj2)).getIgnoreList().add(obj4); + obj2 = obj1; + obj3 = obj; + goto _L9 + inputstream; + Log.e("AndChat::Backup", "mask is not a number, skipping"); + goto _L8 +_L11: +label0: + { + if (!inputstream.equalsIgnoreCase("crypt")) + { + break label0; + } + obj2 = xmlpullparser.getAttributeValue(null, "m"); + obj3 = xmlpullparser.getAttributeValue(null, "s"); + stats.crypt = true; + } + goto _L9 + obj2 = obj1; + obj3 = obj; + if (!inputstream.equalsIgnoreCase("preference")) goto _L9; else goto _L15 +_L15: + obj2 = xmlpullparser.getAttributeValue(null, "key"); + obj4 = xmlpullparser.getAttributeValue(null, "type"); + obj3 = xmlpullparser.getAttributeValue(null, "value"); + inputstream = null; + if (!((String) (obj4)).equalsIgnoreCase("string")) goto _L17; else goto _L16 +_L16: + inputstream = new Preference(null); + inputstream.key = ((String) (obj2)); + inputstream.type = java/lang/String; + inputstream.value = ((String) (obj3)); +_L19: + obj2 = obj1; + obj3 = obj; + if (inputstream == null) goto _L9; else goto _L18 +_L18: + arraylist1.add(inputstream); + obj2 = obj1; + obj3 = obj; + goto _L9 +_L17: +label1: + { + if (!((String) (obj4)).equalsIgnoreCase("bool")) + { + break label1; + } + inputstream = new Preference(null); + inputstream.key = ((String) (obj2)); + inputstream.type = java/lang/Boolean; + inputstream.value = ((String) (obj3)); + } + goto _L19 +label2: + { + if (!((String) (obj4)).equalsIgnoreCase("int")) + { + break label2; + } + inputstream = new Preference(null); + inputstream.key = ((String) (obj2)); + inputstream.type = java/lang/Integer; + inputstream.value = ((String) (obj3)); + } + goto _L19 + Log.e("AndChat::Backup", (new StringBuilder("Unknown preference type:")).append(((String) (obj4))).toString()); + goto _L19 +_L4: + obj2 = (Preference)inputstream.next(); + stats.goodPreferences = stats.goodPreferences + 1; + obj3 = ((Preference) (obj2)).type; + if (obj3 != java/lang/String) + { + break MISSING_BLOCK_LABEL_830; + } + editor.putString(((Preference) (obj2)).key, ((Preference) (obj2)).value); + goto _L20 + if (obj3 != java/lang/Boolean) + { + break MISSING_BLOCK_LABEL_865; + } + editor.putBoolean(((Preference) (obj2)).key, Boolean.valueOf(((Preference) (obj2)).value).booleanValue()); + goto _L20 + if (obj3 != java/lang/Integer) + { + break MISSING_BLOCK_LABEL_948; + } + editor.putInt(((Preference) (obj2)).key, Integer.parseInt(((Preference) (obj2)).value)); + goto _L20 + obj3; + Log.e("AndChat::Backup", (new StringBuilder("Unable to parse ")).append(((Preference) (obj2)).value).append(" as int").toString(), ((Throwable) (obj3))); + stats.goodPreferences = stats.goodPreferences - 1; + goto _L20 + Log.e("AndChat::Backup", (new StringBuilder("Unknown preference type: ")).append(obj3).toString()); + stats.goodPreferences = stats.goodPreferences - 1; + goto _L20 +_L5: + stats.crypt = false; + return; +_L7: + i; + JVM INSTR tableswitch 2 2: default 1012 + // 2 215; + goto _L21 _L22 +_L21: + obj2 = obj1; + obj3 = obj; + goto _L9 +_L14: + i--; + goto _L23 + } + + public Stats getStats() + { + return mStats; + } + + + +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Base64$Encoder.java b/app/src/main/java/net/andchat/donate/Misc/Base64$Encoder.java new file mode 100644 index 0000000..74d46f5 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Base64$Encoder.java @@ -0,0 +1,348 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + + +// Referenced classes of package net.andchat.donate.Misc: +// Base64 + +private static class +{ + + static final boolean $assertionsDisabled; + private static final byte ENCODE[] = { + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 43, 47 + }; + private final byte alphabet[]; + private int count; + private final boolean do_cr; + private final boolean do_newline; + private final boolean do_padding; + public byte output[]; + private final byte tail[]; + private int tailLen; + + private boolean process(byte abyte0[], int i, int j, boolean flag) + { + byte abyte1[]; + byte abyte4[]; + int k; + int l; + int l2; + int i4; + int j4; + abyte1 = alphabet; + abyte4 = output; + l2 = 0; + i4 = count; + k = i; + j4 = j + i; + j = -1; + i = k; + l = j; + tailLen; + JVM INSTR tableswitch 0 2: default 68 + // 0 74 + // 1 442 + // 2 518; + goto _L1 _L2 _L3 _L4 +_L2: + break; /* Loop/switch isn't completed */ +_L1: + l = j; + i = k; +_L12: + j = i4; + k = l2; + l2 = i; + if (l == -1) goto _L6; else goto _L5 +_L5: + int i3; + k = 0 + 1; + abyte4[0] = abyte1[l >> 18 & 0x3f]; + j = k + 1; + abyte4[k] = abyte1[l >> 12 & 0x3f]; + k = j + 1; + abyte4[j] = abyte1[l >> 6 & 0x3f]; + i3 = k + 1; + abyte4[k] = abyte1[l & 0x3f]; + l = i4 - 1; + j = l; + k = i3; + l2 = i; + if (l != 0) goto _L6; else goto _L7 +_L7: + j = i3; + if (do_cr) + { + abyte4[i3] = 13; + j = i3 + 1; + } + k = j + 1; + abyte4[j] = 10; + l = 19; + j = k; + k = l; +_L14: + if (i + 3 <= j4) goto _L9; else goto _L8 +_L8: + if (!flag) goto _L11; else goto _L10 +_L3: + i = k; + l = j; + if (k + 2 <= j4) + { + j = tail[0]; + l = k + 1; + k = abyte0[k]; + i = l + 1; + l = (j & 0xff) << 16 | (k & 0xff) << 8 | abyte0[l] & 0xff; + tailLen = 0; + } + goto _L12 +_L4: + i = k; + l = j; + if (k + 1 <= j4) + { + l = (tail[0] & 0xff) << 16 | (tail[1] & 0xff) << 8 | abyte0[k] & 0xff; + tailLen = 0; + i = k + 1; + } + goto _L12 +_L9: + l = (abyte0[i] & 0xff) << 16 | (abyte0[i + 1] & 0xff) << 8 | abyte0[i + 2] & 0xff; + abyte4[j] = abyte1[l >> 18 & 0x3f]; + abyte4[j + 1] = abyte1[l >> 12 & 0x3f]; + abyte4[j + 2] = abyte1[l >> 6 & 0x3f]; + abyte4[j + 3] = abyte1[l & 0x3f]; + i += 3; + l = j + 4; + j3 = k - 1; + j = j3; + k = l; + l2 = i; + if (j3 != 0) goto _L6; else goto _L13 +_L13: + j = l; + if (do_cr) + { + abyte4[l] = 13; + j = l + 1; + } + l = j + 1; + abyte4[j] = 10; + k = 19; + j = l; + goto _L14 +_L10: + if (i - tailLen == j4 - 1) + { + l = 0; + int j3; + if (tailLen > 0) + { + l2 = tail[0]; + l = 0 + 1; + } else + { + int k3 = i + 1; + l2 = abyte0[i]; + i = k3; + } + l2 = (l2 & 0xff) << 4; + tailLen = tailLen - l; + j3 = j + 1; + abyte4[j] = abyte1[l2 >> 6 & 0x3f]; + l = j3 + 1; + abyte4[j3] = abyte1[l2 & 0x3f]; + j = l; + if (do_padding) + { + l2 = l + 1; + abyte4[l] = 61; + j = l2 + 1; + abyte4[l2] = 61; + } + l = j; + j = i; + if (do_newline) + { + j = l; + if (do_cr) + { + abyte4[l] = 13; + j = l + 1; + } + abyte4[j] = 10; + j = i; + } + } else + if (i - tailLen == j4 - 2) + { + int i1 = 0; + int l3; + if (tailLen > 1) + { + l2 = tail[0]; + i1 = 0 + 1; + } else + { + l3 = i + 1; + l2 = abyte0[i]; + i = l3; + } + if (tailLen > 0) + { + l3 = tail[i1]; + i1++; + } else + { + l3 = abyte0[i]; + i++; + } + l2 = (l2 & 0xff) << 10 | (l3 & 0xff) << 2; + tailLen = tailLen - i1; + i1 = j + 1; + abyte4[j] = abyte1[l2 >> 12 & 0x3f]; + l3 = i1 + 1; + abyte4[i1] = abyte1[l2 >> 6 & 0x3f]; + j = l3 + 1; + abyte4[l3] = abyte1[l2 & 0x3f]; + i1 = j; + if (do_padding) + { + abyte4[j] = 61; + i1 = j + 1; + } + j = i; + if (do_newline) + { + j = i1; + if (do_cr) + { + abyte4[i1] = 13; + j = i1 + 1; + } + abyte4[j] = 10; + j = i; + } + } else + { + int j1 = j; + if (do_newline) + { + int k1 = j; + if (j > 0) + { + int l1 = j; + if (k != 19) + { + if (do_cr) + { + int i2 = j + 1; + abyte4[j] = 13; + j = i2; + } + int j2 = j + 1; + abyte4[j] = 10; + } + } + } + j = i; + } + if (!$assertionsDisabled && tailLen != 0) + { + throw new AssertionError(); + } + if (!$assertionsDisabled && j != j4) + { + throw new AssertionError(); + } + goto _L15 +_L11: + if (i != j4 - 1) goto _L17; else goto _L16 +_L16: + byte abyte2[] = tail; + j = tailLen; + tailLen = j + 1; + abyte2[j] = abyte0[i]; +_L15: + count = k; + return true; +_L17: + if (i == j4 - 2) + { + byte abyte3[] = tail; + j = tailLen; + tailLen = j + 1; + abyte3[j] = abyte0[i]; + abyte3 = tail; + j = tailLen; + tailLen = j + 1; + abyte3[j] = abyte0[i + 1]; + } + if (true) goto _L15; else goto _L6 +_L6: + i = l2; + int k2 = k; + k = j; + j = k2; + goto _L14 + } + + static + { + boolean flag; + if (!net/andchat/donate/Misc/Base64.desiredAssertionStatus()) + { + flag = true; + } else + { + flag = false; + } + $assertionsDisabled = flag; + } + + + + + + private (int i, byte abyte0[]) + { + boolean flag = true; + super(); + output = abyte0; + do_padding = true; + do_newline = true; + if ((i & 4) == 0) + { + flag = false; + } + do_cr = flag; + alphabet = ENCODE; + tail = new byte[2]; + tailLen = 0; + if (do_newline) + { + i = 19; + } else + { + i = -1; + } + count = i; + } + + count(int i, byte abyte0[], count count1) + { + this(i, abyte0); + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Base64.java b/app/src/main/java/net/andchat/donate/Misc/Base64.java new file mode 100644 index 0000000..814b266 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Base64.java @@ -0,0 +1,410 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + + +public class Base64 +{ + private static class Encoder + { + + static final boolean $assertionsDisabled; + private static final byte ENCODE[] = { + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 43, 47 + }; + private final byte alphabet[]; + private int count; + private final boolean do_cr; + private final boolean do_newline; + private final boolean do_padding; + public byte output[]; + private final byte tail[]; + private int tailLen; + + private boolean process(byte abyte0[], int i, int j, boolean flag) + { + byte abyte1[]; + byte abyte4[]; + int k; + int l; + int l2; + int i4; + int j4; + abyte1 = alphabet; + abyte4 = output; + l2 = 0; + i4 = count; + k = i; + j4 = j + i; + j = -1; + i = k; + l = j; + tailLen; + JVM INSTR tableswitch 0 2: default 68 + // 0 74 + // 1 442 + // 2 518; + goto _L1 _L2 _L3 _L4 +_L2: + break; /* Loop/switch isn't completed */ +_L1: + l = j; + i = k; +_L12: + j = i4; + k = l2; + l2 = i; + if (l == -1) goto _L6; else goto _L5 +_L5: + int i3; + k = 0 + 1; + abyte4[0] = abyte1[l >> 18 & 0x3f]; + j = k + 1; + abyte4[k] = abyte1[l >> 12 & 0x3f]; + k = j + 1; + abyte4[j] = abyte1[l >> 6 & 0x3f]; + i3 = k + 1; + abyte4[k] = abyte1[l & 0x3f]; + l = i4 - 1; + j = l; + k = i3; + l2 = i; + if (l != 0) goto _L6; else goto _L7 +_L7: + j = i3; + if (do_cr) + { + abyte4[i3] = 13; + j = i3 + 1; + } + k = j + 1; + abyte4[j] = 10; + l = 19; + j = k; + k = l; +_L14: + if (i + 3 <= j4) goto _L9; else goto _L8 +_L8: + if (!flag) goto _L11; else goto _L10 +_L3: + i = k; + l = j; + if (k + 2 <= j4) + { + j = tail[0]; + l = k + 1; + k = abyte0[k]; + i = l + 1; + l = (j & 0xff) << 16 | (k & 0xff) << 8 | abyte0[l] & 0xff; + tailLen = 0; + } + goto _L12 +_L4: + i = k; + l = j; + if (k + 1 <= j4) + { + l = (tail[0] & 0xff) << 16 | (tail[1] & 0xff) << 8 | abyte0[k] & 0xff; + tailLen = 0; + i = k + 1; + } + goto _L12 +_L9: + l = (abyte0[i] & 0xff) << 16 | (abyte0[i + 1] & 0xff) << 8 | abyte0[i + 2] & 0xff; + abyte4[j] = abyte1[l >> 18 & 0x3f]; + abyte4[j + 1] = abyte1[l >> 12 & 0x3f]; + abyte4[j + 2] = abyte1[l >> 6 & 0x3f]; + abyte4[j + 3] = abyte1[l & 0x3f]; + i += 3; + l = j + 4; + j3 = k - 1; + j = j3; + k = l; + l2 = i; + if (j3 != 0) goto _L6; else goto _L13 +_L13: + j = l; + if (do_cr) + { + abyte4[l] = 13; + j = l + 1; + } + l = j + 1; + abyte4[j] = 10; + k = 19; + j = l; + goto _L14 +_L10: + if (i - tailLen == j4 - 1) + { + l = 0; + int j3; + if (tailLen > 0) + { + l2 = tail[0]; + l = 0 + 1; + } else + { + int k3 = i + 1; + l2 = abyte0[i]; + i = k3; + } + l2 = (l2 & 0xff) << 4; + tailLen = tailLen - l; + j3 = j + 1; + abyte4[j] = abyte1[l2 >> 6 & 0x3f]; + l = j3 + 1; + abyte4[j3] = abyte1[l2 & 0x3f]; + j = l; + if (do_padding) + { + l2 = l + 1; + abyte4[l] = 61; + j = l2 + 1; + abyte4[l2] = 61; + } + l = j; + j = i; + if (do_newline) + { + j = l; + if (do_cr) + { + abyte4[l] = 13; + j = l + 1; + } + abyte4[j] = 10; + j = i; + } + } else + if (i - tailLen == j4 - 2) + { + int i1 = 0; + int l3; + if (tailLen > 1) + { + l2 = tail[0]; + i1 = 0 + 1; + } else + { + l3 = i + 1; + l2 = abyte0[i]; + i = l3; + } + if (tailLen > 0) + { + l3 = tail[i1]; + i1++; + } else + { + l3 = abyte0[i]; + i++; + } + l2 = (l2 & 0xff) << 10 | (l3 & 0xff) << 2; + tailLen = tailLen - i1; + i1 = j + 1; + abyte4[j] = abyte1[l2 >> 12 & 0x3f]; + l3 = i1 + 1; + abyte4[i1] = abyte1[l2 >> 6 & 0x3f]; + j = l3 + 1; + abyte4[l3] = abyte1[l2 & 0x3f]; + i1 = j; + if (do_padding) + { + abyte4[j] = 61; + i1 = j + 1; + } + j = i; + if (do_newline) + { + j = i1; + if (do_cr) + { + abyte4[i1] = 13; + j = i1 + 1; + } + abyte4[j] = 10; + j = i; + } + } else + { + int j1 = j; + if (do_newline) + { + int k1 = j; + if (j > 0) + { + int l1 = j; + if (k != 19) + { + if (do_cr) + { + int i2 = j + 1; + abyte4[j] = 13; + j = i2; + } + int j2 = j + 1; + abyte4[j] = 10; + } + } + } + j = i; + } + if (!$assertionsDisabled && tailLen != 0) + { + throw new AssertionError(); + } + if (!$assertionsDisabled && j != j4) + { + throw new AssertionError(); + } + goto _L15 +_L11: + if (i != j4 - 1) goto _L17; else goto _L16 +_L16: + byte abyte2[] = tail; + j = tailLen; + tailLen = j + 1; + abyte2[j] = abyte0[i]; +_L15: + count = k; + return true; +_L17: + if (i == j4 - 2) + { + byte abyte3[] = tail; + j = tailLen; + tailLen = j + 1; + abyte3[j] = abyte0[i]; + abyte3 = tail; + j = tailLen; + tailLen = j + 1; + abyte3[j] = abyte0[i + 1]; + } + if (true) goto _L15; else goto _L6 +_L6: + i = l2; + int k2 = k; + k = j; + j = k2; + goto _L14 + } + + static + { + boolean flag; + if (!net/andchat/donate/Misc/Base64.desiredAssertionStatus()) + { + flag = true; + } else + { + flag = false; + } + $assertionsDisabled = flag; + } + + + + + + private Encoder(int i, byte abyte0[]) + { + boolean flag = true; + super(); + output = abyte0; + do_padding = true; + do_newline = true; + if ((i & 4) == 0) + { + flag = false; + } + do_cr = flag; + alphabet = ENCODE; + tail = new byte[2]; + tailLen = 0; + if (do_newline) + { + i = 19; + } else + { + i = -1; + } + count = i; + } + + Encoder(int i, byte abyte0[], Encoder encoder) + { + this(i, abyte0); + } + } + + + private Base64() + { + } + + public static byte[] encode(byte abyte0[], int i, int j, int k) + { + Encoder encoder; + int l; + encoder = new Encoder(k, null, null); + l = (j / 3) * 4; + if (!encoder.do_padding) goto _L2; else goto _L1 +_L1: + k = l; + if (j % 3 > 0) + { + k = l + 4; + } +_L4: + l = k; + if (encoder.do_newline) + { + l = k; + if (j > 0) + { + int i1 = (j - 1) / 57; + if (encoder.do_cr) + { + l = 2; + } else + { + l = 1; + } + l = k + l * (i1 + 1); + } + } + encoder.output = new byte[l]; + encoder.process(abyte0, i, j, true); + return encoder.output; +_L2: + k = l; + switch (j % 3) + { + default: + k = l; + break; + + case 1: // '\001' + k = l + 2; + break; + + case 2: // '\002' + k = l + 3; + break; + + case 0: // '\0' + break; + } + if (true) goto _L4; else goto _L3 +_L3: + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Colours.java b/app/src/main/java/net/andchat/donate/Misc/Colours.java new file mode 100644 index 0000000..70568d5 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Colours.java @@ -0,0 +1,65 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + +import android.content.Context; +import android.content.res.Resources; +import android.graphics.Color; +import android.util.SparseIntArray; +import net.andchat.donate.IRCApp; + +public final class Colours +{ + + private static Colours sInstance; + private final SparseIntArray mColours = new SparseIntArray(); + private final Resources mResources; + + private Colours(Context context) + { + mResources = context.getResources(); + } + + public static Colours getInstance() + { + if (sInstance == null) + { + throw new RuntimeException("getInstance() called but not yet initialized"); + } else + { + return sInstance; + } + } + + public static void init(Context context) + { + if (!(context instanceof IRCApp)) + { + throw new IllegalArgumentException("ctx must be an instance of IRCApp"); + } + if (sInstance == null) + { + sInstance = new Colours(context); + } + } + + public void clear() + { + sInstance = null; + } + + public int getColourForEvent(int i) + { + int k = mColours.get(i); + int j = k; + if (k == 0) + { + int ai[] = mResources.getIntArray(i); + j = Color.rgb(ai[0], ai[1], ai[2]); + mColours.put(i, j); + } + return j; + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/CommandParser$Helper.java b/app/src/main/java/net/andchat/donate/Misc/CommandParser$Helper.java new file mode 100644 index 0000000..5d1577f --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/CommandParser$Helper.java @@ -0,0 +1,54 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + +import android.content.res.Resources; +import net.andchat.donate.Backend.Ignores; +import net.andchat.donate.Backend.ServerConnection; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Backend.Sessions.SessionManager; + +// Referenced classes of package net.andchat.donate.Misc: +// CommandParser, IRCMessage + +public static interface nager +{ + + public abstract String getCurrentNick(); + + public abstract Session getCurrentSession(); + + public abstract Ignores getIgnoreList(); + + public abstract String getPartReason(); + + public abstract String getQuitReason(); + + public abstract Resources getResources(); + + public abstract ServerConnection getServerConnection(); + + public abstract SessionManager getSessionManager(); + + public abstract void handleAddMessage(IRCMessage ircmessage); + + public abstract void handleBan(String s); + + public abstract void handleJoin(String s); + + public abstract void handleKick(String s); + + public abstract void handleOpAction(String s, char c, char c1); + + public abstract void handleQuit(String s); + + public abstract void handleStartPm(String s); + + public abstract boolean isShowingTimestamps(); + + public abstract void sendFlaggedMessage(int i, Object obj); + + public abstract void writeToServer(String s); +} diff --git a/app/src/main/java/net/andchat/donate/Misc/CommandParser.java b/app/src/main/java/net/andchat/donate/Misc/CommandParser.java new file mode 100644 index 0000000..49d2e7b --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/CommandParser.java @@ -0,0 +1,176 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + +import android.content.res.Resources; +import java.util.ArrayList; +import net.andchat.donate.Backend.Ignores; +import net.andchat.donate.Backend.ServerConnection; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.Misc.Commands.Command; +import net.andchat.donate.Misc.Commands.impl.Away; +import net.andchat.donate.Misc.Commands.impl.CM; +import net.andchat.donate.Misc.Commands.impl.CS; +import net.andchat.donate.Misc.Commands.impl.CTCP; +import net.andchat.donate.Misc.Commands.impl.Clear; +import net.andchat.donate.Misc.Commands.impl.ClearAll; +import net.andchat.donate.Misc.Commands.impl.Cycle; +import net.andchat.donate.Misc.Commands.impl.Ignore; +import net.andchat.donate.Misc.Commands.impl.Invite; +import net.andchat.donate.Misc.Commands.impl.Join; +import net.andchat.donate.Misc.Commands.impl.Kick; +import net.andchat.donate.Misc.Commands.impl.MOTD; +import net.andchat.donate.Misc.Commands.impl.Me; +import net.andchat.donate.Misc.Commands.impl.Msg; +import net.andchat.donate.Misc.Commands.impl.Names; +import net.andchat.donate.Misc.Commands.impl.Nick; +import net.andchat.donate.Misc.Commands.impl.Notice; +import net.andchat.donate.Misc.Commands.impl.OpActions; +import net.andchat.donate.Misc.Commands.impl.Part; +import net.andchat.donate.Misc.Commands.impl.Ping; +import net.andchat.donate.Misc.Commands.impl.Quit; +import net.andchat.donate.Misc.Commands.impl.Raw; +import net.andchat.donate.Misc.Commands.impl.Topic; +import net.andchat.donate.Misc.Commands.impl.UM; +import net.andchat.donate.Misc.Commands.impl.Unignore; +import net.andchat.donate.Misc.Commands.impl.UnknownCommand; +import net.andchat.donate.Misc.Commands.impl.WC; +import net.andchat.donate.Misc.Commands.impl.Who; + +// Referenced classes of package net.andchat.donate.Misc: +// IRCMessage + +public class CommandParser +{ + public static interface Helper + { + + public abstract String getCurrentNick(); + + public abstract Session getCurrentSession(); + + public abstract Ignores getIgnoreList(); + + public abstract String getPartReason(); + + public abstract String getQuitReason(); + + public abstract Resources getResources(); + + public abstract ServerConnection getServerConnection(); + + public abstract SessionManager getSessionManager(); + + public abstract void handleAddMessage(IRCMessage ircmessage); + + public abstract void handleBan(String s); + + public abstract void handleJoin(String s); + + public abstract void handleKick(String s); + + public abstract void handleOpAction(String s, char c, char c1); + + public abstract void handleQuit(String s); + + public abstract void handleStartPm(String s); + + public abstract boolean isShowingTimestamps(); + + public abstract void sendFlaggedMessage(int i, Object obj); + + public abstract void writeToServer(String s); + } + + + private static final ArrayList sMap; + private static final Command sUnknownCommand = new UnknownCommand("_unknown"); + + public static void handleCommand(String s, Helper helper) + { + Object obj; + Object obj1; + int i; + obj = null; + i = s.indexOf(' '); + boolean flag; + int j; + if (i != -1) + { + String s1 = s.substring(i + 1); + obj = s.substring(1, i); + s = s1; + } else + { + obj1 = s.substring(1); + s = ((String) (obj)); + obj = obj1; + } + obj1 = sMap; + j = ((ArrayList) (obj1)).size(); + flag = false; + i = 0; +_L6: + if (i < j) goto _L2; else goto _L1 +_L1: + i = ((flag) ? 1 : 0); +_L4: + if (i == 0) + { + sUnknownCommand.addAlias(((String) (obj))); + sUnknownCommand.run(((String) (obj)), s, helper); + } + return; +_L2: + if (!((Command)((ArrayList) (obj1)).get(i)).run(((String) (obj)), s, helper)) + { + break; /* Loop/switch isn't completed */ + } + i = 1; + if (true) goto _L4; else goto _L3 +_L3: + i++; + if (true) goto _L6; else goto _L5 +_L5: + } + + static + { + sMap = new ArrayList(); + sMap.add((new Join("join")).addAlias("j")); + sMap.add(new Me("me")); + sMap.add(new Nick("nick")); + sMap.add((new Msg("msg")).addAlias("m")); + sMap.add(new Part("part")); + sMap.add(new CTCP("ctcp")); + sMap.add(new Ignore("ignore")); + sMap.add(new Clear("clear")); + sMap.add(new Away("away")); + sMap.add(new Notice("notice")); + sMap.add((new Raw("raw")).addAlias("quote")); + OpActions opactions = new OpActions("_opactions"); + opactions.addAliases(new String[] { + "op", "deop", "voice", "v", "devoice", "dv", "kb", "ban", "b", "unban", + "ub", "hop", "dehop" + }); + sMap.add(opactions); + sMap.add((new Kick("kick")).addAlias("k")); + sMap.add(new ClearAll("clearall")); + sMap.add(new CM("cm")); + sMap.add(new CS("cs")); + sMap.add(new Cycle("cycle")); + sMap.add(new Invite("invite")); + sMap.add(new MOTD("motd")); + sMap.add(new Names("names")); + sMap.add(new Ping("ping")); + sMap.add(new Quit("quit")); + sMap.add((new Topic("topic")).addAlias("t")); + sMap.add(new UM("um")); + sMap.add(new Unignore("unignore")); + sMap.add(new Who("who")); + sMap.add(new WC("wc")); + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/Command.java b/app/src/main/java/net/andchat/donate/Misc/Commands/Command.java new file mode 100644 index 0000000..4dceeea --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/Command.java @@ -0,0 +1,84 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands; + +import java.util.ArrayList; +import java.util.List; +import net.andchat.donate.Misc.IRCMessage; + +public abstract class Command +{ + + private final List mAlias = new ArrayList(); + private final String mCommand; + + public Command(String s) + { + mCommand = transformStr(s); + } + + public static String transformStr(String s) + { + return s.toLowerCase(); + } + + public final Command addAlias(String s) + { + if (!isAlias(s)) + { + mAlias.add(transformStr(s)); + } + return this; + } + + public final transient Command addAliases(String as[]) + { + int i = 0; + do + { + if (i >= as.length) + { + return this; + } + addAlias(as[i]); + i++; + } while (true); + } + + protected abstract void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper); + + public final boolean isAlias(String s) + { + return mAlias.contains(transformStr(s)); + } + + public final boolean run(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + boolean flag; + if (!mCommand.equals(transformStr(s)) && !isAlias(transformStr(s))) + { + flag = false; + } else + { + flag = true; + } + if (flag) + { + execute(s, s1, helper); + return true; + } else + { + return false; + } + } + + protected final void sendMessage(String s, CharSequence charsequence, int i, net.andchat.donate.Misc.CommandParser.Helper helper) + { + IRCMessage ircmessage = IRCMessage.obtain(); + ircmessage.set(s, charsequence, i); + helper.handleAddMessage(ircmessage); + ircmessage.recycle(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Away.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Away.java new file mode 100644 index 0000000..281b8fc --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Away.java @@ -0,0 +1,29 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Misc.Commands.Command; + +public class Away extends Command +{ + + public Away(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + if (s1 == null) + { + helper.writeToServer("AWAY\r\n"); + return; + } else + { + helper.writeToServer((new StringBuilder("AWAY :")).append(s1).append("\r\n").toString()); + return; + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/CM.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/CM.java new file mode 100644 index 0000000..b8c5e85 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/CM.java @@ -0,0 +1,35 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Misc.Commands.Command; + +public class CM extends Command +{ + + public CM(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + s = helper.getCurrentSession(); + if (s.getType() != 1) + { + return; + } + if (s1 != null && s1.trim().length() != 0) + { + helper.writeToServer((new StringBuilder("MODE ")).append(s.getSessionName()).append(" ").append(s1).append("\r\n").toString()); + return; + } else + { + helper.writeToServer((new StringBuilder("MODE ")).append(s.getSessionName()).append("\r\n").toString()); + return; + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/CS.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/CS.java new file mode 100644 index 0000000..6aec476 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/CS.java @@ -0,0 +1,31 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.Misc.Commands.Command; + +public class CS extends Command +{ + + public CS(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + if (s1 != null && s1.equals("-a")) + { + helper.getSessionManager().clearScrollbackForAll(); + return; + } else + { + helper.getCurrentSession().trimInputHistory(0); + return; + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/CTCP.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/CTCP.java new file mode 100644 index 0000000..33b7b61 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/CTCP.java @@ -0,0 +1,34 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Misc.Commands.Command; +import net.andchat.donate.Misc.Utils; + +public class CTCP extends Command +{ + + public CTCP(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { +label0: + { + if (s1 != null) + { + s = Utils.split(s1); + if (s.length == 2) + { + break label0; + } + } + return; + } + helper.writeToServer((new StringBuilder("PRIVMSG ")).append(s[0]).append(" :\001").append(s[1]).append("\001").append("\r\n").toString()); + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Clear.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Clear.java new file mode 100644 index 0000000..38857dc --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Clear.java @@ -0,0 +1,31 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.Misc.Commands.Command; + +public class Clear extends Command +{ + + public Clear(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + if (s1 == null) + { + s = helper.getCurrentSession().getSessionName(); + } else + { + s = s1; + } + helper.getSessionManager().deleteText(s, -1); + helper.sendFlaggedMessage(7, s); + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/ClearAll.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/ClearAll.java new file mode 100644 index 0000000..cfb1750 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/ClearAll.java @@ -0,0 +1,37 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.Misc.Commands.Command; + +public class ClearAll extends Command +{ + + public ClearAll(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + s = helper.getCurrentSession().getSessionName(); + s1 = helper.getSessionManager(); + String as[] = s1.getSessionList(); + int j = as.length; + int i = 0; + do + { + if (i >= j) + { + helper.sendFlaggedMessage(7, s); + return; + } + s1.deleteText(as[i], -1); + i++; + } while (true); + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Cycle.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Cycle.java new file mode 100644 index 0000000..8986d18 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Cycle.java @@ -0,0 +1,35 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Misc.Commands.Command; + +public class Cycle extends Command +{ + + public Cycle(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + s = helper.getCurrentSession(); + if (s.getType() != 1) + { + return; + } + if (s.isActive()) + { + helper.writeToServer((new StringBuilder("PART ")).append(s).append("\r\nJOIN ").append(s).append("\r\n").toString()); + return; + } else + { + helper.writeToServer((new StringBuilder("JOIN ")).append(s).append("\r\n").toString()); + return; + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Ignore.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Ignore.java new file mode 100644 index 0000000..0f10ef2 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Ignore.java @@ -0,0 +1,289 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import android.content.res.Resources; +import java.util.List; +import net.andchat.donate.Backend.Ignores; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Misc.Commands.Command; +import net.andchat.donate.Misc.Utils; + +public class Ignore extends Command +{ + + public Ignore(String s) + { + super(s); + } + + private String ignore(String s, String s1, Session session, net.andchat.donate.Misc.CommandParser.Helper helper, Ignores ignores, int i) + { + Resources resources = helper.getResources(); + if (s.equalsIgnoreCase(s1)) + { + sendMessage(session.getSessionName(), resources.getString(0x7f0a01ca), 1, helper); + return null; + } + s1 = session.getNickInfo(s); + if (s1 == null) + { + sendMessage(session.getSessionName(), resources.getString(0x7f0a01cb, new Object[] { + s + }), 1, helper); + return null; + } else + { + ignores.addOrUpdateIgnore(s, ((net.andchat.donate.Backend.Sessions.Session.NickInfo) (s1)).ident, ((net.andchat.donate.Backend.Sessions.Session.NickInfo) (s1)).hostname, i); + return s; + } + } + + private void ignoreUsage(net.andchat.donate.Misc.CommandParser.Helper helper) + { + Resources resources = helper.getResources(); + sendMessage(helper.getCurrentSession().getSessionName(), resources.getString(0x7f0a01bf), 1, helper); + sendMessage(helper.getCurrentSession().getSessionName(), resources.getString(0x7f0a01c0), 1, helper); + } + + private void printIgnoreList(net.andchat.donate.Misc.CommandParser.Helper helper, String s, Ignores ignores) + { + Resources resources; + StringBuilder stringbuilder; + int i; + resources = helper.getResources(); + ignores = ignores.getAllIgnores(); + int j = ignores.size(); + if (j > 0) + { + sendMessage(s, resources.getString(0x7f0a01c1), 1, helper); + stringbuilder = new StringBuilder(); + i = 0; + break MISSING_BLOCK_LABEL_52; + } else + { + sendMessage(s, resources.getString(0x7f0a01c2), 1, helper); + sendMessage(s, resources.getString(0x7f0a01c3), 1, helper); + return; + } +_L2: + net.andchat.donate.Backend.Ignores.IgnoreInfo ignoreinfo; + if (i >= j) + { + return; + } + stringbuilder.delete(0, stringbuilder.length()); + ignoreinfo = (net.andchat.donate.Backend.Ignores.IgnoreInfo)ignores.get(i); + if (!Utils.isBitSet(ignoreinfo.mask, 15)) + { + break; /* Loop/switch isn't completed */ + } + stringbuilder.append(ignoreinfo.ident).append(": ").append(resources.getString(0x7f0a01c4)); +_L3: + sendMessage(s, stringbuilder.toString(), 1, helper); + sendMessage(s, resources.getString(0x7f0a01c3), 1, helper); + i++; + if (true) goto _L2; else goto _L1 +_L1: + stringbuilder.append(ignoreinfo.ident).append(": "); + boolean flag1 = false; + if (Utils.isBitSet(ignoreinfo.mask, 1)) + { + flag1 = true; + stringbuilder.append(resources.getString(0x7f0a01c5)); + } + boolean flag = flag1; + if (Utils.isBitSet(ignoreinfo.mask, 8)) + { + if (flag1) + { + stringbuilder.append(", "); + } + stringbuilder.append(resources.getString(0x7f0a01c6)); + flag = true; + } + flag1 = flag; + if (Utils.isBitSet(ignoreinfo.mask, 4)) + { + if (flag) + { + stringbuilder.append(", "); + } + stringbuilder.append(resources.getString(0x7f0a01c7)); + flag1 = true; + } + if (Utils.isBitSet(ignoreinfo.mask, 2)) + { + if (flag1) + { + stringbuilder.append(", "); + } + stringbuilder.append(resources.getString(0x7f0a01c8)); + } + goto _L3 + if (true) goto _L2; else goto _L4 +_L4: + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + Session session; + Ignores ignores; + ignores = helper.getIgnoreList(); + session = helper.getCurrentSession(); + if (session.getType() != 0 && s1 != null) goto _L2; else goto _L1 +_L1: + printIgnoreList(helper, session.getSessionName(), ignores); +_L21: + return; +_L2: + byte byte0; + int i1; + int j1; + j1 = s1.length(); + if (j1 == 0) + { + ignoreUsage(helper); + return; + } + byte0 = 0; + i1 = 0; + if (s1.charAt(0) == '-') goto _L4; else goto _L3 +_L3: + int i; + int k; + i = 15; + k = i1; +_L18: + byte0 = i; + if (i == 0) + { + byte0 = 15; + } + if (k >= s1.length()) + { + ignoreUsage(helper); + return; + } + break; /* Loop/switch isn't completed */ +_L4: + int j = 0; +_L15: + i = byte0; + k = i1; + if (j >= j1) + { + continue; /* Loop/switch isn't completed */ + } + i = byte0; + s1.charAt(j); + JVM INSTR lookupswitch 8: default 212 + // 32: 282 + // 45: 216 + // 97: 235 + // 99: 245 + // 104: 229 + // 110: 263 + // 112: 254 + // 116: 272; + goto _L5 _L6 _L7 _L8 _L9 _L10 _L11 _L12 _L13 +_L13: + break MISSING_BLOCK_LABEL_272; +_L6: + break MISSING_BLOCK_LABEL_282; +_L10: + break; /* Loop/switch isn't completed */ +_L7: + break; /* Loop/switch isn't completed */ +_L5: + i = byte0; +_L16: + j++; + byte0 = i; + if (true) goto _L15; else goto _L14 +_L14: + ignoreUsage(helper); + return; +_L8: + i = byte0 | 0xf; + goto _L16 +_L9: + i = byte0 | 1; + goto _L16 +_L12: + i = byte0 | 2; + goto _L16 +_L11: + i = byte0 | 4; + goto _L16 + i = byte0 | 8; + goto _L16 + k = j + 1; + i = byte0; + if (true) goto _L18; else goto _L17 +_L17: + String s2; + String s3; + s2 = s1.substring(k); + char c = ','; + j = s2.indexOf(','); + s = (String[])null; + i = j; + if (j == -1) + { + c = ' '; + i = s2.indexOf(' '); + } + if (i != -1) + { + s = s2.split(Character.toString(c)); + } + s3 = helper.getCurrentNick(); + j = 0; + i = 0; + s1 = new StringBuilder(); + if (s == null) + { + break MISSING_BLOCK_LABEL_512; + } + i1 = s.length; + j = 0; +_L22: + if (j < i1) goto _L20; else goto _L19 +_L19: + if (i > 0) + { + s = helper.getResources(); + sendMessage(session.getSessionName(), s.getString(0x7f0a01c9, new Object[] { + s1 + }), 1, helper); + return; + } + goto _L21 +_L20: + s2 = ignore(s[j].trim(), s3, session, helper, ignores, byte0); + int l = i; + if (s2 != null) + { + s1.append(s2); + if (j != i1 - 1) + { + s1.append(", "); + } + l = i + 1; + } + j++; + i = l; + goto _L22 + s = ignore(s2, s3, session, helper, ignores, byte0); + i = j; + if (s != null) + { + s1.append(s); + i = 0 + 1; + } + goto _L19 + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Invite.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Invite.java new file mode 100644 index 0000000..c90eace --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Invite.java @@ -0,0 +1,30 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Misc.Commands.Command; + +public class Invite extends Command +{ + + public Invite(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + s = helper.getCurrentSession(); + if (s1 == null || s.getType() != 1) + { + return; + } else + { + helper.writeToServer((new StringBuilder("INVITE ")).append(s1).append(" ").append(s.getSessionName()).append("\r\n").toString()); + return; + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Join.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Join.java new file mode 100644 index 0000000..4a656fd --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Join.java @@ -0,0 +1,34 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Misc.Commands.Command; +import net.andchat.donate.Misc.Utils; + +public class Join extends Command +{ + + public Join(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + if (s1 != null) + { + if ((s1 = s1.trim()).length() != 0) + { + s = s1; + if (!Utils.isChannelPrefix(s1.charAt(0))) + { + s = (new StringBuilder("#")).append(s1).toString(); + } + helper.handleJoin(s); + return; + } + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Kick.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Kick.java new file mode 100644 index 0000000..25d5c15 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Kick.java @@ -0,0 +1,48 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Misc.Commands.Command; + +public class Kick extends Command +{ + + public Kick(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + Session session = helper.getCurrentSession(); + if (session.getType() != 1 || s1 == null) + { + return; + } + int i = s1.indexOf(' '); + if (i == -1) + { + s = s1; + } else + { + s = s1.substring(0, i); + } + if (i != -1) + { + s1 = s1.substring(i + 1); + } else + { + s1 = null; + } + s = (new StringBuilder("KICK ")).append(session).append(" ").append(s); + if (s1 != null && s1.length() > 0) + { + s.append(" :").append(s1); + } + s.append("\r\n"); + helper.writeToServer(s.toString()); + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/MOTD.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/MOTD.java new file mode 100644 index 0000000..b89ae23 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/MOTD.java @@ -0,0 +1,27 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Backend.ServerConnection; +import net.andchat.donate.Misc.Commands.Command; + +public class MOTD extends Command +{ + + public MOTD(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + s = helper.getServerConnection(); + if (s != null) + { + s.addServerConnnectionFlag(2); + } + helper.writeToServer("MOTD\r\n"); + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Me.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Me.java new file mode 100644 index 0000000..07dee83 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Me.java @@ -0,0 +1,43 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Misc.Colours; +import net.andchat.donate.Misc.Commands.Command; +import net.andchat.donate.Misc.Utils; + +public class Me extends Command +{ + + public Me(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + if (s1 != null) + { + Object obj = helper.getCurrentNick(); + s = helper.getCurrentSession(); + if (s.getType() != 0) + { + StringBuilder stringbuilder = new StringBuilder("PRIVMSG "); + stringbuilder.append(s.getSessionName()).append(" :\001ACTION").append(" ").append(s1).append("\001").append("\r\n"); + helper.writeToServer(stringbuilder.toString()); + stringbuilder.setLength(0); + stringbuilder.append("* ").append(((String) (obj))).append(" ").append(s1); + obj = Utils.addColourAndBold(helper.isShowingTimestamps(), stringbuilder, Colours.getInstance().getColourForEvent(0x7f0b0010), 2, ((String) (obj)).length() + 2); + if (s1.length() >= 4) + { + Utils.addLinks(((android.text.Spannable) (obj))); + } + sendMessage(s.getSessionName(), ((CharSequence) (obj)), 2, helper); + return; + } + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Msg.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Msg.java new file mode 100644 index 0000000..a49961d --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Msg.java @@ -0,0 +1,57 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.Misc.Colours; +import net.andchat.donate.Misc.Commands.Command; +import net.andchat.donate.Misc.Utils; + +public class Msg extends Command +{ + + public Msg(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + int i; + if (s1 != null) + { + if ((i = s1.indexOf(' ', 1)) != -1) + { + String s2 = s1.substring(0, i).trim(); + Object obj = helper.getCurrentNick(); + s = s2; + if (s2.equalsIgnoreCase(((String) (obj)))) + { + s = ((String) (obj)); + } + s1 = s1.substring(i + 1); + if (s.length() != 0 && s1.length() != 0) + { + if (!Utils.isChannelPrefix(s.charAt(0)) && !helper.getSessionManager().haveSessionFor(s)) + { + helper.handleStartPm(s); + } + obj = (new StringBuilder("<")).append(helper.getSessionManager().getOurStatus(s)).append(((String) (obj))).append("> "); + int j = ((StringBuilder) (obj)).length(); + ((StringBuilder) (obj)).append(s1); + int k = Colours.getInstance().getColourForEvent(0x7f0b0012); + android.text.SpannableStringBuilder spannablestringbuilder = Utils.createMessage(helper.isShowingTimestamps(), ((CharSequence) (obj))); + Utils.addColour(helper.isShowingTimestamps(), spannablestringbuilder, k, 0, 1); + Utils.addColour(helper.isShowingTimestamps(), spannablestringbuilder, k, j - 2, j); + sendMessage(s, spannablestringbuilder, 2, helper); + ((StringBuilder) (obj)).setLength(0); + ((StringBuilder) (obj)).append("PRIVMSG ").append(s).append(" :").append(s1).append("\r\n"); + helper.writeToServer(((StringBuilder) (obj)).toString()); + return; + } + } + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Names.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Names.java new file mode 100644 index 0000000..0f7479e --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Names.java @@ -0,0 +1,41 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Backend.ServerConnection; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Misc.Commands.Command; + +public class Names extends Command +{ + + public Names(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + s = helper.getServerConnection(); + Session session = helper.getCurrentSession(); + if (session.getType() != 1) + { + return; + } + if (s != null) + { + s.addServerConnnectionFlag(1); + } + if (s1 == null) + { + helper.writeToServer((new StringBuilder("NAMES ")).append(session.getSessionName()).append("\r\n").toString()); + return; + } else + { + helper.writeToServer((new StringBuilder("NAMES ")).append(s1).append("\r\n").toString()); + return; + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Nick.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Nick.java new file mode 100644 index 0000000..33327db --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Nick.java @@ -0,0 +1,35 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Backend.ServerConnection; +import net.andchat.donate.Misc.Commands.Command; + +public class Nick extends Command +{ + + public Nick(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + boolean flag = true; + if (s1 != null) + { + s = helper.getServerConnection(); + if (s == null || s.getConnectionState() != 1) + { + flag = false; + } + if (flag) + { + helper.writeToServer((new StringBuilder("NICK ")).append(s1.trim()).append("\r\n").toString()); + return; + } + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Notice.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Notice.java new file mode 100644 index 0000000..d21b2b3 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Notice.java @@ -0,0 +1,59 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import android.text.TextUtils; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.Misc.Colours; +import net.andchat.donate.Misc.Commands.Command; +import net.andchat.donate.Misc.Utils; + +public class Notice extends Command +{ + + public Notice(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + if (s1 != null) + { + if ((s = Utils.split(s1, 2)).length >= 2) + { + CharSequence charsequence = s[0]; + CharSequence charsequence1 = s[1]; + if (!TextUtils.isEmpty(charsequence) && !TextUtils.isEmpty(charsequence1)) + { + String s2 = helper.getCurrentNick(); + s = charsequence; + if (charsequence.equalsIgnoreCase(s2)) + { + s = s2; + } + s1 = new StringBuilder(s1.length()); + s1.append("NOTICE ").append(s).append(" :").append(charsequence1).append("\r\n"); + helper.writeToServer(s1.toString()); + s1.setLength(0); + s1.ensureCapacity(s.length() + charsequence1.length() + 4 + s2.length()); + s1.append('-').append(s2); + s1.append("/").append(s); + s1.append("-: ").append(charsequence1); + int i = Colours.getInstance().getColourForEvent(0x7f0b0011); + s1 = Utils.createMessage(helper.isShowingTimestamps(), s1); + Utils.addColour(helper.isShowingTimestamps(), s1, i, 0, s.length() + s2.length() + 4); + if (!helper.getSessionManager().haveSessionFor(s)) + { + s = helper.getCurrentSession().getSessionName(); + } + sendMessage(s, s1, 1, helper); + return; + } + } + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/OpActions.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/OpActions.java new file mode 100644 index 0000000..ddb61b1 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/OpActions.java @@ -0,0 +1,72 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import android.text.TextUtils; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Misc.Commands.Command; + +public class OpActions extends Command +{ + + public OpActions(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + if (s1 != null && helper.getCurrentSession().getType() == 1) + { + s1 = s1.trim(); + if (s.equalsIgnoreCase("op")) + { + helper.handleOpAction(s1, '+', 'o'); + return; + } + if (s.equalsIgnoreCase("deop")) + { + helper.handleOpAction(s1, '-', 'o'); + return; + } + if (s.equalsIgnoreCase("hop")) + { + helper.handleOpAction(s1, '+', 'h'); + return; + } + if (s.equalsIgnoreCase("dehop")) + { + helper.handleOpAction(s1, '-', 'h'); + return; + } + if (s.equalsIgnoreCase("voice") || s.equalsIgnoreCase("v")) + { + helper.handleOpAction(s1, '+', 'v'); + return; + } + if (s.equalsIgnoreCase("devoice") || s.equalsIgnoreCase("dv")) + { + helper.handleOpAction(s1, '-', 'v'); + return; + } + if (s.equalsIgnoreCase("unban") || s.equalsIgnoreCase("ub")) + { + helper.handleOpAction(s1, '-', 'b'); + return; + } + if (s.equalsIgnoreCase("ban") || s.equalsIgnoreCase("b")) + { + helper.handleBan(s1); + return; + } + if (s.equalsIgnoreCase("kb") && !TextUtils.isEmpty(s1)) + { + helper.handleBan(s1); + helper.handleKick(s1); + return; + } + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Part.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Part.java new file mode 100644 index 0000000..19017d7 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Part.java @@ -0,0 +1,87 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Backend.ServerConnection; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Backend.Sessions.SessionManager; +import net.andchat.donate.Misc.Commands.Command; + +public class Part extends Command +{ + + public Part(String s) + { + super(s); + } + + private void cleanup(ServerConnection serverconnection, SessionManager sessionmanager, String s) + { + sessionmanager.removeSession(s); + if (serverconnection != null) + { + serverconnection.closeLog(s); + } + } + + protected void close(net.andchat.donate.Misc.CommandParser.Helper helper, Session session) + { + ServerConnection serverconnection; + SessionManager sessionmanager; + String s; + serverconnection = helper.getServerConnection(); + boolean flag; + if (serverconnection != null && serverconnection.getConnectionState() == 1) + { + flag = true; + } else + { + flag = false; + } + sessionmanager = helper.getSessionManager(); + s = session.getSessionName(); + if (!sessionmanager.haveSessionFor(s)) goto _L2; else goto _L1 +_L1: + if (session.getType() != 1) goto _L4; else goto _L3 +_L3: + if (flag && sessionmanager.getActive(s)) + { + helper.writeToServer((new StringBuilder("PART ")).append(s).append(" :").append(helper.getPartReason()).append("\r\n").toString()); + } else + { + cleanup(serverconnection, sessionmanager, s); + } +_L6: + helper.sendFlaggedMessage(4, s); +_L2: + return; +_L4: + if (session.hasCapability(6)) + { + cleanup(serverconnection, sessionmanager, s); + } + if (true) goto _L6; else goto _L5 +_L5: + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + if (s1 != null) goto _L2; else goto _L1 +_L1: + s = helper.getCurrentSession(); +_L4: + close(helper, s); + return; +_L2: + s1 = helper.getSessionManager().getSession(s1); + s = s1; + if (s1 == null) + { + s = helper.getCurrentSession(); + } + if (true) goto _L4; else goto _L3 +_L3: + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Ping.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Ping.java new file mode 100644 index 0000000..8f8914a --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Ping.java @@ -0,0 +1,34 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Backend.ServerConnection; +import net.andchat.donate.Misc.Commands.Command; + +public class Ping extends Command +{ + + public Ping(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + if (s1 == null) + { + s = Long.toString(System.currentTimeMillis()); + } else + { + s = s1; + } + s1 = helper.getServerConnection(); + if (s1 != null) + { + s1.addServerConnnectionFlag(8); + } + helper.writeToServer((new StringBuilder("PING ")).append(s).append("\r\n").toString()); + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Quit.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Quit.java new file mode 100644 index 0000000..f689752 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Quit.java @@ -0,0 +1,30 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Misc.Commands.Command; + +public class Quit extends Command +{ + + public Quit(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + helper.getQuitReason(); + if (s1 != null) + { + helper.handleQuit(s1); + return; + } else + { + helper.handleQuit(null); + return; + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Raw.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Raw.java new file mode 100644 index 0000000..189096b --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Raw.java @@ -0,0 +1,24 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Misc.Commands.Command; + +public class Raw extends Command +{ + + public Raw(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + if (s1 != null && s1.length() > 0) + { + helper.writeToServer((new StringBuilder(String.valueOf(s1))).append("\r\n").toString()); + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Topic.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Topic.java new file mode 100644 index 0000000..3615f8c --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Topic.java @@ -0,0 +1,37 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Misc.Commands.Command; + +public class Topic extends Command +{ + + public Topic(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + s = helper.getCurrentSession(); + if (s.getType() != 1) + { + return; + } + if (s1 == null) + { + helper.writeToServer((new StringBuilder("TOPIC ")).append(s.getSessionName()).append("\r\n").toString()); + return; + } else + { + StringBuilder stringbuilder = new StringBuilder(s.getSessionName().length() + 5 + 1 + 2 + s1.length() + 2); + stringbuilder.append("TOPIC ").append(s.getSessionName()).append(" :").append(s1).append("\r\n"); + helper.writeToServer(stringbuilder.toString()); + return; + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/UM.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/UM.java new file mode 100644 index 0000000..65e12fe --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/UM.java @@ -0,0 +1,27 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Misc.Commands.Command; + +public class UM extends Command +{ + + public UM(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + s = (new StringBuilder("MODE ")).append(helper.getCurrentNick()); + if (s1 != null) + { + s.append(" ").append(s1); + } + s.append("\r\n"); + helper.writeToServer(s.toString()); + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Unignore.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Unignore.java new file mode 100644 index 0000000..c98cb0e --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Unignore.java @@ -0,0 +1,77 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import android.content.res.Resources; +import net.andchat.donate.Backend.Ignores; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Misc.Commands.Command; + +public class Unignore extends Command +{ + + public Unignore(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + Resources resources; + Ignores ignores; + int i; + int j; + boolean flag; +label0: + { + resources = helper.getResources(); + if (s1 != null) + { + s1 = s1.trim(); + if (s1.length() != 0) + { + break label0; + } + } + sendMessage(helper.getCurrentSession().getSessionName(), resources.getString(0x7f0a01cc), 1, helper); + return; + } + i = s1.indexOf(','); + s = (String[])null; + if (i != -1) + { + s = s1.split(","); + } + ignores = helper.getIgnoreList(); + flag = false; + if (s == null) + { + break MISSING_BLOCK_LABEL_170; + } + j = s.length; + i = 0; +_L3: + if (i < j) goto _L2; else goto _L1 +_L1: + if (flag) + { + i = 0x7f0a01cd; + } else + { + i = 0x7f0a01ce; + } + s = resources.getString(i, new Object[] { + s1 + }); + sendMessage(helper.getCurrentSession().getSessionName(), s, 1, helper); + return; +_L2: + flag |= ignores.removeIgnore(s[i].trim()); + i++; + goto _L3 + flag = ignores.removeIgnore(s1); + goto _L1 + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/UnknownCommand.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/UnknownCommand.java new file mode 100644 index 0000000..b6f2736 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/UnknownCommand.java @@ -0,0 +1,26 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Misc.Commands.Command; + +public class UnknownCommand extends Command +{ + + public UnknownCommand(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + String s2 = s; + if (s1 != null) + { + s2 = (new StringBuilder(String.valueOf(s))).append(" ").append(s1).toString(); + } + helper.writeToServer((new StringBuilder(String.valueOf(s2))).append("\r\n").toString()); + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/WC.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/WC.java new file mode 100644 index 0000000..5e42ad9 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/WC.java @@ -0,0 +1,44 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import java.util.List; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Backend.Sessions.SessionManager; + +// Referenced classes of package net.andchat.donate.Misc.Commands.impl: +// Part + +public class WC extends Part +{ + + public WC(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + if (s1 == null) + { + super.execute(s, s1, helper); + } else + if (s1.equalsIgnoreCase("-a")) + { + s = helper.getSessionManager().getSessionObjects(); + int j = s.size(); + int i = 0; + while (i < j) + { + super.close(helper, (Session)s.get(i)); + i++; + } + } else + { + super.execute(s, s1, helper); + return; + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Who.java b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Who.java new file mode 100644 index 0000000..c1f2cd4 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Commands/impl/Who.java @@ -0,0 +1,40 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc.Commands.impl; + +import net.andchat.donate.Backend.ServerConnection; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.Misc.Commands.Command; + +public class Who extends Command +{ + + public Who(String s) + { + super(s); + } + + protected void execute(String s, String s1, net.andchat.donate.Misc.CommandParser.Helper helper) + { + s = helper.getServerConnection(); + if (s != null) + { + s.addServerConnnectionFlag(4); + } + if (s1 == null) + { + s = helper.getCurrentSession(); + if (s.getType() == 1) + { + helper.writeToServer((new StringBuilder("WHO ")).append(s.getSessionName()).append("\r\n").toString()); + } + } else + if (s1.length() >= 1) + { + helper.writeToServer((new StringBuilder("WHO ")).append(s1).append("\r\n").toString()); + return; + } + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/IRCMessage.java b/app/src/main/java/net/andchat/donate/Misc/IRCMessage.java new file mode 100644 index 0000000..1f079ee --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/IRCMessage.java @@ -0,0 +1,105 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + + +public class IRCMessage +{ + + private static final Object lock = new Object(); + private static IRCMessage pool[]; + public CharSequence message; + public String target; + public int val; + + private IRCMessage() + { + } + + public static IRCMessage obtain() + { +label0: + { + synchronized (lock) + { + if (pool != null) + { + break label0; + } + pool = new IRCMessage[30]; + } + return new IRCMessage(); + } + obj1 = pool; + int i = 29; +_L2: + if (i >= 0) + { + break MISSING_BLOCK_LABEL_58; + } + obj1 = new IRCMessage(); + obj; + JVM INSTR monitorexit ; + return ((IRCMessage) (obj1)); + obj1; + obj; + JVM INSTR monitorexit ; + throw obj1; + IRCMessage ircmessage; + if (obj1[i] == null) + { + break MISSING_BLOCK_LABEL_76; + } + ircmessage = obj1[i]; + obj1[i] = null; + obj; + JVM INSTR monitorexit ; + return ircmessage; + i--; + if (true) goto _L2; else goto _L1 +_L1: + } + + public void recycle() + { + Object obj = lock; + obj; + JVM INSTR monitorenter ; + Object obj1; + target = null; + message = null; + obj1 = pool; + int i = 29; + goto _L1 +_L5: + obj; + JVM INSTR monitorexit ; + return; + obj1; + obj; + JVM INSTR monitorexit ; + throw obj1; +_L3: + i--; +_L1: + if (i < 0) + { + continue; /* Loop/switch isn't completed */ + } + if (obj1[i] != null) goto _L3; else goto _L2 +_L2: + obj1[i] = this; + if (true) goto _L5; else goto _L4 +_L4: + } + + public void set(String s, CharSequence charsequence, int i) + { + target = s; + message = charsequence; + val = i; + } + +} diff --git a/app/src/main/java/net/andchat/donate/Misc/LimitedSizeQueue.java b/app/src/main/java/net/andchat/donate/Misc/LimitedSizeQueue.java new file mode 100644 index 0000000..843f1ad --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/LimitedSizeQueue.java @@ -0,0 +1,100 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + +import java.util.concurrent.ConcurrentLinkedQueue; + +public class LimitedSizeQueue extends ConcurrentLinkedQueue +{ + + private final int mLimit; + private final int mNumToRemove; + private int mSize; + + public LimitedSizeQueue(int i, int j) + { + mLimit = i; + mNumToRemove = j; + } + + private void check() + { + } + + public boolean add(Object obj) + { + if (mSize > mLimit) + { + removeWithLimit(mNumToRemove); + } + boolean flag = super.add(obj); + mSize = mSize + 1; + check(); + return flag; + } + + public int getSize() + { + check(); + return mSize; + } + + public void removeAll() + { + int i; + int j = mSize; + i = j; + if (j == 0) + { + return; + } + goto _L1 +_L3: + int k; + i = k; + if (poll() != null) goto _L1; else goto _L2 +_L2: + mSize = 0; + check(); + return; +_L1: + k = i - 1; + if (i >= 0) goto _L3; else goto _L2 + } + + public void removeWithLimit(int i) + { + int j; + j = mSize; + if (j == 0) + { + return; + } + if (i > j) + { + removeAll(); + mSize = 0; + return; + } + j = i; + if (i >= 0) goto _L2; else goto _L1 +_L1: + removeAll(); + mSize = 0; +_L3: + check(); + return; +_L4: + if (poll() == null) + { + break; /* Loop/switch isn't completed */ + } + mSize = mSize - 1; + j = i; +_L2: + i = j - 1; + if (j >= 0) goto _L4; else goto _L3 + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/ServerProfile$1.java b/app/src/main/java/net/andchat/donate/Misc/ServerProfile$1.java new file mode 100644 index 0000000..2be1454 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/ServerProfile$1.java @@ -0,0 +1,39 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + +import android.os.Parcel; + +// Referenced classes of package net.andchat.donate.Misc: +// ServerProfile + +class + implements android.os.or +{ + + public volatile Object createFromParcel(Parcel parcel) + { + return createFromParcel(parcel); + } + + public ServerProfile createFromParcel(Parcel parcel) + { + return new ServerProfile(parcel); + } + + public volatile Object[] newArray(int i) + { + return newArray(i); + } + + public ServerProfile[] newArray(int i) + { + return new ServerProfile[i]; + } + + () + { + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/ServerProfile$AuthenticationModes.java b/app/src/main/java/net/andchat/donate/Misc/ServerProfile$AuthenticationModes.java new file mode 100644 index 0000000..d29696a --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/ServerProfile$AuthenticationModes.java @@ -0,0 +1,32 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + + +// Referenced classes of package net.andchat.donate.Misc: +// ServerProfile + +public static final class +{ + + public static final int MODE_NICKSERV; + public static final int MODE_PASSWORD; + public static final int MODE_SASL; + private static int start; + + static + { + start = 0; + int i = start; + start = i + 1; + MODE_PASSWORD = 1 << i; + i = start; + start = i + 1; + MODE_NICKSERV = 1 << i; + i = start; + start = i + 1; + MODE_SASL = 1 << i; + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/ServerProfile.java b/app/src/main/java/net/andchat/donate/Misc/ServerProfile.java new file mode 100644 index 0000000..b22c0d7 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/ServerProfile.java @@ -0,0 +1,683 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + +import android.app.Activity; +import android.os.Parcel; +import android.os.Parcelable; +import android.text.TextUtils; +import java.util.ArrayList; +import java.util.List; +import net.andchat.donate.Backend.Crypt; +import org.xmlpull.v1.XmlPullParser; + +// Referenced classes of package net.andchat.donate.Misc: +// Utils + +public class ServerProfile + implements Parcelable +{ + public static final class AuthenticationModes + { + + public static final int MODE_NICKSERV; + public static final int MODE_PASSWORD; + public static final int MODE_SASL; + private static int start; + + static + { + start = 0; + int i = start; + start = i + 1; + MODE_PASSWORD = 1 << i; + i = start; + start = i + 1; + MODE_NICKSERV = 1 << i; + i = start; + start = i + 1; + MODE_SASL = 1 << i; + } + } + + + public static final android.os.Parcelable.Creator CREATOR = new android.os.Parcelable.Creator() { + + public volatile Object createFromParcel(Parcel parcel) + { + return createFromParcel(parcel); + } + + public ServerProfile createFromParcel(Parcel parcel) + { + return new ServerProfile(parcel); + } + + public volatile Object[] newArray(int i) + { + return newArray(i); + } + + public ServerProfile[] newArray(int i) + { + return new ServerProfile[i]; + } + + }; + private String mAddress; + private int mAuthModes; + private String mAutojoin; + private String mAutorun; + private String mCharset; + private ArrayList mIgnores; + private boolean mIsDecrypted; + private String mLabel; + private boolean mLogs; + private String mNick1; + private String mNick2; + private String mNick3; + private String mNickservPassword; + private int mPort; + private String mRealname; + private boolean mRequiresEncryption; + private String mSASL_Password; + private String mSASL_Username; + private boolean mSSL; + private String mServerPassword; + private String mUsername; + + public ServerProfile() + { + mIgnores = new ArrayList(); + mIsDecrypted = true; + setEmptyAuthModes(); + } + + public ServerProfile(Parcel parcel) + { + boolean flag1 = true; + super(); + mIgnores = new ArrayList(); + mLabel = parcel.readString(); + mAddress = parcel.readString(); + mPort = parcel.readInt(); + boolean flag; + if (parcel.readInt() == 1) + { + flag = true; + } else + { + flag = false; + } + mSSL = flag; + mNick1 = parcel.readString(); + mNick2 = parcel.readString(); + mNick3 = parcel.readString(); + mUsername = parcel.readString(); + mRealname = parcel.readString(); + mAutojoin = parcel.readString(); + mAutorun = parcel.readString(); + mAuthModes = parcel.readInt(); + if (mAuthModes > 0) + { + if (Utils.isBitSet(mAuthModes, AuthenticationModes.MODE_PASSWORD)) + { + mServerPassword = parcel.readString(); + } + if (Utils.isBitSet(mAuthModes, AuthenticationModes.MODE_NICKSERV)) + { + mNickservPassword = parcel.readString(); + } + if (Utils.isBitSet(mAuthModes, AuthenticationModes.MODE_SASL)) + { + mSASL_Username = parcel.readString(); + mSASL_Password = parcel.readString(); + } + } + mCharset = parcel.readString(); + if (parcel.readInt() == 1) + { + flag = true; + } else + { + flag = false; + } + mLogs = flag; + if (parcel.readInt() == 1) + { + flag = true; + } else + { + flag = false; + } + mRequiresEncryption = flag; + if (parcel.readInt() == 1) + { + flag = flag1; + } else + { + flag = false; + } + mIsDecrypted = flag; + } + + public static ServerProfile fromXml(XmlPullParser xmlpullparser, Activity activity) + { + ServerProfile serverprofile = new ServerProfile(); + serverprofile.mLabel = xmlpullparser.getAttributeValue(null, "name"); + if (serverprofile.mLabel == null) + { + return null; + } + serverprofile.mAddress = xmlpullparser.getAttributeValue(null, "address"); + if (serverprofile.mAddress == null) + { + return null; + } + serverprofile.mSSL = trueOrFalse(xmlpullparser.getAttributeValue(null, "ssl"), false); + String s = xmlpullparser.getAttributeValue(null, "port"); + char c; + if (serverprofile.mSSL) + { + c = '\u1B58'; + } else + { + c = '\u1A0B'; + } + serverprofile.mPort = Utils.parseInt(s, c); + serverprofile.mNick1 = xmlpullparser.getAttributeValue(null, "nick1"); + serverprofile.mNick2 = xmlpullparser.getAttributeValue(null, "nick2"); + serverprofile.mNick3 = xmlpullparser.getAttributeValue(null, "nick3"); + serverprofile.mRealname = xmlpullparser.getAttributeValue(null, "realname"); + serverprofile.mUsername = xmlpullparser.getAttributeValue(null, "username"); + serverprofile.mAutojoin = xmlpullparser.getAttributeValue(null, "autojoin"); + serverprofile.mAutorun = xmlpullparser.getAttributeValue(null, "autorun"); + serverprofile.mServerPassword = xmlpullparser.getAttributeValue(null, "password"); + serverprofile.mCharset = xmlpullparser.getAttributeValue(null, "charset"); + serverprofile.mRequiresEncryption = trueOrFalse(xmlpullparser.getAttributeValue(null, "encrypted"), false); + serverprofile.mLogs = trueOrFalse(xmlpullparser.getAttributeValue(null, "logmessages"), true); + serverprofile.mNickservPassword = xmlpullparser.getAttributeValue(null, "nickserv_password"); + serverprofile.mSASL_Username = xmlpullparser.getAttributeValue(null, "sasl_username"); + serverprofile.mSASL_Password = xmlpullparser.getAttributeValue(null, "sasl_password"); + serverprofile.mAuthModes = Utils.parseInt(xmlpullparser.getAttributeValue(null, "auth_modes"), 0); + serverprofile.fillDefaults(activity); + serverprofile.validateSelf(); + return serverprofile; + } + + private static boolean trueOrFalse(String s, boolean flag) + { + if (s != null) + { + flag = s.equalsIgnoreCase("true"); + } + return flag; + } + + public void addAuthMode(int i) + { + mAuthModes = mAuthModes | i; + } + + public void cloneAuthDetailsFrom(ServerProfile serverprofile) + { + int i = serverprofile.getAuthModes(); + if (Utils.isBitSet(i, AuthenticationModes.MODE_PASSWORD)) + { + mServerPassword = serverprofile.getServerPassword(); + } else + { + mServerPassword = ""; + } + if (Utils.isBitSet(i, AuthenticationModes.MODE_NICKSERV)) + { + mNickservPassword = serverprofile.getNickservPassword(); + } else + { + mNickservPassword = ""; + } + if (Utils.isBitSet(i, AuthenticationModes.MODE_SASL)) + { + mSASL_Username = serverprofile.getSASLUsername(); + mSASL_Password = serverprofile.getSASLPassword(); + } else + { + mSASL_Username = ""; + mSASL_Password = ""; + } + mAuthModes = i; + } + + public void decryptSelf(Crypt crypt) + { + if (isDecrypted()) + { + return; + } + mAddress = crypt.decrypt(mAddress); + if (Utils.isBitSet(mAuthModes, AuthenticationModes.MODE_PASSWORD)) + { + mServerPassword = crypt.decrypt(mServerPassword); + } + if (Utils.isBitSet(mAuthModes, AuthenticationModes.MODE_NICKSERV)) + { + mNickservPassword = crypt.decrypt(mNickservPassword); + } + if (Utils.isBitSet(mAuthModes, AuthenticationModes.MODE_SASL)) + { + mSASL_Password = crypt.decrypt(mSASL_Password); + } + setDecrypted(true); + } + + public int describeContents() + { + return 0; + } + + public void encryptSelf(Crypt crypt) + { + if (isDecrypted()) + { + mAddress = crypt.encrypt(mAddress); + if (Utils.isBitSet(mAuthModes, AuthenticationModes.MODE_PASSWORD)) + { + mServerPassword = crypt.encrypt(mServerPassword); + } + if (Utils.isBitSet(mAuthModes, AuthenticationModes.MODE_NICKSERV)) + { + mNickservPassword = crypt.encrypt(mNickservPassword); + } + if (Utils.isBitSet(mAuthModes, AuthenticationModes.MODE_SASL)) + { + mSASL_Password = crypt.encrypt(mSASL_Password); + } + setDecrypted(false); + } + } + + public void fillDefaults(Activity activity) + { + if (TextUtils.isEmpty(mNick1)) + { + mNick1 = Utils.getDefaultServerProfileValue(0x7f0a0001, activity); + } + if (TextUtils.isEmpty(mNick2)) + { + mNick2 = Utils.getDefaultServerProfileValue(0x7f0a0002, activity); + } + if (TextUtils.isEmpty(mNick3)) + { + mNick3 = Utils.getDefaultServerProfileValue(0x7f0a0003, activity); + } + if (TextUtils.isEmpty(mRealname)) + { + mRealname = Utils.getDefaultServerProfileValue(0x7f0a0004, activity); + } + if (TextUtils.isEmpty(mUsername)) + { + mUsername = Utils.getDefaultServerProfileValue(0x7f0a0005, activity); + } + if (TextUtils.isEmpty(mCharset)) + { + mCharset = Utils.getDefaultServerProfileValue(0x7f0a0006, activity); + } + if (TextUtils.isEmpty(mNickservPassword)) + { + mNickservPassword = ""; + } + if (TextUtils.isEmpty(mSASL_Username)) + { + mSASL_Username = ""; + } + if (TextUtils.isEmpty(mSASL_Password)) + { + mSASL_Password = ""; + } + if (TextUtils.isEmpty(mServerPassword)) + { + mServerPassword = ""; + } + } + + public void fillPort(Activity activity) + { + if (mPort <= 0 || mPort > 65535) + { + int i; + if (mSSL) + { + i = 7000; + } else + { + i = 6667; + } + mPort = i; + } + } + + public String getAddress() + { + return mAddress; + } + + public int getAuthModes() + { + return mAuthModes; + } + + public String getAutojoinList() + { + return mAutojoin; + } + + public String getAutorunList() + { + return mAutorun; + } + + public String getCharset() + { + return mCharset; + } + + public List getIgnoreList() + { + return mIgnores; + } + + public String getName() + { + return mLabel; + } + + public String getNick(int i) + { + switch (i) + { + default: + throw new IllegalArgumentException((new StringBuilder(String.valueOf(i))).append(" is not valid, use 1/2/3").toString()); + + case 1: // '\001' + return mNick1; + + case 2: // '\002' + return mNick2; + + case 3: // '\003' + return mNick3; + } + } + + public String getNickservPassword() + { + return mNickservPassword; + } + + public int getPort() + { + return mPort; + } + + public String getRealname() + { + return mRealname; + } + + public String getSASLPassword() + { + return mSASL_Password; + } + + public String getSASLUsername() + { + return mSASL_Username; + } + + public String getServerPassword() + { + return mServerPassword; + } + + public String getUsername() + { + return mUsername; + } + + public boolean isDecrypted() + { + return mIsDecrypted; + } + + public boolean isLoggingEnabled() + { + return mLogs; + } + + public void removeAuthMode(int i) + { + mAuthModes = mAuthModes & ~i; + } + + public ServerProfile setAuthDetails(int i, String s, String s1, String s2, String s3) + { + mAuthModes = i; + mServerPassword = s; + mNickservPassword = s1; + mSASL_Username = s2; + mSASL_Password = s3; + return this; + } + + public void setCharset(String s) + { + mCharset = s; + } + + public void setDecrypted(boolean flag) + { + mIsDecrypted = flag; + } + + public void setEmptyAuthModes() + { + mServerPassword = ""; + mNickservPassword = ""; + mSASL_Username = ""; + mSASL_Password = ""; + mAuthModes = 0; + } + + public void setNick(int i, String s) + { + switch (i) + { + default: + throw new IllegalArgumentException((new StringBuilder(String.valueOf(i))).append(" is not valid, use 1/2/3").toString()); + + case 1: // '\001' + mNick1 = s; + return; + + case 2: // '\002' + mNick2 = s; + return; + + case 3: // '\003' + mNick3 = s; + break; + } + } + + public void setNickServDetails(String s) + { + mNickservPassword = s; + } + + public ServerProfile setOtherDetails(String s, String s1, String s2, boolean flag) + { + mAutojoin = s; + mAutorun = s1; + mCharset = s2; + mLogs = flag; + return this; + } + + public void setRealname(String s) + { + mRealname = s; + } + + public void setSASLDetails(String s, String s1) + { + mSASL_Username = s; + mSASL_Password = s1; + } + + public ServerProfile setServerDetails(String s, String s1, int i, boolean flag) + { + mLabel = s; + mAddress = s1; + mPort = i; + mSSL = flag; + return this; + } + + public void setServerPassword(String s) + { + mServerPassword = s; + } + + public ServerProfile setUserDetails(String s, String s1, String s2, String s3, String s4) + { + mNick1 = s; + mNick2 = s1; + mNick3 = s2; + mUsername = s3; + mRealname = s4; + return this; + } + + public void setUsername(String s) + { + mUsername = s; + } + + public ServerProfile setUsesEncryption(boolean flag) + { + mRequiresEncryption = flag; + return this; + } + + public String toString() + { + return super.toString(); + } + + public boolean usesEncryption() + { + return mRequiresEncryption; + } + + public boolean usesSSL() + { + return mSSL; + } + + public void validateSelf() + { + int i = mPort; + if (i > 65535 || i <= 0) + { + int j; + if (mSSL) + { + j = 7000; + } else + { + j = 6667; + } + mPort = j; + } + if (mAutojoin == null) + { + mAutojoin = ""; + } + if (mAutorun == null) + { + mAutorun = ""; + } + if (mServerPassword == null) + { + mServerPassword = ""; + } + } + + public void writeToParcel(Parcel parcel, int i) + { + boolean flag = true; + parcel.writeString(mLabel); + parcel.writeString(mAddress); + parcel.writeInt(mPort); + if (mSSL) + { + i = 1; + } else + { + i = 0; + } + parcel.writeInt(i); + parcel.writeString(mNick1); + parcel.writeString(mNick2); + parcel.writeString(mNick3); + parcel.writeString(mUsername); + parcel.writeString(mRealname); + parcel.writeString(mAutojoin); + parcel.writeString(mAutorun); + parcel.writeInt(mAuthModes); + if (mAuthModes > 0) + { + if (Utils.isBitSet(mAuthModes, AuthenticationModes.MODE_PASSWORD)) + { + parcel.writeString(mServerPassword); + } + if (Utils.isBitSet(mAuthModes, AuthenticationModes.MODE_NICKSERV)) + { + parcel.writeString(mNickservPassword); + } + if (Utils.isBitSet(mAuthModes, AuthenticationModes.MODE_SASL)) + { + parcel.writeString(mSASL_Username); + parcel.writeString(mSASL_Password); + } + } + parcel.writeString(mCharset); + if (mLogs) + { + i = 1; + } else + { + i = 0; + } + parcel.writeInt(i); + if (mRequiresEncryption) + { + i = 1; + } else + { + i = 0; + } + parcel.writeInt(i); + if (mIsDecrypted) + { + i = ((flag) ? 1 : 0); + } else + { + i = 0; + } + parcel.writeInt(i); + } + +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Utils$1.java b/app/src/main/java/net/andchat/donate/Misc/Utils$1.java new file mode 100644 index 0000000..e69de29 diff --git a/app/src/main/java/net/andchat/donate/Misc/Utils$2.java b/app/src/main/java/net/andchat/donate/Misc/Utils$2.java new file mode 100644 index 0000000..0c8235a --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Utils$2.java @@ -0,0 +1,40 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + +import net.andchat.donate.Backend.IRCService; + +// Referenced classes of package net.andchat.donate.Misc: +// Utils + +class val.id extends Thread +{ + + private final int val$id; + private final String val$reason; + private final IRCService val$service; + + public void run() + { + String s = IRCService.sPreferences.quitReason; + if (val$reason != null) + { + IRCService.sPreferences.quitReason = val$reason; + } + val$service.stopConnection(val$id, 1); + if (val$reason != null) + { + IRCService.sPreferences.quitReason = s; + } + } + + rvice() + { + val$reason = s; + val$service = ircservice; + val$id = i; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Utils$ChannelSpan.java b/app/src/main/java/net/andchat/donate/Misc/Utils$ChannelSpan.java new file mode 100644 index 0000000..109533f --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Utils$ChannelSpan.java @@ -0,0 +1,32 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + +import android.text.style.URLSpan; +import android.view.View; + +// Referenced classes of package net.andchat.donate.Misc: +// Utils + +public static class mText extends URLSpan +{ + + private String mText; + + public void onClick(View view) + { + view = view.getContext(); + if (view instanceof er) + { + ((er)view).handleJoin(mText); + } + } + + public er(String s) + { + super(s); + mText = s; + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Utils$Detector$Y_DEVIATION.java b/app/src/main/java/net/andchat/donate/Misc/Utils$Detector$Y_DEVIATION.java new file mode 100644 index 0000000..d8df8c4 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Utils$Detector$Y_DEVIATION.java @@ -0,0 +1,45 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + + +// Referenced classes of package net.andchat.donate.Misc: +// Utils + +public static final class extends Enum +{ + + private static final RELAXED ENUM$VALUES[]; + public static final RELAXED RELAXED; + public static final RELAXED STRICT; + + public static valueOf(String s) + { + return ()Enum.valueOf(net/andchat/donate/Misc/Utils$Detector$Y_DEVIATION, s); + } + + public static [] values() + { + a[] = ENUM$VALUES; + int i = a.length; + a1[] = new ENUM.VALUES[i]; + System.arraycopy(a, 0, a1, 0, i); + return a1; + } + + static + { + STRICT = new ("STRICT", 0); + RELAXED = new ("RELAXED", 1); + ENUM$VALUES = (new ENUM.VALUES[] { + STRICT, RELAXED + }); + } + + private (String s, int i) + { + super(s, i); + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Utils$Detector.java b/app/src/main/java/net/andchat/donate/Misc/Utils$Detector.java new file mode 100644 index 0000000..e69de29 diff --git a/app/src/main/java/net/andchat/donate/Misc/Utils$ListSwipeListener.java b/app/src/main/java/net/andchat/donate/Misc/Utils$ListSwipeListener.java new file mode 100644 index 0000000..c9ea633 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Utils$ListSwipeListener.java @@ -0,0 +1,18 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + +import android.app.Fragment; + +// Referenced classes of package net.andchat.donate.Misc: +// Utils + +public static interface +{ + + public abstract void onLeftToRightSwipe(Fragment fragment); + + public abstract void onRightToLeftSwipe(Fragment fragment); +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Utils$StringCompare.java b/app/src/main/java/net/andchat/donate/Misc/Utils$StringCompare.java new file mode 100644 index 0000000..8ac2a2f --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Utils$StringCompare.java @@ -0,0 +1,50 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + +import java.util.Comparator; + +// Referenced classes of package net.andchat.donate.Misc: +// Utils + +public static class + implements Comparator +{ + + public volatile int compare(Object obj, Object obj1) + { + return compare((String)obj, (String)obj1); + } + + public int compare(String s, String s1) + { + boolean flag = s.equalsIgnoreCase("Status"); + boolean flag1 = s1.equalsIgnoreCase("Status"); + if (flag && flag1) + { + return 0; + } + if (flag && !flag1) + { + return -1; + } + if (!flag && flag1) + { + return 1; + } else + { + return s.compareToIgnoreCase(s1); + } + } + + private () + { + } + + ( ) + { + this(); + } +} diff --git a/app/src/main/java/net/andchat/donate/Misc/Utils.java b/app/src/main/java/net/andchat/donate/Misc/Utils.java new file mode 100644 index 0000000..b3b49e4 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/Misc/Utils.java @@ -0,0 +1,1231 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.Misc; + +import android.app.Activity; +import android.app.Dialog; +import android.app.Fragment; +import android.app.Service; +import android.content.Context; +import android.content.DialogInterface; +import android.content.SharedPreferences; +import android.content.res.Resources; +import android.text.Spannable; +import android.text.SpannableStringBuilder; +import android.text.TextUtils; +import android.text.style.ForegroundColorSpan; +import android.text.style.StyleSpan; +import android.text.style.URLSpan; +import android.util.DisplayMetrics; +import android.util.Log; +import android.util.SparseIntArray; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewConfiguration; +import android.widget.TextView; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import net.andchat.donate.Backend.Crypt; +import net.andchat.donate.Backend.IRCDb; +import net.andchat.donate.Backend.IRCService; +import net.andchat.donate.Backend.ServerConnection; +import net.andchat.donate.Backend.Sessions.Session; +import net.andchat.donate.IRCApp; + +// Referenced classes of package net.andchat.donate.Misc: +// ServerProfile, Colours + +public final class Utils +{ + public static class ChannelSpan extends URLSpan + { + + private String mText; + + public void onClick(View view) + { + view = view.getContext(); + if (view instanceof CommandParser.Helper) + { + ((CommandParser.Helper)view).handleJoin(mText); + } + } + + public ChannelSpan(String s) + { + super(s); + mText = s; + } + } + + public static abstract class Detector extends android.view.GestureDetector.SimpleOnGestureListener + { + + private static int $SWITCH_TABLE$net$andchat$donate$Misc$Utils$Detector$Y_DEVIATION[]; + private final int REL_SWIPE_MAX_OFF_PATH; + private final int REL_SWIPE_THRESHOLD_VELOCITY; + private MotionEvent event1; + private boolean mHaveSwipe; + + static int[] $SWITCH_TABLE$net$andchat$donate$Misc$Utils$Detector$Y_DEVIATION() + { + int ai[] = $SWITCH_TABLE$net$andchat$donate$Misc$Utils$Detector$Y_DEVIATION; + if (ai != null) + { + return ai; + } + ai = new int[Y_DEVIATION.values().length]; + try + { + ai[Y_DEVIATION.RELAXED.ordinal()] = 2; + } + catch (NoSuchFieldError nosuchfielderror1) { } + try + { + ai[Y_DEVIATION.STRICT.ordinal()] = 1; + } + catch (NoSuchFieldError nosuchfielderror) { } + $SWITCH_TABLE$net$andchat$donate$Misc$Utils$Detector$Y_DEVIATION = ai; + return ai; + } + + public boolean haveSwipeAction() + { + return mHaveSwipe; + } + + public final boolean onDown(MotionEvent motionevent) + { + mHaveSwipe = false; + event1 = motionevent; + return super.onDown(motionevent); + } + + public final boolean onFling(MotionEvent motionevent, MotionEvent motionevent1, float f, float f1) + { + MotionEvent motionevent2 = motionevent; + if (motionevent == null) + { + motionevent2 = event1; + } + int i; + if (motionevent2 == null || motionevent1 == null ? Math.abs(f1) > 600F : (i = (int)Math.abs(motionevent2.getY() - motionevent1.getY())) < 0 || i > REL_SWIPE_MAX_OFF_PATH) + { + return false; + } + if (f > 0.0F && f > (float)REL_SWIPE_THRESHOLD_VELOCITY) + { + mHaveSwipe = true; + onLeftToRightSwipe(); + return true; + } + if (f < 0.0F && Math.abs(f) > (float)REL_SWIPE_THRESHOLD_VELOCITY) + { + mHaveSwipe = true; + onRightToLeftSwipe(); + return true; + } else + { + mHaveSwipe = false; + return false; + } + } + + public abstract void onLeftToRightSwipe(); + + public abstract void onRightToLeftSwipe(); + + public final void onShowPress(MotionEvent motionevent) + { + mHaveSwipe = false; + event1 = motionevent; + super.onShowPress(motionevent); + } + + public Detector(Context context) + { + this(context, Y_DEVIATION.RELAXED); + } + + public Detector(Context context, Y_DEVIATION y_deviation) + { + $SWITCH_TABLE$net$andchat$donate$Misc$Utils$Detector$Y_DEVIATION()[y_deviation.ordinal()]; + JVM INSTR tableswitch 1 1: default 32 + // 1 69; + goto _L1 _L2 +_L1: + char c = '\226'; +_L4: + REL_SWIPE_MAX_OFF_PATH = (int)((float)(context.getResources().getDisplayMetrics().densityDpi * c) / 160F); + REL_SWIPE_THRESHOLD_VELOCITY = ViewConfiguration.get(context).getScaledMinimumFlingVelocity(); + return; +_L2: + c = '2'; + if (true) goto _L4; else goto _L3 +_L3: + } + } + + public static final class Detector.Y_DEVIATION extends Enum + { + + private static final Detector.Y_DEVIATION ENUM$VALUES[]; + public static final Detector.Y_DEVIATION RELAXED; + public static final Detector.Y_DEVIATION STRICT; + + public static Detector.Y_DEVIATION valueOf(String s) + { + return (Detector.Y_DEVIATION)Enum.valueOf(net/andchat/donate/Misc/Utils$Detector$Y_DEVIATION, s); + } + + public static Detector.Y_DEVIATION[] values() + { + Detector.Y_DEVIATION ay_deviation[] = ENUM$VALUES; + int i = ay_deviation.length; + Detector.Y_DEVIATION ay_deviation1[] = new Detector.Y_DEVIATION[i]; + System.arraycopy(ay_deviation, 0, ay_deviation1, 0, i); + return ay_deviation1; + } + + static + { + STRICT = new Detector.Y_DEVIATION("STRICT", 0); + RELAXED = new Detector.Y_DEVIATION("RELAXED", 1); + ENUM$VALUES = (new Detector.Y_DEVIATION[] { + STRICT, RELAXED + }); + } + + private Detector.Y_DEVIATION(String s, int i) + { + super(s, i); + } + } + + public static interface ListSwipeListener + { + + public abstract void onLeftToRightSwipe(Fragment fragment); + + public abstract void onRightToLeftSwipe(Fragment fragment); + } + + public static class StringCompare + implements Comparator + { + + public volatile int compare(Object obj, Object obj1) + { + return compare((String)obj, (String)obj1); + } + + public int compare(String s, String s1) + { + boolean flag = s.equalsIgnoreCase("Status"); + boolean flag1 = s1.equalsIgnoreCase("Status"); + if (flag && flag1) + { + return 0; + } + if (flag && !flag1) + { + return -1; + } + if (!flag && flag1) + { + return 1; + } else + { + return s.compareToIgnoreCase(s1); + } + } + + private StringCompare() + { + } + + StringCompare(StringCompare stringcompare) + { + this(); + } + } + + + private static final Matcher EMAIL = Pattern.compile((new StringBuilder(98)).append("[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}").append("\\@").append("[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}").append("(").append("\\.").append("[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}").append(")+").toString()).matcher(""); + public static final StringCompare STRING_COMPARE = new StringCompare(null); + private static final Matcher WEB = Pattern.compile((new StringBuilder(1987)).append("((?:(http|https|Http|Https|rtsp|Rtsp):\\/\\/(?:(?:[a-zA-Z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)").append("\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,64}(?:\\:(?:[a-zA-Z0-9\\$\\-\\_").append("\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,25})?\\@)?)?").append("((?:(?:[").append("a-zA-Z0-9\240-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF").append("][").append("a-zA-Z0-9\240-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF").append("\\-]{0,64}\\.)+").append("(?:").append("(?:aero|arpa|asia|a[cdefgilmnoqrstuwxz])").append("|(?:biz|b[abdefghijmnorstvwyz])").append("|(?:cat|com|coop|c[acdfghiklmnoruvxyz])").append("|d[ejkmoz]").append("|(?:edu|e[cegrstu])").append("|f[ijkmor]").append("|(?:gov|g[abdefghilmnpqrstuwy])").append("|h[kmnrtu]").append("|(?:info|int|i[delmnoqrst])").append("|(?:jobs|j[emop])").append("|k[eghimnprwyz]").append("|l[abcikrstuvy]").append("|(?:mil|mobi|museum|m[acdeghklmnopqrstuvwxyz])").append("|(?:name|net|n[acefgilopruz])").append("|(?:org|om)").append("|(?:pro|p[aefghklmnrstwy])").append("|qa").append("|r[eosuw]").append("|s[abcdeghijklmnortuvyz]").append("|(?:tel|travel|t[cdfghjklmnoprtvwz])").append("|u[agksyz]").append("|v[aceginu]").append("|w[fs]").append("|(?:\u03B4\u03BF\u03BA\u03B9\u03BC\u03AE|").append("\u0438\u0441\u043F\u044B\u0442\u0430\u043D").append("\u0438\u0435|\u0440\u0444|\u0441\u0440\u0431|").append("\u05D8\u05E2\u05E1\u05D8|\u0622\u0632\u0645\u0627").append("\u06CC\u0634\u06CC|\u0625\u062E\u062A\u0628\u0627").append("\u0631|\u0627\u0644\u0627\u0631\u062F\u0646|\u0627").append("\u0644\u062C\u0632\u0627\u0626\u0631|\u0627\u0644\u0633").append("\u0639\u0648\u062F\u064A\u0629|\u0627\u0644\u0645\u063A").append("\u0631\u0628|\u0627\u0645\u0627\u0631\u0627\u062A|\u0628").append("\u06BE\u0627\u0631\u062A|\u062A\u0648\u0646\u0633|\u0633").append("\u0648\u0631\u064A\u0629|\u0641\u0644\u0633\u0637\u064A\u0646|").append("\u0642\u0637\u0631|\u0645\u0635\u0631|\u092A\u0930\u0940\u0915").append("\u094D\u0937\u093E|\u092D\u093E\u0930\u0924|\u09AD\u09BE\u09B0").append("\u09A4|\u0A2D\u0A3E\u0A30\u0A24|\u0AAD\u0ABE\u0AB0\u0AA4|\u0B87").append("\u0BA8\u0BCD\u0BA4\u0BBF\u0BAF\u0BBE|\u0B87\u0BB2\u0B99\u0BCD").append("\u0B95\u0BC8|\u0B9A\u0BBF\u0B99\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0BC2").append("\u0BB0\u0BCD|\u0BAA\u0BB0\u0BBF\u0B9F\u0BCD\u0B9A\u0BC8|\u0C2D\u0C3E").append("\u0C30\u0C24\u0C4D|\u0DBD\u0D82\u0D9A\u0DCF|\u0E44\u0E17\u0E22|\u30C6").append("\u30B9\u30C8|\u4E2D\u56FD|\u4E2D\u570B|\u53F0\u6E7E|\u53F0\u7063|\u65B0").append("\u52A0\u5761|\u6D4B\u8BD5|\u6E2C\u8A66|\u9999\u6E2F|\uD14C\uC2A4\uD2B8|").append("\uD55C\uAD6D|xn\\-\\-0zwm56d|xn\\-\\-11b5bs3a9aj6g|xn\\-\\-3e0b707e|").append("xn\\-\\-45brj9c|xn\\-\\-80akhbyknj4f|xn\\-\\-90a3ac|xn\\-\\-9t4b11yi5a|").append("xn\\-\\-clchc0ea0b2g2a9gcd|xn\\-\\-deba0ad|xn\\-\\-fiqs8s|xn\\-\\-fiqz9s|").append("xn\\-\\-fpcrj9c3d|xn\\-\\-fzc2c9e2c|xn\\-\\-g6w251d|xn\\-\\-gecrj9c|").append("xn\\-\\-h2brj9c|xn\\-\\-hgbk6aj7f53bba|xn\\-\\-hlcj6aya9esc7a|xn\\-\\-j6w193g|").append("xn\\-\\-jxalpdlp|xn\\-\\-kgbechtv|xn\\-\\-kprw13d|xn\\-\\-kpry57d|xn\\-\\-lgbbat1ad8j|").append("xn\\-\\-mgbaam7a8h|xn\\-\\-mgbayh7gpa|xn\\-\\-mgbbh1a71e|xn\\-\\-mgbc0a9azcg|").append("xn\\-\\-mgberp4a5d4ar|xn\\-\\-o3cw4h|xn\\-\\-ogbpf8fl|xn\\-\\-p1ai|xn\\-\\-pgbs0dh|").append("xn\\-\\-s9brj9c|xn\\-\\-wgbh1c|xn\\-\\-wgbl6a|xn\\-\\-xkc2al3hye2a|xn\\-\\-xkc2dl3a5ee0h|").append("xn\\-\\-yfro4i67o|xn\\-\\-ygbi2ammx|xn\\-\\-zckzah|xxx)").append("|y[et]").append("|z[amw]))").append("|(?:(?:25[0-5]|2[0-4]").append("[0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.(?:25[0-5]|2[0-4][0-9]").append("|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(?:25[0-5]|2[0-4][0-9]|[0-1]").append("[0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}").append("|[1-9][0-9]|[0-9])))").append("(?:\\:\\d{1,5})?)").append("(\\/(?:(?:[").append("a-zA-Z0-9\240-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF").append("\\;\\/\\?\\:\\@\\&\\=\\#\\~").append("\\-\\.\\+\\!\\*\\'\\(\\)\\,\\_])|(?:\\%[a-fA-F0-9]{2}))*)?").append("(?:\\b|$)").toString()).matcher(""); + private static final char escapees[] = { + '|', ']', '[', '^', '{', '}', '\\', '+', '?', '*', + '.', '(', ')' + }; + private static final Object sLock = new Object(); + private static final Pattern sSplitter = Pattern.compile(" "); + private static final StringBuilder sb = new StringBuilder(); + + public static SpannableStringBuilder addColour(boolean flag, SpannableStringBuilder spannablestringbuilder, int i, int j, int k) + { + int i1 = j; + int l = k; + if (flag) + { + i1 = j + (ServerConnection.sTimeLength + 3); + l = k + (ServerConnection.sTimeLength + 3); + } + spannablestringbuilder.setSpan(new ForegroundColorSpan(i), i1, l, 33); + return spannablestringbuilder; + } + + public static SpannableStringBuilder addColourAndBold(boolean flag, SpannableStringBuilder spannablestringbuilder, int i, int j, int k) + { + addColour(flag, spannablestringbuilder, i, j, k); + return makeBold(flag, spannablestringbuilder, j, k); + } + + public static SpannableStringBuilder addColourAndBold(boolean flag, CharSequence charsequence, int i, int j, int k) + { + SpannableStringBuilder spannablestringbuilder; + if (charsequence instanceof SpannableStringBuilder) + { + spannablestringbuilder = (SpannableStringBuilder)charsequence; + } else + { + spannablestringbuilder = new SpannableStringBuilder(); + } + if (flag) + { + getStyledTimeStamp(spannablestringbuilder, ServerConnection.getTime()); + } + spannablestringbuilder.append(charsequence); + makeBold(flag, spannablestringbuilder, j, k); + addColour(flag, spannablestringbuilder, i, j, k); + return spannablestringbuilder; + } + + public static Spannable addLinks(Spannable spannable) + { + Object obj2 = sLock; + obj2; + JVM INSTR monitorenter ; + Matcher matcher = WEB.reset(spannable); +_L6: + if (matcher.find()) goto _L2; else goto _L1 +_L1: + Object obj = EMAIL.reset(spannable); +_L8: + if (((Matcher) (obj)).find()) + { + break MISSING_BLOCK_LABEL_202; + } + return spannable; +_L2: + int l; + int i1; + sb.setLength(0); + l = matcher.start(); + i1 = matcher.end(); + boolean flag = true; + int j; + obj = matcher.group(); + j = ((String) (obj)).indexOf("//"); + if (j == -1) goto _L4; else goto _L3 +_L3: + j += 2; +_L7: + if (((String) (obj)).length() < j) goto _L6; else goto _L5 +_L5: + Object obj1; + obj1 = obj; + if (!flag) + { + break MISSING_BLOCK_LABEL_147; + } + sb.setLength(0); + obj1 = ((String) (obj)).substring(0, j).toLowerCase(); + obj1 = sb.append(((String) (obj1))).append(((String) (obj)).substring(j)).toString(); + spannable.setSpan(new URLSpan(((String) (obj1))), l, i1, 33); + goto _L6 + spannable; + obj2; + JVM INSTR monitorexit ; + throw spannable; +_L4: + flag = false; + obj = sb.append("http://").append(((String) (obj))).toString(); + j = 7; + goto _L7 + sb.setLength(0); + int i = ((Matcher) (obj)).start(); + int k = ((Matcher) (obj)).end(); + spannable.setSpan(new URLSpan(sb.append("mailto:").append(((Matcher) (obj)).group()).toString()), i, k, 33); + goto _L8 + } + + public static String addPadding(int i) + { + if (i <= 9) + { + return (new StringBuilder("0")).append(i).toString(); + } else + { + return String.valueOf(i); + } + } + + private static String buildModeString(String s, char c, char c1) + { + int i; + int j; + int k; + j = s.indexOf(' '); + if (j == -1) + { + return (new StringBuilder(String.valueOf(String.valueOf(c)))).append(String.valueOf(c1)).toString(); + } + k = s.length(); + i = 1; +_L4: + if (j + 1 >= k) goto _L2; else goto _L1 +_L1: + j = s.indexOf(' ', j + 1); + if (j != -1) goto _L3; else goto _L2 +_L2: + s = new StringBuilder(k + i + 1); + s.append(c); + j = 0; +_L5: + if (j > i) + { + return s.toString(); + } + break MISSING_BLOCK_LABEL_115; +_L3: + i++; + goto _L4 + s.append(String.valueOf(c1)); + j++; + goto _L5 + } + + public static String buildOpAction(String s, char c, char c1, String s1) + { + StringBuilder stringbuilder = new StringBuilder(); + stringbuilder.append("MODE ").append(s1).append(" ").append(buildModeString(s, c, c1)).append(" ").append(stripCommas(s)).append("\r\n"); + return stringbuilder.toString(); + } + + public static SpannableStringBuilder createMessage(boolean flag, CharSequence charsequence) + { + SpannableStringBuilder spannablestringbuilder = new SpannableStringBuilder(); + if (flag) + { + getStyledTimeStamp(spannablestringbuilder, ServerConnection.getTime()); + } + spannablestringbuilder.append(charsequence); + return spannablestringbuilder; + } + + public static String escape(CharSequence charsequence) + { + Object obj; + char ac[]; + int i; + int j = 0; + int k; + if (charsequence instanceof String) + { + obj = (String)charsequence; + } else + { + obj = charsequence.toString(); + } + ac = escapees; + k = ac.length; + i = 0; +_L5: + if (i >= k) + { + i = j; + } else + { +label0: + { + if (((String) (obj)).indexOf(ac[i]) == -1) + { + break label0; + } + i = 1; + } + } + if (i == 0) goto _L2; else goto _L1 +_L1: + j = charsequence.length(); + obj = new StringBuilder(j); + i = 0; +_L6: + if (i < j) goto _L4; else goto _L3 +_L3: + obj = ((StringBuilder) (obj)).toString(); +_L2: + return ((String) (obj)); + i++; + goto _L5 +_L4: + char c; + c = charsequence.charAt(i); + switch (c) + { + default: + ((StringBuilder) (obj)).append(c); + break; + + case 40: // '(' + case 41: // ')' + case 42: // '*' + case 43: // '+' + case 46: // '.' + case 63: // '?' + case 91: // '[' + case 92: // '\\' + case 93: // ']' + case 94: // '^' + case 123: // '{' + case 124: // '|' + case 125: // '}' + break MISSING_BLOCK_LABEL_255; + } +_L7: + i++; + goto _L6 + ((StringBuilder) (obj)).append("\\").append(c); + goto _L7 + } + + public static StringBuilder getConnectionMessage(Context context, boolean flag, ServerProfile serverprofile) + { + StringBuilder stringbuilder = new StringBuilder(); + int i; + if (flag) + { + i = 0x7f0a004c; + } else + { + i = 0x7f0a004b; + } + stringbuilder.append(context.getString(i, new Object[] { + serverprofile.getAddress() + })); + stringbuilder.append(":"); + if (serverprofile.usesSSL()) + { + stringbuilder.append("+"); + } + stringbuilder.append(serverprofile.getPort()); + return stringbuilder; + } + + public static Crypt getCrypt(Context context) + { + if (context instanceof IRCApp) + { + return ((IRCApp)context).getCrypt(); + } + if (context instanceof Activity) + { + return ((IRCApp)((Activity)context).getApplication()).getCrypt(); + } else + { + throw new IllegalArgumentException(); + } + } + + public static CharSequence getDay(int i, boolean flag) + { + switch (i) + { + default: + return null; + + case 1: // '\001' + if (flag) + { + return "Sun"; + } else + { + return "Sunday"; + } + + case 2: // '\002' + if (flag) + { + return "Mon"; + } else + { + return "Monday"; + } + + case 3: // '\003' + if (flag) + { + return "Tue"; + } else + { + return "Tuesday"; + } + + case 4: // '\004' + if (flag) + { + return "Wed"; + } else + { + return "Wednesday"; + } + + case 5: // '\005' + if (flag) + { + return "Thu"; + } else + { + return "Thursday"; + } + + case 6: // '\006' + if (flag) + { + return "Fri"; + } else + { + return "Friday"; + } + + case 7: // '\007' + break; + } + if (flag) + { + return "Sat"; + } else + { + return "Saturday"; + } + } + + public static String getDefaultServerProfileValue(int i, Context context) + { + Object obj; + Object obj1; + int j; + obj1 = getPrefs(context); + int k = ((SharedPreferences) (obj1)).getInt(context.getString(0x7f0a002e), -1); + j = k; + if (k <= 0) + { + j = 4096; + } + obj = null; + i; + JVM INSTR tableswitch 2131361793 2131361798: default 76 + // 2131361793 115 + // 2131361794 133 + // 2131361795 151 + // 2131361796 187 + // 2131361797 169 + // 2131361798 205; + goto _L1 _L2 _L3 _L4 _L5 _L6 _L7 +_L1: + if (obj == null) goto _L9; else goto _L8 +_L8: + obj1 = obj; + if (!TextUtils.isEmpty(((CharSequence) (obj)))) goto _L10; else goto _L9 +_L9: + obj1 = (new StringBuilder(String.valueOf(context.getString(i)))).append(j).toString(); +_L10: + return ((String) (obj1)); +_L2: + obj = ((SharedPreferences) (obj1)).getString(context.getString(0x7f0a000a), null); + goto _L1 +_L3: + obj = ((SharedPreferences) (obj1)).getString(context.getString(0x7f0a000b), null); + goto _L1 +_L4: + obj = ((SharedPreferences) (obj1)).getString(context.getString(0x7f0a000c), null); + goto _L1 +_L6: + obj = ((SharedPreferences) (obj1)).getString(context.getString(0x7f0a000d), null); + goto _L1 +_L5: + obj = ((SharedPreferences) (obj1)).getString(context.getString(0x7f0a000e), null); + goto _L1 +_L7: + return ((SharedPreferences) (obj1)).getString(context.getString(0x7f0a000f), context.getString(i)); + } + + public static void getHelpText(Activity activity, StringBuilder stringbuilder) + { + stringbuilder.append(activity.getString(0x7f0a01d9)); + if (IRCApp.LEGACY_VERSION) + { + stringbuilder.append(activity.getString(0x7f0a01db)); + } else + { + stringbuilder.append(activity.getString(0x7f0a01da)); + } + stringbuilder.append(activity.getString(0x7f0a01dc)); + } + + public static IRCDb getIRCDb(Context context) + { + if (context instanceof IRCApp) + { + return ((IRCApp)context).getDb(); + } + if (context instanceof Activity) + { + return ((IRCApp)((Activity)context).getApplication()).getDb(); + } + if (context instanceof IRCService) + { + return ((IRCApp)((IRCService)context).getApplication()).getDb(); + } else + { + throw new IllegalArgumentException(); + } + } + + public static CharSequence getMonth(int i, boolean flag) + { + switch (i) + { + default: + return null; + + case 0: // '\0' + if (flag) + { + return "Jan"; + } else + { + return "January"; + } + + case 1: // '\001' + if (flag) + { + return "Feb"; + } else + { + return "February"; + } + + case 2: // '\002' + if (flag) + { + return "Mar"; + } else + { + return "March"; + } + + case 3: // '\003' + if (flag) + { + return "Apr"; + } else + { + return "April"; + } + + case 4: // '\004' + return "May"; + + case 5: // '\005' + if (flag) + { + return "Jun"; + } else + { + return "June"; + } + + case 6: // '\006' + if (flag) + { + return "Jul"; + } else + { + return "July"; + } + + case 7: // '\007' + if (flag) + { + return "Aug"; + } else + { + return "August"; + } + + case 8: // '\b' + if (flag) + { + return "Sept"; + } else + { + return "September"; + } + + case 9: // '\t' + if (flag) + { + return "Oct"; + } else + { + return "October"; + } + + case 10: // '\n' + if (flag) + { + return "Nov"; + } else + { + return "November"; + } + + case 11: // '\013' + break; + } + if (flag) + { + return "Dec"; + } else + { + return "December"; + } + } + + public static SpannableStringBuilder getPmStart(Context context, String s, boolean flag) + { + SpannableStringBuilder spannablestringbuilder = new SpannableStringBuilder(); + if (flag) + { + getStyledTimeStamp(spannablestringbuilder, ServerConnection.getTime()); + } + spannablestringbuilder.append(context.getString(0x7f0a004a, new Object[] { + s + })); + int i = 0; + if (flag) + { + i = 0 + (ServerConnection.sTimeLength + 3); + } + addColourAndBold(false, spannablestringbuilder, Colours.getInstance().getColourForEvent(0x7f0b0031), i, spannablestringbuilder.length()); + return spannablestringbuilder; + } + + public static int getPositionForSection(int i, String as[], List list, SparseIntArray sparseintarray) + { + int j = i; + if (i >= as.length) + { + j = as.length - 1; + } + j = as[j].charAt(0); + i = sparseintarray.get(j, -1); + if (i != -1) + { + return i; + } + int k = list.size(); + i = 0; + do + { + if (i >= k) + { + return 0; + } + if (Character.toUpperCase(((String)list.get(i)).charAt(0)) == j) + { + sparseintarray.put(j, i); + return i; + } + i++; + } while (true); + } + + public static SharedPreferences getPrefs(Context context) + { + if (context instanceof Activity) + { + return ((IRCApp)((Activity)context).getApplication()).getPrefs(); + } + if (context instanceof Service) + { + return ((IRCApp)((Service)context).getApplication()).getPrefs(); + } else + { + throw new IllegalStateException(); + } + } + + public static int getSectionForPosition(int i, List list, String as[]) + { + int j; + j = i; + if (i > list.size()) + { + j = list.size() - 1; + } + list = Character.toString(Character.toUpperCase(((String)list.get(j)).charAt(0))); + j = Arrays.binarySearch(as, list); + if (j < 0) goto _L2; else goto _L1 +_L1: + return j; +_L2: + char c = list.charAt(0); + i = 0; + do + { +label0: + { + if (i < as.length) + { + break label0; + } + if (j < 0) + { + return 0; + } + } + if (true) + { + continue; + } + if (c == as[i].charAt(0)) + { + return i; + } + i++; + } while (true); + if (true) goto _L1; else goto _L3 +_L3: + } + + public static String[] getSectionsFromItems(List list) + { + int k = list.size(); + if (k != 0) goto _L2; else goto _L1 +_L1: + list = new String[0]; +_L4: + return list; +_L2: + Object obj; + int i; + char c3; + char c = Character.toUpperCase(((String)list.get(0)).charAt(0)); + obj = new StringBuilder(); + ((StringBuilder) (obj)).append(c); + i = 1; + c3 = c; +_L6: + String s; + int j; + if (i < k) + { + break MISSING_BLOCK_LABEL_116; + } + s = ((StringBuilder) (obj)).toString(); + j = s.length(); + obj = new String[j]; + i = 0; +_L5: + list = ((List) (obj)); + if (i >= j) goto _L4; else goto _L3 +_L3: + obj[i] = Character.toString(s.charAt(i)); + i++; + goto _L5 + goto _L4 + char c1 = Character.toUpperCase(((String)list.get(i)).charAt(0)); + char c2 = c3; + if (c1 != c3) + { + ((StringBuilder) (obj)).append(c1); + c2 = c1; + } + i++; + c3 = c2; + goto _L6 + } + + public static SpannableStringBuilder getStyledTimeStamp(SpannableStringBuilder spannablestringbuilder, CharSequence charsequence) + { + synchronized (sLock) + { + sb.setLength(0); + sb.append("[").append(charsequence).append("] "); + spannablestringbuilder.append(sb); + int i = spannablestringbuilder.length(); + int j = Colours.getInstance().getColourForEvent(0x7f0b0030); + spannablestringbuilder.setSpan(new ForegroundColorSpan(j), 0, 1, 33); + spannablestringbuilder.setSpan(new ForegroundColorSpan(j), i - 2, i, 33); + } + return spannablestringbuilder; + spannablestringbuilder; + obj; + JVM INSTR monitorexit ; + throw spannablestringbuilder; + } + + public static Dialog getWhatsNewDialog(Activity activity) + { + android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(activity); + builder.setTitle(activity.getString(0x7f0a01ac, new Object[] { + "1.4.3.2" + })); + builder.setIcon(0x108009b); + activity = activity.getLayoutInflater().inflate(0x7f030019, null); + TextView textview = (TextView)activity.findViewById(0x7f08005f); + textview.setTextSize(20F); + textview.setText(0x7f0a007d); + builder.setView(activity); + builder.setNeutralButton(0x7f0a01d0, new android.content.DialogInterface.OnClickListener() { + + public void onClick(DialogInterface dialoginterface, int i) + { + dialoginterface.dismiss(); + } + + }); + return builder.create(); + } + + public static void handleBanHammer(String s, CommandParser.Helper helper) + { + s = s.trim(); + boolean flag; + if (s.indexOf(',') == -1 && s.indexOf(' ') == -1) + { + flag = false; + } else + { + flag = true; + } + if (flag) + { + helper.handleOpAction(s, '+', 'b'); + return; + } else + { + helper.writeToServer((new StringBuilder("MODE ")).append(helper.getCurrentSession().getSessionName()).append(" +b ").append(s).append("\r\n").toString()); + return; + } + } + + public static void handleKicking(String s, CommandParser.Helper helper) + { + Object obj = s.trim(); + int i; + if (((String) (obj)).indexOf(',') == -1 && ((String) (obj)).indexOf(' ') == -1) + { + i = 0; + } else + { + i = 1; + } + s = helper.getCurrentSession().getSessionName(); + if (i != 0) + { + StringBuilder stringbuilder = new StringBuilder(); + obj = ((String) (obj)).split(","); + int j = obj.length; + stringbuilder.append("KICK ").append(s).append(" ").append("\r\n"); + int k = stringbuilder.length() - 2; + i = 0; + do + { + if (i >= j) + { + return; + } + stringbuilder.insert(k, obj[i].trim()); + helper.writeToServer(stringbuilder.toString()); + stringbuilder.delete(k, stringbuilder.length() - 2); + i++; + } while (true); + } else + { + helper.writeToServer((new StringBuilder("KICK ")).append(s).append(" ").append(((String) (obj))).append("\r\n").toString()); + return; + } + } + + public static void handleQuit(final String reason, final IRCService service, final int id) + { + (new Thread() { + + private final int val$id; + private final String val$reason; + private final IRCService val$service; + + public void run() + { + String s = IRCService.sPreferences.quitReason; + if (reason != null) + { + IRCService.sPreferences.quitReason = reason; + } + service.stopConnection(id, 1); + if (reason != null) + { + IRCService.sPreferences.quitReason = s; + } + } + + + { + reason = s; + service = ircservice; + id = i; + super(); + } + }).start(); + } + + public static boolean isBitSet(int i, int j) + { + return (i & j) == j; + } + + public static boolean isChannelPrefix(char c) + { + switch (c) + { + default: + return false; + + case 33: // '!' + case 35: // '#' + case 38: // '&' + case 43: // '+' + case 126: // '~' + return true; + } + } + + public static boolean isStatusPrefix(net.andchat.donate.Backend.Sessions.SessionManager.StatusMap statusmap, char c) + { + return statusmap.isPrefix(c); + } + + public static SpannableStringBuilder makeBold(boolean flag, SpannableStringBuilder spannablestringbuilder, int i, int j) + { + int l = i; + int k = j; + if (flag) + { + l = i + (ServerConnection.sTimeLength + 3); + k = j + (ServerConnection.sTimeLength + 3); + } + spannablestringbuilder.setSpan(new StyleSpan(1), l, k, 33); + return spannablestringbuilder; + } + + public static int parseInt(String s, int i) + { + int j; + try + { + j = Integer.parseInt(s); + } + // Misplaced declaration of an exception variable + catch (String s) + { + return i; + } + return j; + } + + public static int parseInt(String s, int i, SharedPreferences sharedpreferences, String s1, String s2) + { + int j; + try + { + j = Integer.parseInt(s); + } + catch (NumberFormatException numberformatexception) + { + Log.e(s2, (new StringBuilder("Couldn't parse ")).append(s).append(" as int. Using ").append(i).append(" instead.").toString()); + sharedpreferences.edit().putString(s1, String.valueOf(i)).commit(); + return i; + } + return j; + } + + public static float pixelsToSp(Context context, float f) + { + return f / context.getResources().getDisplayMetrics().scaledDensity; + } + + public static String[] split(CharSequence charsequence) + { + return split(charsequence, -1); + } + + public static String[] split(CharSequence charsequence, int i) + { + Pattern pattern = sSplitter; + pattern; + JVM INSTR monitorenter ; + if (i > 0) + { + break MISSING_BLOCK_LABEL_22; + } + charsequence = sSplitter.split(charsequence); +_L1: + pattern; + JVM INSTR monitorexit ; + return charsequence; + charsequence = sSplitter.split(charsequence, i); + goto _L1 + charsequence; + pattern; + JVM INSTR monitorexit ; + throw charsequence; + } + + private static String stripCommas(String s) + { + int i = s.indexOf(','); + if (i == -1) + { + return s; + } + s = new StringBuilder(s); + int j = s.length(); + do + { + if (i >= j) + { + return s.toString(); + } + int k = j; + if (s.charAt(i) == ',') + { + s.deleteCharAt(i); + k = j - 1; + } + i++; + j = k; + } while (true); + } + +} diff --git a/app/src/main/java/net/andchat/donate/View/ConnectView$1.java b/app/src/main/java/net/andchat/donate/View/ConnectView$1.java new file mode 100644 index 0000000..959c87d --- /dev/null +++ b/app/src/main/java/net/andchat/donate/View/ConnectView$1.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.View; + +import android.view.MenuItem; + +// Referenced classes of package net.andchat.donate.View: +// ConnectView + +class this._cls0 + implements android.widget.nuItemClickListener +{ + + final ConnectView this$0; + + public boolean onMenuItemClick(MenuItem menuitem) + { + return ((nnectViewCallback)getContext()).onMenuItemClick(menuitem); + } + + nnectViewCallback() + { + this$0 = ConnectView.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/View/ConnectView$ConnectViewCallback.java b/app/src/main/java/net/andchat/donate/View/ConnectView$ConnectViewCallback.java new file mode 100644 index 0000000..50600ad --- /dev/null +++ b/app/src/main/java/net/andchat/donate/View/ConnectView$ConnectViewCallback.java @@ -0,0 +1,18 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.View; + +import android.view.MenuItem; + +// Referenced classes of package net.andchat.donate.View: +// ConnectView + +public static interface +{ + + public abstract boolean onMenuItemClick(MenuItem menuitem); + + public abstract void onProviderClicked(); +} diff --git a/app/src/main/java/net/andchat/donate/View/ConnectView.java b/app/src/main/java/net/andchat/donate/View/ConnectView.java new file mode 100644 index 0000000..7232d53 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/View/ConnectView.java @@ -0,0 +1,134 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.View; + +import android.content.Context; +import android.content.res.Resources; +import android.graphics.Rect; +import android.util.AttributeSet; +import android.util.DisplayMetrics; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.widget.ImageView; +import android.widget.PopupMenu; +import android.widget.Toast; + +public class ConnectView extends ImageView + implements android.view.View.OnClickListener, android.view.View.OnLongClickListener +{ + public static interface ConnectViewCallback + { + + public abstract boolean onMenuItemClick(MenuItem menuitem); + + public abstract void onProviderClicked(); + } + + + private String mDescription; + private PopupMenu mPopupMenu; + private boolean mShowMenu; + + public ConnectView(Context context) + { + this(context, null); + } + + public ConnectView(Context context, AttributeSet attributeset) + { + this(context, attributeset, 0x10102d8); + } + + public ConnectView(Context context, AttributeSet attributeset, int i) + { + super(context, attributeset, i); + init(); + } + + private void init() + { + android.app.ActionBar.LayoutParams layoutparams = new android.app.ActionBar.LayoutParams(-2, -1); + layoutparams.gravity = 17; + setLayoutParams(layoutparams); + setOnClickListener(this); + setOnLongClickListener(this); + } + + public void onClick(View view) + { + if (!mShowMenu) + { + ((ConnectViewCallback)getContext()).onProviderClicked(); + return; + } else + { + view = new PopupMenu(getContext(), view); + view.getMenuInflater().inflate(0x7f0f0001, view.getMenu()); + view.setOnMenuItemClickListener(new android.widget.PopupMenu.OnMenuItemClickListener() { + + final ConnectView this$0; + + public boolean onMenuItemClick(MenuItem menuitem) + { + return ((ConnectViewCallback)getContext()).onMenuItemClick(menuitem); + } + + + { + this$0 = ConnectView.this; + super(); + } + }); + view.show(); + mPopupMenu = view; + return; + } + } + + protected void onDetachedFromWindow() + { + super.onDetachedFromWindow(); + if (mPopupMenu != null) + { + mPopupMenu.dismiss(); + mPopupMenu = null; + } + } + + public boolean onLongClick(View view) + { + view = new int[2]; + Rect rect = new Rect(); + getLocationOnScreen(view); + getWindowVisibleDisplayFrame(rect); + Object obj = getContext(); + int i = getWidth(); + int j = getHeight(); + int k = view[1]; + int l = j / 2; + int i1 = ((Context) (obj)).getResources().getDisplayMetrics().widthPixels; + obj = Toast.makeText(((Context) (obj)), mDescription, 0); + if (k + l < rect.height()) + { + ((Toast) (obj)).setGravity(0x800035, i1 - view[0] - i / 2, j); + } else + { + ((Toast) (obj)).setGravity(81, 0, j); + } + ((Toast) (obj)).show(); + return true; + } + + public void setDescription(int i) + { + mDescription = getResources().getString(i); + } + + public void setShowMenu(boolean flag) + { + mShowMenu = flag; + } +} diff --git a/app/src/main/java/net/andchat/donate/View/DelegatingRelativeLayout$EnlargedViewSpec.java b/app/src/main/java/net/andchat/donate/View/DelegatingRelativeLayout$EnlargedViewSpec.java new file mode 100644 index 0000000..f66f3d5 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/View/DelegatingRelativeLayout$EnlargedViewSpec.java @@ -0,0 +1,26 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.View; + + +// Referenced classes of package net.andchat.donate.View: +// DelegatingRelativeLayout + +public static final class bottom +{ + + int bottom; + int left; + int right; + int top; + + public (int i, int j, int k, int l) + { + left = i; + top = j; + right = k; + bottom = l; + } +} diff --git a/app/src/main/java/net/andchat/donate/View/DelegatingRelativeLayout.java b/app/src/main/java/net/andchat/donate/View/DelegatingRelativeLayout.java new file mode 100644 index 0000000..5950109 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/View/DelegatingRelativeLayout.java @@ -0,0 +1,153 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.View; + +import android.content.Context; +import android.content.res.Resources; +import android.graphics.Canvas; +import android.graphics.Rect; +import android.util.AttributeSet; +import android.util.TypedValue; +import android.view.TouchDelegate; +import android.view.View; +import android.widget.RelativeLayout; + +public class DelegatingRelativeLayout extends RelativeLayout +{ + public static final class EnlargedViewSpec + { + + int bottom; + int left; + int right; + int top; + + public EnlargedViewSpec(int i, int j, int k, int l) + { + left = i; + top = j; + right = k; + bottom = l; + } + } + + + private View mEnlargedView; + private Rect mExtendedBounds; + private EnlargedViewSpec mSpec; + + public DelegatingRelativeLayout(Context context) + { + super(context); + } + + public DelegatingRelativeLayout(Context context, AttributeSet attributeset) + { + super(context, attributeset); + } + + public DelegatingRelativeLayout(Context context, AttributeSet attributeset, int i) + { + super(context, attributeset, i); + } + + private void readSpec() + { + EnlargedViewSpec enlargedviewspec; + android.util.DisplayMetrics displaymetrics; + Rect rect; + enlargedviewspec = mSpec; + displaymetrics = getContext().getResources().getDisplayMetrics(); + rect = new Rect(); + mEnlargedView.getHitRect(rect); + enlargedviewspec.left; + JVM INSTR tableswitch -2 -2: default 56 + // -2 246; + goto _L1 _L2 +_L1: + enlargedviewspec.top; + JVM INSTR tableswitch -2 -2: default 80 + // -2 257; + goto _L3 _L4 +_L3: + enlargedviewspec.right; + JVM INSTR tableswitch -2 -2: default 104 + // -2 268; + goto _L5 _L6 +_L5: + enlargedviewspec.bottom; + JVM INSTR tableswitch -2 -2: default 128 + // -2 279; + goto _L7 _L8 +_L7: + if (enlargedviewspec.left > 0) + { + rect.left = (int)((float)rect.left + TypedValue.applyDimension(1, enlargedviewspec.left, displaymetrics)); + } else + { + rect.left = 0; + } + if (enlargedviewspec.top > 0) + { + rect.top = (int)((float)rect.top + TypedValue.applyDimension(1, enlargedviewspec.top, displaymetrics)); + } else + { + rect.top = 0; + } + if (enlargedviewspec.right > 0) + { + rect.right = (int)((float)rect.right + TypedValue.applyDimension(1, enlargedviewspec.right, displaymetrics)); + } else + { + rect.right = 0; + } + if (enlargedviewspec.bottom > 0) + { + rect.bottom = (int)((float)rect.bottom + TypedValue.applyDimension(1, enlargedviewspec.bottom, displaymetrics)); + } else + { + rect.bottom = 0; + } + mExtendedBounds = rect; + return; +_L2: + enlargedviewspec.left = getLeft(); + goto _L1 +_L4: + enlargedviewspec.top = getTop(); + goto _L3 +_L6: + enlargedviewspec.right = getRight(); + goto _L5 +_L8: + enlargedviewspec.bottom = getHeight(); + goto _L7 + } + + protected void dispatchDraw(Canvas canvas) + { + super.dispatchDraw(canvas); + } + + protected void onLayout(boolean flag, int i, int j, int k, int l) + { + super.onLayout(flag, i, j, k, l); + if (isInEditMode()) + { + return; + } else + { + readSpec(); + setTouchDelegate(new TouchDelegate(mExtendedBounds, mEnlargedView)); + return; + } + } + + public void setEnlargedView(View view, EnlargedViewSpec enlargedviewspec) + { + mEnlargedView = view; + mSpec = enlargedviewspec; + } +} diff --git a/app/src/main/java/net/andchat/donate/View/InterceptingEditText$PreImeListener.java b/app/src/main/java/net/andchat/donate/View/InterceptingEditText$PreImeListener.java new file mode 100644 index 0000000..8bfe7d1 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/View/InterceptingEditText$PreImeListener.java @@ -0,0 +1,16 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.View; + +import android.view.KeyEvent; + +// Referenced classes of package net.andchat.donate.View: +// InterceptingEditText + +public static interface A +{ + + public abstract boolean onPreImeKey(int i, KeyEvent keyevent); +} diff --git a/app/src/main/java/net/andchat/donate/View/InterceptingEditText.java b/app/src/main/java/net/andchat/donate/View/InterceptingEditText.java new file mode 100644 index 0000000..f3002f9 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/View/InterceptingEditText.java @@ -0,0 +1,53 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.View; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.KeyEvent; +import android.widget.EditText; + +public class InterceptingEditText extends EditText +{ + public static interface PreImeListener + { + + public abstract boolean onPreImeKey(int i, KeyEvent keyevent); + } + + + private PreImeListener mPreImeKeyListener; + + public InterceptingEditText(Context context) + { + super(context); + } + + public InterceptingEditText(Context context, AttributeSet attributeset) + { + super(context, attributeset); + } + + public InterceptingEditText(Context context, AttributeSet attributeset, int i) + { + super(context, attributeset, i); + } + + public boolean onKeyPreIme(int i, KeyEvent keyevent) + { + if (mPreImeKeyListener != null) + { + return mPreImeKeyListener.onPreImeKey(i, keyevent) || super.onKeyPreIme(i, keyevent); + } else + { + return super.onKeyPreIme(i, keyevent); + } + } + + public void setCallback(PreImeListener preimelistener) + { + mPreImeKeyListener = preimelistener; + } +} diff --git a/app/src/main/java/net/andchat/donate/View/InterceptingLinearLayout.java b/app/src/main/java/net/andchat/donate/View/InterceptingLinearLayout.java new file mode 100644 index 0000000..2d15e8a --- /dev/null +++ b/app/src/main/java/net/andchat/donate/View/InterceptingLinearLayout.java @@ -0,0 +1,102 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.View; + +import android.content.Context; +import android.graphics.Rect; +import android.util.AttributeSet; +import android.view.GestureDetector; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewConfiguration; +import android.widget.LinearLayout; + +public class InterceptingLinearLayout extends LinearLayout +{ + + private GestureDetector mDetector; + private View mInterestingView; + private float mLastMotionX; + private float mLastMotionY; + private final Rect mRect; + private int mSlop; + private boolean mWantTouch; + + public InterceptingLinearLayout(Context context) + { + super(context); + mRect = new Rect(); + getSlop(context); + } + + public InterceptingLinearLayout(Context context, AttributeSet attributeset) + { + super(context, attributeset); + mRect = new Rect(); + getSlop(context); + } + + private void getSlop(Context context) + { + mSlop = ViewConfiguration.get(context).getScaledTouchSlop(); + } + + public boolean onInterceptTouchEvent(MotionEvent motionevent) + { + motionevent.getAction(); + JVM INSTR tableswitch 0 2: default 32 + // 0 38 + // 1 32 + // 2 110; + goto _L1 _L2 _L1 _L3 +_L1: + return super.onInterceptTouchEvent(motionevent); +_L2: + float f = motionevent.getX(); + float f2 = motionevent.getY(); + Rect rect = mRect; + mInterestingView.getHitRect(rect); + if (!rect.contains((int)f, (int)f2)) + { + mWantTouch = false; + } else + { + mLastMotionX = f; + mLastMotionY = f2; + mDetector.onTouchEvent(motionevent); + mWantTouch = true; + } + continue; /* Loop/switch isn't completed */ +_L3: + if (mWantTouch) + { + float f1 = motionevent.getX(); + float f3 = Math.abs(f1 - mLastMotionX); + float f4 = Math.abs(motionevent.getY() - mLastMotionY); + if (f3 > (float)mSlop && f3 > f4) + { + mLastMotionX = f1; + return true; + } + } + if (true) goto _L1; else goto _L4 +_L4: + } + + public boolean onTouchEvent(MotionEvent motionevent) + { + if (mDetector != null && mWantTouch) + { + mDetector.onTouchEvent(motionevent); + } + return super.onTouchEvent(motionevent); + } + + public void setViewAndDetector(View view, GestureDetector gesturedetector) + { + mInterestingView = view; + mDetector = gesturedetector; + } +} diff --git a/app/src/main/java/net/andchat/donate/View/MultiChoicePreference$1.java b/app/src/main/java/net/andchat/donate/View/MultiChoicePreference$1.java new file mode 100644 index 0000000..060d1bf --- /dev/null +++ b/app/src/main/java/net/andchat/donate/View/MultiChoicePreference$1.java @@ -0,0 +1,28 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.View; + +import android.content.DialogInterface; + +// Referenced classes of package net.andchat.donate.View: +// MultiChoicePreference + +class this._cls0 + implements android.content.hoiceClickListener +{ + + final MultiChoicePreference this$0; + + public void onClick(DialogInterface dialoginterface, int i, boolean flag) + { + MultiChoicePreference.access$0(MultiChoicePreference.this)[i] = flag; + } + + ckListener() + { + this$0 = MultiChoicePreference.this; + super(); + } +} diff --git a/app/src/main/java/net/andchat/donate/View/MultiChoicePreference.java b/app/src/main/java/net/andchat/donate/View/MultiChoicePreference.java new file mode 100644 index 0000000..2767114 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/View/MultiChoicePreference.java @@ -0,0 +1,151 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.View; + +import android.content.Context; +import android.content.DialogInterface; +import android.preference.ListPreference; +import android.util.AttributeSet; + +public class MultiChoicePreference extends ListPreference +{ + + private boolean mClickedDialogEntryIndices[]; + + public MultiChoicePreference(Context context, AttributeSet attributeset) + { + super(context, attributeset); + mClickedDialogEntryIndices = new boolean[getEntries().length]; + } + + public static String[] parseStoredValue(CharSequence charsequence) + { + charsequence = charsequence.toString(); + if (charsequence.length() == 0) + { + return null; + } else + { + return charsequence.split("###"); + } + } + + private void restoreCheckedEntries() + { + CharSequence acharsequence[]; + String as[]; + acharsequence = getEntryValues(); + as = parseStoredValue(getValue()); + if (as == null) goto _L2; else goto _L1 +_L1: + int i; + int k; + int l; + k = as.length; + l = acharsequence.length; + i = 0; +_L5: + if (i < k) goto _L3; else goto _L2 +_L2: + return; +_L3: + String s = as[i].trim(); + int j = 0; + do + { + if (j < l) + { +label0: + { + if (!acharsequence[j].equals(s)) + { + break label0; + } + mClickedDialogEntryIndices[j] = true; + } + } + i++; + if (true) + { + continue; + } + j++; + } while (true); + if (true) goto _L5; else goto _L4 +_L4: + } + + protected void onDialogClosed(boolean flag) + { + Object obj = getEntryValues(); + if (!flag || obj == null) goto _L2; else goto _L1 +_L1: + Object obj1; + int i; + int j; + obj1 = new StringBuilder(); + j = obj.length; + i = 0; +_L6: + if (i < j) goto _L4; else goto _L3 +_L3: + if (callChangeListener(obj1)) + { + obj1 = ((StringBuilder) (obj1)).toString(); + obj = obj1; + if (((String) (obj1)).length() > 0) + { + obj = ((String) (obj1)).substring(0, ((String) (obj1)).length() - "###".length()); + } + setValue(((String) (obj))); + } +_L2: + return; +_L4: + if (mClickedDialogEntryIndices[i]) + { + ((StringBuilder) (obj1)).append(obj[i]).append("###"); + } + i++; + if (true) goto _L6; else goto _L5 +_L5: + } + + protected void onPrepareDialogBuilder(android.app.AlertDialog.Builder builder) + { + CharSequence acharsequence[] = getEntries(); + CharSequence acharsequence1[] = getEntryValues(); + if (acharsequence == null || acharsequence1 == null || acharsequence.length != acharsequence1.length) + { + throw new IllegalStateException("ListPreference requires an entries array and an entryValues array which are both the same length"); + } else + { + restoreCheckedEntries(); + builder.setMultiChoiceItems(acharsequence, mClickedDialogEntryIndices, new android.content.DialogInterface.OnMultiChoiceClickListener() { + + final MultiChoicePreference this$0; + + public void onClick(DialogInterface dialoginterface, int i, boolean flag) + { + mClickedDialogEntryIndices[i] = flag; + } + + + { + this$0 = MultiChoicePreference.this; + super(); + } + }); + return; + } + } + + public void setEntries(CharSequence acharsequence[]) + { + super.setEntries(acharsequence); + mClickedDialogEntryIndices = new boolean[acharsequence.length]; + } + +} diff --git a/app/src/main/java/net/andchat/donate/View/MyScrollView.java b/app/src/main/java/net/andchat/donate/View/MyScrollView.java new file mode 100644 index 0000000..664ad3b --- /dev/null +++ b/app/src/main/java/net/andchat/donate/View/MyScrollView.java @@ -0,0 +1,31 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.View; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.ScrollView; + +public final class MyScrollView extends ScrollView +{ + + public MyScrollView(Context context, AttributeSet attributeset) + { + super(context, attributeset); + } + + protected void onSizeChanged(int i, int j, int k, int l) + { + super.onSizeChanged(i, j, k, l); + if (k == 0) + { + return; + } else + { + scrollTo(0, getScrollY() + (l - j)); + return; + } + } +} diff --git a/app/src/main/java/net/andchat/donate/View/NoKeyboardEditText.java b/app/src/main/java/net/andchat/donate/View/NoKeyboardEditText.java new file mode 100644 index 0000000..78ca412 --- /dev/null +++ b/app/src/main/java/net/andchat/donate/View/NoKeyboardEditText.java @@ -0,0 +1,33 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.View; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.EditText; + +public class NoKeyboardEditText extends EditText +{ + + public NoKeyboardEditText(Context context) + { + super(context); + } + + public NoKeyboardEditText(Context context, AttributeSet attributeset) + { + super(context, attributeset); + } + + public NoKeyboardEditText(Context context, AttributeSet attributeset, int i) + { + super(context, attributeset, i); + } + + public boolean onCheckIsTextEditor() + { + return false; + } +} diff --git a/app/src/main/java/net/andchat/donate/View/TextStyleDialog.java b/app/src/main/java/net/andchat/donate/View/TextStyleDialog.java new file mode 100644 index 0000000..c22772f --- /dev/null +++ b/app/src/main/java/net/andchat/donate/View/TextStyleDialog.java @@ -0,0 +1,290 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.andchat.donate.View; + +import android.content.Context; +import android.content.SharedPreferences; +import android.content.res.Resources; +import android.graphics.Typeface; +import android.preference.DialogPreference; +import android.util.AttributeSet; +import android.view.View; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.EditText; +import android.widget.SeekBar; +import android.widget.Spinner; +import android.widget.TextView; +import net.andchat.donate.Misc.Utils; + +public class TextStyleDialog extends DialogPreference + implements android.widget.AdapterView.OnItemSelectedListener, android.widget.SeekBar.OnSeekBarChangeListener +{ + + private static final int KEYS[] = { + 0x7f0a002f, 0x7f0a0030, 0x7f0a0031, 0x7f0a0032 + }; + private static final int SPINNER_IDS[] = { + 0x7f08005b, 0x7f08005e, 0x7f080077, 0x7f080054 + }; + public static final Typeface TYPES[]; + private int mChannelListSize; + private TextView mChannelListSizePreview; + private Object mFormatArgs[]; + private boolean mHaveExtraRows; + private int mInputSize; + private TextView mInputSizePreview; + private int mMsgSize; + private TextView mMsgSizePreview; + private String mSampleMsg[]; + private final Spinner mSpinners[]; + private int mUserlistSize; + private TextView mUserlistSizePreview; + + public TextStyleDialog(Context context, AttributeSet attributeset) + { + super(context, attributeset); + mSpinners = new Spinner[4]; + } + + public TextStyleDialog(Context context, AttributeSet attributeset, int i) + { + super(context, attributeset, i); + mSpinners = new Spinner[4]; + } + + private int corrected(int i) + { + return i - 10; + } + + protected View onCreateDialogView() + { + View view = super.onCreateDialogView(); + Object obj = getContext(); + SharedPreferences sharedpreferences = Utils.getPrefs(((Context) (obj))); + mSampleMsg = new String[4]; + String as[] = mSampleMsg; + as[0] = ((Context) (obj)).getString(0x7f0a01a2); + as[1] = ((Context) (obj)).getString(0x7f0a01a3); + as[2] = ((Context) (obj)).getString(0x7f0a01a4); + as[3] = ((Context) (obj)).getString(0x7f0a01a5); + mFormatArgs = new Object[1]; + mMsgSizePreview = (TextView)view.findViewById(0x7f080059); + SeekBar seekbar = (SeekBar)view.findViewById(0x7f08005a); + mInputSizePreview = (EditText)view.findViewById(0x7f08005c); + SeekBar seekbar1 = (SeekBar)view.findViewById(0x7f08005d); + mUserlistSizePreview = (TextView)view.findViewById(0x7f080075); + SeekBar seekbar2 = (SeekBar)view.findViewById(0x7f080076); + mChannelListSizePreview = (TextView)view.findViewById(0x7f080052); + SeekBar seekbar3 = (SeekBar)view.findViewById(0x7f080053); + int i; + int j; + int k; + int l; + boolean flag; + if (mUserlistSizePreview != null) + { + flag = true; + } else + { + flag = false; + } + i = (int)Utils.pixelsToSp(((Context) (obj)), mInputSizePreview.getTextSize()); + i = Utils.parseInt(sharedpreferences.getString(((Context) (obj)).getString(0x7f0a0014), Integer.toString(i)), i); + j = Utils.parseInt(sharedpreferences.getString(((Context) (obj)).getString(0x7f0a0013), "13"), 13); + k = Utils.parseInt(sharedpreferences.getString(((Context) (obj)).getString(0x7f0a0015), "18"), 18); + l = Utils.parseInt(sharedpreferences.getString(((Context) (obj)).getString(0x7f0a0016), "18"), 18); + seekbar1.setOnSeekBarChangeListener(this); + seekbar.setOnSeekBarChangeListener(this); + if (flag) + { + seekbar2.setOnSeekBarChangeListener(this); + seekbar3.setOnSeekBarChangeListener(this); + } + seekbar1.setProgress(corrected(i)); + seekbar.setProgress(corrected(j)); + if (flag) + { + seekbar2.setProgress(corrected(k)); + seekbar3.setProgress(corrected(l)); + } + if (corrected(i) == 0) + { + onProgressChanged(seekbar1, 0, false); + } + if (corrected(j) == 0) + { + onProgressChanged(seekbar, 0, false); + } + if (flag) + { + if (corrected(k) == 0) + { + onProgressChanged(seekbar2, 0, false); + } + if (corrected(l) == 0) + { + onProgressChanged(seekbar2, 0, false); + } + } + mHaveExtraRows = flag; + obj = new ArrayAdapter(((Context) (obj)), 0x1090008, ((Context) (obj)).getResources().getStringArray(0x7f0b0009)); + ((ArrayAdapter) (obj)).setDropDownViewResource(0x1090009); + i = 0; + do + { + if (i >= SPINNER_IDS.length) + { + return view; + } + Spinner spinner = (Spinner)view.findViewById(SPINNER_IDS[i]); + if (spinner != null) + { + spinner.setAdapter(((android.widget.SpinnerAdapter) (obj))); + spinner.setOnItemSelectedListener(this); + mSpinners[i] = spinner; + spinner.setSelection(sharedpreferences.getInt(getContext().getString(KEYS[i]), 0)); + } + i++; + } while (true); + } + + protected void onDialogClosed(boolean flag) + { + super.onDialogClosed(flag); + if (!flag) goto _L2; else goto _L1 +_L1: + Context context; + android.content.SharedPreferences.Editor editor; + Spinner aspinner[]; + int i; + context = getContext(); + i = mMsgSize; + editor = getSharedPreferences().edit(); + editor.putString(context.getString(0x7f0a0013), Integer.toString(i)); + i = mInputSize; + editor.putString(context.getString(0x7f0a0014), Integer.toString(i)); + if (mHaveExtraRows) + { + i = mUserlistSize; + editor.putString(context.getString(0x7f0a0015), Integer.toString(i)); + i = mChannelListSize; + editor.putString(context.getString(0x7f0a0016), Integer.toString(i)); + } + aspinner = mSpinners; + i = 0; +_L6: + if (i < aspinner.length) goto _L4; else goto _L3 +_L3: + editor.commit(); +_L2: + return; +_L4: + Spinner spinner = aspinner[i]; + if (spinner != null) + { + int j = spinner.getSelectedItemPosition(); + if (j != -1) + { + editor.putInt(context.getString(KEYS[i]), j); + } + } + i++; + if (true) goto _L6; else goto _L5 +_L5: + } + + public void onItemSelected(AdapterView adapterview, View view, int i, long l) + { + switch (adapterview.getId()) + { + default: + return; + + case 2131230811: + mMsgSizePreview.setTypeface(TYPES[i]); + return; + + case 2131230814: + mInputSizePreview.setTypeface(TYPES[i]); + return; + + case 2131230839: + mUserlistSizePreview.setTypeface(TYPES[i]); + return; + + case 2131230804: + mChannelListSizePreview.setTypeface(TYPES[i]); + return; + } + } + + public void onNothingSelected(AdapterView adapterview) + { + } + + public void onProgressChanged(SeekBar seekbar, int i, boolean flag) + { + TextView textview; + Object obj; + i += 10; + textview = null; + obj = null; + seekbar.getId(); + JVM INSTR lookupswitch 4: default 56 + // 2131230803: 159 + // 2131230810: 96 + // 2131230813: 117 + // 2131230838: 138; + goto _L1 _L2 _L3 _L4 _L5 +_L1: + seekbar = obj; +_L7: + if (textview != null) + { + textview.setTextSize(2, i); + mFormatArgs[0] = Integer.valueOf(i); + textview.setText(String.format(seekbar, mFormatArgs)); + } + return; +_L3: + mMsgSize = i; + seekbar = mSampleMsg[0]; + textview = mMsgSizePreview; + continue; /* Loop/switch isn't completed */ +_L4: + mInputSize = i; + seekbar = mSampleMsg[1]; + textview = mInputSizePreview; + continue; /* Loop/switch isn't completed */ +_L5: + mUserlistSize = i; + seekbar = mSampleMsg[2]; + textview = mUserlistSizePreview; + continue; /* Loop/switch isn't completed */ +_L2: + mChannelListSize = i; + seekbar = mSampleMsg[3]; + textview = mChannelListSizePreview; + if (true) goto _L7; else goto _L6 +_L6: + } + + public void onStartTrackingTouch(SeekBar seekbar) + { + } + + public void onStopTrackingTouch(SeekBar seekbar) + { + } + + static + { + TYPES = (new Typeface[] { + Typeface.SANS_SERIF, Typeface.MONOSPACE, Typeface.SERIF + }); + } +} diff --git a/app/src/main/java/net/londatiga/android/ActionItem.java b/app/src/main/java/net/londatiga/android/ActionItem.java new file mode 100644 index 0000000..84bd299 --- /dev/null +++ b/app/src/main/java/net/londatiga/android/ActionItem.java @@ -0,0 +1,35 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.londatiga.android; + + +public class ActionItem +{ + + private int actionId; + private String title; + + public ActionItem() + { + this(-1, null); + } + + public ActionItem(int i, String s) + { + actionId = -1; + title = s; + actionId = i; + } + + public int getActionId() + { + return actionId; + } + + public String getTitle() + { + return title; + } +} diff --git a/app/src/main/java/net/londatiga/android/PopupWindows$1.java b/app/src/main/java/net/londatiga/android/PopupWindows$1.java new file mode 100644 index 0000000..0563ccd --- /dev/null +++ b/app/src/main/java/net/londatiga/android/PopupWindows$1.java @@ -0,0 +1,37 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.londatiga.android; + +import android.view.MotionEvent; +import android.view.View; +import android.widget.PopupWindow; + +// Referenced classes of package net.londatiga.android: +// PopupWindows + +class this._cls0 + implements android.view.tener +{ + + final PopupWindows this$0; + + public boolean onTouch(View view, MotionEvent motionevent) + { + if (motionevent.getAction() == 4) + { + mWindow.dismiss(); + return true; + } else + { + return false; + } + } + + () + { + this$0 = PopupWindows.this; + super(); + } +} diff --git a/app/src/main/java/net/londatiga/android/PopupWindows.java b/app/src/main/java/net/londatiga/android/PopupWindows.java new file mode 100644 index 0000000..d844601 --- /dev/null +++ b/app/src/main/java/net/londatiga/android/PopupWindows.java @@ -0,0 +1,94 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.londatiga.android; + +import android.content.Context; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.view.MotionEvent; +import android.view.View; +import android.view.WindowManager; +import android.widget.PopupWindow; + +public class PopupWindows +{ + + protected Drawable mBackground; + protected Context mContext; + protected View mRootView; + protected PopupWindow mWindow; + protected WindowManager mWindowManager; + + public PopupWindows(Context context) + { + mBackground = null; + mContext = context; + mWindow = new PopupWindow(context); + mWindow.setTouchInterceptor(new android.view.View.OnTouchListener() { + + final PopupWindows this$0; + + public boolean onTouch(View view, MotionEvent motionevent) + { + if (motionevent.getAction() == 4) + { + mWindow.dismiss(); + return true; + } else + { + return false; + } + } + + + { + this$0 = PopupWindows.this; + super(); + } + }); + mWindowManager = (WindowManager)context.getSystemService("window"); + } + + public void dismiss() + { + mWindow.dismiss(); + } + + protected void onDismiss() + { + } + + protected void onShow() + { + } + + protected void preShow() + { + if (mRootView == null) + { + throw new IllegalStateException("setContentView was not called with a view to display."); + } + onShow(); + if (mBackground == null) + { + mWindow.setBackgroundDrawable(new BitmapDrawable()); + } else + { + mWindow.setBackgroundDrawable(mBackground); + } + mWindow.setWidth(-2); + mWindow.setHeight(-2); + mWindow.setTouchable(true); + mWindow.setFocusable(true); + mWindow.setOutsideTouchable(true); + mWindow.setContentView(mRootView); + } + + public void setContentView(View view) + { + mRootView = view; + mWindow.setContentView(view); + } +} diff --git a/app/src/main/java/net/londatiga/android/QuickAction$OnDismissListener.java b/app/src/main/java/net/londatiga/android/QuickAction$OnDismissListener.java new file mode 100644 index 0000000..5bcccfd --- /dev/null +++ b/app/src/main/java/net/londatiga/android/QuickAction$OnDismissListener.java @@ -0,0 +1,15 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.londatiga.android; + + +// Referenced classes of package net.londatiga.android: +// QuickAction + +public static interface _cls9 +{ + + public abstract void onDismiss(); +} diff --git a/app/src/main/java/net/londatiga/android/QuickAction$OnQuickActionItemClickListener.java b/app/src/main/java/net/londatiga/android/QuickAction$OnQuickActionItemClickListener.java new file mode 100644 index 0000000..1f1afdd --- /dev/null +++ b/app/src/main/java/net/londatiga/android/QuickAction$OnQuickActionItemClickListener.java @@ -0,0 +1,15 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.londatiga.android; + + +// Referenced classes of package net.londatiga.android: +// QuickAction + +public static interface +{ + + public abstract void onItemClick(QuickAction quickaction, int i, int j); +} diff --git a/app/src/main/java/net/londatiga/android/QuickAction.java b/app/src/main/java/net/londatiga/android/QuickAction.java new file mode 100644 index 0000000..f062661 --- /dev/null +++ b/app/src/main/java/net/londatiga/android/QuickAction.java @@ -0,0 +1,338 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.londatiga.android; + +import android.content.Context; +import android.graphics.Rect; +import android.view.Display; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.WindowManager; +import android.widget.ImageView; +import android.widget.PopupWindow; +import android.widget.ScrollView; +import android.widget.TextView; +import java.util.ArrayList; +import java.util.List; + +// Referenced classes of package net.londatiga.android: +// PopupWindows, ActionItem + +public class QuickAction extends PopupWindows + implements android.widget.PopupWindow.OnDismissListener +{ + public static interface OnDismissListener + { + + public abstract void onDismiss(); + } + + public static interface OnQuickActionItemClickListener + { + + public abstract void onItemClick(QuickAction quickaction, int i, int j); + } + + + private List actionItems; + private int mAnimStyle; + private ImageView mArrowDown; + private ImageView mArrowUp; + private int mChildPos; + private boolean mDidAction; + private OnDismissListener mDismissListener; + private LayoutInflater mInflater; + private int mInsertPos; + private OnQuickActionItemClickListener mItemClickListener; + private int mOrientation; + private View mRootView; + private ScrollView mScroller; + private ViewGroup mTrack; + private int rootWidth; + + public QuickAction(Context context) + { + this(context, 1); + } + + public QuickAction(Context context, int i) + { + super(context); + actionItems = new ArrayList(); + rootWidth = 0; + mOrientation = i; + mInflater = (LayoutInflater)context.getSystemService("layout_inflater"); + if (mOrientation == 0) + { + setRootViewId(R.layout.popup_horizontal); + } else + { + setRootViewId(R.layout.popup_vertical); + } + mAnimStyle = 5; + mChildPos = 0; + } + + private void setAnimationStyle(int i, int j, boolean flag) + { + j -= mArrowUp.getMeasuredWidth() / 2; + switch (mAnimStyle) + { + default: + return; + + case 5: // '\005' + break; + } + if (j <= i / 4) + { + PopupWindow popupwindow = mWindow; + if (flag) + { + i = R.style.Animations_PopUpMenu_Left; + } else + { + i = R.style.Animations_PopDownMenu_Left; + } + popupwindow.setAnimationStyle(i); + return; + } + if (j > i / 4 && j < (i / 4) * 3) + { + PopupWindow popupwindow1 = mWindow; + if (flag) + { + i = R.style.Animations_PopUpMenu_Center; + } else + { + i = R.style.Animations_PopDownMenu_Center; + } + popupwindow1.setAnimationStyle(i); + return; + } + PopupWindow popupwindow2 = mWindow; + if (flag) + { + i = R.style.Animations_PopUpMenu_Right; + } else + { + i = R.style.Animations_PopDownMenu_Right; + } + popupwindow2.setAnimationStyle(i); + } + + private void showArrow(int i, int j) + { + ImageView imageview; + ImageView imageview1; + if (i == R.id.qa_arrow_up) + { + imageview = mArrowUp; + } else + { + imageview = mArrowDown; + } + if (i == R.id.qa_arrow_up) + { + imageview1 = mArrowDown; + } else + { + imageview1 = mArrowUp; + } + i = mArrowUp.getMeasuredWidth(); + imageview.setVisibility(8); + ((android.view.ViewGroup.MarginLayoutParams)imageview.getLayoutParams()).leftMargin = j - i / 2; + imageview1.setVisibility(8); + } + + public void addActionItem(ActionItem actionitem) + { + actionItems.add(actionitem); + String s = actionitem.getTitle(); + View view; + TextView textview; + if (mOrientation == 0) + { + view = mInflater.inflate(R.layout.action_item_horizontal, null); + } else + { + view = mInflater.inflate(R.layout.action_item_vertical, null); + } + textview = (TextView)view.findViewById(R.id.tv_title); + if (s != null) + { + textview.setText(s); + } else + { + textview.setVisibility(8); + } + view.setOnClickListener(new android.view.View.OnClickListener() { + + final QuickAction this$0; + private final int val$actionId; + private final int val$pos; + + public void onClick(View view1) + { + if (mItemClickListener != null) + { + mItemClickListener.onItemClick(QuickAction.this, pos, actionId); + } + mDidAction = true; + dismiss(); + } + + + { + this$0 = QuickAction.this; + pos = i; + actionId = j; + super(); + } + }); + view.setFocusable(true); + view.setClickable(true); + if (mOrientation == 0 && mChildPos != 0) + { + actionitem = mInflater.inflate(R.layout.horiz_separator, null); + actionitem.setLayoutParams(new android.widget.RelativeLayout.LayoutParams(-2, -1)); + actionitem.setPadding(5, 0, 5, 0); + mTrack.addView(actionitem, mInsertPos); + mInsertPos = mInsertPos + 1; + } + mTrack.addView(view, mInsertPos); + mChildPos = mChildPos + 1; + mInsertPos = mInsertPos + 1; + } + + public boolean isShowing() + { + return mWindow != null && mWindow.isShowing(); + } + + public void onDismiss() + { + if (!mDidAction && mDismissListener != null) + { + mDismissListener.onDismiss(); + } + } + + public void setOnActionItemClickListener(OnQuickActionItemClickListener onquickactionitemclicklistener) + { + mItemClickListener = onquickactionitemclicklistener; + } + + public void setRootViewId(int i) + { + mRootView = (ViewGroup)mInflater.inflate(i, null); + mTrack = (ViewGroup)mRootView.findViewById(R.id.tracks); + mArrowDown = (ImageView)mRootView.findViewById(R.id.qa_arrow_down); + mArrowUp = (ImageView)mRootView.findViewById(R.id.qa_arrow_up); + mScroller = (ScrollView)mRootView.findViewById(R.id.scroller); + mRootView.setLayoutParams(new android.view.ViewGroup.LayoutParams(-2, -2)); + setContentView(mRootView); + } + + public void show(View view) + { + show(view, false); + } + + public void show(View view, boolean flag) + { + preShow(); + mDidAction = false; + int ai[] = new int[2]; + view.getLocationOnScreen(ai); + Rect rect = new Rect(ai[0], ai[1], ai[0] + view.getWidth(), ai[1] + view.getHeight()); + mRootView.measure(-2, -2); + int k1 = mRootView.getMeasuredHeight(); + if (rootWidth == 0) + { + rootWidth = mRootView.getMeasuredWidth(); + } + int j1 = mWindowManager.getDefaultDisplay().getWidth(); + int i1 = mWindowManager.getDefaultDisplay().getHeight(); + int j; + int k; + int l; + int l1; + int i2; + boolean flag1; + if (rect.left + rootWidth > j1) + { + k = rect.left - (rootWidth - view.getWidth()); + int i = k; + if (k < 0) + { + i = 0; + } + k = rect.centerX() - i; + l = i; + } else + { + if (view.getWidth() > rootWidth) + { + j = rect.centerX() - rootWidth / 2; + } else + { + j = rect.left; + } + k = rect.centerX() - j; + l = j; + } + l1 = rect.top; + i2 = i1 - rect.bottom; + if (l1 > i2) + { + flag1 = true; + } else + { + flag1 = false; + } + if (flag1) + { + if (k1 > l1) + { + j = 15; + mScroller.getLayoutParams().height = l1 - view.getHeight(); + } else + { + j = rect.top - k1; + } + } else + { + i1 = rect.bottom; + j = i1; + if (k1 > i2) + { + mScroller.getLayoutParams().height = i2; + j = i1; + } + } + if (flag1) + { + i1 = R.id.qa_arrow_down; + } else + { + i1 = R.id.qa_arrow_up; + } + showArrow(i1, k); + setAnimationStyle(j1, rect.centerX(), flag1); + if (flag) + { + mWindow.showAtLocation(view, 0, ai[0], ai[1]); + return; + } else + { + mWindow.showAtLocation(view, 0, l, j); + return; + } + } + + +} diff --git a/app/src/main/java/net/londatiga/android/R$id.java b/app/src/main/java/net/londatiga/android/R$id.java new file mode 100644 index 0000000..871b06b --- /dev/null +++ b/app/src/main/java/net/londatiga/android/R$id.java @@ -0,0 +1,20 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.londatiga.android; + + +// Referenced classes of package net.londatiga.android: +// R + +public static final class +{ + + public static final int iv_icon = 0x7f080014; + public static final int qa_arrow_down = 0x7f08006c; + public static final int qa_arrow_up = 0x7f08006b; + public static final int scroller = 0x7f080069; + public static final int tracks = 0x7f08006a; + public static final int tv_title = 0x7f080015; +} diff --git a/app/src/main/java/net/londatiga/android/R$layout.java b/app/src/main/java/net/londatiga/android/R$layout.java new file mode 100644 index 0000000..55f6d78 --- /dev/null +++ b/app/src/main/java/net/londatiga/android/R$layout.java @@ -0,0 +1,19 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.londatiga.android; + + +// Referenced classes of package net.londatiga.android: +// R + +public static final class +{ + + public static final int action_item_horizontal = 0x7f030002; + public static final int action_item_vertical = 0x7f030003; + public static final int horiz_separator = 0x7f03001c; + public static final int popup_horizontal = 0x7f030021; + public static final int popup_vertical = 0x7f030022; +} diff --git a/app/src/main/java/net/londatiga/android/R$style.java b/app/src/main/java/net/londatiga/android/R$style.java new file mode 100644 index 0000000..1488cdd --- /dev/null +++ b/app/src/main/java/net/londatiga/android/R$style.java @@ -0,0 +1,23 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.londatiga.android; + + +// Referenced classes of package net.londatiga.android: +// R + +public static final class +{ + + public static final int Animations = 0x7f090005; + public static final int Animations_PopDownMenu = 0x7f090006; + public static final int Animations_PopDownMenu_Center = 0x7f090007; + public static final int Animations_PopDownMenu_Left = 0x7f090008; + public static final int Animations_PopDownMenu_Right = 0x7f090009; + public static final int Animations_PopUpMenu = 0x7f09000a; + public static final int Animations_PopUpMenu_Center = 0x7f09000b; + public static final int Animations_PopUpMenu_Left = 0x7f09000c; + public static final int Animations_PopUpMenu_Right = 0x7f09000d; +} diff --git a/app/src/main/java/net/londatiga/android/R.java b/app/src/main/java/net/londatiga/android/R.java new file mode 100644 index 0000000..478543a --- /dev/null +++ b/app/src/main/java/net/londatiga/android/R.java @@ -0,0 +1,45 @@ +// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. +// Jad home page: http://www.geocities.com/kpdus/jad.html +// Decompiler options: braces fieldsfirst space lnc + +package net.londatiga.android; + + +public final class R +{ + public static final class id + { + + public static final int iv_icon = 0x7f080014; + public static final int qa_arrow_down = 0x7f08006c; + public static final int qa_arrow_up = 0x7f08006b; + public static final int scroller = 0x7f080069; + public static final int tracks = 0x7f08006a; + public static final int tv_title = 0x7f080015; + } + + public static final class layout + { + + public static final int action_item_horizontal = 0x7f030002; + public static final int action_item_vertical = 0x7f030003; + public static final int horiz_separator = 0x7f03001c; + public static final int popup_horizontal = 0x7f030021; + public static final int popup_vertical = 0x7f030022; + } + + public static final class style + { + + public static final int Animations = 0x7f090005; + public static final int Animations_PopDownMenu = 0x7f090006; + public static final int Animations_PopDownMenu_Center = 0x7f090007; + public static final int Animations_PopDownMenu_Left = 0x7f090008; + public static final int Animations_PopDownMenu_Right = 0x7f090009; + public static final int Animations_PopUpMenu = 0x7f09000a; + public static final int Animations_PopUpMenu_Center = 0x7f09000b; + public static final int Animations_PopUpMenu_Left = 0x7f09000c; + public static final int Animations_PopUpMenu_Right = 0x7f09000d; + } + +} diff --git a/app/src/main/res/anim/bounce.xml b/app/src/main/res/anim/bounce.xml new file mode 100644 index 0000000..352f11a --- /dev/null +++ b/app/src/main/res/anim/bounce.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/cw_slide_in_right.xml b/app/src/main/res/anim/cw_slide_in_right.xml new file mode 100644 index 0000000..136bda0 --- /dev/null +++ b/app/src/main/res/anim/cw_slide_in_right.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/grow_from_bottom.xml b/app/src/main/res/anim/grow_from_bottom.xml new file mode 100644 index 0000000..99d8ec4 --- /dev/null +++ b/app/src/main/res/anim/grow_from_bottom.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/grow_from_bottomleft_to_topright.xml b/app/src/main/res/anim/grow_from_bottomleft_to_topright.xml new file mode 100644 index 0000000..d3462d8 --- /dev/null +++ b/app/src/main/res/anim/grow_from_bottomleft_to_topright.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/grow_from_bottomright_to_topleft.xml b/app/src/main/res/anim/grow_from_bottomright_to_topleft.xml new file mode 100644 index 0000000..d58881c --- /dev/null +++ b/app/src/main/res/anim/grow_from_bottomright_to_topleft.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/grow_from_top.xml b/app/src/main/res/anim/grow_from_top.xml new file mode 100644 index 0000000..920e80a --- /dev/null +++ b/app/src/main/res/anim/grow_from_top.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/grow_from_topleft_to_bottomright.xml b/app/src/main/res/anim/grow_from_topleft_to_bottomright.xml new file mode 100644 index 0000000..bbaad08 --- /dev/null +++ b/app/src/main/res/anim/grow_from_topleft_to_bottomright.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/grow_from_topright_to_bottomleft.xml b/app/src/main/res/anim/grow_from_topright_to_bottomleft.xml new file mode 100644 index 0000000..0216eb6 --- /dev/null +++ b/app/src/main/res/anim/grow_from_topright_to_bottomleft.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/shrink_from_bottom.xml b/app/src/main/res/anim/shrink_from_bottom.xml new file mode 100644 index 0000000..988768a --- /dev/null +++ b/app/src/main/res/anim/shrink_from_bottom.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/shrink_from_bottomleft_to_topright.xml b/app/src/main/res/anim/shrink_from_bottomleft_to_topright.xml new file mode 100644 index 0000000..e095ee1 --- /dev/null +++ b/app/src/main/res/anim/shrink_from_bottomleft_to_topright.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/shrink_from_bottomright_to_topleft.xml b/app/src/main/res/anim/shrink_from_bottomright_to_topleft.xml new file mode 100644 index 0000000..61db508 --- /dev/null +++ b/app/src/main/res/anim/shrink_from_bottomright_to_topleft.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/shrink_from_top.xml b/app/src/main/res/anim/shrink_from_top.xml new file mode 100644 index 0000000..6f46ea4 --- /dev/null +++ b/app/src/main/res/anim/shrink_from_top.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/shrink_from_topleft_to_bottomright.xml b/app/src/main/res/anim/shrink_from_topleft_to_bottomright.xml new file mode 100644 index 0000000..8262033 --- /dev/null +++ b/app/src/main/res/anim/shrink_from_topleft_to_bottomright.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/shrink_from_topright_to_bottomleft.xml b/app/src/main/res/anim/shrink_from_topright_to_bottomleft.xml new file mode 100644 index 0000000..32538bd --- /dev/null +++ b/app/src/main/res/anim/shrink_from_topright_to_bottomleft.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_in.xml b/app/src/main/res/anim/slide_in.xml new file mode 100644 index 0000000..f91a3ed --- /dev/null +++ b/app/src/main/res/anim/slide_in.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_in_left.xml b/app/src/main/res/anim/slide_in_left.xml new file mode 100644 index 0000000..3b3dc7c --- /dev/null +++ b/app/src/main/res/anim/slide_in_left.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_in_right.xml b/app/src/main/res/anim/slide_in_right.xml new file mode 100644 index 0000000..d8cc49c --- /dev/null +++ b/app/src/main/res/anim/slide_in_right.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_out.xml b/app/src/main/res/anim/slide_out.xml new file mode 100644 index 0000000..0f709dc --- /dev/null +++ b/app/src/main/res/anim/slide_out.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_out_left.xml b/app/src/main/res/anim/slide_out_left.xml new file mode 100644 index 0000000..5003395 --- /dev/null +++ b/app/src/main/res/anim/slide_out_left.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/anim/slide_out_right.xml b/app/src/main/res/anim/slide_out_right.xml new file mode 100644 index 0000000..34a0bed --- /dev/null +++ b/app/src/main/res/anim/slide_out_right.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi-v11/andchat.png b/app/src/main/res/drawable-hdpi-v11/andchat.png new file mode 100644 index 0000000000000000000000000000000000000000..5e83f7c5c0c91b101c3ce38b621eceb1eb522021 GIT binary patch literal 2412 zcmV-y36u7TP)q={XZHZ*ogFM^~%D59W(#HCP*)FM^9^#Kv75-(L%P$eD^ zFMU7}Jn+H;2wYHA5dj6#OHxXTQa6nfnv}$eW5;&Z-nG5=*_m^A*o)`P&g`6-omrF0 zBaLSE?3p>|eDnX`e>pRUaL%#4Id60uf^C4d0Sa?d?FzsB!gAx3)Ip^6x{9gnM&5XR zH!M2`fa&K)+XG|*M+FcAkN}XZAA9OR-RJ;S0h9q00OSFb>SfGTf=u8f0SuP<`QG)L z_>+c$F~XtLC5YU>-~a>$2lBBT{xWox{uw|Tzy<)VS*Hy^v@SV=r4+w!bx(eJbpAAY zaw{-&L!t+pu0uOF!u+3IJ!_d=ee2QfTJy1NFszU5f7qDVKQ?la9;r)^URO6)fD*-i z{_)K2-1O+&3~sx85~ymZR4R^xmKl)Dx!s_xWsI@5*SH<4)hY^^4D#>31>?zQzaJa9 z{Z#5Y`5Ss$P!t7i}@9>vnAHx~^koWd-T?{)x=1zd?S8KVGL4RfdBU0CA>bjHTzXp3Nd2k0X&tK-YCt zDwRN_#%o!pQe!?YE-qqWVF3VOE~eNhmID$*5YO9MmZZo6mK|(KEJB>{MY5oY>z_-S?nS*SPYZX70sJYGec3 zKqM##)6F?YB{_f|^MJG0p>hKt)V6-|&^Ls>v4sykoB6JBP^YGwF$O+#tI%HQ?W5>% zP%ll5B5oZ(DF+aDRSL}yvUAaca`+fyQ1=~dQJIFRx3*`bhD9)E-T;^ZPHAWkqw1G` zf^hs8V~9?QoPx!Rwrw)TKt{)fs@jE9&G^78|8#|d7l!xjlb`liY9gY4WQ6gr~f^r5xv6Z0Yy`K~NwRG8cJQfN`dy$?d2|GMp z#uzX_>uH_t8f zPKpE_`{b8Uy?I=mci{j9N4!szHY2l)$Yamck`%l#SwT>G^N&!LXQd;7Ks{+UpsaP2 z@kt~;`*rEgM8_u)9iNn{s|=2!@1bwDl$TGx3BGj6)w6b+QSqG*@ELx8)~x;H&8W&NIz6vcLK<$mwG( z1PcIKEQQgZ9Toa?{pkbEK3UuK;^2lNL9##*LZB#$t^W7idA~@yOP3H;6k9b=Zo5;c zyYc!Tn)6#$tK~Bv9ln|O0vrQDuf?Z9_PV179lhr>79u|0RHaV(5ok2;$J9HORb#y^ zCR?c#z#XJ5VFAckx(wB0_AoR@F$hoEdQNV+L%4tO%v+B4*Qp9+a8&Hj`fA7h3RcA= zq(>Gg#u$`6cZ*rU_fJ5zu{xY{@P09Z*E7o?dIj9UXao(E1V9h~>O`y?7BRl>Q=*kz zzT)g`j){(A?)WR7A4hq5Y^{ZDt0IdhXusDT&z5c)wW->g)7z26q2k1NWsB}y< z@{4~-Kha$;zG_=Oclcq@T&DXRc`s&|B)0@1GJgW4s)%#D^$ zyo~buCpMpKL!E|i!Qc}=6z;$L;^EDdjwur7oMZT@=b#R4`aqeNe~HS)GZynvKQHEl zYlDd7edVNOW-8U?%iv41tNW6lZv!>~s$m!cH~^4;Z5qU6@tla-@4H1E zOOT(WxX{?G6JkvD!M|+-PR=>FC4*S=pjQCXn;(s9+JPejT4xf({qc~UgP6Sk3!=%M zJMWm>Qupi?>aHD|_HDw$X_!d7n6KW2EPyI9z9SCd=n%d`pYl)OlC^Ajc`5 zF(eOsSxj3j{MVLK z7-NX+wh;6`e&6wXNHVVxhMJRZ3lvolo0t+)9IK0tY14!y9h-mm^*{izOR03tQEZ#u z?A;+s&+0Nz$~8S<>-D|+4~g!;wM&7jQD~ut??hE8kE@5jxH$!_Re&}od;UjHfOFQ2 zJa{hS7)AueHGw#a%#w$Z1&UNFfL3m*R3naZeD85R-7)6`1yUe>&{n)T??;{d02PQQ z9X4P=b54*P#QpG(pTzn9lhnun#KjcN)~Q#}AhiLCTgUANkj4oNX4F2xWQ?I$EJD*X zPYug{0POcZUZuma9sz@CaRE1g3;<;UY-muB&*xDpl>+Om%wRemu!oIM3Jz3ITWCP| z?wz&)sE}AAFU3FoHK=zVkbd%={O`rX^^!Jix6x=EJ0AQBq6PdNmQTXnB&e|C8aZz4 zo_v9P@44rryY7I#kqPxlc2jBqfG8^ZrVgTS{~-*VrAJX)qCy&=5`gs39Q|!%=fsDp zZ$0}srx>m;P0{l4>kYPX0E`oqBW1iZbe8^3sbaA{W+{Lgi+|(+=&3Y0mP(V80O9~5 z_-L&DVxY!5=EY4kS&{~7tDtD8tz}UHu!ha0a>z#jAnWot43?E&0Dx?-Vdg^O+YoF6 ev<*<0+y4NtT~up7|IzXQ0000F=NJvF;u!Bw>Ie}yV{&c)Y8qZ7E^TF zmTKElp{?!avMOZ|O3a?2LhDkEvG!%!&YsS`=luWw&ij7P`#sO|{r}{KumiL;jWiJi z(PlDeJa}5qUFs;fcl5=dN00?YAuK*U>Hi`zF)=nacJ11=LZL7!Dk?HEG9n@(JUo2W zs#SbGKQuIy$Kx>=jIgjU=&qX&NWQeVTrP*hVYAu6!NDvRD<~+4$z%ou1o->=)9G{? zjppd+=PO5 zLZQI2l`B`y&dx4fx-=yv<=VAthK7a<7cL}|$;rvd(b3VZt*uxrR#jCMD$AEI2db5o zl^GcsKpu2K#nsg{AtAxQzyO$lMey^~sZ;v;`YI|aT3T8nkw_wuR8&-8Fc@$Tw4|q} z>*?u%8$d=^R~N{GE@fq9O-)Vk2L!@dEMB}Ai~^Gk&ccI_y(%cXtaig z251M1P$(1}1c+^EX#vh&US7ZZ$gB1B!z1i78MM*N(ko?=0 zDVBY1%{>O^d-L_V3@!l5KBo$(Oi`boG6#XCY#t_&%O!HjOs~AhX>a%B#9U0i$Td`P zVQ@&ucFI931VLppX+C_n=7UeCceiiAsEyV3A3cXZD{VrQ^bNODuvv8~+l1MX-PMWd zLDrkz#ADc&t2=U+JHM&gn*1#O>gwUD=S|gUQ=ainE?WJX6a>$#MOI^lgrDbJ8`1pk4 znwPbe7n29>PfZ1vQFf&Dba&A=*Ig_v&73wh?e+BZ492-eZQd*tPUG&lmo!}5(YH^U z@_>A%S(18F&@nJH`XQZK-ZrYEoK?BVX<{3P9aNfzZ+?t){9)ad#;2-{ z##0QDE3#)}F@u)tZ|+?9#;1m>D%AgQ+pn|bt}`~Kct625JDWAJKe0wkxO-&Q<3PQ2 zzYA5ja8u;f#|<+hG3e&8k^YzfJ@P=>4a6)?P`FChj>fS_|I4nU|E|}2&fU!RlZ>-N zm4$Jv!7U%RxW4a&Z`csa!X3#fcoci(c>Q4!@&W!fp3b{#s=!uD$6SPk@6pWL)5@3eHZeImSAW4N;i)Vc$ zlxWIc2MNeE>s(zno`?}WvCQAsATu)8X7;sQKPGTc4$B;WcOrI5y5nW2wwL^4`?>Zr zoRUvnO-{$;vKOOqfABK-GrLA=sHr2P*+#?VvxS*TJ6k1^81zH9gX E18sXp`~Uy| literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi-v11/andchat_notif_err.png b/app/src/main/res/drawable-hdpi-v11/andchat_notif_err.png new file mode 100644 index 0000000000000000000000000000000000000000..52cdec096627fc588aed0b484b158826247c3a52 GIT binary patch literal 1334 zcmV-61$ zPMuo?@PGwiFVNu8J^`=>YyzPNct)eW_1+(E&UAl28}@8{bcLoJOw3hqZCv-R71j{WE;@RchM4h!iTCozrf&SzlYB z^UpW?8&5rdX5ZrJ?>%64d)sep-CHsBnF`Hj6UT9OtWb)KG3om3yzE}a7>qI8x^;`y z)m7Z;tf}uY4WRDzIby|Xs}<1cbO?fADuuG&Syal9>9;TpSzcaFR5f7Yo;S)35h04A zQrPp9$f7Wf+pM+2fuk9PRLiX?R45F2=D#gaWog$ewpIneTFc>$7ImxKs8`r(%#7_J zB4fx85SjpQo>C&h{Fcwht=Q66ce^+l>pySBYtB@nG2vMRM%0rJ6G&=vWx9`N5NPZJu#?r@@%Zq`;brAK*nc9cy+%`mrh^ z%-;9oe&g}PFcYIEUCS%i}|82_vGB$oLtU^pP zKC1Qj<#8vMm*Xyr51Ue@u2u}H3G^t(dJatt*Bs$bN76ufS`3TovW9ZSjRxd4!-3N8 zkA{9q>OLVo&&%b}7`upD}#iny@*AP z34PPi(&#G9Lz=)n+VVCN5e|eF@Hp>AsJf}Ob72pN-L&C3r6)jX9%2F_Sr>{3FZANY zcTwhoPAd3BHx{sl5}=qU%0*&g9+DBkqY7O3x1DRpSzF<(KVBp^G5oq+O}}5R25eN^ zhd(+-!}CF(*g!KeTjwHVtsO#0Re5br(qjEc*Yatv2Ed12XUNLWlKa6suFtYFuzb@s zrHAW|I0VqD*9JuI#^uIUWBI8OhrFuN2z!v!TuYvz>lBCl#Kc&}q0voVvaz6_i2yep z-y6jnuBy;UD$;4HhaDp{+Fq16tgktO>L9caCFoo>;Z)^IsmmlOCnh1}g*}?Y{JHK9 z|9dV`?nfd9*SPW$IIpPQQKp`?1HWg9Dk7XtZs4m3;Oxj3$s>015i38C7MY>T$)(5e8hW^aYrSu9`aRMT9U634);TUX^#} zFUr0}$41%X^)LOAjg0U6Y;JBAE*v|5rkFEnoV4T{kU9v0ptG@YSN;3<9!l_oDU+1F zsvV%?0qeDe#jkfCslH+Vy0G6ESB-IobbnAqn4n1PRx!=PCst;69XJoHn^WgjE5H-L sexM0SqIq;r7gz^YfV*ZgoR9YTAH6NxFxa)sKL7v#07*qoM6N<$g0`HJ>i_@% literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi-v11/andchat_notif_mixed.png b/app/src/main/res/drawable-hdpi-v11/andchat_notif_mixed.png new file mode 100644 index 0000000000000000000000000000000000000000..59c7368d0ae940a40cbb2fe74d4be092c5c361f3 GIT binary patch literal 1374 zcmV-k1)=(hP)YxN7{`BO@A{S0I5ag*s1Q=CAQFMX0dZ{-fy4m`iAs%9lpfmNkn#bzaNz@RsW=v; zRI1cU+!7#wxI+RG6%i2#QEbO~BRGD|?o1DBZ+7kV+60M}MmsY*GtYni&)dw3i&t|1 z8qfJIPp7?^k325!B-m4tCjzq(A4TLQRCHNsuh%DQRmww%%`rDLI6@qYmRb%YmArD zf$sT6@g;G+TA%m`u6caC$eC4@i-!J9X4$mMbb zLva!96EPsFHEhI`rrO#nQK?iYl}cR!a<-kU_%YKcwOWn0Z{OCT3J_LJYqkw3C5B=6 z((VPq$wD`3GfmU&ILZM?DgWKH1Ef@qlP7ZkEG!(rFv0+srpeGyo>L{?08X4p5eV$={?;uE=-61eMYxl}W{T=I^U4M-Dr*+p=nIFp z(RHKVCm9$h+lxsl`QnQ$l(OoRlh(J54M8GNKnOvhpi!&oo*JN8WlDO}>1iNl&|MRhgA+d_g^a9C7VxbhJu3Em>I5c>dgWR)&TQ zMn()WnE>614 zo^CxoU1oZ^+|u9QugGR|cKi78{p9oEPfs1q?zz`TO4U`g_GHL3O&3E-DNdbA*B4YA zJ67T5O)IHhy42&^<;;wwvh(Nn@%pu93tV5&VSb!E6LsTlkwl3c>F#6e0^CIKp7NCa@HCNO+eG57AB@Qu#iZr^f1^Y=1mnVgJMCmeM1!s?>|ZK-oVta(n?i;iU#Dvy~BTe z`EBS2bNT*&5J4qGz=eIUKt<8 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi-v11/notification_icon_bg.png b/app/src/main/res/drawable-hdpi-v11/notification_icon_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..5f668a5896aa506b0351a63213c29d509f585459 GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh3?wzC-F*zC*aCb)Tm=OMC5)`6wXIwN6cO@t oaSY+Oo}9qI>^3Wy=gTGz1|B~K*<*%pm4UJhp00i_>zopr081ei6#xJL literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi-v9/andchat_notif.png b/app/src/main/res/drawable-hdpi-v9/andchat_notif.png new file mode 100644 index 0000000000000000000000000000000000000000..afad664247a4f9c8f24cd86807e5412ed81fd3de GIT binary patch literal 1517 zcmeAS@N?(olHy`uVBq!ia0vp^5Lo)`Eh997Y^K zUHbj{UVdJ-wzgJQR+g5Q=H}*RW@efuTI$9cMn*;k1_la-N}4*FIyyR9T3X7=%3NGr z>_+TBjh?=q78Vw!rlwqlB3wnn`uh3`#!3te`Q`NGH8nLgG&B?y6*)OM-M!sCJw1($ zjajD)iTFwB>gr0H%Q37IP}NXXS65e6Rh5&I)9KN1^>j5fG-Nm>Eb1wxt*tHOC(f{2 zNKH*mMMXtPNl8{#mV<+X&5%vITie;)S;s&}!AwcgS(f3Zh^ViWjENj)g$V0JAqib6 zSrs`21qCT7DRy>ttu8G`S4W0RA`JIL8J>$Vyb@zLBE;t=EFmGmYQU=5scG+Q@8IB| zr>7?vDZ%hboG(yBMn*fBpP=hlGFv4i6`rE0@mcp0SNFS2EJFQZv)DQxw#iIOWZ& zcY^aC&7C!E-o%+x=T7FHdgAnUKJM#Z^*Xe4wDdG}wb!p$vx?38%9UFTQ?Fk&H!(Ba zzGd6i@{%$~m0i_2!CZ@8Rsa5_{^k2uzd0e6JF~eWl3s0j$!dJ5n>p>=Db6?Z=US(~ z+w)VPla*WC^(Xt0RQ{l${fsAsanC|Mos+osGrQ-ODN;ytCa~ef|CI`Uejd_O>q+a_?LAB&0;f+V10# zCzF>?%im&O`|OS7h9f_@?L?0kJ&)N_Qh9Ic>TkFG;<=l=V)jq0TT_(x{A_ge^!xjY ze|^|$>{xzKi0%8UP5$w_%bxvfUT~znf7i3~@f(@6K2}7F&)A*x``g>}^Yiv{v-rLo)`Eh997Y^K zUHbj{UVdJ-wzgJQR+g5Q=H}*RW@eU}+7=p`Mn*;k1_qXj%6ghwIyyR9T3X7=%3NGr z>_+TBjh?=q78Vw!rlwQ)W%Tv+pK!{W%PVSXYHDa`C@Ly)a&o$RyL)`1S65Y4m6Max>CtiZbTu?I^p}v;*4B;?l~z+zQ&CY-Qc{wYmF3{z zU^8UX?$&m8cQ(+`b(fa+7nd=Wm2c#eT*4z|C@HNjE2p5KASETm&d#pYrRC`A7$PVx zAtAwPz^d7)Y42?B;NYOArxzh2B_ksvEiEl3CdS6brrxe@>u76dXO}D}p(H17CnP2! zBErhb%A(Jr)~04mXx%CxKskKXdbud87^rJ0U>pML1AHGK0ZFhMnxktBYAmwT~TpuVbNMH(SA-b zetv!)9v)_9W+q)G`FeSMV|`;GQCSg@94=vAUS8Q+SzSZjKt2&aZUH7HCiyyf9RnQ^ zE^Y-5E;%+%L3R$IJRv4kCP+jx?PFr8XJJWUVNPadN@8M6WMrJq2$6!2;a88i0MqOJ zk|4ie1~&g`Tefbl;tB#LS!B?*5t#>LKi&po!RSXY27-QwU=9H5Sp?M5&d^!4Pv>y; zF)%Qm^mK6y(Kw%+AfeYVv2$jtsOW}`#SE$zJ9ku8{QU9b2P+FpYfG!Ei_6g?sw#~_ zL6?j+6@B9B@;arpD(jWhtf*U7yQ+RUa56h9C+p@4C(8yK7jt`SXG=$0SF^h>U|BtR z^Um(Mt7q?SUp{?%|N8m$4haDT93DSFeYMVnV!Z&x?9Utq3fY_Ljq_4@ilE*(dfoD5d_%baAi z?3$>5_pE!@uh=C&)7fz3jb+(C#*M8ri=UgF>z=iLLG2-@6-O2wO=Ogu>77ufGk0Uo zPp%C|PKC-zx;C!9?y`37{=C0!y|cyg+PrdZ&YBW=XGd=JmA-FtccO6a zOteiu$98nS^?jSdM`vaRbaJ1bb@0y2)6@0u?=FAusj#DhQ={0 rI9lWW{jv+@Z6DKP_(q(=UUktDnm{r-UW|M^Rbh literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi-v9/andchat_notif_mixed.png b/app/src/main/res/drawable-hdpi-v9/andchat_notif_mixed.png new file mode 100644 index 0000000000000000000000000000000000000000..706416972cebcf3eb16fd269c6435d51ab928afa GIT binary patch literal 1422 zcmeAS@N?(olHy`uVBq!ia0vp^5Lo)`Eh997Y^K zUHbj{UVdJ-wzgJQR+g5Q=H}*RW@gsbnpRfoMn*;k1_m}Z3VM2)IyyR9T3X7=%3NGr z>_+TBjh?=q78Vw!rlw1ma_Q^q0|Ud#N={Q#Q$s^TQBjeTlhfVX-P6<4*x2~|dDi4) z5nWwfCnsr5O;vSubyZbWIXO9<9vxRtS3^U?urN_=ZSBNFAvHBM6%`dFB_&x|Sq=^k zHbXY;Zf$3GXG23BA0J5z3z`0Y&h6V-O-v*-G-MSN6r`l2*xA{&y0jc!9b;qpBqStQ z4OlfhHSL}49UL6=^z;%E1Z8Aoq@|_B#KhRx*wowAZ5?gx?CkRL_>`69oSg+kL_}Cw zSy}X1)Y{an?5q|oVmCAt)z=r6l#~<_5>jbVv9Pfa6%`c_5MW_pVb)_-ZdNw2FwxPG zG&UB?%Hpc3;&}R$QCpi|ON&ofSeTEGPq9(a$jnGyUf#e!L{CqsyPIwPd=`FwejXkk zW@ct4T_*W@d3|Gjb8`VXIpK;5HeOy{*;-j$L*1w-?(lF9CMG8NI(Z!f9Z^v(Wo33n zMOGmpcA-2WCRHX#6f^B(VyS0gNnv45W@buaVoYRYoX!Z5f{<%Bd4tmH-I5@`Uz8t*hDH7qG0Jym@E$+|{#p zw=bW*y?_1udWVF70uB!+n=6;j>7KETF;`N$WUghUW~L{nHF3g=SMLPpJ()Xa(k!v5 z^Cr$@oqFQjMn3NAU(faSoI0)Fp{1jxr>V>AJth1G!_@F!VXjX@uV1-#)!f9)QDs(i z&g7!TWzLS-p3%Y95sMaY*4}PyYQI2T%h+I*>FVw4>zQ1V9xXXJ@gJk1WN=pZayQ@C zxjD1#lGP%TuH{(&Z@6*jjAgOZGq0EN z4P^gSF0&c#DhSfB2TBEY6bes~$h&*Y hgQwi0%{Pjj!DipVxj$8WzW`G&gQu&X%Q~loCIC;RRQ3P> literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/actionbar_back_indicator.png b/app/src/main/res/drawable-hdpi/actionbar_back_indicator.png new file mode 100644 index 0000000000000000000000000000000000000000..320843a8730e180418884e1db631625b9a000fb5 GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^At21b3?#L;KKKlz>;rs4T!FN)vGIR$LFes5LO>%# zOM?7@85mgEIHHph64Q+tGc)q6QqyuQICBr4F$F4E>FMGa5^?zL)zf^<20Si-aYrS% zTDJZFzt+@oLcl+r1_&{s>+?6NYQlx{tX)rz|2 z|8{#wyWvmI+@L`7wU*zjZqIpnJ^z>H0*=oONoQ=ijLJ1m^#sn4Txemuz@gZA;obtMnx#fMeMDlUrX-ypsSitqd2n=gXz z>MkNGD_#~Nf{U_U`&W zzQ5b4RwBZ|w)>_JAUFW%0H8%~ouZQpmA;HY)YjI?oZHWv*gcxsC4N(81C#-$11tf{ zz#)6=TA=njKmjlY2EaBjvggcP24%oG1grs10$&GCSa7tp*{|SW8M6)i4tNQ;3p@n; zjLoh9Y0I27;8XqW{x44d^)xHDR|vzf+TBcr5xa#IMdy=qW!~HEIA#%j{GZOFJ&osir3ab)yUOdL!A+kt#?1W8 zykigqY;0_B{oU8O{rqjhC&F(7e*o?Z;?MJ99pEtVjgv2*`j);hN< zrBF)E{CoO!)@J&3kzLjX*wuF4G1 zkGps8E@V1YonmE+)Te)Niv(dWdYKemRctQCODPOqx*O;!sM4+Wr<+VNRq z%v`%FK+OwW7sjBf=b|X$ji+zKvArGd$;R1{}PM(Drd%)L$Vjm9 zVeER~CJt8N-gb8UheZUxAH;SBFbem+)5ycMra@&HR7Hfd-#1$Iz*Q3lEnRa^O69I+ zjKP0b7~2^E1MX%FP-0t#HS-eKRvFZW>lP8hB@;74#|&~jUHJL&heFFB1qON>ZYhS$ z(w|l|sEn7W>w1kb49*15O&PSj-Yc|=RwZRn1UgU)b?=p?SXJSx0#fvt$!So>ALI@ z5eCkX^=Gy~i>)##L<_-5vE8!jo(n$?;Te?zB$BrGjIzB3A^eyk{HVnJ zhX4qK=vM|aHkA_O)5hvNFz{xOZN4HJlpb!m2lBsJ+{GNz){prA`qwp$%-O3cJ z4Ui^w=NZOKz;UM9kt)+1Hc6K%Gw+PGw=oe~RgT+QonpoqwAQu3Ss5MT)Hj!MH$Ci) zx$)9y0#xTU;RD}V*>Ro0>X_=Jk%9c$CuaFb4GEB&!YCerijK>p`5 zu3TX0eizYG)9Y|BDbgo<)x>yD${kJqOG*Bf%i=ph8siwyZ<$=4HmNqcNew6t2)jRz zFvi)@$*3F5wj$DH*fUFv@0{Jjdor3t(c%c^n2Hlmo#s+^zBi1;*apxDn8$5`YHfng zYVLp6izDYyP?4hZPvOX)d(EQ!y^5p@OBx@E7+)mL!(8IBMJI`nV;wR_72YLP97%^M zh;kJCFFO#Vd6hn%vPFTlzEUYG7Rj7g7 zph7oFOBWJn@{ZBD+zKE#5<;NUM&U0bwC?Vx95$_XHeS5YR`+1yy8BUF34^w!P>h>`wI={oX|wnz41{XJAT`*9LGQ&r6cB^t+)}m58Skjp zbD3V4ER!-wtK7hITJ=elGDtvqw5B-=ar4HQ9c9isK>1JG=-2>SaE4Ct65SP*(;#P{ z5haaTQ&p^MO|iO+id05_Y$eeNbgq06cTz(L(o%?i(;%X2uS1#zNULtXu24_d(+@K2 z0ex-8qXoW7ZUFsXX$6qo0?R!K6iWf+TDP9C=W6jl!uMMbW`k{gQ%aXM+F;E>1I1Z3 zowprUe<+Ae!*r+%2i3cxalVtX%Ngrh3~2&Pqg<>mP)?}PfjjpzI?%YjYNR=Bfwb^I zagoQW)2R+n3u*i81rSX%r%er#rtOusSElU+YsvsLX~sP2>D4w!Gk_9yG@)h#wHgDb`;vlWX(ua7NCguq5FrU&WK<;U^E)FcC%#$(`dj| zxAddIeF#8g)-Clr>eGn2om%Z~^2i0xoBPYrq3R!g&BCPdy(7jsfS0pDRB~`mpbQ z{b`D9Lum~B4fq-G7VrQV*;s!jK*{uTiJv7uWcNPl!d><`K#|p*?2nuHakeOw0mwF~ zaw`gpmRjytfTn*QCuuM-7odY}z85>#4gfj;sFm&iV$fYe{JxIE00000NkvXXu0mjf DJjb%4 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/andchat_notif.png b/app/src/main/res/drawable-hdpi/andchat_notif.png new file mode 100644 index 0000000000000000000000000000000000000000..81623a952d685652292dcc9c1a4ada3d9076954a GIT binary patch literal 1598 zcmV-E2EqA>P)fU}#&p38GhG3Y9Wh;sxLcA6r6taqBWs#Cfs$1Rn+^^30>YT4i z%#4p>b9_WwG93sqA3_ai{hxpvFam~?u^Bc8HfbLCVyn~oLA_HyFtKwiTG{-%|JeF> zMMXj_^!iWqe}(WzATN1r(hm2J_FsGPH!psrb-P7DQ87Lp8;03@yf|0sYN%=DKNy%A z$9Io;>-%qgE_*4v1^ivqP=Gwo z>1N%ji_!_5DxpN2l%GY$9~YScS)7lioL+uFNF#d>TI`G(m>IbgJosb>b;e^SyQFzi z=H#-iB|cYxEw5G|{S;m~WVKGylr%zNTwXvd;v#1nE7G3_(qares$m zG=%iNL*jVe%x0jbV^y8+_=gGQO1@1}0XbyXBU}{HlLQ$FR#VKB{27I&kREv~80vLx zo}1O1^Fpbrm{^Guv)`f;@&IbY5XmnDXbDNr5qkyJgxnXzi#85rTPQ{aDvEfS)Ep~$ zZB^x1>#;?b&+`>@FAuo&o%?V>Fb~C(3L{VVn+5;=#wjLXVuViv(b0Y-=j>ZK(t#_l zHEEotv)wu4+X{|tB!9(Y0YVzdZWM6YK~13MzzgBP2v6#y3=0%MCd5M}UN!i@2tK0G zWBw6$rK-*{c!^)$Xx^)F?dSVQgzohb_kWrpeYoUbc8xauPDVR56swHa72v522ZwAJO zRH1WqAcYa0GDsnLM_@Dttj-9ZofyA4d1oSfDyn25l;?9yH-u6REhZcZkzzlNjl2)m zSF{dAJ)l>{+uy$jv507H;MttVwkH2_!HqC%X59UD2fGC3h3vY)17Yxja(rU|31|)C zuE81fUsi_CWsoVmZ+L3&IW$=jiLFApTrQ?BL?a}D;d22y6z~FtgN_kCFNCk!IC~dB zd#vEYvjS$&7UJ&}3sOlHi+nrZV^K?LKvh8??Rl>JtchWao{Dr|Riq7jKNkF{KyD0Q zFh;L{d(&wB!jNoCkK{j&nCMDXyFD<|N`f^rBp3E>Hlc6Cqz_S%6UXkK68y-agGlyt zG2_?H9~?9oD~_6>QYHU7b+I+aW<52i8Tr)+Irux1NH-MqMtDM@>u~oBO9gGLKLaeM zj;(<$=CYDOHNrI@H{9Eb6^eP#M2VjQ&J4M!sDN$&^T@k$IU&xgf)ZN_8Tj`N3x>(W zYnOno;cib4CY&$Tx7A~+in;2xRvpXckVc{@jKH1w+4(RuBUTs;1$S!GWA#d+Z}Qew z>7pVWqY*DEmMYv8{0EFZ6O4FiobR|}NN1c-7el%3{P0krT=ZC}JHz!HkN>iUso}bU zremF-+!FSFXiyl^1@*Sw!RBG~*rLZOWGxJLU&di_HkU0U!}km`P_J8`xX$xf1VR`F z+IQOYlYTk#+x#M=GPmiseF z)w1TAY5f3voipHVAOnykp_Ty8%8`7JHlM&@o35Z%erN?X&biAHYK*wf??`za7#LOo wHvLiq*r^_>{%03=InZCcxRa0XU>~x52tx)3M-4r!x&QzG07*qoM6N<$f7gNMA;GD^K`B9j$$Re4-X3q3k?nR^z>9vP+-qshZv>Tr|0MA=kM?D>gwv^;^OS=?BwL+ z=;-L+;9zfWZ)ay`Yiny`V`F7yWoc6`Vq#)!Y;0s?q@<+8&CSi8 z&hG2$>*M2NZEbC6XlP(yps%m5r>Cc@tE;1L@Rze|0Os<(%N>fu)LqkJaT3WYPcM7+Zm7+?TkaVQ5w7R;wnwpxFloTf?r%sQK zhlhuWirQo@NmmJ3RaI3L6%`2y3D#6rcXxMvZJq5blBP29%F4S@Brlun!YcC`&DJdx+Ai$i=tlFx2ib+CGR6<-_oS&bcm6cVcMa4i|Y8$hJjJO0J zAD?owvWc`@Kbt5oFE0xV3sVx4Qj=02tB8=05DyQJVxyu5pJ*Vra4e^gLW9CqW^o;1 z(OPzq04^bBW@h<%c?B_XeO^JiIyqGlF*RNR*;-jGL6NOYVvLE5($&&#yu#{yf=o`|Ib5mP&r5E^DnbG zdkWrOVqjnv^mK6yu{eG7N@YxUp$vOLdYdTn8^Q3P_%+CD()ph4L+upYSd-wVN=U=P$@4J8h{qNen^UB`d z(s*lK^5)9Utrn#(Z}leJt^V@ns`SyDJNvu6d(BPIRxqrWHW-aMV4Be1q%s!_`m zuBBZmtN#QA*q3NdV@TKV(e`ucb@VS8n#) zrl@@2m)$-Cb~Cjjrx=SwISN0Slx@p27X8|tl<#@&Cf98v`a;E(Psc!F{_>3cSNr}3!~_NL99_DUoy%aU{^rfij*3UF95p(s zsNw%yrcK#ON2qqvr396m7X@aOni{bl*l6OXDWe|Hy6aNKp<{lRUa)w1oMAn2deNMw z%VD9ZtJH4JG>}^-B>FP_;hc32`~`6kQeuhO>_>7gNMA;GD^K`B9j$$Re4-X3q3k?nR^z>9vP+-qshZv>Tr|0MA=kM?D>gwv^;^OS=?BwL+ z=;-L+;9zfWZ)ay`Yiny`V`F7yWoc6`Vq#)!Y;0s?q@<+8&CSi8 z&hG2$>*M2NZEbC6XlP(yps%m5r>Cc@tE;1Ume%dnUABzd)>g5wP$(%$SY2IRO-)ToN{W+{Q>RDA z!^6YeTxID}E^luMRaI3L6%`2y3D#6rcXxLK1MPF?SS&4Nl$Dh^I5@PswQX$V&!1;i zS65P0R1^~v)9TW4b8|B>(M(Pj*|CG&(^JgUR8mt@PF`MKR8*9mot-6xMYB^gK3+gh zPEJHb#Mf79$r8?I&zKf3=2*0d-OWu{Mn*!Nl8fo0RiS@X4O{Jr%#y-4MoMp#rgU9Sy@?CT2zdU#m}B)mXQ(XqpQe}BHHDDKQmPK5>qeSP7c9`?vc zE@ozC`FeSvhfGX(LoMB>2WR$L!_VeS_(&A%cVv?$olBkdX z#8o&-3t=5Rxy1!!7M#W zV~T6e4H;b_-AU1TPEStN{^qW+zyJQ*-MW|01r9?R>?+vEQ;YUt@P$Hubn+{r8V=-oTJk{cfcmEC*gjLYs+H2Kc3$lTPv ze0h8O^y?z|?^oK{U0!y6#>>~%+27{utgHJsrSdbU*oK6Miw+!c&@$D~uuxGk>2X`$ z?rxy8c+t!?5@zaUg$=#Bo!p1{cgDQAQFZPycZ;{{$E1@+la8uh$oTT1AkT$Gxl2;` zaLPxPhzXOdHnq4!uhe)}6mjsG>On6-r<0m1%eHA}9_?Pfz;9c#Ydda)V=6NZK^7ofA`D-sE@~exF4^f66n5JgzV;V{QMb{+rI;Y`pgU zBMa*WRm(WG01fw!#n*1!yp|hsrT^%?d0`uv%bq=Z$E2Zkt5?x$o<<+B09~rTWi8P%L-eLdvfa3{G{qv1;y1JZ?&bSnM>*m7;0ZFfvR{r4#NiFO< zv@u90DRz}pzQWCq0kcX?gDekp`uMTVQJD~!YBXol#>-m@m{gaGFs=Bkk^W#!Xz1*0 zkFvgVM?<@8UfW!mCia>^PeX(wb4zJi*~HTaykm=MGHOlRPHE}#PS1VArOb6deyVcz z6@}8RC(o^Ob$k5#alnzU1+j^H7|l(ibe*auA32w27-^Jb`Y3A0T7!FyyIC&HJ~Jt8 z(%tUF#~n?2_3;a{TG(AQi(}_rIw$vu#X?Keo@qr`CZpWr6EW$Tr?ziauTf-w>%Y8$ z>%7S`?UVbHFS$J`lLvf`O$1lW5A=d3w$!E00a$Dr32HcBQ; zKXhv*=aLYs4cAW^B^gWI{{5j&sME-P|FOoCpFEmxMe2kFCmEPbSo5}5?zfpl)&`RW zCX2V+x^&5H!}j<0>NE2HcRUq7m2MNi=I5`szxkW~{`q=)=VAHl^3V7Gw|d$BOP>49 WRp;9iBC>&H1B0ilpUXO@geCyC|2j?p literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_list_more.png b/app/src/main/res/drawable-hdpi/ic_list_more.png new file mode 100644 index 0000000000000000000000000000000000000000..91cedec8ed3fe5c6e8f58d488aae29d668f12064 GIT binary patch literal 413 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX3?zBp#Z3TGbpbvhuK)l4j~O`dB!YRRII;uxZFzW4G?p(X>K)Z^)be`ap|=mJrU1dnHC0D#tEDbdTdx2UG+|8!y1!& z!n?OVKPwhdCUsv}-shi89m}~ht6SSe)gNrWIqkv~Zqu(>eJVU(+?e;iwlaBUWScNE rX8GzHOy8yIX5CjPJn~GvsftnL8fUh`+y@pw_cD08`njxgN@xNAhQ_8p literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_list_more_selected.png b/app/src/main/res/drawable-hdpi/ic_list_more_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..efb82d33744126cb61a0f0f3ef60d1412824991c GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX3?zBp#Z3TGQ2{<7uK)l4uiK|V3&fcwyc%R> zNswPK1A~F_wEs~;Z=djFwlm-Usp7qbt>Uxj;Xg~IZO-==D$JV;RJq90#W6(V{M^go zd@Tk%ECDiAoO74n|3B-*HWm(})mP8GpByN}Kks|+i<#=u^O-FEX2m~y(J z@y4_>p}aGsB=ZG>weKmc(|)#z*{8MVd&lM}l|LAkc^qRtVq)aawsGP|!HspbY@r&*rwUZm@Qr$@}#qLb3>}+!>+DB dU-f_Lv;SYj?xXqJ+Ysnl22WQ%mvv4FO#qzfm%RW0 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-ldpi-v11/andchat_notif.png b/app/src/main/res/drawable-ldpi-v11/andchat_notif.png new file mode 100644 index 0000000000000000000000000000000000000000..8415055a21c2261b6308c63f767c46518755d60b GIT binary patch literal 1294 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+3?vf;>QWgPm|6pTLR>={UnEtmN-3HUpEoff ze^OlTgxH+^nC!mjtlp^1o{03W;Dmawgb6{l_u@*HWfs)u=jW%UWu~NNB&Vb&CZ#4M zro<;C$HpZ_$HYfQ#YRNNghxcXxVRdcyP0@ZhbA>9BqU~KWhEsgB_<{&BqYSe#l^

+5T4YjbmR^YRI)m_&Mcd0AUqTUc0_n3!ld`Dj&6*VWZkbqm(W zY1P!!)Y8&YS6Aoa;^N^I^og!@_w;smcek{(R8K5Z@rhQAFIDo2R8vz^QBmRKAXf>Px@!sRWU6%-WYYBn#EmzS58mgeN*Q!)y73oW;^cT!bVRrHKdE1N8%WuO#Os2E)!BO@ar zA;HGRrf3-E5?pF+W3TKTC84e(CML$p%F4mX>l9dQX=SUSp`kN*r<8`Cl$4bAq#fd_ z+T!BkqN1Y0!outvJc@>)_I`z?W|p!F3KDV(A|fIJ0s<^7ED8ppwm$hr#%59~8VXSb zl9G~Q3Mw+b2|_|be0+Rt?A(q4MdlXP{QUg9yu3U-Jj~3@^7|6qTBFgI4nFj7P3i^RkY7R0QuF@JVQtHl9YR;0X zPU6aTvO50SPNj|Y0oK5DdA%gaFW7AJi>FZVV!PGm&;R}+z`xI%U;IY_|DHYliz4vn z2`U#!`p*+24p0>e_YaaBibAL=tnvsGpwdsC|9f`w^RJ&E@ayx**4wXNg23xr?UPw~ zSQ!`?6FprVLnJOUhB2=E2jns_vjD@8jg6gylZ%U+hnInmUqDb$NLWNvOdOaWq-A8~ z7~~Zcm6ViKRMpfqG_|yKboKNZ3=EBojZI9=%q=XftZi)V>>YqYj!w>IF0O9w9-dy_ zKE8eq4E_OuLFSe=!69CuVc|Xzkx|hMF|l#x@d=4Z$zds}Y3Ui6QCSSxIk}eBdHDrl zg#|^$C8cHMSqv4GRo2zsHMMp14W*5xO=Zn346SV@)n4r#on75My}eC+{ml~?CQdT- zo?HL{Q~IV(n?8YI#!RzW5skCw%$+xX!PJF|rY&B=uymPAd)@MarWFNKr>eo3?uO z>ODZP{{X|mLx+zXIePTyv17-MA3uKLQWgPm^uP{LR>={UnEtmN-3HUpEoff ze^OlTgxH+^nC!mjtlp^1o{03W;Dmawgb6{l_u@*HWfs)u=jW%UWu~NNB&Vb&CZ#4M zro<;C$HpZ_$HYfQ#YRNNghxcXxVRdcyP0@ZhbA>9BqU~KWhEsgB_<{&BqYSe#l^

+5T4YjbmR^YRI)m_&Mcd0AUqTUc0_n3(t|s7x1@)z#GvmR4vL zmethM)Y8&YS6Aoa;^N^I^og!@_w;smcek{(EEAQBmXIqIk%<(OQBzY>QBmRKlTW5tNXkV*Mp;=|QBjeDgG0$U+%uxu z$;I8-**R8HK3!DiDUV#FsC25ZRJgFDv$(W^f`Xi!96LKZ7dO9qSf!(rtAm4so}Qkm zto$;586_npLrLjneA4pr^3u}MoLqcLM&WLu<#zT?s;a6HB2tt2r3@sb3I!wz_$6dy zWF#ac*x1+<4Z~c5ORa6}qr_x%M8trAm6er)lh-M**wV^YLqlUHue6@1xRjLC4qhp3 zArWzLaZyoGVPRo*4jx6rP#5kUt{-D z5ot{xeo-ENac({_E?!Yi9uW?1VRkM7J`rVg>r4ap8U_78DK!Tf4OeLm7b$gTDK%$F zRVQ&}J6RonZKu-Twi^xslje<*AirR<%`cup!Hexyn?L{iiva&VZ+`I~1^j#V^e>9Q zpC_nXBx4eA9gz3}Q ztXZ=c2o4-%ICS{P(WA$X9Xo#f_=yuIPM$h_hT-hF^A|2&ymaZ(<;$0^T)A@f+Vx*K W{R<|1tk(o4C literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-ldpi-v11/andchat_notif_mixed.png b/app/src/main/res/drawable-ldpi-v11/andchat_notif_mixed.png new file mode 100644 index 0000000000000000000000000000000000000000..832ea9b3f91ac35989bb2a29928374e18c91209a GIT binary patch literal 1286 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+3?vf;>QWgPnCb(3LR>={UnEtmN-3HUpEoff ze^OlTgxH+^nC!mjtlp^1o{03W;Dmawgb6{l_u@*HWfs)u=jW%UWu~NNB&Vb&CZ#4M zro<;C$HpZ_$HYfQ#YRNNghxcXxVRdcyP0@ZhbA>9BqU~KWhEsgB_<{&BqYSe#l^

+5T4YjbmR^YRI)m_&Mcd0AUqTUc0_n3x0x$}L;Qt*fgW87VP& zGOwnlrk0kLy1F_S7Z(q&pigwIyQjCiySt^OWmA(tayo>FDI@;NYOAr)OayvttLF zl9G~%iNyBpZ1VE*($dnLTzpDK;clVjcJ@xHs;UVIf{Pb(7#oY#)^gX>aLLHXNJvPq zv9T!{hPecnTHDwsB?;^63yX<~v9hvqaPm3@7F$}`YG`N}7>GzoNu52*tg9<1E-o%A zDk>~2%+A51Xc%hmS7>Txsi-KUs3;~PA|fClz{0|!U=V8SlW$~frllobQ^P4KDXFR| zoSDffBqYSg$H&Ib?HEvGZeh*O&(F)t%frLN%*-sWA7bK|$jrGf2?kuI|EUD@wu52f( zf}1%0-g? z^8|_W|33=v50Vs$I;bindAKyf0I2Mf=l`Ca{QT=D2>kkdvi0`smmu)^R{O0Ri~lk( zFeZAsIEF}EW(;Fo`47ltVrBt`AR8My2PYR7HxDlZAHRU0ppdYLsF*k~A4to{$}z|* zC@Lu_tEj4}YiMd|>*(s~GZ+{e85^6JnweWzT3OrJ+Sxk*g&dun&0JjF+&w(KynTHA z92ooq0)xygZGuC*Lc_v+A|j)r8De7N%;OUhlS0FiQ&Q8?GomsXva)k5t#kA8!wT{X zi;7E1%Q6|tD=Mw4ysK+!>*`AyN*YU>ni*PJO{%=w+B-VCx_f#Wd;6OD8753L^_~PQ z20&nP@06+2`WdFrFq;|CkUVSloVoL+%wI5d;Ub2`OI+G&m*zJv%bzl3`GOTI7p`Jh zy~et>VePv08#XRquxZ8Sm0MOZY~5zwxW0Ejh`)Wu&Yioq>}J?A+qbl|uW#zql`B{7 z0)oB!81^4Hc<9jK!-tO?Idb&q(PPI?oMbq4`pnsL=gyx$f8oM~ix)3mx_m`8y0<1I Srwkan3=E#GelF{r5}E+pt_;us literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-ldpi-v11/notification_icon_bg.png b/app/src/main/res/drawable-ldpi-v11/notification_icon_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..8fbf4bbd552f522728b1f5beda08eaba21dc9194 GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^{2boFyt=akR{0OvFlasU7T literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-ldpi-v9/andchat_notif.png b/app/src/main/res/drawable-ldpi-v9/andchat_notif.png new file mode 100644 index 0000000000000000000000000000000000000000..123eb9dde4dffb6295c0bd949a3bdd46760e036b GIT binary patch literal 698 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eW!3-oPYs<`LU|@_4@CkAK|NlS3e+EpXuwB8b z*~+5P!o0!Uw9eGH#@MjRP`^T7r&LF_Q5K@!pu@n;&CSu#(az4!#>U3d($dV#%-Gmi zPft(LND-n&r$@)a!a~_dRn%Tm)Iw5HPg+$~RnkNfBCFMP3Vq#)wXeetWFJUYt zXe}zKA*G<8AZj40-mY$LZf;;;AZaSY(jvfGE66mFpDmhCMn*hUaZ-3oFarJ9aTzzB7`W7k4ktZeN`g&!>NUjE#;56&EHx zl;SxgI8iU~qT$BEkDNt3ot`H(S7yGHoEdr3l4oaU<U3d($dV#%-Gmi zPft(LND-n&r$@)a!oo&HEm}g(UqaSKT256}RnkNfBCFMP3Vq#)wXy_oP=q4o_ zAtGfYC8MCAAZj40-mY$LZf;;;;4Uq{lUsTzkJMQ%nTgyIGBPqkx$pYdNxW&(MNyl*u0|AdZk9@tnl9G}f5QvBh2?_D@ z^K+_jN|#8>%gY0G)^Lfa@d@~H@$>TXa&d97ORxi7$TN>eAVh#CfQQ?ko6C=j!-s?2 zo1N8@mBoXFIguIS1vIipIyDX$#04cme!&b}b;nPxwXFq)F%+!d1!MjH|9KmX{dOyi zMGD=7P`rij%(=6hT&_);GY4q*Tu&Fr5RU7~2@1>xMuwXm7__CCt=ZMZ&H44^_ctsM zXx`AVV#bb^B~!NatdVKn)3jsJlu4VqR?XVQ*1T-mw!U@q_BAe?XgDD`DJv~6F*7wc znfu8N&)e1(R*}}bcQ9Gz8NHJWn-_P_Zl4s-r#ilWjPn}rIUZD$;yJW1@!UhfiGddl zHx}^}e&p=*JgK=d^QGiWp2)(RmI)JPPxoKK&v3_6E-Af1=>X8744$rjF6*2UngB>- B2KoR1 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-ldpi-v9/andchat_notif_mixed.png b/app/src/main/res/drawable-ldpi-v9/andchat_notif_mixed.png new file mode 100644 index 0000000000000000000000000000000000000000..cdbe625cfc4ee028f69dc887b0204c6c691ca502 GIT binary patch literal 686 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eW!3-oPYs<`LU|U3d($dV#%-Gmi zPft(LND-n&r$@)a!ouEOIVD9jEKJnFK~hy!RnkNfBCFMP3Vq#)wXz1c1>+LO( zkRWJkDyg8LAZj40-mY$LZf;;;;Nv5C?i|bZ?W|9qGA&%lCL<#wq${M-qN1&>t)Zb& zTg$DiEGI23EiNw3r^%<-sHm>4o}0`2^eJOT28Xb)FpoNqe7(Gql9HU9+=2zH^70}= zLPGrf{G2MB(k0UJ^77KsV%^=Wnwq>}VeGuTyj)yd>=Nui7xK*G5eO0B3E<)O=jQU` z;_%^M_hx7HWM%PSVNPU*cma*vwbVKR7{mo7L4LsuTy@7!uC=WNhA|YZ-vwj+|NnU# zjQw^ij719FgiySN@65Tgn_R9EwnXTE?#m)Kk z<@Yx%5NO`ev0}!KmL*fR^sJF--qW;W(UeJ>x>n8F#n!xR+P1!R^Y%3^oM<>9IVmeG zFEKMUH<|m%4bR)w7FLngyLT{I<{7<{n|Ezq+&w!fo=^Mu>i#h{#yK8Tl;SzGF!9_& z!HIzv4L26?6n^CF^gOA#GV`V6OrFTXo0bU^W>5ED!q0HWQZDI@g{2PAp$wj`elF{r G5}E*69}iLh literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi-v11/andchat.png b/app/src/main/res/drawable-mdpi-v11/andchat.png new file mode 100644 index 0000000000000000000000000000000000000000..6ab32cbc086cf651428c1347ad482bfc8aefd5a5 GIT binary patch literal 1809 zcmV+s2k!WZP)F*?`?CF?s7_ota8wj{C2^h3C20ww*vl z$8`eeh@7$Y$UOQyI#x;M2dm0jvYseXqYGjH>O z+m~5hu2U!$5*Z&hHu>y-rj$xt?;qPao7(gZR%*#8*;$sa|CVZPk@069`7&_E2J%9SF>ker z(`=B>S(M9VJkQHKf%R(LvMeK}wblqB5JGVE>Q(0F=dsFFWT%bLq6Fk^zyhpxyG^6f zz;#`U#Uk_b^Xp+2c!&!e6yRR9ws%@R;46`UjxU^vR0QYw+Dv=bWUrtMKZNR}W{O2i9igD~!W z?+X-(Gw(ihoQYH42VmuwFHm^rT&4hlLb4!~W&GZaE5+D{We-1}fa z+`s%c>^}Qw+r{vNmhO;iJE*?6kYvPK>ud;_*h88C_JCN99U`$Tz2-e+8=M$lm z1gAs@rG0r60ZN}Z5fIOWq)rUVF3a~tn zul&q-U<@G>V^&Jx>^;QzH-0ogtP~lKKm9B`{cLK5vg>EB#^wv(JRStSH2e?sLM9N3 zYW?n%T9BejKiur83^G1<2C%#KSc-;!+&A#{y>1*i{HUsT}~`R zM~=j%ClF22Vm0foy`ceL`Fkvh6GEVcMKO{>SWZ2@ZWxJ;Z6K}e8#d1$d@PK>H?NTI zvm0677OZ>MrVvV@Ba9on(=;3Cm3yP+>rzUphmMEtapBg$9&6A3P=HGpMxt-%M%VtB zXrX`ZTXukLfLybNj^sB=DT;?54+Xe2S!LH8F`g@JQ6K)_y2*LiPs_#F+4J{2S3& zG|IO&lnW`PxaYYarv{_Sk&{%8oJ`&G{%`+0HlO{;x9Cj0o_ZQ1WuqqDiOufXnxyX| z#ese|+9NXm{O8dsLUi(8c0d1%H7G3IVeW^gV*OIBH1GTRcc~tIBGmScf5i}{oyJzz zQY7wO`Tb!9=3e}35LttmP^`qy+-bm&jMKCcmJA_uVm_1vcmqu!Gnb_Tc4VWZ!(Rn2T4_#kCM0);OYf1;g3e3Cm)<`AlT`}UAx2oO~GWXsT zw7np|>Fq6lB#a5IcQ0+J}p1~L;* z6lnM0CqwPNH#MLDA}thu@%GvYt)r2gW(#&wDsAG0nt%QcjaPo(O@eBJP;4x5{kfBC z*+i!`a_4U(BaXV!egP7T8m|d%3U0MT*B3UWZJ#NC(rP3lHp%5jeesd?G9_7n?)zZh z_Yp!MrNsCB4YwMzQh|+XzbAkKRHxIybzL0Cq19@o64s8%s4ewh5@AQn%Ddt(1&^~kuUV&ox(!I6J~?gu z5qJd{1M=PXuv_U;KnHMvRloy$akr|h|JU_D9ukVn64dAA00000NkvXXu0mjfXtaFf literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi-v11/andchat_notif.png b/app/src/main/res/drawable-mdpi-v11/andchat_notif.png new file mode 100644 index 0000000000000000000000000000000000000000..81b0f3ebac01ecfb52c6e28ae5a31ed00019c624 GIT binary patch literal 1591 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbQ|PfoXSuPl#(sva>TA!@7zC|aZs}9Cj zY|bsJPRlAz&L~VyFGxzuPfX2ANXd;)&WTIPj!n#pipz+MOOK3Ai-<`Li%JfSObQB% zx3>3mjGSa2Ge0J~FEy(qCnqO8Jv}8QB{?}cDJdy2F)<+_AwE7nE-o%MHZ~?ECOSGg zDk>@>A|gCIJS;3MI5;>cD9F#xPeVgPS;IurGBzNw-9I=cFfh=^$H&dh&DGV_#l^+h z+1bg-$&dd!otGb+}zaE)WpO@OG}HJn_Ea+N!2XYKcU?xAky30 z+uGXN($dn<(9poZz{to*M@L6fQ&U-4nTv}{%_6}szSY}5!ok78%*<@pu3gQ|&3bxz zJ9qA!G-;B$y1JsGA}1%Os(GAmT&t&Vn5USrvGM=^|05$KwY9ZFLqpZn)KpYd zK|w)AMuwf8T|iXPE4s_S2_N1qB89`1q8JqaA}P&8=N{ zczBqZnRx_d?E}h9EuHxJ`R)A6jLjW+d3m`7WR#4fZ2d|NP3@VOm~4ECbqp-I1*Cz3 z1`a8bvTEG?Qu6vCMqbTYcDWKt77|KU;y|QmDW+f{DsL_-ZzdvVs&1XB>sk#=sAx#? zw!Q%{HNPwg@(UJDzWC@N5_oheTQ2d;_aEO;z>n`2vMziF#s&uXdhXE=48i~3?ma?M zjl#K$Ec5>xgoi8$7J>?Z+20@>kV+sEY8jF~kRl)gD|__g+r6tlzFn?6`xXk$HHvE6 zx#);ZFL3t+=3OUG7sn8d^T`PbDM@L-43nDt{K1n)kDfhz`uMrHfQV3+4pZPgBc)0jDdAZX&I(k0!ed}lZw0LpyW2VQ#LQX=HCmjxw2)exJQsW~@ z$Bi>1Z*p4h?Cktj`I9xVmB;m{>Qcr=NypT}r=pxwpN4*`ylT3&^lK{*Z?Eq@hle+E z&VQ=-{pHh}SS=%?h?JpK=nsIL3yHE4x-TSm}-?TsfIEB@>8v4w8BpECg zy)6C0?d*&zx3iP(#9No%I^ua*GVRP4zMi?J)(dytS+Q*Coh94KvR=1X7C-k*pRxad zdd9UkrzY(9v|vfgrxz=O)ph1<%Xs%lmB)Mf&uM4*I!_wt_3K^M{N9rtYnOYjYpO$M z=<3DE&Yw;_O!zj-visV)nCLoy=r z?wz3Mec2DU+!ZT+rW3WX^!&ZIufG|-u@{&Uae0z_klcnn`)x8VE?S%YJ;%D@#Rt1K zW%tLQqkb)~n)ZDCNsW9)t@~v;`Vo(QbViil zcZZLqz2Sk3K+N7_1%Hp7jozMjcVF%Ab91fB8z0CC+^PTYLGbWnb^rN^4a?8RGcZIo W$=T*I{muYpAqG!ZKbLh*2~7a91n-#u literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi-v11/andchat_notif_err.png b/app/src/main/res/drawable-mdpi-v11/andchat_notif_err.png new file mode 100644 index 0000000000000000000000000000000000000000..bdf9b310daef2b9eb584c36cfbb1dc70ee822491 GIT binary patch literal 935 zcmV;Y16cftP)nDjmeNFA4Z9<6&;oP9ji7Gk@Itq-c z;=QN4`EK7=_m>W<;5Rq|t=Gm%BmSt>jZ_~PT#dMzG zvQvc+g8H%`%d)uuB0`*Is49bY3sogfb5w;vy9F=?sP_XH8(~#tg1C8Ed+)jRw8zzM zpAZ7xdp_IGxN(>hLLh`N_N{?NgsZLik-2jWQk1;y4S&U^S}#kkdc%WwvRpOLm?ywh zN;y-^MBve;mD3b}zhjH{o@e`cWha$wjG5u3R-u#83#PJm{ge;(Q&g3W0ASfXE`Wj! zF@WWxo(JRkX0<&>7!`)A3_+&qSX#sVmPJH(C08C=;a&_1Yz&l#Ch(I}OoQNBu8jlK z06NQobNtp>q9_W!N(X$t5cp+z0TJQr-1BLx%BFW5pnRE> z7~n86GbL)Cz*aB9xMORFqgKpeE9M<_{1|!eFFNimM646BWlOqo#6cY4nQhcF6)En& z2woVLfaCY5s%zo{SBQCR1rakr@VP3QZu90`FFfEl7?q*ptL%;%->qqY=`m8#84sax zA8f~#YbGZ*7F5}@@NRTU&zkWCGYv99@_90?*St04aWrnEfq^VC7rT(gClH}53p2=b zdc7Xr`w6Fc8z-}5#=pML0pt4plhbauyMDC)&kXu`&lj;#CHNwBcJYNfD=)qGzQzw; z1l#yOG3k8az*I?go`35}vbcKJ+`PTB2CM@eAmRTR1#k%L{R@sNd@s7z>P`Rv002ov JPDHLkV1nAGyUqXr literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi-v11/andchat_notif_mixed.png b/app/src/main/res/drawable-mdpi-v11/andchat_notif_mixed.png new file mode 100644 index 0000000000000000000000000000000000000000..f7de61ed4c23e8922ab1d481df5f774436e60d0e GIT binary patch literal 963 zcmV;!13dhRP)?0U29!@=)ja=&Zozj=TsKSSjU4MW5o1AU^=$q>2 z?01!kEc@2T5z`opAgBSx+QGU}JGJ_h$J7rt*AiFlto-cBKVOK`Ehy7N8FQr51b+t+iNd5g`Zys?{p~ z*hw{cf(cgyj4`5nAwdvi2C&xRdAooR1S5zDzTZK_5(Favae!z)fO2v;A~r=_R@Pc; z78W*`pRZwzL2J#OJ5?@U?qg$2Y#Rj{5H3!iADcN3N)Nekq08EuALEM`yF7nhNF@>l zig^OuzETbplXM(ynwr`HV13<3Yt8g@dw>gQtx-x1@e--fwSyNN%G&eVT)Xx+BEqRt zJpgXpr~}0K=FJ8G3k$Ou!sy3v`@muk^)U<`mX?ZGYnhu1SzUEmTpWo5uCBT~dE%p# zO0~rplPn+#AVdAvI?v0OCkexl`}dn%y;@>c0C=8eVxrCY^L<<>Xv*ad&1N2J zoy_b96$ z)$&+tsZ>G$noX7IFxi>}$^F|X3SbiV!N!Kq*|TMWKmo$rw>eIqKEd{O4#?JiisYkY z8m(#V5CmR)koNW*Ivw|T7gAh-we)(S>hA5)YPHZ>r;M^Trn6+oKDy5VboFyt=akR{0OvFlasU7T literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi-v9/andchat_notif.png b/app/src/main/res/drawable-mdpi-v9/andchat_notif.png new file mode 100644 index 0000000000000000000000000000000000000000..f863994f82e0cb4f5cdac3c31a2950bd640221ea GIT binary patch literal 944 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRu!3-q%mEvYIFfg77@CkAK|NlS3e+H~b<-Cgh zYI}zT4tDeGZ06Wl&$hOlX=y&)+-#bePLB@nHeR4EizybFnVH$y*(oV0$;ruyiHY&? z@v*V7QBhG55fNcwVF3XFT3T8hDIA)en(p52etv$z!NGxnf&TvfK0ZEPUS1v^9&T=K zE-o(m`ubd4Tx@AqL0- z#ki_O*c*g|&BcI#ot>Q}g~i_4-oe2^M@L82RG#6bn52meXR`=TtcbX(goucUdb_%f zgN?PdwYs`G(@ilYB_+0*A|kqCf`Wo5oVgei8G)fKk|!c0B*etT#2C%Uw3>+}pM`NH zNF0bZCBFFxjM^C`L4Lsu?CC4EZqDY&1V%0lY=bfAPVa!)n6>iSOU2hfH~#l@aSV~T zoSd+LH6bM_t&us*tc;D%PcKhSE-uclu8z@BG0}`oFwn4&(^E53GSae=)m2rHO)yn7 z)U=e>S2tHS*0z>ekWI{4R5@8V*tnS6TRU5tS&U6A+FDk)n%!MJT|C^poPR;X^6A_6 z_OG8`?~o8s;Gq%VV5xIQUCBtxO3h49PG`b|86t^O=S-S4EpP6`nXDow&Yj$P>a@Ox zwvLvbrY{-!W(YKAh+-_u2lI87E-8wh+uI)R; znQ!+h@znkmb}};d_I~~9*6rKsey@@fX4|Nmm}sx&;i#&vUcSk2ga7QlSG8KejJMip Vku-yA1u!TWJYD@<);T3K0RRfFWLp3L literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi-v9/andchat_notif_err.png b/app/src/main/res/drawable-mdpi-v9/andchat_notif_err.png new file mode 100644 index 0000000000000000000000000000000000000000..1becc22d0a17d4e3b93ba44a28dedafaeeafcd8f GIT binary patch literal 932 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRu!3-q%mEvYIFfi^9@CkAK|NlS3e+H~b<-Cgh zYI}zT4tDeGZ06Wl&$hOlX=y&)+-#bePLB@nHeR4EizybFnVH$y*(oV0$;ruyiHY&? z@v*V7QBhG55fNcwVF3XFT3T8hDIA)en(p52etv$z!NGxnf&TvfK0ZEPUS1v^9&T=K zE-o(m`ubd4Tx@AN(NK&SrQ!J53OkG@3L_|crUERjP z#@gCiU0wYYlZ29zQa_uhu86pxpdcF?8*?(VYOAV+jRg=miApYF6+6W!v4BNXNl1jB zpP!YLl_`lyxmnr7!bDY7)m~66o?C>MmzRZwMWI2#z{EgNQBh7#E{I1YfLpkiMHmQ} znVFTEl)PDaB{{ex*f}Fuco`EJfq^WNCn6*y#KgqJ7|qDEnu#T!g>fZF9Eb{5b`}F; zbZSYEUoZoE`iiZavpF(>aS8+5U<~@wJD}EOt^9P#;ug?>|2vq&6SO{ ztz{Nu6LS_-P8JR}F6Q>u&X#5tV-t(EmKCmMcUMmr4>vF8U(m38`u4s3>*v=yBm@+A zXaqP|>fBL3WND;jrDn#bBQSr0MB>ybb0*D7n>%kJr^ty@=Qf@?>+N?|UqeSrkCAK2 zw3*YEhlE7AvmFl&ZDz^Js(tlJT8ex2tjk}c8<>>VZtZdn&3!97_no4oZmbf|UE95i zl9ES{UcIWTt6Tf`E>DiIT3cIM+B62o@bK#@W^CV11_$i*XJuf>;c%QMP-%A(7!(Yi Lu6{1-oD!Mh|io zdb%1L8ygxLHa7A*JIh#F$}V2ap{AxLAtAxR!NHo!s@<*a}+6Qken=X?i@>f zJ@14GT#FX5ySWLAiHWhZv$LeI*gM-hI5_C&=m0~)%uKSspEDh5zVNqyMFfcJtR8*9clZ%e#iHhQ$Kc7Wd zSeTiaS*b}WB!pF3nnOy8Jvo_$F_94%$Rc?nLPA1JOiYZ?j7+PUSn^pISAxWWNbHV9 zI50-1mIV0)Gq9(x*t$8JBNG^>Ft82Apf9}xYF*aKPp2$y0Uh|?)5S4F;&O7r0@j3- zq_jrnFtai?K0m!YIk~tvySh3?N5w=lHo-u{LQYT3Ovy;gN>*1@K{mlu(NNP;USHi@ z*;w0JWp!Y^K$+L4a=u*-`l@_e!W9N zK!JxwfP3&V4AvJ$z4v7&h`yRFvgSsn2z`Wb8!ET*)2vg-c*kC{66u*6p_ STzLU#CxfS}pUXO@geCyE!*k~V literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_list_more_selected.png b/app/src/main/res/drawable-mdpi/ic_list_more_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..517a0e6214738cf0ab9ca4fd49cca7af0547ebc2 GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqJQaApt%iuK)l4uiK|VUF7o6=rPcI znUWyCUV-(Y z1_d6L0IkPu-0v3M`#&#iQD@)hpGJ+_j%7R%{p_N0@y`V&56R6k8eUF?QKdbhyiX(- znnZ2wxwNY4*gE#Mi2-VB&-Gki!@Dp%`{mg}hG|m^t|cv)xJ~wk`5}S*{~m2TqPV|e g{paY(`sXbfpExi-pMUSH572%FPgg&ebxsLQ0D>@t4*&oF literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-v11/andchat_logo.png b/app/src/main/res/drawable-v11/andchat_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6ab32cbc086cf651428c1347ad482bfc8aefd5a5 GIT binary patch literal 1809 zcmV+s2k!WZP)F*?`?CF?s7_ota8wj{C2^h3C20ww*vl z$8`eeh@7$Y$UOQyI#x;M2dm0jvYseXqYGjH>O z+m~5hu2U!$5*Z&hHu>y-rj$xt?;qPao7(gZR%*#8*;$sa|CVZPk@069`7&_E2J%9SF>ker z(`=B>S(M9VJkQHKf%R(LvMeK}wblqB5JGVE>Q(0F=dsFFWT%bLq6Fk^zyhpxyG^6f zz;#`U#Uk_b^Xp+2c!&!e6yRR9ws%@R;46`UjxU^vR0QYw+Dv=bWUrtMKZNR}W{O2i9igD~!W z?+X-(Gw(ihoQYH42VmuwFHm^rT&4hlLb4!~W&GZaE5+D{We-1}fa z+`s%c>^}Qw+r{vNmhO;iJE*?6kYvPK>ud;_*h88C_JCN99U`$Tz2-e+8=M$lm z1gAs@rG0r60ZN}Z5fIOWq)rUVF3a~tn zul&q-U<@G>V^&Jx>^;QzH-0ogtP~lKKm9B`{cLK5vg>EB#^wv(JRStSH2e?sLM9N3 zYW?n%T9BejKiur83^G1<2C%#KSc-;!+&A#{y>1*i{HUsT}~`R zM~=j%ClF22Vm0foy`ceL`Fkvh6GEVcMKO{>SWZ2@ZWxJ;Z6K}e8#d1$d@PK>H?NTI zvm0677OZ>MrVvV@Ba9on(=;3Cm3yP+>rzUphmMEtapBg$9&6A3P=HGpMxt-%M%VtB zXrX`ZTXukLfLybNj^sB=DT;?54+Xe2S!LH8F`g@JQ6K)_y2*LiPs_#F+4J{2S3& zG|IO&lnW`PxaYYarv{_Sk&{%8oJ`&G{%`+0HlO{;x9Cj0o_ZQ1WuqqDiOufXnxyX| z#ese|+9NXm{O8dsLUi(8c0d1%H7G3IVeW^gV*OIBH1GTRcc~tIBGmScf5i}{oyJzz zQY7wO`Tb!9=3e}35LttmP^`qy+-bm&jMKCcmJA_uVm_1vcmqu!Gnb_Tc4VWZ!(Rn2T4_#kCM0);OYf1;g3e3Cm)<`AlT`}UAx2oO~GWXsT zw7np|>Fq6lB#a5IcQ0+J}p1~L;* z6lnM0CqwPNH#MLDA}thu@%GvYt)r2gW(#&wDsAG0nt%QcjaPo(O@eBJP;4x5{kfBC z*+i!`a_4U(BaXV!egP7T8m|d%3U0MT*B3UWZJ#NC(rP3lHp%5jeesd?G9_7n?)zZh z_Yp!MrNsCB4YwMzQh|+XzbAkKRHxIybzL0Cq19@o64s8%s4ewh5@AQn%Ddt(1&^~kuUV&ox(!I6J~?gu z5qJd{1M=PXuv_U;KnHMvRloy$akr|h|JU_D9ukVn64dAA00000NkvXXu0mjfXtaFf literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-v11/ic_menu_add.xml b/app/src/main/res/drawable-v11/ic_menu_add.xml new file mode 100644 index 0000000..fa5646a --- /dev/null +++ b/app/src/main/res/drawable-v11/ic_menu_add.xml @@ -0,0 +1,3 @@ + + \ No newline at end of file diff --git a/app/src/main/res/drawable-v11/ic_menu_allfriends.png b/app/src/main/res/drawable-v11/ic_menu_allfriends.png new file mode 100644 index 0000000000000000000000000000000000000000..04087ebc64d890bc4ca7529806ec6b0315c7ceba GIT binary patch literal 1501 zcmZ8fdrVVj6z^>*(9%kQHX_dOvgkUU7h4Hobt;qSEZSrS0=Zz+3mIDGxFFkuk5=H}+00|EkSYHITH^OZ_vK|z5= zqY;Tj1Og!_C}@3s9TK*L%jK4ol=SuWwYRr-baeFe^i)?@TUlAn%*;RzxRC$h!w1kH zA3uJanwqk;wS}X{j~{n+bv=9bthcxK`Sa)X_4O1AWefIy2Cza9#M;`rv9WP*aIm4F zVJm@7r%z8$12W)GPEOj`*jQLtz$uMJ^Yrv|b#>j$gm`mv^UIenhlYlRhljx!9UX0J zYujuJ8pee3rKP3W+1aM1CVzi_CSWM9vK-i znM?x%1O5H|z!nAvl4SD65^HN~0W%~d#M06d%FWEoHZ>dpRltYVusd);?Ck8|&Vc}m zqTouUQfRGEC`crdOeTXhd3kw39Ils2rGnAg+8PxV#bh$yy?dupsdzk|x3@RMAtDxw z$H&L@dOZZ8H3WeJba!!aNlZ+9|NcF&f~#|MbSx?=f;e0_VzF3YgT%zd07*a= z3Wczvv9Yn`<>mDBbT|TcVqzjQGczYA2k?`VlXG)(v$C?Xv$KJ)pP%0+fd5q5+S!el z`u1XE_=yerpTZkIX3VL5NR=ML^i|2YSe-_rMNv$G$I!B}GM(5h`nyXR(riA06YI)! z1e#T9MR|E;3Wb+)`O*pJb2oKbtyZH?Vw^`YkRKC8Nz$xL*-^7Im{yA^T^x%w>N0it zPdWfK#O=ARmEe!)(25M78*sLA-(%X+FC`T!oJd=$QmKpW+&zds zaivl~SqtVL7WxjHj(2ikd$8S`8}C0wI2L=h`&bi5R|@4CYsQ=vj%dRzkw*xk`Sfl4 z?rvtu^p4#-Zru`}nSPtVJsf^K7)9QgF;05hAN&2cSBbpztF83P;=2|86nlFI=SOmr zR{k_kZh93KxGPy3CkXPn% zo$Pr2dwq9%?K|k=!SZt(VQ-^M+1VzXXD0|k!mmfDLrX(n^!?gDXd)V&4|L#W%?%dh zB4sF@9wP4V|AJLi>oiG=rT!2|4NSq}4he*JtD0(z)xS_JM>&3v;@vKKE-vyIi+@Lj zX?;l)w+J-ZgIdeWT%j0kOBA-tXtTY_{q%(;z3~FsiMa6g&jVLj(GSk0`GmBvSteZ^@jXj<;@lBgZR3(xT){m(8c=g%wmdt^XlzAp| zX)I%Ayyr>F&XY3hE)jNlb@fScOF-%zja{|tNLfH<>f-CP)fQHx;s(oTw=Cr31<)O%AF~9LgAI*9aN`KJg#tGGcV-l{p}lX NJvb8+Ra2qP z9jhz0wrd4dcl*P&T~>D8In;FR?Y5ncGP}b%y>0e1>$}T)@B7~8z0Z3uzjJ9RDl(Bp zL=c3WsFtULNIjA|fIr5($UH0Y54#%G=u;9Je>( z>gq}+lMlZZaHv!&kfJCG@$BqusZ^>`sgz1(PEHPqM1n$x01O%ck+ZY2ySqE|1V1P! zh(e(N08&|5Sul2NY-~(SOnQ2{qn62JLN}RA2J-+R)Z+1Y3;INUqd_(yAt5?C z+7W^dxw*Me2n`_%L9JE`EKm+U+yS-*2QaW8JmqpZ_&`b|9-JDUFb07@06Y$db7+VI zH7pVt83|Lt6U4{I2bKj#uh;8zI-}9(;^G1es?};ZDa7G2a3wek6!LgH0K=hRFp)^) z;o$)h-~uGf0Bz}XI+P?OB>}0QpC2G0%jI%gTU#Mwv)O=`&*uXM1kMEji^T%}Biz$5 z2I%_wdQVSJZ~zSAa2)$O3PC^pe7O|NR84wH23Qn*odNT<<@md3-roMd%}D;MR~Inb zrgu)iU-eO2tNHv%6e(TaT3cT##ZnGcRUoANmZ9Eq-?FDW+q=&+wB{c-ZTbR@{)01h zAF6PM7gK)h^9%QPYPeP%M!7m9?tHnq_2fM?W&KWSX;D#$06qKHN-VDJ*MtN9AG}?UOgGQ-7ZAgvrG>@i36GYwg z_+HWJM7cCmGFx28Aut9S&Ry&=U2cEtutaiqvaW+x=&UAoGwb%!(611GVJAka^eu9u za)KVT>5P)AjV*(gBkq)oT}5({l)i{_i_m0>?Yw}Xz|V$f8m>$^je2#9n9OlT&vf^5|-{Le%rGK%9(m$hwH`iY&5R0|pcW#Z1PTU^18LDbdJ7Kwjo;jLsjHX&_ zaP6n3hMZ!bjN3;91QM}n3N4eV%NX|-{%ElWaAR7$J}Ih1SR6KXJUpBqi~imu@Am4P zyOdFA94TL8_TYklQ7x2eUG*V3&^bquZunZOc zGS9HojOpsgW*U#NXC1gUc3DsGkFV^=6XCO_*F|li0mSRy&#$k9Qt_l0OQ)76%Z1*$ wl~Iw80*WU#?fp8{-znGgTvMNwbV;#xB6336sMfHwg9l$>q9R3pQ&wpF51ti$VE_OC literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-v11/ic_menu_close_clear_cancel.xml b/app/src/main/res/drawable-v11/ic_menu_close_clear_cancel.xml new file mode 100644 index 0000000..c4a0d9b --- /dev/null +++ b/app/src/main/res/drawable-v11/ic_menu_close_clear_cancel.xml @@ -0,0 +1,3 @@ + + \ No newline at end of file diff --git a/app/src/main/res/drawable-v11/ic_menu_copy.png b/app/src/main/res/drawable-v11/ic_menu_copy.png new file mode 100644 index 0000000000000000000000000000000000000000..0cbc690f823ea4ada772e54c11e5a1bd098ea987 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyoB=)|uK)l4ZvX@CfZfM|g3KjB ze!&d?88U+`*8sVWo-U3d7N?UFBup9vc_%Dx;N%ntIdG&Ulrb*5Bc$QD?3G}KZFBg- y44fiNwl=x#OHdIB=6;3L8g%r z1hEL)$Bl!()B0yZf}Pt^Ifx*{(imPs2&npHV`D?1P(Ewxe@9100)YSmgTXj>@L*9< zkwhY4u~>T0z`!6jHny{~b7f`a)92OE(E;`@E-vow?may{A3uJClMf$0y#If>y1K%t zlao_qWF&{fnVXwiTU!I0nVFg0yLZEpkB<+4B+@!bh~MAe555Bf1L^7MOG`_Oi;HP# zX@i42 z00IIGVTY2Zr>9XA1$qDe{V6FaYPA|GS&j*Z_!`nc2j|L{?T73=8_Hw}iRO&dyFvO+9+_2r|M<-n@AOYFk^INF<_Cso?1A z>l+#x3T=n++1uNjn3!zawhh<@2M6mTLqJ1AL;W4d$jHDj%-Gm?odkmDL8ugHg9<$X zJ~SE)f`AK=NQ9w)0Q~jFKoXb(UMcwd96-P2#YM#<1R{Z8=H%s1+LC-$qNpb!jsl4q z$5ah!8gfYu4MiJDb|6TFx}iZ`K^J3)VJ6<7tW~RPl(@T8c|xqwh?TW$LISQhUXF{E z>UaVv2Ui}e5-Z6CIEwO7yujo%j+f_DoX)_-Xni>$M1_?q#h7Yy879k9pz?fq8A6Cw zHKu_40{RrcKwZghDIIMr&J}`dYc%%C3%Lt<2z4xkI|` zUTwOO3LTrlVzSvx)=*W|^{ZanulGIwwRoAPB3B+5nUrywZnR#x+Vrh%toN#A=b`8+ zPOw>~HZZ2NBk;b9hassb2n{f|uda@yw)5ztqaIXVq^5#Z;~WcYRaX~P*2tT63Q-kkn{i+v9wg6%Uqw4F6SG@?I8U+}x{mR{QHRK_oN zbZ$OOc6!OI6z}DRhH$Ic#p>%;8)?LR0q>|oO0n?HnLPr5>`dT*(YWeQU zMO&056lSESS258N+m@Ft{qLoiG39|WZ>)yFsAl96nL87Qbfw{T-g0?3i}XS_QZ!G$ z%Ra~Y{(?jL@EoOyde_?Lc0PG>gtBTOc^Vo1^q$8J%E%-+KW98<^JKs#|8Cc3x9Q!5 zuGHf5(wSMs!^`#a|A=NX#gBI!e(D-ltK)3qqP|R?#>+OFG$G4+AljFG&1C?(#-=s8LzrlH^ep=L8hI`fH$9Yv&W}J^#Ds`RVB|%Dxo8bPy0l$V1n{OHXEge6}^J zq&n!A-V>@U&$Fssr~dupt(jf%a&@)#*1apb + \ No newline at end of file diff --git a/app/src/main/res/drawable-v11/ic_menu_filter.xml b/app/src/main/res/drawable-v11/ic_menu_filter.xml new file mode 100644 index 0000000..8e69ac8 --- /dev/null +++ b/app/src/main/res/drawable-v11/ic_menu_filter.xml @@ -0,0 +1,3 @@ + + \ No newline at end of file diff --git a/app/src/main/res/drawable-v11/ic_menu_help.xml b/app/src/main/res/drawable-v11/ic_menu_help.xml new file mode 100644 index 0000000..c39c3ab --- /dev/null +++ b/app/src/main/res/drawable-v11/ic_menu_help.xml @@ -0,0 +1,3 @@ + + \ No newline at end of file diff --git a/app/src/main/res/drawable-v11/ic_menu_preferences.xml b/app/src/main/res/drawable-v11/ic_menu_preferences.xml new file mode 100644 index 0000000..27f6a8f --- /dev/null +++ b/app/src/main/res/drawable-v11/ic_menu_preferences.xml @@ -0,0 +1,3 @@ + + \ No newline at end of file diff --git a/app/src/main/res/drawable-v11/ic_menu_refresh.png b/app/src/main/res/drawable-v11/ic_menu_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..1d4b46a3b6b703bc51fad2e68d713e758e18dab1 GIT binary patch literal 1085 zcmV-D1j74?P)kdg000C8Nkl zTWnNS6o$XG&pC6aLp!Anm|kc~LcjoGxdg+Dt=xnNn#hylXl5D-j23$zsMP#8OOro+sfy?iLr>5WL(FDF@hpMPEdf59Cd z=eAx;z*x+1)2*K0yj4IE^nZJD1P+oYF&P8l3RclD+^svNXZ68bTuC((aLCe2kIhgP zS-WcC9*2%Ned7Tbv7nI&*?TKzFPJJ7wkHF%nikIY+}q5B4qV-XWg=gmTr&K_?j0dbPg+po z^)2s2oZ=Pt;ocp4cJK60PZ;pE<^J_6zML2qaa>28ph-jtGr9%_ADUjMt1aSe%pPdv z@MD5WSpva1VeggxYck;H$rV(7OP2coZzKdIFzNY2cQ@w0cUK&a8Z|pI1wpBr8O87M+Ir{)M~kBw0hR!@ zgb8z=p21EGMNn4bpeaqJ$w6_5HaCOC0Mi#e(c-3qAGLk{>1vgsE&z0TC%t{%Kz_5m z1?eWPjlL1w;00o9jFhCHz^N_!-?9`qzLl+l4x{o7>F^;GHxzqqCZl#FKvH*=gw06q z$LP11Q2i_eT@-qSa!F}v3bI_@qYexP7ncxW;zL8zZ-DxxjrUm0p&Xr%lHqOCpX5jU zrq}{w0|9Z$Tx7D>S?JtF7e-JU3gnufE2ntL+k1|)AgaUJSWqM~|LX>Hry||N$NIBOUjxO0U zYqN`gH1PH*+MqC659Y`*C6g4SD6aa>i~T1r1?md58co(d*!c3q#TLKQd#dN^Uiy*z zs8Qy3LCOB3AZk$mlgNqre=W?}gfm-a_)^5Q2OjVFV>hQu^|=JV2gvmL$W^+WCaU~q zZT5kps+h~(hsA9t(%l}sv6WPPf&V@+Li`3$!TLm!>`%RuXe^GBk;4r);! zp>jSOV{E1csjnViUA@5bFkFe&^}@WC2sprV9}K>$3t z + \ No newline at end of file diff --git a/app/src/main/res/drawable-v11/ic_menu_search.png b/app/src/main/res/drawable-v11/ic_menu_search.png new file mode 100644 index 0000000000000000000000000000000000000000..05017ca0e0c8b15ea1d50b869150f8f210f534a2 GIT binary patch literal 1580 zcmZ8gc}&xH6#xB7!BWa0$EYR19LFj*g$&|gLo5syEQd_cRw%Vap(AzyEFqiR0xgqT z!1mW)%cxUOKuKWW7@(MJQY;SQVj`2snFvKhaCRIDd!+yEC4GJG^N#Pkezi%gudK;5 zGJ+u1@o~%)`2TqCM=}G>ye@f&AcV!Fgwz;NP2}k4XlAx&{U6!c*_rULu&~0y!ltGs zxm=!?m*?l_2cASCkw75q-@jj@(SRBn8agmAu)Djvv$F%dt*y<|(-ZKhs3;c~7ZB3Z z(>FFYHa9nAGFfC~q=$!xmzNil$!uw90sp0?rReBraEptJ0}l9y4d3l*mr-KRvrm?ZH_4Rc?Og@mRv$GRSnVFfuSuB=VECx3q5{U$e zN~MB=K>%uOY&4}ZH#di-0Evl-5s5?~I5{~1@9*!QpP#p|uz+xA84&2`{rmSyrP9^a z71Y7O!I_yE)2yge>ekj4j^ls>H8(eJZ*RM~xq%E%L*q~h$QcFJ8Q`x3>osW@2q^edy33qtST({(V49W9M)FMdYxw-N2 zaXz09#S9G%b#!#V#$h0^FWB|z)2AUn;24G_CnrNVbhNOr0857pVYAurw28nOgprXE zcn+2h+dO&lB#hVJ-=9XK!C)Z}99mmjVLlKZ8ygE#g=!&ZUtb@9LZOgCp+I<7R~KZv zd-pE50l~WvXlrW=H#RXb0ck;%N~O>a5L_M92Hn9t!36sn@7?5p$3{U4>o|fEP}I>s zGQ!6Wab;J?6^bh*DOC6(m^HXsqruA=2ol?bs}z;uqG}AsB_Rl1imNI=B3rp6)na(L zi`iMVssahB#ZMsa(k8fv1ZA1S7s_HA6s28~`=N3EXwIXPmMu`zoRD@$!MG6gyEAT76B8{f; z7$GeazH1aA3?%d1Eo3p%VSaP8< zf@s>w^WXAvvjcLnas+v2glAW0bi?Jjl?^@84m>zX`?*I&bz8F{tirY(y?3#A=M^OZ zt*a|LLV0kIq0ORaWbsJ#GHD&J#^O63l{ddI=TKTslIdiPYWX9b%wq0(2%n!VsQ#I* z%hEm82bQW13@4?ha#AGMN^7;9gV(wxTH5cm+1%S#I^IPcPf82?YeF|e{D*yb;>a<^ zV}JT(K3{h(Pq@0s=e{yz^KULMtt_8a4%ZmQYa6^1vA@HAEX&%e!+N~Oja)9Dc_O$v z>-FGfgR>v!m!i=p0)1L%dcRN6JK9=-r&BOR`0_S8uqSK2m5e=R_Zjk@-}4ZEdi1cw zYk(qNog4@}zgt#uquQn`oUwWCb#SUv9i?g{@!7M=pCbMcZH-Olzbx|!2;wj=2v6 zEdimusMt99);aKi=(?yylGZgn_`|<$_79$Y^Zmx++R|I+seTe`CUx!Ib8)U92XWlN UjvCqxEqfOeAH!naiRPC72WU@Zg#Z8m literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-v11/ic_menu_stop.png b/app/src/main/res/drawable-v11/ic_menu_stop.png new file mode 100644 index 0000000000000000000000000000000000000000..70e856256c159a1b8949cd3f119741095d100f5c GIT binary patch literal 794 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabRA=0U=$4S32_B-A%LBoU0q$Bk&zK5 zz`(}F_W%EXAU7x|XyU|)9UUEAU0rc;ale2628#dt_wUc2KR^bM3uFMffB*gkvibS> z^YZe}pFjWp{d=HZh~izlb^%RJNlE$n^CwWy+1Yv9wrv6e0uc7+&!2&e)YMd4Y@q~le=cmVbE-4Xqh)>PGxH|1CN;Kx(}K9 zz&MEYba4!^IK6gqWO$Qh2B`@65E~rQk$e*CNnd$Ax3B9{SO`@G9x}VpdqW=17Rvt6QEm_gW?_S^D z{q}Oi+bw5%nH!g_j`;E8kJGmIFK2Dt_)CDNP0O#yCja+Ch6DS4Zg%65cwrk;Qk9mH z-{ET*wy}vvoGaHXK7^zDr_b$=3_6MtYwLNgX){d!Z*MXC dxLCFA#r@KMUA6nJzy1!2S5H?zmvv4FO#mpwR(${f literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-v11/ic_menu_userlist.xml b/app/src/main/res/drawable-v11/ic_menu_userlist.xml new file mode 100644 index 0000000..fd82418 --- /dev/null +++ b/app/src/main/res/drawable-v11/ic_menu_userlist.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-v14/andchat.xml b/app/src/main/res/drawable-v14/andchat.xml new file mode 100644 index 0000000..75c20e4 --- /dev/null +++ b/app/src/main/res/drawable-v14/andchat.xml @@ -0,0 +1,3 @@ + + \ No newline at end of file diff --git a/app/src/main/res/drawable-xhdpi-v11/andchat_notif.png b/app/src/main/res/drawable-xhdpi-v11/andchat_notif.png new file mode 100644 index 0000000000000000000000000000000000000000..2fd339ab8ac870d78737e25633ba6116058082cb GIT binary patch literal 2180 zcmbVMc{rQd9*$jN-(oF7Vqas8C6gsA^W8(=y3kwSj2Gi8kq@<(-gTYKqO*1kwfJ!SX zD~gJWf`Wp82!p|BXlPJSP%tquNl#B79UblL>;&wLjg7;@!;6ZF;BYt;3I)9ZwdLgG z1Ox;Caamc}`uchq85u`M$F#IGX=!P|6g2PP;4m^WA|)lo&(9C`uArbmQc@DA1SGPz zx2MzTU@L=zgT=+g!G?;7i2)*Zc6NMxd_X0j49Es(rlzI>QgwB8pl8rOjYb3K0muS$ z=;-JG&G7Q_g68w{^MRf~0YDQ_16lz+ffq=3vKK%EAS|!|Fpv)9Ke7L>Cy>$Z;jT3} z#H*M6i2e{B0Z|!6B_VkeLI{=OZYm5vUAn;eYb@OK5EL;k`H9Ot`h0M?KUIs(9f4H; zJ@)5h6@od(wtY^}AM5A-us`hKpPRTR;1knd0e>a{#^X0I_c?#MI4AgH%O~gY+p&8e zEF6y8%+V~~@cP`r0sE#AzfVj`sxLxI2O`8oh(RFyw+SvzBsW%h#XhwxS(c?1QPSvQ z^@~PIy9UgO8SER}?_&}a*%k0?Lz(?#t;O;hs}wfcOg4S-bqG1Tda|B=*CHzv7nN5r zzgbl=#huv2{?<$Ra0Bbmx5!DWeQ!?{#I3Bz>%j8iCC)gfFI90XHH`BYw{AA0xHTwF zC7e=%U!l?_n3cB-dv1-QN1`qmo%0V&5g6VEXH`G&7BzKp^6IpY{-fTFy&KAU3CNb# z)^DNy0Ri-wfaK(4FR#(Jld)5+;o$G>iJu=${(&5C`0&0glQF;0b|gMh^N+#7!F%`a zt*%CwKWJ`_8o1Wo-Cd|mCbMTP}{moVEC+)H{;gNudM|aFIiChT1f0pddKw} zu4#*h60&|c6x+6E_A>HHFQtW~Br4c6aTZ-Q3eTU6q0e;ptf%B=r^NWu+OF$`cK31` zj1=|z;fkJS1^!Kw*n^>_J3r3g5=*U;m{6lFV&#;faBofc)2_+r%}%KWCo}WhG&>^( z^27R2+`J&fwRPhaw5{w+YT=+h^f1HrQg{2$5Y?u31qsx~HXAe>Ui?yZzR;LFCS#eT&bQOD;n1!ud+FB~{$NxwquB;pPr$Z6nh~pc5DKuZs=2GX# zcL@}P=T4%h^oJu#{J2VTkI5^HXz4Gk1Vv_!RI$q-(g`y+zKQaRPnLXLUp%q}$)prA zL$F#*$hV%+%gi#~3s%=zgKs9*mV$zp0=7KGN(0ov2bq} zmcaL4tHCc8v+^IlbHmF(9_8Y&wJP#CR-Qkc$(yzwQXd{I;x)(f+m)7xT$2*lj$MAo zuYf9(SSGmM6~Llk3Dt!*8>J)?xN9SpG{LP_Rz`b4R?y7XF8dpyO`$yOxAzn_8~W_N zU)9!@E|JEHLAO16Zq-+Ur0LaE)xrgy{5>s4b7%UVqMF!#M6tR@inZg;Wg9b1*ygN( z>rwgZ(C=~=RlW}y9DcApf46k}EUJMWb19F^#rB^SJx6FN@kH)!SB(@P(_gn$3t(jj ziC2a+E(q?J=vLHKRaMDdEk1v{oHhAY0sisLnv5D>`c3zXD^lapd5O2=u+8g%suH<{ zU5*zY3)k`NT#c6;A5*BR$Ehsv^+ zgg$>C{XXsztL|f@I22 kjxC!~%pE&8ba*e}@zUm>ue|0fz{Lz9;D|2YI7ejt4(|ipZvX%Q literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi-v11/andchat_notif_err.png b/app/src/main/res/drawable-xhdpi-v11/andchat_notif_err.png new file mode 100644 index 0000000000000000000000000000000000000000..1292c91f360707e02e370d307b2da5244989f845 GIT binary patch literal 1731 zcmV;!20ZzRP)&NcS?#%R~syIx)rl%h@vkSPT-s$SYB!0s6Q9j{Dxa^rHpUPH zBi7f~+3tU~`q0Pp2ZP~aJn9RjB)wjb(P%{54$NzHDW#Lp)>?!R z2qCz3?HZe#n|OW?i(CYj0AB$T=!9WN(C;%G4(WEgY;JDOC2*SpZC0|HSb-$ldbx~V~4Q|3lqYh*|^VZgRztQ=^@L9k1Vw+ zP!($`A=JbH7r6L)gKWLq0wSgG3hQaDIT_h3Q~9S7PCThQ3J}^qNsTca-^<%98c496s)TF@a z0z7V3Soh&kn9W~OrWQJLaKN_uXcq;(ALm*4on8l7vgE1I0As~I@|h`46!Ypz4phO& zRRLoRNA`xAmw&E=ljmttrjY}6i==)&%~#U7ZwzvH{Mj2nSH!Q@ zn&*v|y?oOfrwMKGzzsqzA-rhmlef3{*-lj;%Hi`;ck)zO_jp5Ga-^#`eW^Jott#036N+>KbZVJ6qB^#;*UkSd;E*C6G@y90%zM7bKjl_-FXgOnaO?R!e zJR9YUe(Fv0W;u+q*If~M%Eh|6(}rv`FZX86*R|H1iF50Iq2$yvC&HZg9}A7OVkQGQ zali#SRbv%K894#&cYS0jLVvH|?mzZ4)_TtCn+C7f%7He1SZjGCj5GYd<3(88$%0(E zv(Fhnd+AL%EtpHi=2Xy>VN|xnQ}=eq_X`U?7n3P))Civ08BOLb*0Rb%cJEs;5J#EU z`G*?2W|w@cu^wpK1!D|v486u+bk-`)M$KKlpX=Vl_~m%OM_%)8%)|kg?!*Cy;KqV# zt~g+7ii`_O<5VJDaxK*SBJ5@b%1?UXqyWb7YUp#0F$Z3j1O6_}gz$YS0O6d0*2aM* z{HN!3ubUCn7{hXuCu1MVhkigxL)1+UGbGW?CXr?BY3-6|Oz$Kw8 zj?dZL26sG>DVEMZt@94VWppK3T}#*lA#rj1P!MJQ{|Yf9DYE<~efAlvvO4Dzsj*hh z-2ko{t6AYweD+wB!{ZY1geOU#IWKabe;fA(a9f+R5khUAC>?*dfd4DfV9aD6^x*>j zH>_bK#YE2Usz4JLD%&c>V!g>5{Ia9@mDw97aNcx>;hu!EW*e*}@N!@8+WDK2#MCNK zr^K#m&R?_;+^I;d=V{wJC}3tHu}dyL>lYtwU#2uEV67eZXoL`Gt%>7!->t^BRA8Uh zx2XaK2%{)sI2gV`#kZBo#a1vH?CkCiY?JVHL8U3!9JKI4cvutn zfh{0ZzzFza<@mXG!L9)9jtu76fgueiZRATl#H%>*!9HOGk=3#O#Baw2Q~3=<+6v> z5RG0mMn)re5Q*rD3@|7%gVXd(chw%~p6;H0)$rJ*lFn3h)l~n!UwywvRX4eCc?JLo z016;sU8;3&GZhY?2tcA-oy zuF68g(2LTjvYtpRmFLT3WE6`EWZ4Vw&>_dejgPBBb`n-x6k5BHGRClDN4`AyqeqEA zzdtZgaDhxjQYVl?VKyMD{U`vtcWW*Hbw2w@Cf&kISXxRzl9-SY3sFeK3q=7qa>Sv> z z;{Y(m(Aenk|J5r6jL9Ix>w$WD^zxYZ@6}lThdo=!2Erz>{k)y8*nPWpIUeZA6BVXu zdiZOaCi?q}t`(v%3?nukh*3zu=i8d@?w-c=>vNHNg~7q^7#tjr9P{?=XHUDUtFs*R zqWB*ii4jjBx7Igg&lp3~AWu{kh3xv=oQiw*YCRLSw0P-p=T41JxW2v;+S*nql}^ie z^M(qi60sDrwOg6D1Ob?wY{r!_f?hT4F8yH{<#Zki@eopM&-<44suX764H zz~jeCRr3qmfCzPh+KN&v8z%tF&(}bbyb-#u&kaDWYW}djgOClx*$3wwTemvG-M*dh zx!V;0hAT&+KEXtGY>{r%&V?#zRH=z$$FjcrZtb?TFq}BC;Co*sR93u_;~pm_sL$v-IvfDEZqcd^xkT*Fw*n#w zoxAP!IJ2`#8JOMQ)8q6%dnQ-4Mcoi1cDGwvy!nl$Ir)t}_V{sUgTvUB(n{c{Z`}Mm#hyJ|z&VGmOI4rzRcXWs1rP=zmy1q| z4TE5IR#}&0djSBfDkB!j<*R-15%)4B3IOMPs2}Z{Z1%!I_Z<@C`tb z0$2v{xv}%tp`w8cGvmWuM3Q;srxO3a);Tyc$&WwxerRkz@VE8Jfle-5o}mC50Bi%$ z1)v?k769@l``E(-uw)7T0l+5!i`42^w7vw%0I0Rz!AhG90JG?>0r+k)#~>TI%la?M YzkSB77ExwK0000007*qoM6N<$f{*4k + \ No newline at end of file diff --git a/app/src/main/res/drawable/action_item_btn.xml b/app/src/main/res/drawable/action_item_btn.xml new file mode 100644 index 0000000..967c69c --- /dev/null +++ b/app/src/main/res/drawable/action_item_btn.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/action_item_selected.9.png b/app/src/main/res/drawable/action_item_selected.9.png new file mode 100644 index 0000000000000000000000000000000000000000..de41f40e1cdfb15a1c8221bba872eb1995917df9 GIT binary patch literal 909 zcmV;819JR{P)#p6ClA@McT2?HWsOUz8X;EoK?QXYS!NpC9PDPVYP!dE!MK@Et zXJ(q&Ad}6M>1vr>aMkfTh@f?Zd+Y4Xl z|AHY`2Ip-BI@Q$zj{sj`giBKh=Z%G5Z2sxVmL3d8egkZofbkTdKLY3!f~(!S-Z$+f+6PDVKfb>Jwg-Q+p8sR< zzA=u>S`{q@pI7c?-L*0BXk*EQ1{bW@$-19K!&4taCN%iqcGmUuFTAUZCbN|P$p!Ck zV_lDT;$7`-GE3PuF=)QKiM@LC2i`v0PG-KhnG32Tnfu{Zym|6FnMo7H2RAVHgH3qz zcng_Hy`Bq}u4OMPH{$i9C^A#&S}|x)g)vvfI`lkTPi9nwalw*R%yoYada5GGj3ukM zpmI6uytf+N|AmnmlqwLGrYo4o1@l8#N69?6OXrj6@W zN*@7x4vjT?1nMsg7lSoP0dWoIhQgjTjHESrC~A_1xP3v@QJGwQOoq1PA;Lr)@LjAK z0Vqq9;Z}l7^Vvw8`mbNrO@%)UDKgkH`mg5HV5IHw^CZVg<(~yl?(h$ekB~Mb?UJHA z(GR*y{=yvJH&d!V>dyG#8XE*floSb((%wV+$LI!$EONm>MR@2B)#0H7@eP*n&;fG8g# literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/actionbar_back_indicator.png b/app/src/main/res/drawable/actionbar_back_indicator.png new file mode 100644 index 0000000000000000000000000000000000000000..f2d9d96b113f00cbcc0f35c1e0b1c2bfe6966ec7 GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^79h;Q3?%1AoYnzS_5nU2u0Yz@*!VxWp!4=2A)pbW zB|(0{3=C{sQHk*h=?09M8Tl5eX(_p8<_2@E3V{lmJY5_^JdVG;?9JDpz~dSy+WL$2 z=->5Mn*!PWYGfsRtDdXts_1sbhu*77Oe#&C=bsX8er@TRrQ6;x-1uTr;PRNoX5vCs zd8ZGbg(~GXt&( + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/actionbar_btn.xml b/app/src/main/res/drawable/actionbar_btn.xml new file mode 100644 index 0000000..d2a21f5 --- /dev/null +++ b/app/src/main/res/drawable/actionbar_btn.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/actionbar_btn_normal.xml b/app/src/main/res/drawable/actionbar_btn_normal.xml new file mode 100644 index 0000000..1f4107b --- /dev/null +++ b/app/src/main/res/drawable/actionbar_btn_normal.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/actionbar_btn_pressed.xml b/app/src/main/res/drawable/actionbar_btn_pressed.xml new file mode 100644 index 0000000..711875a --- /dev/null +++ b/app/src/main/res/drawable/actionbar_btn_pressed.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/andchat.png b/app/src/main/res/drawable/andchat.png new file mode 100644 index 0000000000000000000000000000000000000000..a731d6479196aa5a3f4651820217cecf33aeada0 GIT binary patch literal 1611 zcmV-R2DJH!P)(SHmNakTQpol^sSxFK>Hvu<6$wn6;q69<~aqUvvDkx^}Lfn~!Zv_ox zp{{iy_=3dXL@;VkUX$rZz3;s)s=BATr@E`EXOsz~pqQ@vs5<{S=RfD%dq)^!xScP_ zZGPSM0POsOKmb@k188Qqy$gUUAOt+X2NFZ-`*s1KdEgP?6!63@Qg#_q65QVzYZfA^pJ0OL63^5x5{ zt*s$^0kDwCNf7`Gu);9p)~#CvLBPVo0_}FYlGdwOpvrT;?dsL5v|6ovyUYg_yFfVt zKq*BK1jKPnyWOtsE|Y|uByf@Y6j)qL0xO`ssQF2es}w-l3(EjRDx&p#7X++)&}4Z- zBZNRHMQ6XywbMONFn^|rtDUjmEDEWWEif%fwbpbU4`u`ikf9tJ9j9fYC2&`*S~+1V4paru*JA&-TGlWlaDE%^ z_vgaY|1FRKr8%Ii=GwLe2Fb?qh-Hi+71n#ofCZu>=*;y7bG!#K0!srvbY^-81a@HI z8t4CUp-~V@DgHXSj(0+VE5HTpRLjwExN_XztmqYxq~uaB!hn+r?})V2vPD|42*3b3U4|gC1|vY56qGQfg4a%DN~xhraT2-qf4qm}3x(F2 z&f$=aHw@UY@}k7Ol72!f&5gHXl7nFV0xPd&pEh85a;)WxN|GJP1Npld&0xaJ|9dgm z3LHUm)urh-1`1g_l0XFZ?}lc(FaJ%*((<-Ub zc4=^aDz0;?7Lc_#kPne%Ahg!R4{8t+*%}VB!BU*^L4fQ~IR{J?g+_%gBJntXjgAR0 z;Cwq`nI)AH*MRj0wblhwMWHJ0qqW9!0uo07sUPcofHI(=yVuLcL-4Q$B|$^7tns`6 z4A`E970J?adPg~s@4t4cOYme`p!KUvq#!&gxb}1|j4GM-C5FyB7K8>u!`!P8b3Zs+ z*2Y!IY*)zv<6KBYq$ zs0_2K?qF_Y$EnLGa6i|$>+Z0i)GOO}%!Rhx^FU~@ejWaBGOHmJpbVm8rrx#qPl~yr z9B?E9aA7zH#P=u&EKp$mEouRnItul*UgkoBIBzAHn+U9*NBSEEf;6;>kXnnQ9U*bq zvQKMGGN)4iPYklX$suD5(P1$FVD;pX&sSMz7wyYdvcNd)7XgWulN5jj_Ug#ISp$JU zUeXvNONAcSR(m~Ag}nWK=?k2%6-a@M<**{I8|?E6>yklh#+K=mHqo|4;xZQkm}xmQ zKCw5)vDr8OzO1!px+4JUy3n|7z@nAacHO4(iY!SI;y5OXqRONjN4~NXo3h=&Q4z-h z(11>o1kdy6^?F26H1Q~D(zaxkv30balW{D780dv2#P9g1MAZ_g4xp)oPo)j}2Yf{U z0^qFojCVqY67iMD9p+4@-5n8JXJ;~}0r)ICYNhCu(gqfR6WQ=bv*}_N9J40CN5JdA z4TFh_0En!zZvwN~sim_E04N~JP9}XI>K}BAJOAu)2f+5Oe*wvhU(6tyN?!l~002ov JPDHLkV1hoP0CWHV literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/andchat_launcher_icon_ics.png b/app/src/main/res/drawable/andchat_launcher_icon_ics.png new file mode 100644 index 0000000000000000000000000000000000000000..91ba77506014dc062985ee1254e1fbe6afdf5d1d GIT binary patch literal 2925 zcmV-z3zGDSP)002t}1^@s6I8J)%000X#Nkl>&DTP*TXqvQ*_-RW-k$@^7HHfH+5HFR2S_uKFB6ulz zL4tw=JRl)~gphbBBvLCHP$kr`O(LL5Hc59CNb|Evlikg3c6N3%GdnZ3@4Y;%J!|{g zGrqQG6D5``&v<<2+Mmz)?sv|yFWG)%0`{``q)Gq~0E%a8uXpRh9V_!}xqXo407?O% z0!RT!TWiWXM!5&TVgO741_0e!4FJ^oZ3!$3s1$$i3}I+wBkf-FvQn$F=$oN-3({{ZCJ9 zd;XifrR>3h>&n{>*EDVSN(1O=Y>?U= z=iTSs*6VffQVF$lCqZ9$`Sn!c{)zl7dEatJ-6rldfP85^-`jWo1iHu1fH4M5(?AH3 zwifRRCIyc7;uvEBP=3eR`@F07zv}fmip3&khTq2Q-~Nblf$y=nI}JdwEh_~eM^o5j zPF=y=+#IsmECvS$kxr+5t;_Dj2`1;f`Q7`w^Lv!fe*08a4P`lg`@AkoDaGXEB&MdO z008Og0zl9YpxXkA*qo&S$PfnAWDM166}4Io^?DtHgM-j@U5a~xtVGtm{60G`QU;uM z$4pL6Vq#)hbAl+q(!kbb4S-Fs6aX3l6hcVz&edu)%*@PSVPQcUq@?&Ls^!Q4$2mu_ zSQO5kSh(0aQ*)^EK;e122|Vh)xR&RMUWg_;(ygR5#RVrSfI*Aa3Zx{ts1txCZB^|S zEv_}iC2+r?+{v4*w3XitZ6!ckZNmVjwF0V@MoPkhIOm|0!ZgihU$)dxRTYY&_>P8* zv1S`5z>1>ywn@smv?yGal*>^{VHgH#_iuIg*H}dNjf;XPwgEK^1C8|$0hz1|tkk6u zXqpB^QKYOYY{=Hu4U<&h-v6YOqE1p+wg0EC{;S8{0{iPnf*5sLV*mGl<7(3wA4B6; zCj%9F64n)(;5z{rV+>~R8li7v^aNC&(8X?JWP61+wg0@^%pu8IRbUAPI7(gMjn^{FSt^vvvp zZycEh7!>$lu-&HXk*7s~Dvp6y=6-!2S%S0_p#;Pc#z-p0u%q!=Rwyet8w{2C-kK9Mz zgKEizs4f^wXT>G(c6W|326f{nMDCfm;H%(mo+BF`6v=(^64a14Hx9|iwyY?CHM!@> z=fxAM&I75GzY9`|^w!UbCpmK)H%+61m5`b{-02&~@FHvv~iINbYBkfjPi+ zg48asPL#7`0kiKe-~B3b&wO3F(ph-zx6*CaeD{~W`)?gRjQX2zEV-#fU>z&#AOqO4 z3v%54#Tq>wG9>ZQFp4z^zv0eU;;8sY;Z6`q#|cR9G|<9cOQ0Jv#+tq!wlkYl8%KVJ z;@|%u9)qR-N^koD`u6_7)!*!|zXy8lBR8>IHp&@CX8SG-y!4u@P4Q1}pnmEfzBiee zIy4DYA1T~njDbj4lXt7CDl$|Drww1NWSS<_bz)kEUKl}&Qx_S#LL;9=A3XuBI`0C* zJ0gY+tP@l4GQio^)#`-2!jjHSL!}1PR7xoK+uMv!T85WyH2d?OgKR(@do&E2qV;n} zzb)q+G@TWM<>H6OTk;KK47n%Vd9V7VQ4mH!G|eSGql7$RY7o++VVv}bEh~6IOe5FN z9)sd3OgKXv)-xcA(XoGZq^=mbU=hWtTA4Xx4C=ZqB415kg&JTHj4>#yH;AFpx!q2f-nkB)aFfSB|V{Ee0l!lcGaYz{Eiuk&h8cIz+bXhFl~`Ii%$5)WZE+qm`*-@f zEn^JX-TTr1wU=G}TzlnNkXkvgnv>c2RSbRSC$2Uh|7Z{Bwex|bY*&Y53ont~u$^}D zc4U*OqA0#vDM(n7TDe(N@EbI`KDkW{jfzuHeAIrsU|NRM!)Ho)^uW_EJ;N9SPh|vQ zxp4GQ^LS^ikPy<$U-j+!hC9S5-T)SFHA5pmaH1&o=&>PqsCQjtLLBrCipu@`>A?1k zG4Splp-tt?vA|kj9FP(Vcj9h2=TO()FZ5wdTxdoL&WpF*SQ!)_8mW#P4VAZw3Rp)t zOGdje#*o|gtf<^)rve}5V2mNNL40V$m>Q2=goraDwyhfmRd;06eeTnr_i)cNP%8tf z8rZhyDe<8ZTAG0pk-+1)Ut7zPjSqv$`Akbg^Q4h0XWtLBWSi%DcI*<#U9UG&IZ3)- zBGQ2|=6a_uid8A=#Y)cN>EYJy)LRhR%n!enm<5HgEa@U^RI75fN%=f{W?I}6^lFN> z=00)sym+={%oi81#B%UaQ_74nWF8WQB`e*88jwQaoFlX8VKL`EelD;~7WZ-USXqZ8 zwl??p2}`cmz*RNy0fH?s&3TbwB$`j>Ihdnk< z)rl|9tHqpPnE)DG0X20UjYb2yuA^KoCk9d{0Z9TF-zpIS#nJ?16aZH&)C>TNs)4I~ za6KxOiWE>`b&8BN$by=5-BRu81vpBurh~G<;?|dP|0MbIsxQ6Ne7iKvNrVL{$>TZ+ z5&-ml<||nJ!ncv1C5Hf1EPR+|S(Xlwn0_8h!nPYIO;&! z;h4+cB!_#7h>f6#Bgxmqp)KnYi>7sleo0h(Uw50$_TMD4Gr2tA>3ZS&5Ed@~8 zQUIl`SDNAXiwEDB?RacrQYWrm(&2B~)M&ir|Hl61gOq!WF^+v_EIfcbKto)TOmpp% zmMv}S0LZ;Dd*c(6dgF61Fm(+e8$1qBoK3g;)9uZDECrD|l84#LmB_D$Z;=lGEZIMHtp#wb)mjS$AX|NDE&w^wXBfZ(g>inkG*^w+5y-mVuP=leO2i;heFKBE*hJ%_~|Pd;1Sv;V}_&$J)9 z@W9#-YtrtrVN{rItERlIwnmCu`JvKS^;^5nypGY^(=bgFrfEWEu92v(PRC_@F7q?d zewcH-_FIoJ#@2`prKp!muui^)((nJp5x(ya`W~3kerT*V_>serbT1whl$U5Oiz^Rc z(9B`HxV8H29jAYak(=kiIft(6Qh~z-Qb!g@+6{!?0TzAM={rHr3A5i0JOE%>7HYK` z>dQqG|KsnmeCg!VSND{DVCJ#SrX>!C_2jQX0Oar(-PV>8DmZ0;hdvhucKTpqgX6rX=w=y|NC!Pe(!Y@ z#@Ux!j3C|11rtUB=`Id5P|ss8u1}*-D4cjugrgezyM9;^1mZyf zo6+l1Cu*NgFRLrRp&8`>6ed2k9@LdeBsmCyRt7++Pe*+qDJy|epH6S_Af*5lwOWcp z>M+K9iG3%Y6l6f1Uw)_l2_a3fs-%Dv24j(tXqkCBQL8J?IVh!|ly;1u6G9qkD(-<6 z4H9Flk>=ucU!785;xOC0QEf&P!09ED?0~0gF__!;c|Y9Ei|993U>HV2YKWwoWm%|Z z27qn5Iy>M)SYMW(Kz;zV*dP=p|f!>7X-gZAKV;d5%0B|vM=tq~0xr4$4E zzU0|&_0&mdn&!!qRJFun=Rm6Ybe#Ll?D>M{^U$T+(5VTcXWN3Oo%&*ofocZyO=F&Y zuYUUBT2$I6C{?n=V&g!n`gAzwusASy;IQX&t-SX-bV7V_A7`I21~#-w_|B{gA0yYM zZ`IV5QXEJHpAKUTlu}svLE*E}E1$p!V0|@I<0FrWUtHn#J*IqAKvL6@7-1EJ3@~}! z8|NHko0$Kw8=pbbG~Wa4_?0rdo)q@2uU0^^S)p`W_n{0Gd^$lbFiI)3?VlIFsOmCE zHWO&zD5co=oVWG0eDXCRDB~c|ob&b-v?_C;q(czSmV4~CJ)fz5`5ZLxz`&%re&PEv zFPw&+xCc6XUb4|k!0AR^wF3`h43=h~f8ud(Gy8-8gJF|gzdVC;4vg&(bE}!(H2RK% zK+9Hbl44=qnej>G=`hAX2S&t$eEkA40o05GPW_=h!oJD!qR>iInG;2p52TX1>I5Fn zImiPKi=XGtjX;4;r|;aO2fcy0I0wzDgJd$Xfko+rvR=y5aRxdg@Dc++W~B&{%?2L0 zzNen^?6>^xPh%y}%35I@(WA7-Q($_dDK${ML`}iN1>loKgz2e^^YQXMVF* zx!0u!dfiAMFaDz%_u-tw%Jf0sv_)toWjYXOFZHE8DCR%x+B7nD{dzC)o}N%)aTMvX zjicg0zIi#YcbG8-W5?rS0$nKphOQ2Q<_Y?NdMT~c31MjCJH>-syd5YD(UCxXk3a3% z@9L#Htjfi0EL(rN2X6Fv;*7AUm@~fY9 zmBJx28xcVAj>M#SO?=&2Ufe7^2BVul~a6R(KdmNTnB%bInQ@e%n;e?(3jZzAXjSHWP&Rv1wNEMHy zcz6B}r4+gShlG7=%Zp&TH-UBlMgpdhcpY1pj>Mqq$23h?mesagMs#0y!wh@H1bS%> zCSOa850b{w|Ae=1sdVDiyPj|lZslB4*Y&39>QwOmM6SYQOfczXLGc$}#=zk}LX>Uv zU*C?T-wj7z#D*g;`uc9^_^YV>_xIMMRvVwux^N_N#Ai+21t!P+(RkB@nX09=#;(F- zPkVd6w5ZJeF8zq{sj#Rlu=@o(vMn)X9f?VJme;oe^Y?@7_Lvfm#BOI<59$a@B~Y^2 zh!RQky}`s*vs0GTAx`?|eFPwx4oBG%TzV)&G&8%5eL@J#i)T>oB=0+XzyV|*-Ybq% zeRKk}wCL4w+am){91>QcmX7}q+AY1+=?eAfk0X;vN&%=HaH5!8i4X!^*O58*7TB2+ zfzD-&!94K0LI9Qi{cn*mYk>l&j4@=l@AU+bwK#|JfBr*5iu!p6&a^V!)Ql-_#&gD+ z7uk%MG!sH#7)GFTopn4id&Gr)M!gE%Fz#8bq|-Gl%K{@B@;mo?OSaQ*H_b8Ri`*)# zzLX=;fq77yQedyuYXD&AxvzUZ!}5t&8^3xd-NNao-8CBFh`tTN_ftLncH`b#rI6@3 zx+Tdy8OrEZUCBI`a}Jsn7y8vNoDQ7m&KQIKusF76-MrlN!jq`|QZ$rt*N>p$B$JKk z{pc3qv(VW~fd<(Lie?48YK>goi7kaAxFZqCmNv(wzQTOhNyo_SeoFitx34y-NI%zL zjA8K53!eSfE}n&E)d5!uhYB;(tKmrOfhqkNW9WPIi{8>_aSj?a0mEogeO}jKjDZ;$@ZNVIEu5Ea*kV2lBqw}}b#+?A&FJN**q z{wJRmzobe5M2pU+)6v9jf!gtdq=DqOgoj?64&{L!IQV5@-=uU0#N}H`LS3ny(i#(&2~D8=SV^UY zh66E38S}swpZDyx_={tKyxOwUHhc%DlQrX`1(JIyCO`eUKc|#p;E6**E6KTz6SeoV zJQ5!gI}mHrr#e=(w!4NqQXe%BQo1%?77wD7!m=#Ty}z}_wF2mD4nX5vm?fxh9EJAS zGtLMCZogKWUyHM#x+wn#0CIbu0;`n7VM_a1%qvqM%Xd2FBB^GLMP67aW0hgX7)Jl{ zpChv*^1JpU|JVN#N#7ffeghkie#7_oZ+!oou+F{{>C`qoX~wIV45f1GW(mwV-(l=# zeA0`9^Z;^vuSceWPbjfyd@6y$OYu{Ng}AE%NkTF zsX04`>&Bu8iaG^;L6+La;6~wXuU~C=V*mgG4k#Nw+{zFqDDVXIuBW z9_Ji+KZSnfB|rmuwk0ruaKKWH_QYXnUMk0>Hs6pneRUsnK<@etR`~%>eLmw4SP+pt*P{?h1QC&so zNaVg)f7C#7638?kdCIFZQ-QAGZ2g}*C??SJHyWmRQb6fB6&8mF+V3%at9Y#nI)AOP z+;$L<_kG?+c~Es3a7_&pr@HD*6(%6GagpoBDm(|C6W?-S9xx2w*K~5A2M-?g?04zS zA1S4-dP0RIA!WSO%)o(Xg;r9hV5Mii^6&#b_|Hd?hakEEld^?{DgcRd?rWxu@~?j$ zY8^0r%R|CvR665-~}8E64~Kv8m^ zpy1(&)rBQI+m?GjNOBoXhbFM(@BMOquP`YrUoU@`Mu&W z1F4pQ096l+F)$GH?S8_u-{p_r3T3*-A$624>q*ja*s5lR1!0E5n`>zpLCcJ_4L&09 zA0C$;7>x=f$_G=EAkcnh%BW3$6lfqFU}knaCgwl0mwXik#$~FL3PL|}|zKrlTX0MLaS&>*MeMrEnfQxeGUcRAkF$15g@>Tg7E@rNLC61X>hkaI7TW5@ryZ@tGWq&09VDuAF{1QJ+o{Ug*fp__%=N z?2Ez-<&WR;O`zR<>m%X`%BvU8+>`LO-qe*65-2JlA(O-G_rKZ1%UVHRzj8j@%EzlU zTzlmuZ*qR_{k2IKy0E~a1diIP^@OMklU*yXQ4`j=cRjz`n&9qxP>b`ZpPu&|$RJBN zttUyOd|jB|(jP(y7-OEv>S1D2o%(L=(~s%CUZhS0W;|C0NS*e(EfsEee(SPNN%(Yv z0;i`cQ~l1&mBh5bGWJy@$vw$|kkItKQ2|L+FsUMSVsRuUG1afiQfED=t4OV|IIOL> zr@>V{@R_s^C{hWe3OJH16;@4MsTK?4ZYwMa|4%QetEhcC5+@SpuCe7&0EoLbCVG)F zfD|>b*0Z__DRnq}P8Vc!A$=GC2C@dCI0*E5FxBIdI-%9o+IUiXV|iNydJa6<(Q)J-+zH*nEPxdN zs|||MVl26v7J>sg0ICA04Ba6o`=9;_Furr$fG3I)VAbcm-t_#}G4kvS7+fI70hI0W zHEk)>Q37cpB~aZKbIbipWNLF};=dkx`5$3y8taOPb_+ZexlS)kmOgU$53%LNm$1FM z`)>x8$axz;H5Zv?vdnmHBhryTWdPaH8SOQ?d*7h(y`Q|W`12oOW%?Ajxe7mXfAa1} zC{o3UXNHa_ze41ejX*nA`NN`HZz1yFDS$aHa__Ex{&hdlVkEG8y(-3DD2Kp%hs z07C#a0vK5x2&c>^o!9NVH{>EaLjy%#}%X>;kz0pdUaUK+e8~9ztEFO|n32p&)gK z$J*PnEqN;T=Z+O7&5UnVW9~)$oSRy)fs?nTlwogL3Lqr_#9acwbaC0Lz13XY#}x6O zzyP{@kn)L1-RaPDq1tjGItw73ZS&507_d5ptPke1yI^j e0Hv*G+W!OX`igFaPu6 + \ No newline at end of file diff --git a/app/src/main/res/drawable/andchat_notif.png b/app/src/main/res/drawable/andchat_notif.png new file mode 100644 index 0000000000000000000000000000000000000000..5e32404b8827bdccd112e1eb24bcee0c6f2f507b GIT binary patch literal 1554 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%3?x6Bmj*I0FkKGt332`Z|3AZj2CPW>jQU2!lZO`bmYtwqzz@&)YMc| zRFsvK#l^)rI5?!8r7$xCLtvyB?ScqF)=ZAc6OE& z7R^pgM@L5~CppdzQI^f349~?u&7>ibzUI3JMA`Co`+GsK^+} zNgK3Eh=s#C1xba@Kv0%SXfv`R7_r+pP!$Vl~uV}nc=+{x3{3Es3Oz82Lc+qrJUl!sEG!BQ3W|z~V%ic6 zr-X&I#khS18Lo-Q*UR&|3Nh>#5|a~WPZD4_DJ&o$z|71nTPw@sD9Er`kfofTrHr4C zk59T2;xnwg=g@%9Z{Hf`Iu z^)mCR4Y#akSX)`{-mz?;pQ@va_&lY)U<&(;$?0P;p^m+(W^Mbyk5F4FzUK zaCfOsXZ(p}hR0>H8dYz&_+a-R#X7J*m z<-YkZ<_p>ui@BtIdt&*pv$D>r__?U)`FI0Gg{p^(BD)V7c|WsY{=1>%<|k3@@U?N9 z%VMKW{^Avw+3UB?!T!kekTSo!CR;Zb6+fP~R(e}w>bBi%K-J05*WIoD_U?B5g9k^P z+xs0-`r0a({uaFX(K-3zazFDtOOxV2g^*`G%Y6%Lo&Vn~etuamW==)M#id^jrz;wT z=Lq$G_2<}8rMvdyuily6*Y4km;+nd1>I?QShu>P4Z}-_#{{Paiwe7jH!(b`k$+I?yUUy w=;&>Q2Z|hf>X^N(^Y14voBLhzopr041TJ;{X5v literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/andchat_notif_err.png b/app/src/main/res/drawable/andchat_notif_err.png new file mode 100644 index 0000000000000000000000000000000000000000..e5113d055a63c4f97ddfa71f4d579e8bb14987ae GIT binary patch literal 1546 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%3?x6Bmj*I0Fr5wX332`Z|3AZj2CPW>jR$*hWn+J+GXT*b#=A1wY9Xg zWMpKxxVYHT*v!n#OifK!ODIg2kk{AOe$!kJw1ljVj*hv4qN%K$nwpx5 zii)zbvbeZ72M33jg3>fmx#fbgPkH2)@kvkSliJB6y-YxQijcIDl9Gagf|!^XJ3Bi| z3X5i^rlX^yr<~$6VcDI0GEX>VC-F*7;*mJRAw7vta%0!5itcZaejV&R#sN!X646h(m?{EK)}n(%ap{V z)TCr2CF3I|`HWvaNkCjrR6K!C^eLCD8^5ropskhWG1XltI_J-dDS^y&Tc;~g9V0z4vITta+em^2P6X{zcf zYpbtcuwu!YMXQ#rTex!R+Qp~2rd+&i9&pvft*Is8*W+8 zu(qWZq$-#>o+WM^U9*pzxkr$H$1pyI;BxQBuh>#PDV8Vbye;Pzh7Ho@Zj zkCr1#emt47;>wm8B^!L)mWc*5r-zmK<;B(cIVJ`cdTP43ojE17V&R%Si#Dy=wQSS2 zb^8`>Tq&t@IqB}JnNP1?yLa*C)w`E(-o9?1s1%YG^g2aDt-oxA!}w^tDwm z{VjO&qjU1b%jRx>|6z$4gMI(a%r(+Ee84=w;OXk;vd$@?2>@r3rH=pr literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/andchat_notif_mixed.png b/app/src/main/res/drawable/andchat_notif_mixed.png new file mode 100644 index 0000000000000000000000000000000000000000..be4e85bfc72b00fc41c5162d5700f9e1ac50fa1e GIT binary patch literal 1420 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%3?x6Bmj*I0FtrBwgt-3y|DWMM16HJeP~Um6 zv;BN~yLooDb8T(r*jUfDwwh&SIn&Z&hK2cbbF*n?dVP9)JNO{lBZ?yO^Yhcw)6>$@ zQd3h?Qc{wWlarE?5)%^>5)$I$cfzIXP{^Y?G5k!ooz=)YMc|RAgjiI5;@i+}UhGZS3rn8XEYltmNwJdC#3= zF*B3W)|OXRR#s9{l9G~Qbz`*-v37QLj*H`$mzS52kYHzLHxDq^)6)aGar<^wSy@>z zF)8WHfkCQdrNqO-!{`WN3#$t=IWj>ahWDYQ0UM~sq3ufSJ+_H6Z7RMxD%0vR$Z;?1~=IIY`CX8|M9gGF1 zFTh!JV!Q|1^YQ=x^V1>r6$rQGB}Y4DGB7aS_jGX#(Kw%+aDZ82=8VV-4BFDx9&OE& zyJydCZ*QO8-#|PM5Vmnz<>Rdl(#cpOu4ecEOT4vj z?Z2fLb9cVwW&9{9JNIm?z|41Y>%;cnxN`5szEv;&9qaoui&J=^(PXvXKb9X`>OV8e zRJW??U(Zb6&1uf5&vyJgw$!)r=4F%Z#d1Dr``YWP?l-jti~GjQ>`lphzUirU*t(_@ zYrgrMUCq_eA7`BWcGu3+YC7@z8Pzr$8tt{(R~Y=|+05u|ei3%r^X_hYYpq~pUHeWU}|RYboFyt=akR{0O0s+g8%>k literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/andchat_samsung_multiwindow.png b/app/src/main/res/drawable/andchat_samsung_multiwindow.png new file mode 100644 index 0000000000000000000000000000000000000000..91ba77506014dc062985ee1254e1fbe6afdf5d1d GIT binary patch literal 2925 zcmV-z3zGDSP)002t}1^@s6I8J)%000X#Nkl>&DTP*TXqvQ*_-RW-k$@^7HHfH+5HFR2S_uKFB6ulz zL4tw=JRl)~gphbBBvLCHP$kr`O(LL5Hc59CNb|Evlikg3c6N3%GdnZ3@4Y;%J!|{g zGrqQG6D5``&v<<2+Mmz)?sv|yFWG)%0`{``q)Gq~0E%a8uXpRh9V_!}xqXo407?O% z0!RT!TWiWXM!5&TVgO741_0e!4FJ^oZ3!$3s1$$i3}I+wBkf-FvQn$F=$oN-3({{ZCJ9 zd;XifrR>3h>&n{>*EDVSN(1O=Y>?U= z=iTSs*6VffQVF$lCqZ9$`Sn!c{)zl7dEatJ-6rldfP85^-`jWo1iHu1fH4M5(?AH3 zwifRRCIyc7;uvEBP=3eR`@F07zv}fmip3&khTq2Q-~Nblf$y=nI}JdwEh_~eM^o5j zPF=y=+#IsmECvS$kxr+5t;_Dj2`1;f`Q7`w^Lv!fe*08a4P`lg`@AkoDaGXEB&MdO z008Og0zl9YpxXkA*qo&S$PfnAWDM166}4Io^?DtHgM-j@U5a~xtVGtm{60G`QU;uM z$4pL6Vq#)hbAl+q(!kbb4S-Fs6aX3l6hcVz&edu)%*@PSVPQcUq@?&Ls^!Q4$2mu_ zSQO5kSh(0aQ*)^EK;e122|Vh)xR&RMUWg_;(ygR5#RVrSfI*Aa3Zx{ts1txCZB^|S zEv_}iC2+r?+{v4*w3XitZ6!ckZNmVjwF0V@MoPkhIOm|0!ZgihU$)dxRTYY&_>P8* zv1S`5z>1>ywn@smv?yGal*>^{VHgH#_iuIg*H}dNjf;XPwgEK^1C8|$0hz1|tkk6u zXqpB^QKYOYY{=Hu4U<&h-v6YOqE1p+wg0EC{;S8{0{iPnf*5sLV*mGl<7(3wA4B6; zCj%9F64n)(;5z{rV+>~R8li7v^aNC&(8X?JWP61+wg0@^%pu8IRbUAPI7(gMjn^{FSt^vvvp zZycEh7!>$lu-&HXk*7s~Dvp6y=6-!2S%S0_p#;Pc#z-p0u%q!=Rwyet8w{2C-kK9Mz zgKEizs4f^wXT>G(c6W|326f{nMDCfm;H%(mo+BF`6v=(^64a14Hx9|iwyY?CHM!@> z=fxAM&I75GzY9`|^w!UbCpmK)H%+61m5`b{-02&~@FHvv~iINbYBkfjPi+ zg48asPL#7`0kiKe-~B3b&wO3F(ph-zx6*CaeD{~W`)?gRjQX2zEV-#fU>z&#AOqO4 z3v%54#Tq>wG9>ZQFp4z^zv0eU;;8sY;Z6`q#|cR9G|<9cOQ0Jv#+tq!wlkYl8%KVJ z;@|%u9)qR-N^koD`u6_7)!*!|zXy8lBR8>IHp&@CX8SG-y!4u@P4Q1}pnmEfzBiee zIy4DYA1T~njDbj4lXt7CDl$|Drww1NWSS<_bz)kEUKl}&Qx_S#LL;9=A3XuBI`0C* zJ0gY+tP@l4GQio^)#`-2!jjHSL!}1PR7xoK+uMv!T85WyH2d?OgKR(@do&E2qV;n} zzb)q+G@TWM<>H6OTk;KK47n%Vd9V7VQ4mH!G|eSGql7$RY7o++VVv}bEh~6IOe5FN z9)sd3OgKXv)-xcA(XoGZq^=mbU=hWtTA4Xx4C=ZqB415kg&JTHj4>#yH;AFpx!q2f-nkB)aFfSB|V{Ee0l!lcGaYz{Eiuk&h8cIz+bXhFl~`Ii%$5)WZE+qm`*-@f zEn^JX-TTr1wU=G}TzlnNkXkvgnv>c2RSbRSC$2Uh|7Z{Bwex|bY*&Y53ont~u$^}D zc4U*OqA0#vDM(n7TDe(N@EbI`KDkW{jfzuHeAIrsU|NRM!)Ho)^uW_EJ;N9SPh|vQ zxp4GQ^LS^ikPy<$U-j+!hC9S5-T)SFHA5pmaH1&o=&>PqsCQjtLLBrCipu@`>A?1k zG4Splp-tt?vA|kj9FP(Vcj9h2=TO()FZ5wdTxdoL&WpF*SQ!)_8mW#P4VAZw3Rp)t zOGdje#*o|gtf<^)rve}5V2mNNL40V$m>Q2=goraDwyhfmRd;06eeTnr_i)cNP%8tf z8rZhyDe<8ZTAG0pk-+1)Ut7zPjSqv$`Akbg^Q4h0XWtLBWSi%DcI*<#U9UG&IZ3)- zBGQ2|=6a_uid8A=#Y)cN>EYJy)LRhR%n!enm<5HgEa@U^RI75fN%=f{W?I}6^lFN> z=00)sym+={%oi81#B%UaQ_74nWF8WQB`e*88jwQaoFlX8VKL`EelD;~7WZ-USXqZ8 zwl??p2}`cmz*RNy0fH?s&3TbwB$`j>Ihdnk< z)rl|9tHqpPnE)DG0X20UjYb2yuA^KoCk9d{0Z9TF-zpIS#nJ?16aZH&)C>TNs)4I~ za6KxOiWE>`b&8BN$by=5-BRu81vpBurh~G<;?|dP|0MbIsxQ6Ne7iKvNrVL{$>TZ+ z5&-ml<||nJ!ncv1C5Hf1EPR+|S(Xlwn0_8h!nPYIO;&! z;h4+cB!_#7z)g7?mG0^j_t4o(eRH!PC{xWt~$(69DMpHmv{v literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/arrow_left_toggle.xml b/app/src/main/res/drawable/arrow_left_toggle.xml new file mode 100644 index 0000000..25a5af6 --- /dev/null +++ b/app/src/main/res/drawable/arrow_left_toggle.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/arrow_right_default.png b/app/src/main/res/drawable/arrow_right_default.png new file mode 100644 index 0000000000000000000000000000000000000000..0f3bf3249b0c887f6a852594d93c3ff189b17f6a GIT binary patch literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyYymzYuK)l4F9m}8g-3xROeH~n z!3_VSCn{|P@>D!s978NlCnrd-Zei$Yc_JyvsU^XpCBdn&AY`6~df&2Tjm!*@-3(eX TkFIJ0)iZdy`njxgN@xNA&P5`v literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/arrow_right_pressed.png b/app/src/main/res/drawable/arrow_right_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..b0d2ff336ea53797b98c99439f6537c8db95e2bd GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyoB=)|uK)l4kGuFAh$=mAKLrXh zmjw9*Gcf$WUZM@87_2;9978NlzrC=Lm%)I8+40BU_CBGkH%f~hzZPav+SWK}&sT;G v44j)<7*s_n4*4E<)3CGYzVX+^+fMTRtzamhGlxGNXbOX;tDnm{r-UW|HTE`$ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/arrow_right_toggle.xml b/app/src/main/res/drawable/arrow_right_toggle.xml new file mode 100644 index 0000000..6816eec --- /dev/null +++ b/app/src/main/res/drawable/arrow_right_toggle.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/blue_arrow_left.png b/app/src/main/res/drawable/blue_arrow_left.png new file mode 100644 index 0000000000000000000000000000000000000000..842d96bfab49c592f4b63a53962b979b982b176b GIT binary patch literal 1183 zcmV;Q1YrA#P)~8nk?S(>jw{2QlmeNuRVu4~xA`LN=OBw|eutpzvktpZ`8pE3*z8GIj zOcdqaKfynMMvWp-jEW>)K!l}Ry0f=#XXcza$A_8i#T2lx$;q5aCZF^Bo!`m+j=_`u zng*Yt_w@Tjd$yy*7seA|EyG9XJ99Cy`I1-RXuyhX-j(H&d!E zeXs`52(xMG0$ne?+qWsjnp7V3`UalpZbu@^RI0iYUkL|0iua0#R{Ok zPqfcI8f-|cXYlop$xNIaeX5<~N45|QH&Cp4h&DiLF#H%F4o25?Gj#S-(&LB6_oO&J zu^Al*QkwS=r9dlhuJxl*PGknye(n;fz59-irI|d?hfoI98c5e0t^%pNCx$mx2b+6G z*zxwIVCw0e$DYkFv9AYP!n_5-^@emkY!Q55%56jA?0Dz%NP27b#DPxs@9tp1hMEnI z1jh&KPa!=NBd|(@sgX&B&wbLE+1xpGu$$50b}9>CIX<>*)UkTRN@*~bSGjBdt89Dg zqt;A!>(oRK!~Ja(s^ADOJ;z;&&=Fuuf4HFhf}raWZaj2`t#5qL-q{g9aj=hUcQbP( zf3MV16hbb8CD;NS<$)T*Pr3i(c?M5i=>r zN=t&2Am(OpE2jD1o+7ad-!S__SvPj=Ejh`UkS@Vk3yuqxSSpa^gF=Fmpb9xedCpv| zNhzH2x8$$hBbFMS*XxpwEzr?c9M@PZh7_QLMoYlai2FIP%jSc-o~&IX|NTuOExVjx zd#hvF=x{5p3ZR8T3k5=>g+@CHw{#D~c^C-b+SkcnxlSm)Q-wR)m1PkOwtyQ#JKky6 z611aHl^L{cnvd?w+WnK+tJg3B!#dvGsjM0SlHi7Y6feq!JjkN?KO4Qi&D@XQ;adGV z+1sZa3seH!2ng2$tvp(o=2~tJGZcUQ8mG9C=Ij>j+8|?S8S~LuaMuO`6e#~bO)a;9 zmh28~NU$SlCk|=`D4LIRx2Z7y_hqWL8fnUo5W+x&KwFOu0xYnQo2GmtKy%-2qTvv# x3Wi|@pWrg*VBi0W;?ET#ZJTL`g(?2@<-bihvVf+TwrT(X002ovPDHLkV1hDVK*az6 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/blue_arrow_right.png b/app/src/main/res/drawable/blue_arrow_right.png new file mode 100644 index 0000000000000000000000000000000000000000..d3bbd5eb569781e4b2a9207072f1fa4d0136e764 GIT binary patch literal 1260 zcmVELX?X}qAdcpg>q{P9i~iYXiG~k)6!124`Lxbj&B+gwJw8-Sa$1I~M~3Og@K zHUs)US0g{nY^0C-YRvh+ztuEiLNHvj|o1JqbR38Xgx zsuYA_LTT*MwXb2q5fXLlfYzA<5eOv^owTbUMlOr_ zFINe-I4Z+)5ROC`i}ZphuLx_$u|<^?DDybI%`ITB+#6WFs!F&;Q5Bhsa3#_RgaPRV z(BTpvT2N7rTlf?`jjh;h`(1%*{wr0&i$ryFu5Y0u5snWPp2ifGfE{NdxS)(++0*ni zb&?%Ddq)kewMZq9p2BK@kRX&mDo_%%R)iNm!f;A6pq{V5gf`Q-DNLsO>)Qe+vRNEg zB0Y(ngeWk%SxGQj5LvXCKtOX%Jr}c1=rc}MM;J_Oy>(Yw(d!D2GalqlNQgQ;WTPpw5G8a1@l4hKPhcdNPh0D_pjM z;VV%F6ZOEbBDS)ss4N;SdN77j(+l0(Kqv1V31y`L9w-iy9+YACS}&YiV0hd0Bt0m$pdO|^Psmz zT}hDAhgL2MBW;Y`0~tmtUtg}l|KMs6!UwwAhvi$VbJnWK$V&)%a5Xi^(Z8-Ta-(mY zwp}$E3sMMNCUUew0!Xam+Q7@EC?))&RLqX(AD6W zX$hR1>yCkfAT(d-q2@pb*OT$@vD4)sFTsImR1@!zDduSBmb?~ zcEZ@A?u;@{f9XVQ@TX&V=| zuO~Y?FoUjVCo=~GcpjwFL+ssmmiD$3BzAs6Tg?WrH)q&J!R8(u7ZQnn>h_-{8Sfe+ z@$H9n?D;tFmze;qwaris~sg54v z+ukF6Y{zU4OB$nzw{_9p+RJeFg#_(e-lng)cDBbk3AXk|U#5FF)pVHFO{@M74B#J1 WkcS4CeO_Y#0000_-ddr-3ci$pFV(p2HnVZC2xo)B zQ3Xy6cvP)jhrm@~xiV1->S!`<=}9i5&NGF`h9eN~2Vjk1lPJ;dy2L-hZ$97W<&!7R zljr#~6`S(a@k#Ljpf(ibm=(Vv_R(s^dd5n7092=n3rlj1HIQBe=?2glz+3~k3y3bD z1z;ov$Sol%0JI2nNC9F(3ZrEwbd02-?gOLnqQdCprSXwxI6IN)4rv$>MPqL{I7_-i zTGFp{LyUkiqGnuXSV^hT(E>*EK>2~jc(`4Q;_Y5>SSn4TXYyg>SpJRc@p8o~p( z2g1*S7CW-GLQrHaHDGOyZAx~5r5cPju-Y;1K4q>3!Ueb!@OHpkF{aB(dVq+fSafBX zXw~DbV0EBzX%Khl2p6(Cz+wl|gHc^t+=&PU9*h~#b38F95FAg&0-hWcNKPOJd4lm7 zkEc4~6ai|h%%*+WW6@}~{Qs@qx0zE0%oV(wRq)lz?G{D{%UjxZVfIBW zK2j0NNa$7lu+YD>vie`O`l9ONO6czVy8U|nx#!NX|79^c|53ZW^I<~8Pv3u6<*#n6 zue5E$oIQVg3VK@1Pp2kQI*twVJFrWe~;KG<|>VKIf7n`t}RR_HjGx_idUrF4Im`M79&Ot{l9GVhvN6PlUK7#ebXLs^eiX8rMJ_HO;851$&{ v$kzQ_S1(_g7&@bkdZJqc8`Aq2l%g|^Ub=~kvi$ZSP39-#3#*miB0 z>@g<1bbNWKSRW-6+Q3LF4qFJgDSJy_;Dr`=rd1bR)X7t)OkLt)rmJ^9_$T>?;rdn4An4Dm;gTW4t4xmH8 zM1YfkR|t@xAodDyGH_Yovxv(gUeQJK20_uYL%_?3mqEx9#XLAht5X?4F>o>xvikJ* zxKNlb6bd*+UPGKnm=dyvsAA5jJTL2biNXWG5?w@sOmu5*A|6*9am6LbdNu_(0o)J) zxl2VAhdP<&MPiD$Axe-;lT$gSAJ`Nbby3+mIju4=UXIm>@6# zYhh-ZK1$I&hK!Q*^&lpMJbv)?5F?6>=$Rm*g9wKyKH-RqOj5*iEHQBrCq*VM;iQE5 z0c!_yVF?MK^DS3hM;AVli&}&&#&s&uS0Jf2+Obxh9?B?tP$f*iy!x z{PmH$7E_D%*`ji-cP(z_g^Cr|UZ{6^i>`YAnXWwj+2xCCug++i+|BvF_qbPmu0J>1 zTv^{OE%#X4mia!+ue|dk{m0A)esB9n_Z644EFF2rvVq==4?JF0wqEn%@S^l7%jM+7 zLm#tm{C?xs*URk-4PTAs>(PA4tNm_IcSYYw>FsOdhr3>Bf7Bf69g(^M)uqR}8B#X@lP8KhW25&! z&vlEe@ownLsR!Tu>0qmA$x`u2{v!n--B?acg;&=22ydp5V*tePLXckkh+ zFC9wllopEqPxkIp-^&k=&PeJ3+qdU`^R(~9f6Z#PE^;4#&Gw6hrc>E? zpmD^Q_^6-~7zPZ%B|(0{49ux#-n@I8Hvj(u#*EC9f8PK6aN>0n-EM#WD{4`!)=dV%XQ#s|sB`V6chJ{p-EG(GPCTnyd6w`KTcSi+NH;UW*Znq6JUm zc77%~pz-%ST^vI+&X-Pj9(KqROz)QUPqHKlz)3qm?OJ51kp2Gtu+ERXu1!SMB& zZRXJnVpg#=b&`=z{k3=Gc{nFln!Pfw%h~q1`{E6uCF&(jD_K3xW;nm9*%*^r`tkL` zxcfQfw>VaHt^W4w6~EgL_X3?8f)CD5TVR%#eVwx~N!E9bkeC}NBt2dIT-G@yGywn+ C@-#XC literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/fragment_user_pressed.png b/app/src/main/res/drawable/fragment_user_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..ccb6ae8ca11ec4bf68b2523e4f68687561aeaadf GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^ohFmSA4U~KVcP6jGs@O1TaS?83{1ORNF6rlhB literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/fragment_user_selection.xml b/app/src/main/res/drawable/fragment_user_selection.xml new file mode 100644 index 0000000..4154341 --- /dev/null +++ b/app/src/main/res/drawable/fragment_user_selection.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/frament_user_unselected.png b/app/src/main/res/drawable/frament_user_unselected.png new file mode 100644 index 0000000000000000000000000000000000000000..2a061f9721344fa6275985cec0638aebc0f4fb75 GIT binary patch literal 100 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%3?x6Bmj(hU<^Z1%*Z=?jFFzuE0?1`73GxeO uaCmkj4anj5ba4#PIG>y#!MZrXfPsOji-A#~t*I9%#o+1c=d#Wzp$PzKVi>sq literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/green.9.png b/app/src/main/res/drawable/green.9.png new file mode 100644 index 0000000000000000000000000000000000000000..00dc041ef6f88b1873f951d799febec945a81d5e GIT binary patch literal 1309 zcmV+&1>*XNP)1fV=F%f?VWcaFDJ*;abpsELT;+R|I#F%agJ3BOB-9q4S#G$v8zH>Uh@#=iequV zZaAHKeM@)t&5CmqZgr%?UwEXV9T7Vrty^4=}!cl%v z!p4gNHe3*~zFR=)SstZl6qKEdL}iZ^Uv}psr|G$Uu`Vw1J`pK#ZI|^rJAFluNe4c< zWW?r6CW4G8yI{n+b4Egpc<;0Ut4>N-+8KuTPdr zsQjqABC#%GWXZ8%e|+|X85O}K<&z zc65VDv~y?{2v}pNBwcdz6|boxKp6{jB!Dcywf+ zgnUAB>Zu2xhzvs5s3uSn2c<|LB>rmw<97&%+sYFp!sd}a41pYeY0bP2gO1E0%s1i~~eFPD^Gk{pOF+@OYB@b)0^p{-|@mGb6tv+0vy?+?;8w`|!M@Fy@z4V%1eQaky za9ovrbR@+&2pOIsuxUc}{oJPJ^m=p0%;w?9-5o(G=;f>FLw)eDIr(58cM^=Nd>U5j zB+K<8vOGf(?-o|w_kA?Jjtfum_w!8O8-*hO2uyMhMpCtrl1Lc8T_lJt367m+9mw-U z(RhdaY1Q}{4|U7hG^sFi_cP}U{KHY`i^f~(NaVU-);FG_MI%p(Lbmq&-wsb-&F1Cb zc%*LzTNNkS++s?iDpw?_CVz@&z|my2e`}&@s)_f=B^Iyn%H#bMdZOQ5kMR5hE#Dg^ T&u&_+00000NkvXXu0mjfHB@j^ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/green_arrow_left.png b/app/src/main/res/drawable/green_arrow_left.png new file mode 100644 index 0000000000000000000000000000000000000000..7334c93a039d2a5f6e9dac479c110db2b4748b65 GIT binary patch literal 1430 zcmY+?3rrJt9Ki8|N`Z1kVN7uvr7}exa#u1`9wJbAlrel2#>RSFORv?ru^OBY5S0QY zAZ98mWfX;WA{b=g5Zstz0R<7~CX-@@;h>*#|V5r)}c*pMiTS-q2QD`Yp{R%kZgR@h$tjK~AH zR6h@H!}oF4?01wOCji7Xd5$yI>YVBFpe@F5>I4ZfqTn@2k*lg=C3S*;5?REFKj@~e z45i8mh*2e+#4qM*jA4|4fG9b{*;uv^HcvMY5MvHI&3ONW_jIoypu`@tbD%KanW=)lMp|=#GzU|w^W6xz9Jx|Svd0VJTxamn9~GAdAG|9$}(GR3TA3a zDCs>mt_jt(r1}gAk?#8+rokUx4UeEJZ*rK{C7RkGC>cL;nD)i$W?v|(0o)dI2cMy~ z;janZN~T&>?O>-8BJiK9>ikeyJ+$Wi^V-clihbz8d)Phx5qjAHle8ks1k6R9sP_+;u4mviLo8-r ziiQVZYNxk@nfw=;xB}0^M$oH{R}hxnL|u1T?9CR`|1*m@R=}6+Lr*c~IC_R*u^0AJ z%O@f*%&uO#E=soiRt6o(D^2VVz#Hlg9IDFCFUxar&^}|w#>T{~H_t9gq;L~$b4z6O<(M`JFBK7=Ns-uBop-ea>Vu*WajibeQDp^|9Cd{QQ>bYjO1) zI#aQADYgJ%Ey1x^=pc4uer$-gSw8=gCV>cEw?UgYvr z2SK#GWPT?c-b>6Th0;%aq#577{i$=Y^tx7j{8+b4-}1b)v_GK0kgzk>Rgy_j`|OSy z5)_o1WV=-Ad)|=nfiy%C!!XIgB{U zeZ9Z4pty|ImH8wp41!q$wYLo7thqAncxecp6-D2la&Va&sB;RWnhF%Yo&jl>l~?uae4sWE|U1zQG%rxoJ+CCe(+@+l-9BxMs iL|xwRurIC;XfR&h?b^ii?BwTa= literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/green_arrow_right.png b/app/src/main/res/drawable/green_arrow_right.png new file mode 100644 index 0000000000000000000000000000000000000000..b0a6c26d67541e1bef85f7af705039e67b070845 GIT binary patch literal 1409 zcmY+C2~1OW9LFD5TiU`_hQMGLKq5O>`idNKNGNi{N)cL)B7L-lk{xP-0fP%-=K*vE zHjWCV7DPZ{Q8oq!ra}u2hoD@AakGJl;yRoH36pfcmzNlpeER+VKELO+Y>g zNGx^Z6n{X>kcZBa0bwO8t0o}sk`tkjf#-12Dw(hclFL3KHbe$pBm-#*CcrKAgp3aYy4x&YzT!6E62gA@o$e;I1(Ch znF3%+e3@MBN@$dl0;Jb4g*EQcN^?S^)f6CI#T2PLV$?K3KdUzf(yuTxR6cQ688F8- z;fU0*@rEI;8AntLKgKVq(GKSLn>gY+rc~vd*kVN}?R!W=MesC!+y{zlOCr5(;^=j|OBkqFE|` ztkaHANMS!tW)qrq#V@^k5229Q0FJcIC%unB%%UM0AZ=nv8xDvbS`Z2;9>$SgM*;C; zI-!t~F*=Z;b&w1(h#6Pi|Hz!A??yUB-_4=z%4N8+izkn8;?J~)A;>GkrU-dy$Vb)< zRb+_q!Jqd)O>OoL?T7x|u+zP>;1APe&(_~OeABOga{}+N*>8>UUKnk%#GgNVpxq0# zrI|#by8m5`fa-m{DS;YX$cB8Nhu7yuzJqae{(|wkVFJ!N2Bq10$%pEGvlIxW9s2~% zn|S_Pw*%e_qu25CCnje~O`r#!5ZvOna{XlifG=|uWkLcogJe|+5m!}8GsI|7} z#`|2ZZdN-!I$%%fk$HFIII(%B$pS&Rn^f9bD{pZ~;_Bvlb-J;K4(_WEgLyGhVOuaIlLDTNXFMYCiFFY@KM$HY-nUS=Nej7kNd6qC5dj;Pdts>Bjjyo$i3Ar?+!owZL95Q_yic_oViI zSC@ZY9$WunO^v*#Jb2^GKh~`!jU1&V<9ikBtLeeyHjONM<&lYeNQma@wV`s`Z_E_# zM@d$Kd!lEf6)pT*X%;rAZ8?tIFLy4qf8ld%nr@0|J{6pm&2$`}>k_-!6`1AzHDBMA zyP)48TLvRZ>%)KS3omgD%>UEXy1*<}6_~yGy7QGShPa=4Ioc4dxRrX|q;;`_3h|VmSZ+ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/grey.png b/app/src/main/res/drawable/grey.png new file mode 100644 index 0000000000000000000000000000000000000000..137f294e76d2b376a78d468e424fc414e8fc78df GIT binary patch literal 645 zcmV;00($+4P)S|NQ?s^DxTBMhpjXpC0MZgT=m5 zudJ@s{Is2lFuDH|#Cdi?d~WA(U$v`yQ_;(x=FH^xXNwQ)*C>ZE8Wa>a*njKT=^liH zCWZnQ&(y+)+Y2`et+qlS2y*uL-JxCcEO>{Y2p%XFZRP?Rj|I=HR%BQV+#03d;<$6X^c6HO)_Y^=rlmsZ2h#{GwDtn+~Xe)V`EH` z0o#2^?Q}-S>ZoaivjkR`MryA*Y|;8)X}vo!mB=uEjd92b5X~)}uiY=2N>sKcE3?B? zqHR%ge)bY$|J^uH%!SUY<-^6`+~QeVTO4oQw4c}SbdCTZC37;W#sg8eG=1HDlILdP f-$%e~^qKh!!#;`&A-QJl00000NkvXXu0mjf;m#=1 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_menu_add.png b/app/src/main/res/drawable/ic_menu_add.png new file mode 100644 index 0000000000000000000000000000000000000000..61c1922e8f7c66335f0a37c30cb460c3b14eb7dc GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%3?x6Bmj(iaMi zlx*iQjx>5?@pfXvF4rI~9R*$Hr>BL4xpy2+c<`8g`|76$Ui!+NV`pf$;S4@AWh)=h OMg~t;KbLh*2~7YVZkP?wl$R(PJv~4=Il}N^Q&={966S2!l>Ghu!@|NcGcz|}k&%%k5(!8G zD*(V48yowS0SG|CjEsz&oSdSfA_|2P5D+joHwOU7wD$Om8`6+ z!otGR($ezs^0KlrD3qL>3}9#{Jv}`&HTCM%tB^1)EiEJ@1d1*%FM|#3=jZ3=<>dhq zv??wx2DYHjMj?p$bi`mVxLj^ePY(zs5{a6cnm~=(+S;h7sKms?+qZ8^rPAQwV8{t| zhlhtD8}NbrfP`#7iOpt%;GieeB9qB(Zf?%b&R$+#?d|Q*AfyFDdzl*D8*?FJVBQ}GkO79E9(Xo- zSzKHMfKVue8KQ38x&5tS z0t2cO2n5gps6rsz3iu1)fA#9s#KZ)^pg0f%7<3IiLO4{ftgM9D+C4`FF86YrhpQ*D z38Sc_qJSvx*loC1uMh1+WWWZM>8~#`-Hi>RA%fjn4T4qGF~OOe8Y6r5?bqD4Mcbo& z<%5*ERjy(^MvB|6Zopo*&?(bhAoAVAZ$9o&G{-0qEExm+&1wydo%JwTnJvjSccG|# z9i$d^qZCUNmEhI{t^WIm&^4Mx_Xo6zu-1BzupS{RLI1L~_!SJbBMZ#18JX6Jy!#(e zbhaw=kaY_H?#gGsgQd^bObQFS>?=i=PG*2LZeY5EqVWW@F#!E({IO;oyysH9oy`S@ z{vfipe6wPn^UnuF-iV5>hS3iZa7RtIx*m$!vqds8JSe?R#OUtRKka288O##e5C}z? zBnNN19U5$o>__sX#L&>(Bwv1Dz>!XFwQ&uwaaYnXs~@0?%r9Jd*S5N=rrru_@K{drb}Ud zW|0EP3v(s-JnwnNE-g_HH`Q6nu+ZB3mCf@Y(rSR|UcIp*ZBqVBOOU{Juq?ubBn`S?s zUtT#-oX(m)<>#ffx*{1rZD`nrRXA&^)27C@e(?bRr-_tMRBCnnX_anj@8JbEp6@AD zxt!XuisRIO^{^GWeGl^@BV;d}IB98N57IMpwJdx(CNRq72m8zQFZzs-t{aQ6azbML zBT;@}Yk;=G6it$6O;&2+G9HGA4GiX=T0NvM-c{ooXgfSE;C_`B&gdWY?|i#7f=y@s zw@vS4+`EDCAWQlxHhDJa`9_Ji8mAy|2ANrIhN&U zJoA3$52LLly~~#U&-b}uPUsS(O^Rd8H;q(!OVUcrlRNk3XI|o5^`c@fGrw_h--YQ) zTFkY@7=7z>9b0~O4|PReJR7`QQ9L!y`J=f7?rg;AJBCbFOv`XUXaR1G|x! AZU6uP literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_menu_close_clear_cancel.png b/app/src/main/res/drawable/ic_menu_close_clear_cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ed3dfcdd89f32d514f4f6550207d34dc981bcb GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%3?x6Bmj(ies|{n)o~5pNI6^*?{l-ea5p?BT)9pVfhCCwsa$hG?Acz4ThB zNkM@1!PePxuWbstyy?^5`#~oK`L9_0?0)LZ#;2_`Y0Wk1h55U^k2`K+=X2podCB7Q z%FF#Y|CuGpGv}(X&nVG4U&J_>J!YrIsjRrN$Gic`cV=lc|l) zfAbvpt<7KLZ0O^YOm}Dqt@O z@(X78&+t#+@1J{Wi?#!W!aQ9ZLp07Wy>OeaL4k+)!nU}7|0nx)Sd}-jym{T2s%^lr zI%D28ea201zFdh_?vGulJYnr2<4eNsSzqqmR!`YfomTf(O2fTmiBGCDkLp9Bj9LbW5Z^%nM@{w!H9{85eNiXSy@CP5sSq_ z6onR`}gnP%VaX}=jG*DXSut((`dB1x;iK+E-uz+G+M1z zsZ=g5E<(4EkPu&AUn>$k9&arHJTPl~e0+I%`Sa(`Gcz;&{rw`52-+?!Ed>Pyfzj2~ z1r4nUD=RCI2DZgw@$>V8sF#-)=!S*{$bmj6ioy|)0JiS#?$Oavm<}Znou8kdn3#C- z;TSx!_s00Gx;K73% zH*SP{g+d{bNcQd9N2O9>B8fzTZs3R8xw^WN$z+(q=ktMtfPjGL=;-_R?*oiapFT}b zPftxv&Cbq#`0!zFZZ0q|(8a|C`ZqT>PfkvHdwYXz1y)~Q4?F;DfC^57!7ws1;^gE6 zwpy)z`SPWmogLUkMMVPx128%{IT=PsrP7|B9`KizmV(a6$ms0s^!N7%8@PqFT6dk8 zm4<9~#`n0#Vx1*yY zEiG-!mMxI;KcCio(7*=tfptI$Y^1if*2l-^kt%C#0q?{-P8_oKPC+nOhA=59DHwpGoYuQwJrVB%_YH>4zSnGRwgm1_9`Bq06t`Md&IVWIqDer9Skj71XkS1#t~ zO0vb`+&rm5E5(?s`PEVk$6%BYv226hl!>o2o@45aDSIo7LIk;HOhmS8j2Mc_fboI> zhc+v(>nd5c=_XSN*(0S?_hq6ccNgCC7=N2R@UnKpVqQT9e1_TKVe#|-*f=YRZ2XpOR`5$%2~R+f|~4@Y7dZ}&&>i^38(g0NV2V#Lw1Fr&+f z!rjid&!nE6wVZwTcJiOYqE|v;YVx^LXH(86o%udply-VXPJZ`zY<%kP$*nD?NcioR zX-|`2WL;<^sla`C8Hc^BIKV1IDRe3o^$$^C`c08Vw^Co2H=#rl39Iq8+|8VQOuFe# zarvrT)5qhz7#bQL+C^(`%ifd~%T!-K$vqbT9gm+Nh)q0dJlV%RexGnXq|p z`iP?b_e*yQP*zXJzw3g{8>WVT;5vJ>2P>1DDisfwj;J?GwItEy6#_?38ncvpVVugp zU7kYE8J_z?V>XYCjhW5mI~zD6Dm{C_aE3@h4~#!M+4UGLGi?nx(VaE_O7d*;-i)TM zixWFK#Il*tRfBELu+xKVPiBhhQmR}8{*uf7`Vt(;hU N((DLMcr#0=_z%D7R+<0+ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_menu_edit.png b/app/src/main/res/drawable/ic_menu_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..a1ea2e17653b2e045b8a55f6b1153706a6656fbc GIT binary patch literal 1004 zcmVkdg000BCNklZdB-EHFhNM-b)^=))R=`c0XcJS7iK&ST7a9{^ zD_w}2CYotT1H_;~(=@TMX&Vq*tT7Y^rywvud3JbpnD6`UaWMs?GC(=2yZN1a?z!jx zKZN@U0RUhywh#nbKK|z{H%XJ9W770vFLGgF2E3F)ZLW0IQRjTk;i{vaS=}^!zH|He zXcPp-N-4?1L2*v=nnyn@drLxtAikh?emBox+8~p~#?{B!n=$olg+Cx5Y?!d^H|;OW z@eFXBm-@QS?O^x{Pc&4z=JRjXkBunhF~j7L?9&!;SS5I0+geTKnmN8c`8>VYJfGT?DQjn34t$%l2_h0$8U9Vv$`w95Q#f z7Cv}jJby4=9P#M3f@`sc+c4f;2w%diq~r+%G_q4)J$>-)%#%ZTJ-v2k?jC2=h+ll- zYn=U91TTDlnc+_QjRG1zZ{2q#RSX%zvHr{Rtwo1i#RK*3H@x`+u^~^>^sFK)$u9_K z__o)zlvJ_Fw&l0m3Il0}Lw{OdrJtTTEAI?BznPjPvN$o}YvEa`buAC=XA25|4arl+ z6X6`=Y(aV7V4vfs_;_Lp*V2N3MpjB)bLrD}aX`Q#H~T%GjYr%azcx2|7P^ReMPsWK z$H?^5H9uUftyMB%w&nh@UoMni>WZ!0zM}9IJi}GnSb8sRfzToTnn8P4OwwvMSWe(3 zFg)4y=gJPU#jA0}9qPq_(I(7+?0d{aE~$Ev0POLU`Egt1NQ0SZ8Shkq!OToa)rFjYeO$CNVf(SztaWa>K27uC+a^6clm;FlG>!GH&lnMN* z3Pgs32tz!md)F8mnRtK(9Ny!u1x9CAN><|?b{~wH5G_Ng7_OETaP67StbC5 z&li+vCZbt{>Aa>I4OFubp|mlxX;@(2Cx#KjxB%LrL^|Z*#Hq!mzW(d# zx^wsrT$m?wQwuCHv#LG%Soh>rqX%;q3_#4>=l&De0VPlaH*I9pNgA;WenK|K*SamiVHDfA;6%rsW7t0q7g(4ixrVAfHh%J!%~PC2?1Fm77SD{ zXbc7`G_*VoRRrT!1WgkiG#HlPC;=BR3ZuySdeY4FfA7q@_nz;Z^PO|P_vV#^hU_pk zwlc~RA|A`C`XCp0)b0R5j!*es-_(#Y}TsDn|EN;^uUWztwo z7Q2+qDq_(y>Et9b;MBuZP9=v^%i-2?xz${1DiuKR((~xt3tYhk0hiAe@C6V?&!K}0 z*f`}JFo96mC=?<>C?skYffrJsA}xo;spg2B^#Kvhz3N2{{=v4U;|JplS+G}PzxG^9S~?++c}IziXdsjpgQ?5nO($&7|50P z$mKG*hQC2DIy9;rQodhyx*za;R4ENaw|FD z1QVzr7dnTx1G#{M6u=BIKnN;<4wF?!>F`Z7WspL`Fgkh$M#d&svlXjx_(h8?d;}`g z^qjWRDnxT4hNW7wbjbudp;Z}zP{arEK~*TS-Uh-X4$IcG_gXKNNX+qg35w_=EtV~4 zzHUCGDhLFH!r58j>8U`)j?0_HD7tbTf+DEO1yv!4ukUvPRG@G|5T{shiNCR0doVUO zF5%>aViQU1EUu}^J2DX+s&B;}QUdT5&*Ck3&wLUBf~jFg_$|&A%q^)|ez~F6KO_}L2NhiU`p)0rO7{^t zKC<;S@${Vvw@;UnP13HTg^5nvf{Tn=u-!|}IzBg0b41vve($~%9sc`39uZsi^!i*` zPAx^qDDenJ%`v89 zgSJlzXLimi2QRX=yo|qvvoP2g++iD;n`{4S*7|Z>DAx12`(2%4y)B6|IGM-CQ(g}W zf9{Mq#XEVB>oC0Wd+WStU2fwsUdC7KrQgyE%a_EIBcC_T6T@{AuG;7lX5Q|t4t{@Q ztA)tO%P&pu%_P}{nX<||t?Qno#XR@Ut=uM`ttD1vL(lgJt(xk*Ts%Fq+uYr=?Ycpf zLJ2wFHs&)ZOEeB=7;%@>)rVR2=2AE+hkZt0sMqdEUVIFSo9xTHIdDSC*+Jc$rbLj8 z-k#MGc9!H#O<}*ux#RSD_o#(lV&{ev*`psi=u`8b=FPkphULp=Wa40_3Cb_`Nmc$g zuUqndobwpx2amKaoabi}r`(o1u^w447$>jdC;w0x&RN*=Tt9bRO&;?uefO=55z#b1 zZP~}@9;i%Tymn#AeAId^G91)^uj0GpsSe$!wztPnhNnNziC+_r6+NuDl0AJF{skCf LK!|_y_BiH0$JBXc literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_menu_exit.png b/app/src/main/res/drawable/ic_menu_exit.png new file mode 100644 index 0000000000000000000000000000000000000000..1ad185d195c8d275deb4857dbb2fae54dc58b21a GIT binary patch literal 1053 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI13?%1G+4F~ifpK1dPl)S`Q80)@;D>F_R$zp6 zl?3?(GjJJ}ZMyd2<;`u?W*qi^|Nqhu+s5m2 zSbpxeG1=(D$SSTZC!_c4zU4VbgVWo!O4dI#*SMlu^Z0@B?Za0^m@S@qJlA(v_UgjY z*GDh0?XtW0&EUyH>#aCes9|QCtH2Q6kR+Acq-W?kf6k;?%N+MCO@Co@vp+TU`H_P$&T`$`YZiO?u)diuDyF$) zhs#Otvto0%`gG9ZZO zrDMc)8D?L&cd#~HyvO&h+=1K5yB`YA;`=g5yL{VM!)x{r3=rS<;1zmi&&kK znOnpvx3El#*K3R2y@;c%tvMoAxXHxjzts}ncjnuFY<${YKKs>1=cT)Abo`9czDsof z*yt}`$e_FPg<{XN#mNh@4?b&-HhFTe)8}7EQ;8cd%Q?eJM|0ch1#zAEQ`TR7zIUhS z+dGzx5B74bmQU)hag~~H=JKn?DRrIc(zh>8zg_+Ix$hb^SEYhq^^9xGSMB-oZTg=1 z|JO}X6Zy${T7G)H*+=7VqBk$UUaa4?fomV*f_}gDJshA)lPgkAL&`t_n%l`!=y>!iCD2J@@wk73X=nIEHAPUwY{{ zUxNZq!^1_3b`-w<_|N~Pqd}sG@Za_K7iLB=B%Nor-{9V;;3OloNJ#OJg5R5^6A~>| z^sjj7wZ2@et@+Dt%Rl8_wYSF0UteYWw~t@%af!L~rjC=V6+hX{R(#TY;{Huu%Omx3 acf|x86#d#ZBn!MoLdwl%wBx&e=V=h@r!0QFF$%}zIt){^=FP#8=M5~7ThRk%lOyA z_vnPcjKh6AyTn79CZv_kJN6~9a^u-wt2h}?USsaA5ncA~K8x(+n@3k{iOPL`_mgyW zzs&E;B@c{#ICy*yGQZR#B9Xf0O3tUOhswY>Hu7|F4AD3rJ1H{!kbyv}zLu`X)~4u% zM|sUxC~zsQ>sS#IB2s?md+q=K{MXbnqn<17ynn~Ic#;o;(7d)|YU>q#{W;5M;hdE@ zHL@euF|XxTYI;eD(c;z7W$i+0ZZ1nXb#FO`t`EI>-9JOYOoO$pjkBl1Cw@+|%lyd5 zqfs+AFs^?r_px+=(^jrVY3T#c#G18SZr`})cy@zlYrnNnS!J{B56d_5Q!Hd2bu_QD z@GI^qnfr2bz=kC0<>?13o4Fr+>T*0*bLfq!bOfKd)z$6S&b*KK9WpcYj{Su8`jCHT zzr38;`}^tDRF~vG-724F&0W85@9uwBk3YX&9($qZk$-Pm9iwZKNsC9wrdzRpj|f<#irLM;&ACe`+s# zmF&)PeYa$${OT9HrU&vHy=%WnWjAxboVs%%|KE;NcOwHGp1I`dzke7Je0qU^f_MSv z=3V7KJC{D%A|0QiD7fU!gr^*L-hQ(;IBUmM{p7V!!tx83*JjMBJ~SDaM%+DJ978nD zrv{}vA9CQ~<#Whj{LY}OwL`$Q@Bz!6MT;IBvMo?vw4?C%=~k7sNf ztCs%$1p-&3awqa_a@OZ)$}m{Af7$+*k0xC*a_sxmbxP~ziggR;+*A@;xmMYE)2A%v zE5^doC$dsh~64%|rJGU+tK5*6b^sdspy(^c8zf!*WzLC**ljHS( zWhsRcH>4T^UDlsJzh6RnzQddr%_A=*^{qGWVt6ETMp=(#>g-?Qg3}tlwH@k8j&zG? z3_Y^7^eE?LIdvBSbF-a>O_iscRxs+u7FV~=J)mcr&HrOYt;LCua*0-;UYp}b{6dze zzxv#LL)CM!w1b^mUFzm`8P2eaCBo~Ko$~G+DOhw;=JB-URpS5CI~*(TeCLmBd-m~r yr;Y9MDSx~ln7$76%zrPxGUd_d*SC+)l;50YEwW5zI|nd^89ZJ6T-G@yGywp=``iNn literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_menu_refresh.png b/app/src/main/res/drawable/ic_menu_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..bc66777919af2166eac18f7cf60c0248e6d43045 GIT binary patch literal 1664 zcmV-`27md9P)Y_Huo?mDT2D0VD?pe$`bwUj&n3P~-cs%Q~ZEvR6m*0hL}C&*QO zA%uVs5^ZRZNH2LoiApVjKq7q#MAb$_1sXeGQvz-&RCPRF@9tdA;lY#j-t1ID2nqG< z+wRQw|8D31eg74j|L!q(7vO&lAaD4DKwxAa0f0uKNKxqj6hL5LVPRt-F)6HS#xmPt|JrqlO6wf*m`5F_yq?_3GK^;1@eZwz2! zle=)sPYx|jNQxAYNKDK|5mF-l#XpF{{^yS$rG~Ztf%zkv=eF=R)#fyH12Az3zPqdZ zeKQ!QfQyZp)p)JS8bzHqSwPR;`}l84R}OB*V|?eXi!5&pVB*rd|Dm}fy==wDMK(Nd zKbn+~KT{3k;3kGqZ2kOwFR;{H1=*2%o1Xm-%^ew}h>z1SZeU|#qKJqa7EF41KeZr2 z;*%gnqnWz`2rTkXe0uK4Aj9OaF#v&!hZD+Krwl3|kH)1sD?}NLg^7zmQl;A0$YWOk z6Zf}U|M)~dMSLtkkmxbh!fOWhz6Y)z8l=!hJvO?7pJnrF zKi}EH8A5+Z{s&TOP%Clr8)@W%j&6^lv+kkCN9AbK5AQ&Wl~mf zsFRX*Yg6UoqftPFoFO7jx^mE@K9M#xzx&|v>fI*i0FC+bb9+d-0VtwkxFuNSo|yQp z_H3?mOq}4BKJo}OHLADcGPX%I#f+;6?pg< zXacIVlJ6Q;O1$GwZ@qSjOZ3c+U&N!2eg^2Lj~+ba)1oVYEN`le*xBgz=qWe4wk-mU zMw~h$1A}vDQmk1*MKB}7IQj6YsXw4PI#wWY&+JaIvf8ECGfiyXNp^!lfQd#CQ5&fd zu~^b5&VOWT7j@M+xgGMCCwmbn1Oi3j!bSkXoApPGMnJ2h(ZiwlOy@#^flct}!xRTF z0F6Z&-v1&IX?FmPR$+?On7p9z@F^bJ`wS6Uw{A=}Jx|^_|D{bh8ABL2FH$9LcBK_S zi8e$ZCcU7Di-E?#B7b81GWGSi2sGMyJ;7?>H5L5jYoFV3^Usc*Zrb6T zZ|u2zf3;L#AX~=3gN5-QvfP@WjtCSD6kUt6hHLOUE?e15g=?k7k_K`N;~}xIvrFsaF?jS7=c$lvy!@)6 zS7&g@k;e=x!E)w~fsG`et z)EbmyX1A3lq2LmbU$}K@$9Y2Pq#Nr4P15tvn;B%_z+KOf^i7oa`JY`TBx=NMG#(Y$ z1mx*^{;8$L79T*;x-(g+Po(VBz551=An`_Gs(rg|6+!|d zYZnWvNkXN>#6-l|wzrWAdj~pBWG&Mw0u|{y5rN{}zY_lc0sajLe2>Y?Ya71+0000< KMNUMnLSTZI;}K5) literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_menu_save.png b/app/src/main/res/drawable/ic_menu_save.png new file mode 100644 index 0000000000000000000000000000000000000000..798c872ce73693f364d7712283e4f0e42df72ea5 GIT binary patch literal 574 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%3?x6Bmj(i}R&P>&&ZLAHUx|e|YU>pph3nT^vI+&X-=gF4SZo;BfIsM1-hl zwK#WKV91-jfB&m{Ha+SpiZ?nr^X5}VCylR$bL<6pK2G*vNcUq`Ry8G-4Kgdwwk>^s8~$_ST|I z6IWf|%eUsHiF>Z^mpGk1LBCjAjSJnAirQ>Sn@~C+OuntFMIfn{~zw${d&Ts?0%Z2kg(pn-@%7ubZ>sK5fuM;kU2KJ z)o%WKWvi+Kw**w)>{Wd`ea2_Ue?@@?9Oqs+{957k!_f8lclBw<jm&vkx z>XZU`)-yegYuVa1JxfxI2HGX>>Eak-aXL9+0e3{sun40!D9l9af@u91$)7!(V)8ll3u~DMdgr`#{w|8i1XlW+TTA-x0fa`Nt z)2v-=vzXM}eB*RmZf~h9HSoD`^|HH$!34u20SPHNO#um6$GR3Ch;d+Ac;L__F6YLr zy%tW5YvC}&)t!`1f ejFb;gU}T6r)ocZ+YdP0s#Q)jKz5Z{^@9hGcVncrH{Q5aM=tFh>;eC0Z z!u{TFPKw&ip0;hphB-_7-u#@x(F-)}j;D)bh{pN3ldel0GT><4nDlzpwY7!s_kREO zcmAmf>z2IgeZK6#{Pm5_3^}bP;fVnvZt;S5*GmUZ5$)dX;2$v0#8Z>&@-$wZiK%mv zBfW|$8M#En_r^~@WwX|RA?&H6u6Ai~{s*tkthxU*%cr>QwvBszn4!=j$i3ksOCf{Q zBaxtfz4EQ$Eyr8c0)>Jc#yKt5 z)9(j-`gQ1t)Vh|mcXb?hW^BG3k+7WgboBRF$xn%%+h+-Ryzp9ne){)&Ji9-!b+`zA U+|Y9alqeWHUHx3vIVCg!0K|Y6nE(I) literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_menu_userlist.xml b/app/src/main/res/drawable/ic_menu_userlist.xml new file mode 100644 index 0000000..880598e --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_userlist.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/indicator.9.png b/app/src/main/res/drawable/indicator.9.png new file mode 100644 index 0000000000000000000000000000000000000000..f58c724296a2a0b4dd75a6c565dd59996c04ce99 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^oIotb!3HFS1h>TjDMe2g$B>F!$q5Y&|0@h!9RD1> nZ(->3aK)lPSLX=9gFQgyIUg=gTe~DWM4fzJD4c literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/more.png b/app/src/main/res/drawable/more.png new file mode 100644 index 0000000000000000000000000000000000000000..ab691d5b7c6b4cb6f179dec7f9ad17d7f4291777 GIT binary patch literal 359 zcmV-t0hs=YP)6dx0003lNkl` z^GVKPRx^HD_STR~5Sf+O(&=I70S=sdWnCl^+3~`u3Ti^9$g6Usq=LUn_Jr~{5B)&1 zPHY=-Y}6Xs#P}8Zh{$Von9*Yrwce=4Z0Lg(bXf32B$d@=K{qzM4-#UZ<#A=xo<^|< zNBX3hn2IGWnuPKmDafF#WR*+|`=;&6$hvSSHD=UrxCPTERB>rW(!~G(002ovPDHLk FV1kO)o+AJN literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/notification_icon_bg_tile.xml b/app/src/main/res/drawable/notification_icon_bg_tile.xml new file mode 100644 index 0000000..81add63 --- /dev/null +++ b/app/src/main/res/drawable/notification_icon_bg_tile.xml @@ -0,0 +1,3 @@ + + \ No newline at end of file diff --git a/app/src/main/res/drawable/overflow.png b/app/src/main/res/drawable/overflow.png new file mode 100644 index 0000000000000000000000000000000000000000..48d59b396b7baa22e86bafff4ba2aaa49cd374d9 GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-soB=)|uK)l4pD|;Gv9WP=!ErXA zAahBOUogXehRh(#H9)Smr;B5V$MNI@3D(2x22KZ8v^8Emz{0wvJ9AR5MDLD^OAMv> go1+eENc>@7SeV1ecqc0)4ycX6)78&qol`;+0H_3PLB_wRuu zkR1~flbV|P@83Tl8?F*4RZ>!tlbsC|pFDZ8qN3u|sZ)!JihzPZASxn~mX@Zhq@<*% zIDPu`oSYn>Q-J^|o}QjQapFWE$;HJbEF@G=P@t@=oRX3vBqRjX-rwI3)Rdf@EG;Dk zRKU;AUs_t40_GMM7XzIkBP}g1CI&RHySp2xOjbq)$OS6S&CQLEj|VbK2y}iBV zWo1D2?Afz{z7rA@1UepQ;DZMbfF#%}Ai`qbn;sxlT@vIM%wYKZ|DV<3jGAk|0mJG4 z|9@W>DzI`$GBE1y_zmP9kp;#Q17kBtszs22c{Pxp!o$${_D17f*%|xq z9k$bGE?)Ni`tPKk>C@&Z>Kkj%j(qy$*;8>5G0%mocP!bmX3wHcT{~B2XT1*4U%ZZO z!N!w|S8x??em3ozS;pI>n~Wu8hW(2oF5SM%oU!Y`&#Fed{olib{xb-8EVbj6kXhv7 zc`(tBmr;guQtYJ{5(1kp7xJmAX-3X^xKc%`{j%{Ct+OB2^uA(D$eZVKDJFttS`W*P zJx)oIk+HuQR&hk!H%Kii&X&H>8QgsM?%owKZr}JD4l8rZ&7Wg+a`R_yKYhzRyY?xn zuUxgg{DAF;4=dbcRpbAuGo06VsrTyIyKis(g?g2vcKbaP_A^eJpD!6&mf{MEDow!I;kIbe zqWSaZFIl{J`SRt)#>SSGmMd1QShZ@^(xpowAqMmmCi=yg`2-k()g?iG!O$RPU=(8k zGV`C-Gc(owpUloEHtWwmc_x!HKzkn8vB+Ek(vPi~xwig)V8FNQ|NmR^9NYh&lVVwM zN__tR|3?H_=k4cbUHE@1+nUA9%&Y%TVQdC!Xc1)8-SHd9_)`8f%g1|&RP978nD_nt}(X9^T)eJHuJStEvdd!OtK_T2^nYYaE;-o5+v z^=kGtiB9+RpTF5E=Q(L|Opl>!;GL6st~F;SPg*6f|M{3&vfj<(meYMMO`bMy;!pXP z=b0wV{X9M7>Kz*ec@2$_xv7DLoB>f{45zfUWK%=8HkgWtY}vN%o}-xwldt0^rH6tAHIE)^P4_#0PG4{Rn*|H5n{O}w&fo7pNvEn#@ps()d!@?t48F%q7jlmvOcxNG27nlGOxzF;MAZho@0K_v6w5*= zu|;SEdYXo}&WmldZWl%jiQJf+7NW#EXAdhCtSAcPbQ&2O@V=}pW3N;~uit0IC$VOh zAL-(Q3Vc2v{C+>gV9+*!KmhYzFLsN?(FxAX@~h$S3#-|zE)IvoQxl|*EG84^v|B8{ zGs~;5)VrlrO0UF;d?6Hq6p7%uR%7|&n4B+$d+1aiB6&=bT)8WsK@PVquKXX#`Ijrt zD3_v9OZoN3V1Q*MqrWOn4hQ)MUMF9OuN~@ld9_dn?#NFHS2Yl zqHH-pQDU9AFoqqKFUAI{F&JGEn^r>+{s7?zrf8YHYoOdH00000NkvXXu0mjfDm2bL literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/reconnect.png b/app/src/main/res/drawable/reconnect.png new file mode 100644 index 0000000000000000000000000000000000000000..86069ee6d0dca4b7aafeee113a795218ff1a5b49 GIT binary patch literal 890 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoR!3-ps5|6hqFfi5z_=LF57zG0t0+x@?Eda(x zeMyjCFawj#gcFb7Jv%qYi_Pr7|4Y6_zxtV*KAzfr{LO;cCwY=WH>zd!NboHGrmxV& zyLsoDlNOU-{5DnjFkRR#Iat<*k)`o_)K=ZOe-6$6F-gq)U^Ca9PpOvw&Q~dM)=NFT zRL z1B07dnpl`w8K0kC9-GL4!>8Gq|1g~pYI3UaaEM^hQ{)m85S~6^3e)B#i9$vS^VZC< znXpn}F~=hfN0liz8*@ZMR~VU=D)>83cH};Bjm;>sEu6TqQ*%=B znKO=TQ4Kezh4mB^=4Fd+aL$#G$a(u_qV0nRFIdV}=rT7O&+pdmT0iyfou5B!8hHHe z?DX^HMJ(g(?dsXu8XP7(Q&64qAc@B;C4qy{v!$(dwc-(FrGp_N9>?wqcsiH(DOO$T@lI2_y*oT)ky^_Zt@E#>w(YsK$ZE!M28LeU^$KyU R;lMa#@O1TaS?83{1OU^-vn~Jt literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/red.9.png b/app/src/main/res/drawable/red.9.png new file mode 100644 index 0000000000000000000000000000000000000000..78855c45058c708a5133c10791d52d775751ed01 GIT binary patch literal 1280 zcmV+b1^@bqP)pNe- z^$*tJ+FSLw@@h4%Y+Z({+Z%E9!wvXu$BP&zG~qSxjF)l3Jt0v`*4pt+bw6MKcoV+g zvKZ4%Ik;3W;Zj(@#juEUNWi&T9#dfh&Nt;@`t=af?`}kY(0ZgTpUb;TL|T=4K6K;S zoAsD(%vOQRt4y@$Z#rLGX~Ovi6Q=4-n5;A6>~aa?m038udLgE^twn#O2mw=J9jP_o%yI)pYYg~m36JEm*%;p(Mz1gbvpYhE zeR;dS+3dsgN?A?75O!uME>MbdIx?}sh!g?i%M2J%&D`S9!P6FE80uH!%w7U(r zltRO{45+Wjs7%(eZ>fat5;h)DP0`K} zHHn6N;h?ikfMORv&wvgsGPI7*AOxJEB*OuHJe1;yj`UEHF7Mw6OTtnxWFH}W?E?1L zcHmW1k!y!u1Q>q~fAsqx9bQ3~AvyMaIN(4;B-*JAiIlbTt|I+AB*)qXj}^Q(V>>EC21yLpF>9o*khfA zh*L&~J9|R0iS7(266E-PU+%f#>e)C>2?l(6AFT9J4Pm9TKH3WZ*+;~tBeZr~DNSiE z;tu(p|9moZIps|!R@gA$H{fuYpqAc6Nn$gITf4JnkiEAjVTdIQ&1LfuEiqrEAFKIJ zuffN9yg9MsVHZ8GjEEQUe~oJ9_Eks4lIVSCDQ0PiFCWng3t~25{oTAx%{^Xoa-hM3 z?m#Z3;L+-wg%&4I2(S0Sy3i8rUidg7E*WjrPDFz?bXtY?@A`ezVdruZC3B*E4PGR| zMd%C^pv7atK9@wDhy>AcO4wgwMq3pDAunP}EWgHV{7d)smW|n^&E5V57ZSA|bge9h zQeTG76~)@d4dsZjbEW-{sC#xSZs98)=$qkylao5FVw2*McPXCiMASQPL@Aj&sJOFR qqfYtlxLqiHxSv9g^t + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/tick.png b/app/src/main/res/drawable/tick.png new file mode 100644 index 0000000000000000000000000000000000000000..966e2084e6b118427ed82989118e40fffa8aa797 GIT binary patch literal 593 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%3?x6Bmj(i*qzAb0n{m(0Y z`ufn8z9rSoEbG|MtYMVBwTt)7RpZ-I5pQ+VKXp!Bzz;O_hNp{Th{pN3mu?3gG7w;U z@P~=p^~$xTD1m@0O-dD7tReyvwD$eyo>>y@y?keqzR~}4(@#E8IU?7ZBm3l2(G}0e z6)UC+2}-8+%1A9)HEH7F#{w^0Ix|%ZvW!ErgU-G9qr|rS+=U%28QVfKjIXSdSm(QQ zyPrgUo@hil&$iX)EjomA_uq4PY zn8Eh#9q0d_oZNn^O`p+gH~a9Bg&vMA^<}01S|#8Au})ek_hF0Js~^wSC@P3veI(1o zKx99iD-B5b_*Wq zJIeT|WarO{6Z0!r=i3XYEG%eI{nZ%pXLG62%uDAygHIetIk9Lrr@_-BCX;QZGWqOV z6w)+hWyp*PS-eX79M?6QOiAl*)n9h^q10P1hQ0q9@8hYOT)Jn*EmV>Q4Iue8>6N1OHafEorbj5ILD!|GM;KxvF~g$=3hR%K0~l$G?(% V7XNg@XQ00rJYD@<);T3K0RS`_;i~`u literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/userlist_enabled.png b/app/src/main/res/drawable/userlist_enabled.png new file mode 100644 index 0000000000000000000000000000000000000000..bd8e7a45333e3a9e7d607d7ee9a4fdb5e149d93e GIT binary patch literal 609 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%3?x6Bmj;5U0G|-o86ywm-8G#K^nPGTkY6x^ z?b|!f|35jo{Z^Ykqt|Zs;Ufz@99!zkO8>P=zW-yLv{LTF7O_`9o~=<-5WV_HmWj)| zSo(|jBL5imJ!d&@@oYLMxO8){RLYar-H}Ica^HQftaGNk1!(vgPZ!4!jq|OSt_mG8 z5MaIVz^`yS(^0OYn(yBI|8FXga5*i0hyP7WW6x)5Ej7soi)Pe0oDmbz?%?efJkocR z@lnanpA{$OSFp~v7f@MP(4zXQG2+kWQl*)f&Upr(IFNE;(QZzIr$8exlLbhi=cgcg3v} zVKmiRovk(dE#K9h_6PWm^RWm1t)5%bV0R#LGPnM9>B(|c_3D$Y|DTofZxD}vCHXA= T>4eWfe=&Hv`njxgN@xNAUQ#a; literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout-v11/channel_list_fragment.xml b/app/src/main/res/layout-v11/channel_list_fragment.xml new file mode 100644 index 0000000..fe86549 --- /dev/null +++ b/app/src/main/res/layout-v11/channel_list_fragment.xml @@ -0,0 +1,3 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout-v11/channel_list_text_size.xml b/app/src/main/res/layout-v11/channel_list_text_size.xml new file mode 100644 index 0000000..6937f84 --- /dev/null +++ b/app/src/main/res/layout-v11/channel_list_text_size.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-v11/statusbar.xml b/app/src/main/res/layout-v11/statusbar.xml new file mode 100644 index 0000000..7716f14 --- /dev/null +++ b/app/src/main/res/layout-v11/statusbar.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-v11/userlist_fragment.xml b/app/src/main/res/layout-v11/userlist_fragment.xml new file mode 100644 index 0000000..e6707ae --- /dev/null +++ b/app/src/main/res/layout-v11/userlist_fragment.xml @@ -0,0 +1,3 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout-v11/userlist_text_size.xml b/app/src/main/res/layout-v11/userlist_text_size.xml new file mode 100644 index 0000000..21edfdb --- /dev/null +++ b/app/src/main/res/layout-v11/userlist_text_size.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-v14/chooser_buttons.xml b/app/src/main/res/layout-v14/chooser_buttons.xml new file mode 100644 index 0000000..492ec29 --- /dev/null +++ b/app/src/main/res/layout-v14/chooser_buttons.xml @@ -0,0 +1,7 @@ + + +