• R/O
  • SSH
  • HTTPS

owata: Commit


Commit MetaInfo

Revision21 (tree)
Time2008-02-27 11:51:42
Authorbird_may_nike

Log Message

お気に入りに板を追加

Change Summary

Incremental Difference

--- trunc/src/psp2chFavorite.c (revision 20)
+++ trunc/src/psp2chFavorite.c (revision 21)
@@ -27,6 +27,8 @@
2727 extern SceCtrlData pad; // psp2ch.c
2828 extern SceCtrlData oldPad; // psp2ch.c
2929 extern MESSAGE_HELPER mh; // psp2ch.c
30+extern S_2CH_ITA* itaList; // psp2chIta.c
31+extern S_2CH_SCREEN ita; // psp2chIta.c
3032 extern S_2CH_THREAD* threadList; // psp2chThread.c
3133 extern S_2CH_SCREEN thread; // psp2chThread.c
3234 extern S_2CH_RES* resList; // psp2chRes.c
@@ -37,6 +39,8 @@
3739
3840 S_2CH_FAVORITE* favList = NULL;
3941 S_2CH_SCREEN fav;
42+S_2CH_FAV_ITA* favItaList;
43+S_2CH_SCREEN favIta;
4044
4145 /**********************
4246 Favorite
@@ -45,16 +49,26 @@
4549 {
4650 static int scrollX = 0;
4751 static char* menuStr = "";
52+ static int focus = 1;
4853 int lineEnd, rMenu;
54+ int i;
4955
5056 if (favList == NULL)
5157 {
52- if (psp2chLoadFavorite() < 0)
58+ psp2chLoadFavorite();
59+ }
60+ if (favItaList == NULL)
61+ {
62+ if (psp2chLoadFavoriteIta() < 0)
5363 {
54- sel = 2;
55- return 0;
64+ focus = 0;
5665 }
5766 }
67+ if (favList == NULL && favItaList == NULL)
68+ {
69+ sel = 2;
70+ return -1;
71+ }
5872 if (tateFlag)
5973 {
6074 lineEnd = 35;
@@ -65,7 +79,14 @@
6579 }
6680 if(sceCtrlPeekBufferPositive(&pad, 1))
6781 {
68- rMenu = psp2chCursorSet(&fav, lineEnd);
82+ if (focus)
83+ {
84+ rMenu = psp2chCursorSet(&favIta, lineEnd);
85+ }
86+ else
87+ {
88+ rMenu = psp2chCursorSet(&fav, lineEnd);
89+ }
6990 if (rMenu)
7091 {
7192 menuStr = " ↑ : 先頭   ↓ : 最後    □ : 全板検索";
@@ -74,11 +95,25 @@
7495 {
7596 if (tateFlag)
7697 {
77- menuStr = " L : 決定     × : 板一覧      □ : 削除     R : メニュー切替";
98+ if (focus)
99+ {
100+ menuStr = " L : 決定     × : 板一覧     △ : お気にスレ  □ : 削除     R : メニュー切替";
101+ }
102+ else
103+ {
104+ menuStr = " L : 決定     × : 板一覧     △ : お気に板   □ : 削除     R : メニュー切替";
105+ }
78106 }
79107 else
80108 {
81- menuStr = " ○ : 決定     × : 板一覧      □ : 削除     R : メニュー切替";
109+ if (focus)
110+ {
111+ menuStr = " ○ : 決定     × : 板一覧    △ : お気にスレ   □ : 削除    R : メニュー切替";
112+ }
113+ else
114+ {
115+ menuStr = " ○ : 決定     × : 板一覧    △ : お気に板    □ : 削除    R : メニュー切替";
116+ }
82117 }
83118 }
84119 if (pad.Buttons != oldPad.Buttons)
@@ -100,12 +135,40 @@
100135 }
101136 else
102137 {
103- free(resList);
104- resList = NULL;
105- preLine = -2;
106- pgFillvram(WHITE, 0, 0, SCR_WIDTH, BUF_HEIGHT);
107- sel = 4;
108- return 0;
138+ if (focus)
139+ {
140+ if (itaList == NULL)
141+ {
142+ if (psp2chItaList() < 0)
143+ {
144+ return 0;
145+ }
146+ }
147+ for (i = 0; i < ita.count; i++)
148+ {
149+ if (strcmp(itaList[i].title, favItaList[favIta.select].title) == 0)
150+ {
151+ if (psp2chThreadList(i) < 0)
152+ {
153+ return 0;
154+ }
155+ ita.select = i;
156+ thread.start = 0;
157+ thread.select = 0;
158+ sel = 3;
159+ return 0;
160+ }
161+ }
162+ }
163+ else
164+ {
165+ free(resList);
166+ resList = NULL;
167+ preLine = -2;
168+ pgFillvram(WHITE, 0, 0, SCR_WIDTH, BUF_HEIGHT);
169+ sel = 4;
170+ return 0;
171+ }
109172 }
110173 }
111174 else if(pad.Buttons & PSP_CTRL_CROSS)
@@ -125,6 +188,15 @@
125188 }
126189 else
127190 {
191+ focus = focus ? 0 : 1;
192+ if (focus && favItaList == NULL)
193+ {
194+ focus = 0;
195+ }
196+ else if (focus == 0 && favList == NULL)
197+ {
198+ focus = 1;
199+ }
128200 }
129201 }
130202 else if(pad.Buttons & PSP_CTRL_SQUARE)
@@ -143,12 +215,25 @@
143215 }
144216 else
145217 {
146- psp2chDelFavorite(favList[fav.select].title, favList[fav.select].dat);
218+ if (focus)
219+ {
220+ }
221+ else
222+ {
223+ psp2chDelFavorite(favList[fav.select].title, favList[fav.select].dat);
224+ }
147225 }
148226 }
149227 }
150228 scrollX = psp2chPadSet(scrollX);
151- psp2chDrawFavorite(scrollX);
229+ if (focus)
230+ {
231+ psp2chDrawFavoriteIta();
232+ }
233+ else
234+ {
235+ psp2chDrawFavorite(scrollX);
236+ }
152237 pgCopy(scrollX, 0);
153238 pgMenuBar(menuStr);
154239 sceDisplayWaitVblankStart();
@@ -245,6 +330,81 @@
245330 }
246331
247332 /**********************
333+favoriteita.brdがあれば読み込んで
334+favItaListのメモリ再確保とデータ作成
335+**********************/
336+int psp2chLoadFavoriteIta(void)
337+{
338+ SceUID fd;
339+ SceIoStat st;
340+ char path[256];
341+ char *buf, *p, *r;
342+ int i;
343+
344+ sprintf(path, "%s/%s/favoriteita.brd", cwDir, logDir);
345+ i = sceIoGetstat(path, &st);
346+ if (i < 0)
347+ {
348+ return -1;
349+ }
350+ buf = (char*)malloc(st.st_size + 1);
351+ if (buf == NULL)
352+ {
353+ memset(&mh,0,sizeof(MESSAGE_HELPER));
354+ strcpy(mh.message, "memorry error");
355+ pspShowMessageDialog(&mh, DIALOG_LANGUAGE_AUTO);
356+ return -1;
357+ }
358+ fd = sceIoOpen(path, PSP_O_RDONLY, 0777);
359+ if (fd < 0)
360+ {
361+ free(buf);
362+ return -1;
363+ }
364+ sceIoRead(fd, buf, st.st_size);
365+ sceIoClose(fd);
366+ buf[st.st_size] = '\0';
367+ p = buf;
368+ favIta.count = 0;
369+ while (*p)
370+ {
371+ if (*p++ == '\n')
372+ {
373+ favIta.count++;
374+ }
375+ }
376+ if (favIta.count <= 0)
377+ {
378+ free(buf);
379+ return -1;
380+ }
381+ favItaList = (S_2CH_FAV_ITA*)realloc(favItaList, sizeof(S_2CH_FAV_ITA) * favIta.count);
382+ if (favItaList == NULL)
383+ {
384+ memset(&mh,0,sizeof(MESSAGE_HELPER));
385+ strcpy(mh.message, "memorry error");
386+ pspShowMessageDialog(&mh, DIALOG_LANGUAGE_AUTO);
387+ return -1;
388+ }
389+ r = buf;
390+ i = 0;
391+ while (*r)
392+ {
393+ p = strchr(r, '\t');
394+ *p= '\0';
395+ strcpy(favItaList[i].cate, r);
396+ r = ++p;
397+ p = strchr(r, '\n');
398+ *p= '\0';
399+ strcpy(favItaList[i].title, r);
400+ r = ++p;
401+ i++;
402+ }
403+ free(buf);
404+ return 0;
405+}
406+
407+/**********************
248408 表示中のスレッドをfavorite.brdの最後に追加
249409 psp2chLoadFavorite()でリストを作成しなおす
250410 **********************/
@@ -281,6 +441,42 @@
281441 }
282442
283443 /**********************
444+favoriteita.brdの最後に追加
445+psp2chLoadFavoriteIta()でリストを作成しなおす
446+**********************/
447+int psp2chAddFavoriteIta(char* cate, char* title)
448+{
449+ SceUID fd;
450+ char path[256];
451+ int i;
452+
453+ if (favIta.count == 0)
454+ {
455+ psp2chLoadFavoriteIta();
456+ }
457+ for (i = 0; i < favIta.count; i++)
458+ {
459+ if (strcmp(favItaList[i].cate, cate) == 0 && strcmp(favItaList[i].title, title) == 0)
460+ {
461+ memset(&mh,0,sizeof(MESSAGE_HELPER));
462+ strcpy(mh.message, TEXT_8);
463+ pspShowMessageDialog(&mh, DIALOG_LANGUAGE_AUTO);
464+ return -1;
465+ }
466+ }
467+ sprintf(path, "%s/%s/favoriteita.brd", cwDir, logDir);
468+ fd = sceIoOpen(path, PSP_O_WRONLY | PSP_O_CREAT | PSP_O_APPEND, 0777);
469+ if (fd < 0)
470+ {
471+ return -1;
472+ }
473+ sprintf(path, "%s\t%s\n", cate, title);
474+ sceIoWrite(fd, path, strlen(path));
475+ sceIoClose(fd);
476+ return psp2chLoadFavoriteIta();
477+}
478+
479+/**********************
284480 favListからtitleとdatの一致する項目以外のリストのみをfavorite.brdに書き出す
285481 psp2chLoadFavorite()でリストを作成しなおす
286482 **********************/
@@ -325,12 +521,12 @@
325521 }
326522
327523 /**********************
524+お気に入りスレの描画
328525 **********************/
329526 void psp2chDrawFavorite(int scrollX)
330527 {
331528 int start;
332529 int i;
333- char buf[32];
334530 int lineEnd, scrW, scrH;
335531
336532 if (tateFlag)
@@ -363,7 +559,6 @@
363559 return;
364560 }
365561 pgCursorX = 0;
366- sprintf(buf, "%4d", i + 1);
367562 if (i == fav.select)
368563 {
369564 pgFillvram(threadColor.s_bg, 0, pgCursorY, BUF_WIDTH, LINE_PITCH);
@@ -389,3 +584,68 @@
389584 pgCursorY += LINE_PITCH;
390585 }
391586 }
587+
588+/**********************
589+お気に入り板の描画
590+**********************/
591+void psp2chDrawFavoriteIta(void)
592+{
593+ int start;
594+ int i;
595+ int lineEnd, scrW, scrH;
596+
597+ if (tateFlag)
598+ {
599+ lineEnd = 35;
600+ scrW = SCR_HEIGHT;
601+ scrH = SCR_WIDTH;
602+ }
603+ else
604+ {
605+ lineEnd = 20;
606+ scrW = SCR_WIDTH;
607+ scrH = SCR_HEIGHT;
608+ }
609+ start = favIta.start;
610+ if (start + lineEnd > favIta.count)
611+ {
612+ start = favIta.count - lineEnd;
613+ }
614+ if (start < 0)
615+ {
616+ start = 0;
617+ }
618+ pgFillvram(threadColor.bg, 0, 0, BUF_WIDTH, BUF_HEIGHT);
619+ pgCursorY = 0;
620+ for (i = start; i < start + lineEnd; i++)
621+ {
622+ if (i >= favIta.count)
623+ {
624+ return;
625+ }
626+ pgCursorX = 0;
627+ if (i == favIta.select)
628+ {
629+ pgFillvram(threadColor.s_bg, 0, pgCursorY, BUF_WIDTH, LINE_PITCH);
630+ pgPrintNumber(i + 1, threadColor.s_num, threadColor.s_bg);
631+ }
632+ else
633+ {
634+ pgPrintNumber(i + 1, threadColor.num, threadColor.bg);
635+ }
636+ pgCursorX = 30;
637+ if (i == favIta.select)
638+ {
639+ pgPrint(favItaList[i].cate, threadColor.s_category, threadColor.s_bg, scrW);
640+ pgCursorX = 100;
641+ pgPrint(favItaList[i].title, threadColor.s_text1, threadColor.s_bg, scrW);
642+ }
643+ else
644+ {
645+ pgPrint(favItaList[i].cate, threadColor.category, threadColor.bg, scrW);
646+ pgCursorX = 100;
647+ pgPrint(favItaList[i].title, threadColor.text1, threadColor.bg, scrW);
648+ }
649+ pgCursorY += LINE_PITCH;
650+ }
651+}
--- trunc/src/psp2chFavorite.h (revision 20)
+++ trunc/src/psp2chFavorite.h (revision 21)
@@ -14,10 +14,18 @@
1414 char subject[128];
1515 } S_2CH_FAVORITE;
1616
17+typedef struct {
18+ char cate[32];
19+ char title[32];
20+} S_2CH_FAV_ITA;
21+
1722 int psp2chFavorite(void);
1823 int psp2chLoadFavorite(void);
24+int psp2chLoadFavoriteIta(void);
1925 int psp2chAddFavorite(char* host, char* dir, char* title, int dat);
26+int psp2chAddFavoriteIta(char* cate, char* title);
2027 int psp2chDelFavorite(char* title, int dat);
2128 void psp2chDrawFavorite(int scrollX);
29+void psp2chDrawFavoriteIta(void);
2230
2331 #endif
--- trunc/src/color.ini (nonexistent)
+++ trunc/src/color.ini (revision 21)
@@ -0,0 +1,79 @@
1+// 色のフォーマット0xFFBBGGRR(RR:赤,GG:緑,BB:青の16進数)
2+// 例:青=0xFFFF0000, 赤=0xFF0000FF
3+// レス本文
4+RES_NUMBER = 0xFF0000FF
5+RES_NAME_HEAD = 0xFF000000
6+RES_NAME_BODY = 0xFF00CC00
7+RES_MAIL = 0xFF999999
8+RES_DATE = 0xFF000000
9+RES_ID_HEAD_1 = 0xFFFF0000
10+RES_ID_HEAD_2 = 0xFF0000FF
11+RES_ID_BODY = 0xFFFF0000
12+RES_TEXT = 0xFF000000
13+RES_BG = 0xFFE0E0E0
14+RES_LINK = 0xFFFF0000
15+RES_BAR_SLIDER = 0xFF00FFFF
16+RES_BAR_BG = 0xFFFF6666
17+// レスアンカー
18+RES_A_NUMBER = 0xFF0000FF
19+RES_A_NAME_HEAD = 0xFF000000
20+RES_A_NAME_BODY = 0xFF00CC00
21+RES_A_MAIL = 0xFF999999
22+RES_A_DATE = 0xFF000000
23+RES_A_ID_HEAD_1 = 0xFFFF0000
24+RES_A_ID_HEAD_2 = 0xFF0000FF
25+RES_A_ID_BODY = 0xFFFF0000
26+RES_A_TEXT = 0xFF000000
27+RES_A_BG = 0xFFCCFFFF
28+RES_A_LINK = 0xFFFF0000
29+RES_A_BAR_SLIDER = 0xFFCCFF00
30+RES_A_BAR_BG = 0xFFFFFFCC
31+// メニューバー
32+MENU_TEXT = 0xFFFFFFFF
33+MENU_BG = 0xFF000000
34+MENU_BATTERY_1 = 0xFF00FF00
35+MENU_BATTERY_2 = 0xFF00FFFF
36+MENU_BATTERY_3 = 0xFF0000FF
37+// スレ一覧・お気に入りスレ
38+THREAD_NUMBER = 0xFF0000FF
39+THREAD_CATEGORY = 0xFF0000FF
40+THREAD_TEXT_1 = 0xFFFF0000
41+THREAD_TEXT_2 = 0xFF0000FF
42+THREAD_BG = 0xFFCCFFCC
43+THREAD_COUNT_1 = 0xFF000000
44+THREAD_COUNT_2 = 0xFF000000
45+THREAD_SELECT_NUMBER = 0xFF0000FF
46+THREAD_SELECT_CATEGORY = 0xFF000099
47+THREAD_SELECT_TEXT_1 = 0xFF990000
48+THREAD_SELECT_TEXT_2 = 0xFF000099
49+THREAD_SELECT_BG = 0xFFCCCCCC
50+THREAD_SELECT_COUNT_1 = 0xFF000000
51+THREAD_SELECT_COUNT_2 = 0xFF000000
52+// カテゴリーにフォーカス
53+CATE_ON_TEXT = 0xFF0033CC
54+CATE_ON_BG = 0xFFFFFFFF
55+CATE_ON_S_TEXT = 0xFFFFFFFF
56+CATE_ON_S_BG = 0xFF0033CC
57+ITA_OFF_TEXT = 0xFFFF6666
58+ITA_OFF_BG = 0xFFCCCCCC
59+ITA_OFF_S_TEXT = 0xFFCCCCCC
60+ITA_OFF_S_BG = 0xFFFF6666
61+CATE_ON_BASE = 0xFFFFFFFF
62+// 板一覧にフォーカス
63+CATE_OFF_TEXT = 0xFF669988
64+CATE_OFF_BG = 0xFFCCCCCC
65+CATE_OFF_S_TEXT = 0xFFCCCCCC
66+CATE_OFF_S_BG = 0xFF669988
67+ITA_ON_TEXT = 0xFFFF0000
68+ITA_ON_BG = 0xFFFFFFFF
69+ITA_ON_S_TEXT = 0xFFFFFFFF
70+ITA_ON_S_BG = 0xFFFF0000
71+CATE_OFF_BASE = 0xFFFFFFFF
72+// 書き込みフォーム
73+FORM_TITLE_TEXT = 0xFFFFFFFF
74+FORM_TITLE_BG = 0xFF0000FF
75+// メニューウィンドウ
76+MENU_WIN_TEXT = 0xFFCCCCCC
77+MENU_WIN_BG = 0xFF000000
78+MENU_WIN_S_TEXT = 0xFFFFFFFF
79+MENU_WIN_S_BG = 0xFFFF0000
--- trunc/src/psp2chIta.c (revision 20)
+++ trunc/src/psp2chIta.c (revision 21)
@@ -89,13 +89,13 @@
8989 psp2chDrawIta(ita.start, ita.select, cateOffColor);
9090 if (rMenu)
9191 {
92- menuStr = " ↑ : 先頭   ↓ : 最後   □ : 全板検索";
92+ menuStr = " ↑ : 先頭    ↓ : 最後    □ : 全板検索     △ : お気に入りに追加";
9393 }
9494 else
9595 {
9696 if (tateFlag)
9797 {
98- menuStr = " L : 決定     × : 戻る    □ : お気に入り   △ : 更新     R : メニュー切替";
98+ menuStr = " L : 決定     × : 戻る    □ : お気に入り    △ : 更新     R : メニュー切替";
9999 }
100100 else
101101 {
@@ -112,13 +112,13 @@
112112 psp2chDrawIta(ita.start, ita.select, cateOnColor);
113113 if (rMenu)
114114 {
115- menuStr = " ↑ : 先頭   ↓ : 最後   □ : 全板検索";
115+ menuStr = " ↑ : 先頭    ↓ : 最後    □ : 全板検索";
116116 }
117117 else
118118 {
119119 if (tateFlag)
120120 {
121- menuStr = " L : 決定     × : 終了    □ : お気に入り   △ : 更新     R : メニュー切替";
121+ menuStr = " L : 決定     × : 終了    □ : お気に入り    △ : 更新     R : メニュー切替";
122122 }
123123 else
124124 {
@@ -188,6 +188,7 @@
188188 {
189189 if (rMenu)
190190 {
191+ psp2chAddFavoriteIta(categoryList[category.select].name, itaList[ita.select].title);
191192 }
192193 else
193194 {
--- trunc/src/readme.txt (nonexistent)
+++ trunc/src/readme.txt (revision 21)
@@ -0,0 +1,32 @@
1+オワタブラウザ
2+PSP用の2ちゃんねる専用ブラウザです。
3+CFW 3.52M33以上で動くと思います。
4+解凍してできたEBOOT.PBPを/PSP/GAME/フォルダに好きな名前のフォルダを作ってそこに入れてください。
5+操作法は画面に出てきますが画面スクロールは上下ボタンで行います。
6+また左右ボタン、アナログパッドでページスクロールもできます。
7+レス表示画面では矢印カーソルが表示されアナログパッドで操作できます。
8+Rボタンを押すとカーソルのゆっくり移動ができます。
9+カーソルを>>1のようなレスアンカーに合わせるとレス表示またはレスへ移動ができます。
10+urlアンカーで○ボタンを押すと対象ファイルをキャッシュフォルダに保存します。
11+urlがJPG、PNG画像の場合は画像が表示されます。
12+画像のスクロールは上下左右キー、またはアナログパッドです。
13+検索で英文字は大小文字を区別しないようにしました。
14+EBOOT.PBPと同じ位置にcolor.iniを置くと色を変更できます。
15+STARTボタンでメニューウィンドウが表示されます。
16+
17+2008/02/26 v0.5.1 送信フォームに自動レスアンカー。メニューにLAN切断追加。お気に入り板追加。
18+2008/02/26 v0.5.0 グレイスケールJPEGの表示。メニューウィンドウの表示(STARTボタン)。NG機能追加。
19+2008/02/24 v0.4.3 HTTPエラーダイアログで固まることがあるので表示をやめる。アナログパッドのスクロールに対応。
20+2008/02/22 v0.4.2 送信するまで書き込み内容保存。全板検索を繰り返すと固まる不具合を修正。スレの数が少ないときに固まるバグ修正。
21+2008/02/21 v0.4.1 アナログパッドの調整。移動メニューの調整。
22+2008/02/20 v0.4.0 2ちゃんねる検索追加
23+2008/02/19 v0.3.0 SELECTボタンで縦表示切り替え追加
24+2008/02/14 v0.2.14 バレンタインデーバージョン(カラー設定項目を増やしただけ)
25+2008/02/13 v0.1.8 接続先が1個だとResolver errorのバグ修正
26+2008/02/13 v0.1.7 お気に入りからリンクでスレ移動したときにお気に入り追加できないバグ修正。書き込み後に画面が乱れるのを修正。お気に入り一覧から削除を可能に。
27+2008/02/12 v0.1.6 Sofiya猫さんのパッチを使わせていただきました(アクセスポイントの選択ダイアログと名前解決が安定しました)。ID:の色が反映されないバグ修正。バッテリー残量を表示してみた。
28+2008/02/07 v0.1.5 リンク移動後のお気に入り登録バグ修正
29+2008/02/07 v0.1.4 2ちゃんねるのスレッドへのリンクで移動できるようにする。IDからBE削除。画像の縮小表示(1/整数のみ)。
30+2008/02/06 v0.1.3 アドレスの解決で頻繁に固まるのでhostsファイル対応(最初のインターネットはこれだよね)。
31+2008/02/06 v0.1.2 PNG画像でグレースケールのバグ修正。ID抽出追加。レス表示の色を外部ファイルで設定可。
32+2008/02/05 v0.1.1 PNG画像に対応。送信時のちらつき修正。
--- trunc/src/utf8.h (revision 20)
+++ trunc/src/utf8.h (revision 21)
@@ -13,7 +13,7 @@
1313 #define TEXT_5 " (`・ω・´) シャキーン\nこのスレのログデータを全て削除するよ"
1414 #define TEXT_6 "(*゚ー゚) 送信しますね"
1515 #define TEXT_7 "移転キタ━━━━━━(゜∀゜)━━━━━━\n掲示板一覧を読み込みなおします"
16-#define TEXT_8 "このスレはお気に入りに登録済みです"
16+#define TEXT_8 "お気に入りに登録済みです"
1717 #define TEXT_9 "このスレをお気に入りから削除します\nログデータは削除されません"
1818 #define TEXT_10 " (´・ω・`) ショボーン\nこのスレはDAT落ちしたようです"
1919 #define TEXT_11 "他の2ちゃんねるのスレッドに移動します"
Show on old repository browser