From 5c05eb62ff1935b5db261f72a6e4e1299c659579 Mon Sep 17 00:00:00 2001 From: ZhanGSKen Date: Mon, 29 Sep 2025 13:50:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=BB=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- winboll/build.gradle | 5 +- winboll/build.properties | 4 +- winboll/src/main/AndroidManifest.xml | 8 +- .../java/cc/winboll/studio/winboll/App.java | 2 + .../winboll/studio/winboll/MainActivity.java | 143 +++++++++++++----- .../winboll/activities/AboutActivity.java | 95 ++++++++++++ .../winboll/activities/WinBoLLActivity.java | 6 +- .../winboll/fragments/MainFragment.java | 37 +++++ .../src/main/res/layout/activity_about.xml | 11 ++ winboll/src/main/res/layout/fragment_main.xml | 24 +++ .../{toolbar_main2.xml => toolbar_main.xml} | 0 11 files changed, 288 insertions(+), 47 deletions(-) create mode 100644 winboll/src/main/java/cc/winboll/studio/winboll/activities/AboutActivity.java create mode 100644 winboll/src/main/java/cc/winboll/studio/winboll/fragments/MainFragment.java create mode 100644 winboll/src/main/res/layout/activity_about.xml create mode 100644 winboll/src/main/res/layout/fragment_main.xml rename winboll/src/main/res/menu/{toolbar_main2.xml => toolbar_main.xml} (100%) diff --git a/winboll/build.gradle b/winboll/build.gradle index 65f20daa..b18c367b 100644 --- a/winboll/build.gradle +++ b/winboll/build.gradle @@ -47,6 +47,9 @@ dependencies { api fileTree(dir: 'libs', include: ['*.jar']) api 'com.google.code.gson:gson:2.10.1' + + // 下拉控件 + api 'com.baoyz.pullrefreshlayout:library:1.2.0' // SSH api 'com.jcraft:jsch:0.1.55' @@ -69,7 +72,7 @@ dependencies { //api 'androidx.vectordrawable:vectordrawable-animated:1.1.0' //api 'androidx.fragment:fragment:1.1.0' - api 'cc.winboll.studio:libaes:15.10.1' + api 'cc.winboll.studio:libaes:15.10.2' api 'cc.winboll.studio:libapputils:15.10.2' api 'cc.winboll.studio:libappbase:15.10.9' } diff --git a/winboll/build.properties b/winboll/build.properties index 0611577c..b788bb0c 100644 --- a/winboll/build.properties +++ b/winboll/build.properties @@ -1,8 +1,8 @@ #Created by .winboll/winboll_app_build.gradle -#Sun Sep 28 17:53:27 GMT 2025 +#Mon Sep 29 05:46:21 GMT 2025 stageCount=3 libraryProject= baseVersion=15.0 publishVersion=15.0.2 -buildCount=7 +buildCount=10 baseBetaVersion=15.0.3 diff --git a/winboll/src/main/AndroidManifest.xml b/winboll/src/main/AndroidManifest.xml index dfc42ac2..d3773024 100644 --- a/winboll/src/main/AndroidManifest.xml +++ b/winboll/src/main/AndroidManifest.xml @@ -35,7 +35,6 @@ - - - + @@ -213,6 +211,8 @@ + + - + \ No newline at end of file diff --git a/winboll/src/main/java/cc/winboll/studio/winboll/App.java b/winboll/src/main/java/cc/winboll/studio/winboll/App.java index 2217aa54..93bd167a 100644 --- a/winboll/src/main/java/cc/winboll/studio/winboll/App.java +++ b/winboll/src/main/java/cc/winboll/studio/winboll/App.java @@ -50,6 +50,8 @@ public class App extends GlobalApplication { @Override public void onCreate() { super.onCreate(); + + WinBoLLActivityManager.init(this); // 初始化 Toast 框架 ToastUtils.init(this); diff --git a/winboll/src/main/java/cc/winboll/studio/winboll/MainActivity.java b/winboll/src/main/java/cc/winboll/studio/winboll/MainActivity.java index 5d4241cd..8ad34fc8 100644 --- a/winboll/src/main/java/cc/winboll/studio/winboll/MainActivity.java +++ b/winboll/src/main/java/cc/winboll/studio/winboll/MainActivity.java @@ -1,51 +1,122 @@ package cc.winboll.studio.winboll; +import android.app.Activity; +import android.content.Intent; import android.os.Bundle; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; -import cc.winboll.studio.libappbase.LogView; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.widget.AdapterView; +import android.widget.Toast; +import cc.winboll.studio.libaes.activitys.DrawerFragmentActivity; +import cc.winboll.studio.libaes.dialogs.LocalFileSelectDialog; +import cc.winboll.studio.libaes.dialogs.StoragePathDialog; +import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity; +import cc.winboll.studio.libaes.models.DrawerMenuBean; +import cc.winboll.studio.libaes.unittests.SecondaryLibraryActivity; +import cc.winboll.studio.libaes.unittests.TestAButtonFragment; +import cc.winboll.studio.libaes.unittests.TestASupportToolbarActivity; +import cc.winboll.studio.libaes.unittests.TestAToolbarActivity; +import cc.winboll.studio.libaes.unittests.TestDrawerFragmentActivity; +import cc.winboll.studio.libaes.unittests.TestViewPageFragment; +import cc.winboll.studio.libaes.utils.WinBoLLActivityManager; +import cc.winboll.studio.libappbase.LogUtils; +import cc.winboll.studio.winboll.R; +import cc.winboll.studio.winboll.fragments.MainFragment; +import com.a4455jkjh.colorpicker.ColorPickerDialog; +import java.util.ArrayList; +import cc.winboll.studio.winboll.activities.AboutActivity; + +public class MainActivity extends DrawerFragmentActivity implements IWinBoLLActivity { + -public class MainActivity extends AppCompatActivity { - public static final String TAG = "MainActivity"; - LogView mLogView; - //private TerminalView mTerminalView; + MainFragment mMainFragment; + + @Override + public Activity getActivity() { + return null; + } + + @Override + public String getTag() { + return TAG; + } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - // 先设置 Toolbar 为支持 ActionBar - setSupportActionBar(toolbar); - - // 为导航图标设置点击事件 - toolbar.setNavigationOnClickListener(new android.view.View.OnClickListener() { - @Override - public void onClick(android.view.View v) { - // 这里可以添加点击事件的逻辑 - } - }); - - //getSupportActionBar().setDisplayHomeAsUpEnabled(true); - //getSupportActionBar().setHomeButtonEnabled(true); - - // 如果要设置其他图标(如菜单图标等),可根据具体需求进行设置 - // 例如,有些情况下可以通过 MenuInflater 来 inflate 菜单资源,然后在菜单的 onMenuItemClick 中处理图标点击事件 - - mLogView = findViewById(R.id.logview); - - /*mTerminalView = findViewById(R.id.terminalView); - - // 示例:模拟用户输入 "ls" 命令 - mTerminalView.sendInput("ls");*/ + if (mMainFragment == null) { + mMainFragment = new MainFragment(); + addFragment(mMainFragment); + } + showFragment(mMainFragment); } @Override - protected void onResume() { - super.onResume(); - mLogView.start(); + public void initDrawerMenuItemList(ArrayList listDrawerMenu) { + super.initDrawerMenuItemList(listDrawerMenu); + LogUtils.d(TAG, "initDrawerMenuItemList"); + //listDrawerMenu.clear(); + // 添加抽屉菜单项 + listDrawerMenu.add(new DrawerMenuBean(R.drawable.ic_launcher, TestAButtonFragment.TAG)); + listDrawerMenu.add(new DrawerMenuBean(R.drawable.ic_launcher, TestViewPageFragment.TAG)); + notifyDrawerMenuDataChanged(); } + + @Override + public void reinitDrawerMenuItemList(ArrayList listDrawerMenu) { + super.reinitDrawerMenuItemList(listDrawerMenu); + LogUtils.d(TAG, "reinitDrawerMenuItemList"); + //listDrawerMenu.clear(); + // 添加抽屉菜单项 + listDrawerMenu.add(new DrawerMenuBean(R.drawable.ic_launcher, TestAButtonFragment.TAG)); + listDrawerMenu.add(new DrawerMenuBean(R.drawable.ic_launcher, TestViewPageFragment.TAG)); + notifyDrawerMenuDataChanged(); + } + + @Override + public DrawerFragmentActivity.ActivityType initActivityType() { + return DrawerFragmentActivity.ActivityType.Main; + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.toolbar_main, menu); + if(App.isDebuging()) { + getMenuInflater().inflate(cc.winboll.studio.libapputils.R.menu.toolbar_studio_debug, menu); + } + return super.onCreateOptionsMenu(menu); + } + + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + super.onItemClick(parent, view, position, id); + switch (position) { + case 0 : { + if (mMainFragment == null) { + mMainFragment = new MainFragment(); + addFragment(mMainFragment); + } + showFragment(mMainFragment); + break; + } + } + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + int nItemId = item.getItemId(); + if (item.getItemId() == R.id.item_log) { + WinBoLLActivityManager.getInstance().startLogActivity(getApplicationContext()); + } else if (nItemId == R.id.item_about) { + WinBoLLActivityManager.getInstance().startWinBoLLActivity(getApplicationContext(), AboutActivity.class); + return true; + } + + return super.onOptionsItemSelected(item); + } + + } diff --git a/winboll/src/main/java/cc/winboll/studio/winboll/activities/AboutActivity.java b/winboll/src/main/java/cc/winboll/studio/winboll/activities/AboutActivity.java new file mode 100644 index 00000000..eea24c93 --- /dev/null +++ b/winboll/src/main/java/cc/winboll/studio/winboll/activities/AboutActivity.java @@ -0,0 +1,95 @@ +package cc.winboll.studio.winboll.activities; + +/** + * @Author ZhanGSKen&豆包大模型 + * @Date 2025/09/29 13:30 + * @Describe 应用介绍窗口 + */ +import android.app.Activity; +import android.content.Context; +import android.os.Bundle; +import android.view.ViewGroup; +import android.widget.LinearLayout; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; +import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity; +import cc.winboll.studio.libaes.models.APPInfo; +import cc.winboll.studio.libaes.utils.WinBoLLActivityManager; +import cc.winboll.studio.libaes.views.AboutView; +import cc.winboll.studio.winboll.R; +import cc.winboll.studio.libaes.BuildConfig; + +public class AboutActivity extends WinBoLLActivity implements IWinBoLLActivity { + + public static final String TAG = "AboutActivity"; + + Context mContext; + Toolbar mToolbar; + + @Override + public Activity getActivity() { + return this; + } + + @Override + public String getTag() { + return TAG; + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mContext = this; + setContentView(R.layout.activity_about); + + mToolbar = findViewById(R.id.toolbar); + setSupportActionBar(mToolbar); + mToolbar.setSubtitle(TAG); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + + AboutView aboutView = CreateAboutView(); + // 在 Activity 的 onCreate 或其他生命周期方法中调用 +// LinearLayout layout = new LinearLayout(this); +// layout.setOrientation(LinearLayout.VERTICAL); +// // 创建布局参数(宽度和高度) +// ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( +// ViewGroup.LayoutParams.MATCH_PARENT, +// ViewGroup.LayoutParams.MATCH_PARENT +// ); +// addContentView(aboutView, params); + + LinearLayout layout = findViewById(R.id.aboutviewroot_ll); + // 创建布局参数(宽度和高度) + ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT + ); + layout.addView(aboutView, params); + + WinBoLLActivityManager.getInstance().add(this); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + WinBoLLActivityManager.getInstance().registeRemove(this); + } + + public AboutView CreateAboutView() { + String szBranchName = "winboll"; + APPInfo appInfo = new APPInfo(); + appInfo.setAppName("WinBoLL"); + appInfo.setAppIcon(cc.winboll.studio.libaes.R.drawable.ic_winboll); + appInfo.setAppDescription("WinBoLL Description"); + appInfo.setAppGitName("APPBase"); + appInfo.setAppGitOwner("Studio"); + appInfo.setAppGitAPPBranch(szBranchName); + appInfo.setAppGitAPPSubProjectFolder(szBranchName); + appInfo.setAppHomePage("https://discuz.winboll.cc/forum.php?mod=viewthread&tid=3&extra=page%3D1"); + appInfo.setAppAPKName("WinBoLL"); + appInfo.setAppAPKFolderName("WinBoLL"); + //appInfo.setIsAddDebugTools(false); + appInfo.setIsAddDebugTools(BuildConfig.DEBUG); + return new AboutView(mContext, appInfo); + } +} diff --git a/winboll/src/main/java/cc/winboll/studio/winboll/activities/WinBoLLActivity.java b/winboll/src/main/java/cc/winboll/studio/winboll/activities/WinBoLLActivity.java index 9628413d..15c5e533 100644 --- a/winboll/src/main/java/cc/winboll/studio/winboll/activities/WinBoLLActivity.java +++ b/winboll/src/main/java/cc/winboll/studio/winboll/activities/WinBoLLActivity.java @@ -6,16 +6,14 @@ package cc.winboll.studio.winboll.activities; * @Describe WinBoLL 窗口基础类 */ import android.app.Activity; -import android.content.Intent; import android.os.Bundle; import android.view.MenuItem; +import androidx.appcompat.app.AppCompatActivity; import cc.winboll.studio.libaes.interfaces.IWinBoLLActivity; import cc.winboll.studio.libaes.utils.WinBoLLActivityManager; import cc.winboll.studio.libappbase.LogUtils; -import cc.winboll.studio.winboll.MainActivity; -import cc.winboll.studio.winboll.R; -public class WinBoLLActivity extends Activity implements IWinBoLLActivity { +public class WinBoLLActivity extends AppCompatActivity implements IWinBoLLActivity { public static final String TAG = "WinBoLLActivity"; diff --git a/winboll/src/main/java/cc/winboll/studio/winboll/fragments/MainFragment.java b/winboll/src/main/java/cc/winboll/studio/winboll/fragments/MainFragment.java new file mode 100644 index 00000000..a4ab575d --- /dev/null +++ b/winboll/src/main/java/cc/winboll/studio/winboll/fragments/MainFragment.java @@ -0,0 +1,37 @@ +package cc.winboll.studio.winboll.fragments; + +/** + * @Author ZhanGSKen&豆包大模型 + * @Date 2025/09/29 13:15 + * @Describe MainFragment + */ +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import androidx.fragment.app.Fragment; +import cc.winboll.studio.winboll.R; +import cc.winboll.studio.libaes.views.AButton; +import cc.winboll.studio.libappbase.LogUtils; +import cc.winboll.studio.libappbase.ToastUtils; +import android.widget.Switch; + + +public class MainFragment extends Fragment { + + public static final String TAG = "MainFragment"; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.fragment_main, container, false); + Switch swEnablePosition = view.findViewById(R.id.fragmentmainSwitch1); + swEnablePosition.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + ToastUtils.show("Position"); + } + }); + return view; + } + +} diff --git a/winboll/src/main/res/layout/activity_about.xml b/winboll/src/main/res/layout/activity_about.xml new file mode 100644 index 00000000..b79821b7 --- /dev/null +++ b/winboll/src/main/res/layout/activity_about.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/winboll/src/main/res/layout/fragment_main.xml b/winboll/src/main/res/layout/fragment_main.xml new file mode 100644 index 00000000..4beaf901 --- /dev/null +++ b/winboll/src/main/res/layout/fragment_main.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + diff --git a/winboll/src/main/res/menu/toolbar_main2.xml b/winboll/src/main/res/menu/toolbar_main.xml similarity index 100% rename from winboll/src/main/res/menu/toolbar_main2.xml rename to winboll/src/main/res/menu/toolbar_main.xml